From 036efbc2520b1e6c2b52504c42afe4f7ccbe5068 Mon Sep 17 00:00:00 2001 From: Andy Meier Date: Mon, 10 Aug 2026 16:08:03 -0400 Subject: [PATCH 1/8] Replace Notion articles with source-authored pages --- README.md | 14 +- app/andrewmeier.slnx | 2 - app/docker-compose.yml | 9 - app/paket.dependencies | 4 - app/paket.lock | 24 +- app/src/App/App.fsproj | 10 +- app/src/App/input.css | 3 +- app/src/App/paket.references | 1 - app/src/App/src/Articles/Article.fs | 31 + app/src/App/src/Articles/Catalog.fs | 12 + app/src/App/src/Articles/Handler.fs | 15 +- .../Articles/Posts/DevelopmentEnvironment.fs | 1674 +++++++++++++++++ .../Articles/Posts/FSharpSemanticKernel.fs | 105 ++ .../Articles/Posts/PersonalInfrastructure.fs | 1671 ++++++++++++++++ app/src/App/src/Articles/Shared.fs | 119 ++ app/src/App/src/Articles/View.fs | 174 +- app/src/App/src/Common/View.fs | 63 +- app/src/App/src/Config.fs | 20 +- app/src/App/src/Index/Handler.fs | 4 +- app/src/App/src/Index/View.fs | 3 +- app/src/App/src/Infrastructure.fs | 24 - app/src/App/src/Program.fs | 2 - app/src/App/src/Services.fs | 15 +- app/src/{Domain => App/src}/Telemetry.fs | 7 +- app/src/Build/Program.fs | 32 +- app/src/Domain/Article.fs | 396 ---- app/src/Domain/Domain.fsproj | 16 - app/src/Domain/Infrastructure.fs | 34 - app/src/Domain/Notion.fs | 475 ----- app/src/Domain/Sqlite.fs | 106 -- app/src/Domain/paket.references | 6 - app/src/MockNotion/Dockerfile | 20 - app/src/MockNotion/MockNotion.fsproj | 14 - app/src/MockNotion/Program.fs | 153 -- app/src/MockNotion/paket.references | 1 - app/src/Tests/ArticleCatalogTests.fs | 70 + app/src/Tests/ArticleFilterTests.fs | 18 +- app/src/Tests/ArticleServiceTests.fs | 163 -- app/src/Tests/ArticleTests.fs | 22 - app/src/Tests/MockNotionTests.fs | 33 - app/src/Tests/NotionPageTests.fs | 107 -- app/src/Tests/NotionParseTests.fs | 472 ----- app/src/Tests/NotionServiceTests.fs | 316 ---- app/src/Tests/Tests.fsproj | 8 +- app/src/Tests/ViewTests.fs | 61 +- e2e/scripts/start-local.sh | 40 +- e2e/tests/routes.spec.ts | 59 +- pulumi/src/config.ts | 7 - pulumi/src/k8s/deployment.ts | 33 +- 49 files changed, 3810 insertions(+), 2858 deletions(-) create mode 100644 app/src/App/src/Articles/Article.fs create mode 100644 app/src/App/src/Articles/Catalog.fs create mode 100644 app/src/App/src/Articles/Posts/DevelopmentEnvironment.fs create mode 100644 app/src/App/src/Articles/Posts/FSharpSemanticKernel.fs create mode 100644 app/src/App/src/Articles/Posts/PersonalInfrastructure.fs create mode 100644 app/src/App/src/Articles/Shared.fs rename app/src/{Domain => App/src}/Telemetry.fs (57%) delete mode 100644 app/src/Domain/Article.fs delete mode 100644 app/src/Domain/Domain.fsproj delete mode 100644 app/src/Domain/Infrastructure.fs delete mode 100644 app/src/Domain/Notion.fs delete mode 100644 app/src/Domain/Sqlite.fs delete mode 100644 app/src/Domain/paket.references delete mode 100644 app/src/MockNotion/Dockerfile delete mode 100644 app/src/MockNotion/MockNotion.fsproj delete mode 100644 app/src/MockNotion/Program.fs delete mode 100644 app/src/MockNotion/paket.references create mode 100644 app/src/Tests/ArticleCatalogTests.fs delete mode 100644 app/src/Tests/ArticleServiceTests.fs delete mode 100644 app/src/Tests/ArticleTests.fs delete mode 100644 app/src/Tests/MockNotionTests.fs delete mode 100644 app/src/Tests/NotionPageTests.fs delete mode 100644 app/src/Tests/NotionParseTests.fs delete mode 100644 app/src/Tests/NotionServiceTests.fs diff --git a/README.md b/README.md index 50379a6..03483bd 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,10 @@ Personal website for Andy Meier built with F#, Giraffe, Datastar, and Tailwind C ## Structure - `app/` - F# web application - - `src/App/` - Main application (Giraffe + Datastar) + - `src/App/` - Main application and FSharp.ViewEngine article source - `src/Build/` - FAKE build script - `src/Tests/` - Expecto tests -- `pulumi/` - Infrastructure as code (GCP Artifact Registry, Cloudflare, Kubernetes) +- `pulumi/` - Infrastructure as code (Cloudflare and Kubernetes) ## Development @@ -21,7 +21,15 @@ dotnet paket restore ./fake.sh Watch ``` -`Watch` starts a local MockNotion service with fictional articles, so normal local development does not require Notion credentials or a Pulumi ESC environment. +Articles are authored directly in `app/src/App/src/Articles/Posts` with FSharp.ViewEngine. `Watch` uses those source-controlled articles and requires no content-service credentials. + +## Publishing articles + +1. Add a post module under `app/src/App/src/Articles/Posts` and register it in `Articles/Catalog.fs`. +2. Upload article images to `gs://assets.meiermade.com/andymeier/articles//` using content-hashed filenames. +3. Reference each image's `https://assets.meiermade.com/andymeier/...` URL from the post. + +Article assets are manually published and cached, so changing an image requires a new filename. ## Testing diff --git a/app/andrewmeier.slnx b/app/andrewmeier.slnx index 1e87bf6..1b2f024 100644 --- a/app/andrewmeier.slnx +++ b/app/andrewmeier.slnx @@ -2,8 +2,6 @@ - - diff --git a/app/docker-compose.yml b/app/docker-compose.yml index c9dadf4..ec7189b 100644 --- a/app/docker-compose.yml +++ b/app/docker-compose.yml @@ -1,13 +1,4 @@ services: - mock-notion: - build: - context: . - dockerfile: src/MockNotion/Dockerfile - ports: - - "127.0.0.1:5015:5015" - environment: - MOCK_NOTION_URL: http://0.0.0.0:5015 - seq: image: datalust/seq:2024.3 environment: diff --git a/app/paket.dependencies b/app/paket.dependencies index 14df7a3..5ad8d8e 100644 --- a/app/paket.dependencies +++ b/app/paket.dependencies @@ -1,20 +1,16 @@ source https://api.nuget.org/v3/index.json storage: none -nuget FSharp.SystemTextJson nuget FSharp.ViewEngine -nuget FSharp.UMX nuget FsToolkit.ErrorHandling nuget FsToolkit.ErrorHandling.TaskResult nuget Giraffe -nuget Markdig nuget Serilog nuget Serilog.AspNetCore nuget Serilog.Sinks.Seq nuget Serilog.Sinks.Console nuget Serilog.Sinks.OpenTelemetry nuget Starfederation.Datastar -nuget Microsoft.Data.Sqlite nuget OpenTelemetry nuget OpenTelemetry.Extensions.Hosting nuget OpenTelemetry.Instrumentation.AspNetCore diff --git a/app/paket.lock b/app/paket.lock index a51fc84..b384723 100644 --- a/app/paket.lock +++ b/app/paket.lock @@ -2,11 +2,9 @@ STORAGE: NONE NUGET remote: https://api.nuget.org/v3/index.json FSharp.Core (10.1.302) - restriction: >= netstandard2.0 - FSharp.SystemTextJson (1.4.36) + FSharp.SystemTextJson (1.4.36) - restriction: >= net6.0 FSharp.Core (>= 4.7) - restriction: >= netstandard2.0 System.Text.Json (>= 6.0.10) - restriction: >= netstandard2.0 - FSharp.UMX (1.1) - FSharp.Core (>= 4.3.4) - restriction: >= netstandard2.0 FSharp.ViewEngine (2026.8) FSharp.Core (>= 10.0.102) - restriction: >= net8.0 JetBrains.Annotations (>= 2025.2.4) - restriction: >= net8.0 @@ -39,8 +37,6 @@ NUGET Grpc.Core.Api (>= 2.83) - restriction: >= netstandard2.0 Microsoft.Bcl.AsyncInterfaces (>= 8.0) - restriction: && (>= netstandard2.0) (< netstandard2.1) JetBrains.Annotations (2026.2) - restriction: >= net8.0 - Markdig (1.3.2) - System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) Microsoft.AspNetCore.Hosting.Abstractions (2.3.11) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) Microsoft.AspNetCore.Hosting.Server.Abstractions (>= 2.3.10) - restriction: >= netstandard2.0 Microsoft.AspNetCore.Http.Abstractions (>= 2.3.10) - restriction: >= netstandard2.0 @@ -57,12 +53,6 @@ NUGET Microsoft.Bcl.AsyncInterfaces (10.0.10) - restriction: || (>= net462) (&& (>= net6.0) (< net8.0)) (&& (>= net6.0) (< netstandard2.1)) (&& (>= netstandard2.0) (< netstandard2.1)) System.Threading.Tasks.Extensions (>= 4.6.3) - restriction: || (>= net462) (&& (>= netstandard2.0) (< netstandard2.1)) Microsoft.Bcl.HashCode (6.0) - restriction: || (&& (>= net462) (>= net6.0)) (&& (>= net462) (< netstandard2.0)) (>= net471) - Microsoft.Data.Sqlite (10.0.10) - Microsoft.Data.Sqlite.Core (>= 10.0.10) - restriction: >= netstandard2.0 - SQLitePCLRaw.bundle_e_sqlite3 (>= 2.1.11) - restriction: >= netstandard2.0 - SQLitePCLRaw.core (>= 2.1.11) - restriction: >= netstandard2.0 - Microsoft.Data.Sqlite.Core (10.0.10) - restriction: >= netstandard2.0 - SQLitePCLRaw.core (>= 2.1.11) - restriction: >= netstandard2.0 Microsoft.Extensions.Configuration (10.0.10) - restriction: || (>= net462) (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) Microsoft.Extensions.Primitives (>= 10.0.10) - restriction: || (>= net462) (>= netstandard2.0) @@ -227,16 +217,6 @@ NUGET Serilog.Sinks.Seq (9.1) Serilog (>= 4.3.1) - restriction: >= netstandard2.0 Serilog.Sinks.File (>= 7.0) - restriction: >= netstandard2.0 - SQLite (3.53.4) - restriction: >= netstandard2.0 - SQLitePCLRaw.bundle_e_sqlite3 (3.0.5) - restriction: >= netstandard2.0 - SQLite (>= 3.53.4) - restriction: >= netstandard2.0 - SQLitePCLRaw.config.e_sqlite3 (>= 3.0.5) - restriction: >= netstandard2.0 - SQLitePCLRaw.config.e_sqlite3 (3.0.5) - restriction: >= netstandard2.0 - SQLitePCLRaw.provider.e_sqlite3 (>= 3.0.5) - restriction: >= netstandard2.0 - SQLitePCLRaw.core (3.0.5) - restriction: >= netstandard2.0 - System.Memory (>= 4.6.3) - restriction: && (< net8.0) (>= netstandard2.0) - SQLitePCLRaw.provider.e_sqlite3 (3.0.5) - restriction: >= netstandard2.0 - SQLitePCLRaw.core (>= 3.0.5) - restriction: >= netstandard2.0 StarFederation.Datastar (1.4) StarFederation.Datastar.FSharp (>= 1.4) - restriction: >= net8.0 StarFederation.Datastar.FSharp (1.4) - restriction: >= net8.0 @@ -264,7 +244,7 @@ NUGET System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Memory (>= 4.6.3) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Runtime.CompilerServices.Unsafe (>= 6.1.2) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) - System.Text.Json (10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (>= netstandard2.0) + System.Text.Json (10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (>= net6.0) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) Microsoft.Bcl.AsyncInterfaces (>= 10.0.10) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.Buffers (>= 4.6.1) - restriction: || (>= net462) (&& (< net8.0) (>= netstandard2.0)) System.IO.Pipelines (>= 10.0.10) - restriction: || (&& (< net10.0) (>= net9.0)) (>= net462) (&& (>= net8.0) (< net9.0)) (&& (< net8.0) (>= netstandard2.0)) diff --git a/app/src/App/App.fsproj b/app/src/App/App.fsproj index 34f3a16..652adea 100644 --- a/app/src/App/App.fsproj +++ b/app/src/App/App.fsproj @@ -10,17 +10,21 @@ + + + + + + + - - - \ No newline at end of file diff --git a/app/src/App/input.css b/app/src/App/input.css index 0b54cc5..4230ab0 100644 --- a/app/src/App/input.css +++ b/app/src/App/input.css @@ -6,6 +6,7 @@ /* Inline code: monospace fonts render larger at the same font-size, so scale down to visually match surrounding body text. */ -.prose :where(code):not(:where(pre *)) { +.prose :not(pre) > code[class*="language-"] { font-size: 0.875em; + overflow-wrap: anywhere; } diff --git a/app/src/App/paket.references b/app/src/App/paket.references index 1e06cc7..88c05dc 100644 --- a/app/src/App/paket.references +++ b/app/src/App/paket.references @@ -1,6 +1,5 @@ FSharp.ViewEngine Giraffe -Markdig Serilog Serilog.AspNetCore Serilog.Sinks.Console diff --git a/app/src/App/src/Articles/Article.fs b/app/src/App/src/Articles/Article.fs new file mode 100644 index 0000000..b95020f --- /dev/null +++ b/app/src/App/src/Articles/Article.fs @@ -0,0 +1,31 @@ +namespace App.Articles + +open FSharp.ViewEngine +open System + +type ArticleMetadata = + { permalink: string + title: string + summary: string + cover: string + tags: string[] + createdAt: DateTimeOffset } + +type Article = + { permalink: string + title: string + summary: string + cover: string + tags: string[] + createdAt: DateTimeOffset + page: HtmlElement } + +module Article = + let create (metadata: ArticleMetadata) (page: HtmlElement) = + { permalink = metadata.permalink + title = metadata.title + summary = metadata.summary + cover = metadata.cover + tags = metadata.tags + createdAt = metadata.createdAt + page = page } diff --git a/app/src/App/src/Articles/Catalog.fs b/app/src/App/src/Articles/Catalog.fs new file mode 100644 index 0000000..5578c70 --- /dev/null +++ b/app/src/App/src/Articles/Catalog.fs @@ -0,0 +1,12 @@ +module App.Articles.Catalog + +open App.Articles + +let all: Article list = + [ Posts.FSharpSemanticKernel.article + Posts.PersonalInfrastructure.article + Posts.DevelopmentEnvironment.article ] + |> List.sortByDescending _.createdAt + +let tryFind permalink = + all |> List.tryFind (fun article -> article.permalink = permalink) diff --git a/app/src/App/src/Articles/Handler.fs b/app/src/App/src/Articles/Handler.fs index 0b10921..2b53851 100644 --- a/app/src/App/src/Articles/Handler.fs +++ b/app/src/App/src/Articles/Handler.fs @@ -2,6 +2,7 @@ module App.Articles.Handler open App.Infrastructure open App.ServiceRegistry +open App.Articles open App.Articles.View open App.Common.Handler open App.Common.View @@ -23,8 +24,8 @@ let private filtersFromRequest (ctx:HttpContext) = | true, year -> Some year | false, _ -> None) } -let filterArticles (filters:FilterState) (articles:Domain.Article.Article list) = - let matchesSearch (article:Domain.Article.Article) = +let filterArticles (filters:FilterState) (articles:Article list) = + let matchesSearch (article:Article) = filters.search |> Option.forall (fun query -> let query = query.Trim() @@ -32,12 +33,12 @@ let filterArticles (filters:FilterState) (articles:Domain.Article.Article list) || article.summary.Contains(query, StringComparison.OrdinalIgnoreCase) || (article.tags |> Array.exists (fun tag -> tag.Contains(query, StringComparison.OrdinalIgnoreCase)))) - let matchesTag (article:Domain.Article.Article) = + let matchesTag (article:Article) = filters.tag |> Option.forall (fun selectedTag -> article.tags |> Array.exists (fun tag -> String.Equals(tag, selectedTag, StringComparison.OrdinalIgnoreCase))) - let matchesYear (article:Domain.Article.Article) = + let matchesYear (article:Article) = filters.publishedYear |> Option.forall (fun year -> article.createdAt.Year = year) @@ -53,7 +54,7 @@ let private getArticlesPage (services:Services) : HttpHandler = if not ctx.IsDatastar && requestedUrl <> canonicalUrl then return! redirectTo false canonicalUrl next ctx else - let! allArticles = services.article.listArticles () + let allArticles = Catalog.all let page = { articles = filterArticles filters allArticles filters = filters @@ -74,9 +75,9 @@ let private getArticlesPage (services:Services) : HttpHandler = let private getArticlePage (services:Services) (id:string) : HttpHandler = fun next ctx -> task { use _span = services.telemetry.startActiveSpan "app.articles.get_article_page" - match! services.article.tryGetArticle id with + match Catalog.tryFind id with | Some article -> - let page = articlePage article + let page = article.page let url = SiteUrl.article article.permalink if ctx.IsDatastar then diff --git a/app/src/App/src/Articles/Posts/DevelopmentEnvironment.fs b/app/src/App/src/Articles/Posts/DevelopmentEnvironment.fs new file mode 100644 index 0000000..80c7605 --- /dev/null +++ b/app/src/App/src/Articles/Posts/DevelopmentEnvironment.fs @@ -0,0 +1,1674 @@ +module App.Articles.Posts.DevelopmentEnvironment + +open App.Articles +open App.Articles.Shared +open FSharp.ViewEngine +open System +open type Html + +let private metadata = + { permalink = "dev-env" + title = "Development Environment" + summary = "How I set up my computer for development" + cover = "https://assets.meiermade.com/andymeier/articles/shared/gradient-purple-4776537cdf89.webp" + tags = [| "Programming"; "Python"; "F#"; ".NET"; "AI" |] + createdAt = DateTimeOffset(2020, 4, 4, 0, 0, 0, TimeSpan.Zero) } + +let private content = + [ h3 { + _class "mt-6" + _id "a49afb67c49944c49874c3e568079409" + span { text "Table of Contents" } + } + ul { + _class "list-disc" + + li { + a { + _href "#c51d078bdf6a4feeb1194e5f8aa0d710" + span { text "Computer" } + } + + span { text ": Recommended specs for computer." } + } + + li { + a { + _href "#17286da7f6d34a11a97c81678ecee5f6" + span { text "Dropbox" } + } + + span { text ": File storage." } + } + + li { + a { + _href "#e5da454cee68425fbd9bf06fd8abe011" + span { text "Windows Terminal" } + } + + span { text ": Terminal for Windows." } + } + + li { + a { + _href "#0f093452c51644acb4b1509e9ac1da0f" + span { text "Windows Subsystem for Linux" } + } + + span { text ": Run Linux on Windows." } + } + + li { + a { + _href "#b39403d15e5243889ccc920b6ce4211a" + span { text "Scoop" } + } + + span { text ": Package manager for Windows." } + } + + li { + a { + _href "#1bb350e0e0234eecb508cce2b94780c2" + span { text "oh-my-posh" } + } + + span { text ": Better terminal prompt." } + } + + li { + a { + _href "#f29adc05e09941fbb42cfd37caa8eb1d" + span { text "Vim" } + } + + span { text ": Text editor to speed up your typing." } + } + + li { + a { + _href "#0de016a3d94a491c944d9e014acf4f02" + span { text "Vimium" } + } + + span { text ": Google Chrome extension to speed up your Googling." } + } + + li { + a { + _href "#0fc2f8a2f2504da8b0185b0a80562d4e" + span { text "Visual Studio Code" } + } + + span { text ": IDE to speed up your development." } + } + + li { + a { + _href "#d53358bfb6774cf1b1a73d743c81162e" + span { text "Git" } + } + + span { text ": Version control for champs." } + } + + li { + a { + _href "#8788b21dfe394fb782765cf1e571d931" + span { text "Docker" } + } + + span { text ": Container management." } + } + + li { + a { + _href "#987a17e9957446638ea3d4b5cc8aadae" + span { text "dotnet" } + } + + span { text ": .NET Core CLI for building .NET applications." } + } + + li { + a { + _href "#a07c6ae342f94aca8894c237ecdc1388" + span { text "Node" } + } + + span { text ": A JavaScript runtime." } + } + + li { + a { + _href "#9440715cc7e740cea2f4bdab7d77b9af" + span { text "Python" } + } + + span { text ": Easy to read, learn, and use programming language." } + } + + li { + a { + _href "#dc8d7f26672e457b9f1d93c796f3c22c" + span { text "kubectl" } + } + + span { text ": Kubernetes CLI." } + } + + li { + a { + _href "#09e3cf5418074ca6aa8cee17a05913e2" + span { text "kubectxwin" } + } + + span { text ": CLI for configuring Kubernetes contexts." } + } + + li { + a { + _href "#8d6aae336cb64346a8596d6d328f63ff" + span { text "kubenswin" } + } + + span { text ": CLI for configuring Kubernetes namespaces." } + } + + li { + a { + _href "#574b57c6b7eb40e6876b7e784fbd12a5" + span { text "Helm" } + } + + span { text ": Package manager for Kubernetes." } + } + + li { + a { + _href "#25f686d21b1b4c198bd8815c22259c1f" + span { text "Pulumi" } + } + + span { text ": Infrastructure as code." } + } + + li { + a { + _href "#ef28796ed44c4f50a81aa6a9f053b00c" + span { text "Lightshot" } + } + + span { text ": Screen capture tool." } + } + + li { + a { + _href "#480356f622e441b1a1d8386ca7fffa97" + span { text "ScreenToGif" } + } + + span { text ": Screen capture tool, but GIFs." } + } + + li { + a { + _href "#eab0baa1fec84f048158239eac825d77" + span { text "OBS Studio" } + } + + span { text ": Screen recording tool." } + } + } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "6f29ab163e11464d9bf97f46915f281f" + span { text "Computer" } + } + div { span { text "I use a MacBook Pro (M4 Max) with 64 GB of memory." } } + ul { + _class "list-disc" + + li { + span { + _class "font-bold" + text "Memory" + } + + span { text ": 64 GB" } + } + + li { + span { + _class "font-bold" + text "Chip" + } + + span { text ": Apple M4 Max" } + } + + li { + span { + _class "font-bold" + text "Disk" + } + + span { text ": 1 TB" } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "9e7a142ea9c24440bfce3ff77fffb24b" + span { text "Google Drive" } + } + div { + span { + text + "Google Drive is great for scanning documents. I keep a single ‘Documents’ folder with all my files and then just use search when I need to find something. I use the file name convention " + } + + code { + _class "language-none" + text "YYYY-MM-DD Description" + } + + span { text " so I can also look back historically. The mobile app scanner works really well." } + } + h4 { + _class "mt-4" + _id "6bfdde616b0f478eb33017bd267f17ce" + span { text "Installation" } + } + div { + span { text "Navigate to " } + + a { + _href "https://www.google.com/drive/download/" + span { text "https://www.google.com/drive/download/" } + } + + span { text " and install for your system." } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "e5da454cee68425fbd9bf06fd8abe011" + span { text "Windows Terminal" } + } + div { span { text "New terminal for Windows. Makes for a much better terminal experience." } } + h4 { + _class "mt-4" + _id "8a2814bb222d4ad38e0d4a076d84336e" + span { text "Installation" } + } + div { span { text "Open the Windows Store and search for ‘terminal’. Then click ‘Install’." } } + img { + _class "drop-shadow-xl rounded" + _src "https://assets.meiermade.com/andymeier/articles/dev-env/windows-terminal-e5d8e6f409da.webp" + _alt "Windows Terminal in Microsoft Store search results" + _attr ("loading", "lazy") + _attr ("width", "995") + _attr ("height", "692") + } + h4 { + _class "mt-4" + _id "2c580980a8364e4182ebc62ba35b29a0" + span { text "Resources" } + } + ul { + _class "list-disc" + + li { + a { + _href "https://docs.microsoft.com/en-us/windows/terminal/" + span { text "Windows Terminal Overview" } + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "0f093452c51644acb4b1509e9ac1da0f" + span { text "Windows Subsystem for Linux (WSL)" } + } + div { span { text "Run Linux on Windows." } } + h4 { + _class "mt-4" + _id "531e866e81ee4ce9a5ce775f6c47b765" + span { text "Installation" } + } + div { span { text "Open PowerShell and run" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "wsl --install" } + } + } + div { span { text "Install Ubuntu" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "wsl --install --distribution Ubuntu" } + } + } + h4 { + _class "mt-4" + _id "c1f4bdd16d214044b30527c9e84c727a" + span { text "Usage" } + } + div { + span { text "Open " } + + a { + _href "#e5da454cee68425fbd9bf06fd8abe011" + span { text "Windows Terminal" } + } + + span { text " and open Ubuntu." } + } + img { + _class "drop-shadow-xl rounded" + _src "https://assets.meiermade.com/andymeier/articles/dev-env/wsl-ubuntu-8852344c5af9.webp" + _alt "Ubuntu 20.04 selected in the Windows Terminal profile menu" + _attr ("loading", "lazy") + _attr ("width", "758") + _attr ("height", "401") + } + h4 { + _class "mt-4" + _id "cdc0611d9ffa4b0e95771f7ca5e39f28" + span { text "References" } + } + ul { + _class "list-disc" + + li { + a { + _href "https://docs.microsoft.com/en-us/windows/wsl/install-win10" + span { text "Windows 10 Installation Guide" } + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "b39403d15e5243889ccc920b6ce4211a" + span { text "Scoop" } + } + div { span { text "Package manager for Windows." } } + h4 { + _class "mt-4" + _id "c70dea33136e423aa4c7c46bfca1bf5c" + span { text "Installation" } + } + div { span { text "Set the execution policy." } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "Set-ExecutionPolicy RemoteSigned -s CurrentUser" } + } + } + div { span { text "Install scoop." } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "iex (New-Object net.webclient).downloadstring('https://get.scoop.sh')" } + } + } + div { span { text "Install sudo." } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "scoop install sudo" } + } + } + blockquote { span { text "This allows you to run a command as an ‘Administrator’." } } + div { span { text "Add extras and versions buckets." } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "scoop bucket add extras\nscoop bucket add versions" } + } + } + h4 { + _class "mt-4" + _id "7d874f6738f74e2b811c630d71e919ba" + span { text "Usage" } + } + div { span { text "Search for packages" } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "scoop search vim" } + } + } + div { span { text "Install a package" } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "scoop install vim" } + } + } + h4 { + _class "mt-4" + _id "2bf9d412a11948a38c2805d855b82751" + span { text "References" } + } + ul { + _class "list-disc" + + li { + a { + _href "https://github.com/lukesampson/scoop" + span { text "Scoop GitHub" } + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "1bb350e0e0234eecb508cce2b94780c2" + span { text "oh-my-posh" } + } + div { span { text "Better prompt." } } + h4 { + _class "mt-4" + _id "51a14fb8b3b64a5e87cde0c750c070c0" + span { text "Installation" } + } + div { span { text "Install with Scoop." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + + span { + text + "scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json" + } + } + } + div { span { text "Open your profile." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "vim $env:PROFILE" } + } + } + div { span { text "Add the following line to the top of your profile to use the ‘paradox’ theme." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + + span { + text + "Invoke-Expression (oh-my-posh --init --shell pwsh --config \"$(scoop prefix oh-my-posh)/themes/paradox.omp.json\")" + } + } + } + h4 { + _class "mt-4" + _id "ba2c895b61374cb7b08713ef45dfbac7" + span { text "References" } + } + ul { + _class "list-disc" + + li { + a { + _href "https://ohmyposh.dev/" + span { text "oh-my-posh" } + } + } + + li { + a { + _href + "https://www.hanselman.com/blog/HowToMakeAPrettyPromptInWindowsTerminalWithPowerlineNerdFontsCascadiaCodeWSLAndOhmyposh.aspx" + + span { text "How to Make A Pretty Prompt In Windows Terminal" } + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "f29adc05e09941fbb42cfd37caa8eb1d" + span { text "Vim" } + } + div { + span { + text + "Text editor to speed up your typing. It takes a little while to get used to but the persistence pays of in the long run." + } + } + h4 { + _class "mt-4" + _id "bbecbcc3379e47e69e4dfff724bab516" + span { text "Installation" } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "scoop install vim" } + } + } + h4 { + _class "mt-4" + _id "ba7e07790fbc40e9a83985bec35d39ba" + span { text "Usage" } + } + div { span { text "Open vim in current directory." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "vim ." } + } + } + div { span { text "Open a file in vim" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "vim ./my-file.txt" } + } + } + h4 { + _class "mt-4" + _id "91c8a98fd7d04c5192b499e56e7a0846" + span { text "Resources" } + } + ul { + _class "list-disc" + + li { + a { + _href "https://www.openvim.com/" + span { text "Online Vim tutorial" } + } + } + + li { + a { + _href "https://danielmiessler.com/study/vim/" + span { text "More Advanced Vim" } + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "0de016a3d94a491c944d9e014acf4f02" + span { text "Vimium" } + } + div { + span { + text + "Google Chrome extension to speed up your Googling. Use Vim keybindings to navigate around the browser." + } + } + h4 { + _class "mt-4" + _id "5e8f6d47794747a9913f0e455fd814c7" + span { text "Installation" } + } + div { + span { text "Head to " } + + a { + _href "https://vimium.github.io/" + span { text "Vimium homepage" } + } + + span { text " and click the ‘Install’ button. Or search for ‘Vimium’ in the " } + + a { + _href "https://chrome.google.com/webstore/category/extensions" + span { text "Chrome Web Store" } + } + + span { text " and install from there." } + } + h4 { + _class "mt-4" + _id "9554b968670548a987cde6b6332a6a7c" + span { text "Usage" } + } + ul { + _class "list-disc" + + li { + code { + _class "language-none" + text "j,k" + } + + span { text ": used to scroll up and down respectively." } + } + + li { + code { + _class "language-none" + text "d,u" + } + + span { text ": used to page up and down respectively." } + } + + li { + code { + _class "language-none" + text "f-{other}" + } + + span { text ": used to show links on page and then navigate to " } + + code { + _class "language-none" + text "{other}" + } + + span { text " which was the shown link." } + } + + li { + code { + _class "language-none" + text "?" + } + + span { text ": show the rest of the keybindings and other help." } + } + } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "0fc2f8a2f2504da8b0185b0a80562d4e" + span { text "Visual Studio Code" } + } + div { span { text "IDE to speed up your development." } } + h4 { + _class "mt-4" + _id "d4db4295bc23462eb4125f4214b91ce9" + span { text "Installation" } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "scoop install vscode" } + } + } + h4 { + _class "mt-4" + _id "02254c35b9844c38bc9715d55adb7c88" + span { text "Usage" } + } + div { span { text "Open current directory in VS Code." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "code ." } + } + } + div { span { text "Open file in VS Code." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "code ./my-file.txt" } + } + } + h4 { + _class "mt-4" + _id "6f403dc7ff0c4907a8ac41c3b166526f" + span { text "References" } + } + ul { + _class "list-disc" + + li { + a { + _href "https://code.visualstudio.com/" + span { text "VS Code Homepage" } + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "d53358bfb6774cf1b1a73d743c81162e" + span { text "Git" } + } + div { span { text "Version control for champs." } } + h4 { + _class "mt-4" + _id "f2a83a7d09c74720ab03fc9ad1c05594" + span { text "Installation" } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "scoop install git" } + } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "git config --global credential.helper manager-core" } + } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "git config --global core.autocrlf true" } + } + } + h4 { + _class "mt-4" + _id "c8419963dc974f17bda7ad813c5f29c7" + span { text "Usage" } + } + div { span { text "Initialize a new repository." } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "mkdir my-repo\ncd my-repo\ngit init" } + } + } + div { span { text "Add a file to track." } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "echo \"hello\" > hello.txt\ngit add hello.txt" } + } + } + div { span { text "Commit changes." } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "git commit -m 'added hello.txt'" } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "8788b21dfe394fb782765cf1e571d931" + span { text "Docker" } + } + div { span { text "Container management." } } + h4 { + _class "mt-4" + _id "d890c0d3b96a4e2ba392e895af391db7" + span { text "Installation" } + } + div { + span { text "Go to " } + + a { + _href "https://docs.docker.com/desktop/windows/install/" + span { text "Docker install page" } + } + + span { text " to install." } + } + h4 { + _class "mt-4" + _id "14ebf66e1b184c26adcff2c3dc3f96d9" + span { text "Usage" } + } + div { span { text "View running containers" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "docker ps -a" } + } + } + div { span { text "View local images" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "docker images" } + } + } + div { span { text "Pull image from DockerHub" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "docker pull bash" } + } + } + div { span { text "Run a container" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "docker run -it bash" } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "987a17e9957446638ea3d4b5cc8aadae" + span { text "dotnet" } + } + div { span { text "Cross platform toolchain for developing .NET applications." } } + h4 { + _class "mt-4" + _id "5e1348c00dc547cc98c6a6faa0c836df" + span { text "Installation" } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "scoop install dotnet-sdk" } + } + } + h4 { + _class "mt-4" + _id "d6ebf7cd79334fb89907022e29808aee" + span { text "Usage" } + } + div { span { text "Create a new F# console application" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "dotnet new console -lang F# -n my-fsharp-app" } + } + } + div { span { text "Run F# Interactive" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + + span { + text + "dotnet fsi\n\nMicrosoft (R) F# Interactive version 12.0.0.0 for F# 6.0\nCopyright (c) Microsoft Corporation. All Rights Reserved.\n\nFor help type #help;;\n\n> let x = 1;;\nval x: int = 1\n\n> let y = 2;;\nval y: int = 2\n\n> x + y;;\nval it: int = 3" + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "a07c6ae342f94aca8894c237ecdc1388" + span { text "Node" } + } + div { span { text "A JavaScript runtime." } } + h4 { + _class "mt-4" + _id "fbddeed3fd6b4d2b92b0474925cc56e5" + span { text "Installation" } + } + div { + span { text "First install " } + + a { + _href "https://github.com/coreybutler/nvm-windows" + span { text "nvm-windows" } + } + + span { text "." } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "scoop install nvm" } + } + } + div { span { text "List available versions." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + + span { + text + "nvm list available\n\n| CURRENT | LTS | OLD STABLE | OLD UNSTABLE |\n|--------------|--------------|--------------|--------------|\n| 17.8.0 | 16.14.2 | 0.12.18 | 0.11.16 |\n| 17.7.2 | 16.14.1 | 0.12.17 | 0.11.15 |\n| 17.7.1 | 16.14.0 | 0.12.16 | 0.11.14 |\n| 17.7.0 | 16.13.2 | 0.12.15 | 0.11.13 |\n| 17.6.0 | 16.13.1 | 0.12.14 | 0.11.12 |\n| 17.5.0 | 16.13.0 | 0.12.13 | 0.11.11 |\n| 17.4.0 | 14.19.1 | 0.12.12 | 0.11.10 |\n| 17.3.1 | 14.19.0 | 0.12.11 | 0.11.9 |\n| 17.3.0 | 14.18.3 | 0.12.10 | 0.11.8 |\n| 17.2.0 | 14.18.2 | 0.12.9 | 0.11.7 |\n| 17.1.0 | 14.18.1 | 0.12.8 | 0.11.6 |\n| 17.0.1 | 14.18.0 | 0.12.7 | 0.11.5 |\n| 17.0.0 | 14.17.6 | 0.12.6 | 0.11.4 |\n| 16.12.0 | 14.17.5 | 0.12.5 | 0.11.3 |\n| 16.11.1 | 14.17.4 | 0.12.4 | 0.11.2 |\n| 16.11.0 | 14.17.3 | 0.12.3 | 0.11.1 |\n| 16.10.0 | 14.17.2 | 0.12.2 | 0.11.0 |\n| 16.9.1 | 14.17.1 | 0.12.1 | 0.9.12 |\n| 16.9.0 | 14.17.0 | 0.12.0 | 0.9.11 |\n| 16.8.0 | 14.16.1 | 0.10.48 | 0.9.10 |" + } + } + } + div { span { text "Install the latest LTS." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "nvm install 16.14.2" } + } + } + div { span { text "Use installed version." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "nvm use 16.14.2" } + } + } + h4 { + _class "mt-4" + _id "a26cf862186f4a53a85384051bc506b4" + span { text "Usage" } + } + div { span { text "Run JavaScript REPL." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + + span { + text + "node\nWelcome to Node.js v14.17.0.\nType \".help\" for more information.\n> var x = 1;\nundefined\n> var y = 2;\nundefined\n> x + y\n3" + } + } + } + h4 { + _class "mt-4" + _id "a4b8f32372fd4523bd69f77997d65523" + span { text "Resources" } + } + ul { + _class "list-disc" + + li { + a { + _href "https://github.com/coreybutler/nvm-windows" + span { text "nvm-windows" } + } + } + + li { + a { + _href "https://nodejs.org/en/docs/" + span { text "Node docs" } + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "9440715cc7e740cea2f4bdab7d77b9af" + span { text "Python" } + } + div { span { text "Easy to read, learn, and use programming language." } } + h4 { + _class "mt-4" + _id "c1d21d8adaef4e17a5f2c2cbd76711ee" + span { text "Installation" } + } + div { + span { text "Install " } + + code { + _class "language-none" + text "pyenv" + } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "scoop install pyenv" } + } + } + div { span { text "List available versions" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + + span { + text + "pyenv install --list\n:: [Info] :: Mirror: https://www.python.org/ftp/python\n3.8.9\n3.8.10\n3.9.0\n3.9.2\n3.9.6" + } + } + } + div { span { text "Install latest version." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "pyenv install 3.9.6" } + } + } + div { span { text "Set latest as global version." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "pyenv global 3.9.6" } + } + } + h4 { + _class "mt-4" + _id "82151d8fe59f4c148b64e4125434ee3b" + span { text "Usage" } + } + div { span { text "Check version." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "python --version" } + } + } + div { span { text "Run Python REPL." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + + span { + text + "python\nPython 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n>>> x = 1\n>>> y = 2\n>>> x + y\n3" + } + } + } + h4 { + _class "mt-4" + _id "0dcaf2ab2d004f8887a3d902076b26da" + span { text "References" } + } + ul { + _class "list-disc" + + li { + a { + _href "https://www.python.org/" + span { text "Python homepage" } + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "dc8d7f26672e457b9f1d93c796f3c22c" + span { text "kubectl" } + } + div { span { text "Kubernetes CLI." } } + h4 { + _class "mt-4" + _id "622bb5b9c2b94509bee7897d0f024308" + span { text "Installation" } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "scoop install kubectl" } + } + } + div { + span { text "Update your " } + + code { + _class "language-none" + text "KUBECONFIG" + } + + span { text " environment variable and (optionally) add an alias." } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "vim $PROFILE" } + } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "$env:KUBECONFIG = \"C:\\Users\\\\.kube\\config;\"\nSet-Alias k kubectl" } + } + } + div { span { text "Then reload your profile." } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text ". $PROFILE" } + } + } + h4 { + _class "mt-4" + _id "32f1a4f3d38041e293220ee37a4d114b" + span { text "Usage" } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "k get pods --all-namespaces" } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "09e3cf5418074ca6aa8cee17a05913e2" + span { text "kubectxwin" } + } + div { span { text "CLI for configuring Kubernetes contexts" } } + h4 { + _class "mt-4" + _id "12d198f06176419182a932f3a336824b" + span { text "Installation" } + } + div { span { text "Clone the repository." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "git clone https://github.com/thomasliddledba/kubectxwin.git" } + } + } + div { span { text "Add the executable to the PATH and (optionally) add an alias." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "vim $PROFILE" } + } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "$env:Path += \";C:\\\\bin\"\nSet-Alias ktx kubectxwin" } + } + } + div { span { text "Reload your profile." } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text ". $PROFILE" } + } + } + h4 { + _class "mt-4" + _id "246edef1fe5e45cc932271dbab566aad" + span { text "Usage" } + } + div { span { text "View contexts" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "ktx ls" } + } + } + div { span { text "Change context" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "ktx set docker-desktop\nSwitched to context \"docker-for-desktop\"." } + } + } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "8d6aae336cb64346a8596d6d328f63ff" + span { text "kubenswin" } + } + div { span { text "CLI for configuring Kubernetes namespaces" } } + h4 { + _class "mt-4" + _id "2cccdfa0b9a945539c46515d7f437a5d" + span { text "Installation" } + } + div { span { text "Clone the repository." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "git clone https://github.com/thomasliddledba/kubenswin.git" } + } + } + div { span { text "Add the executable to the PATH and (optionally) add an alias." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "vim $PROFILE" } + } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "$env:Path += \";C:\\{path to kubenswin repo}\\bin\"\nSet-Alias kns kubenswin" } + } + } + div { span { text "Reload your profile." } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text ". $PROFILE" } + } + } + h4 { + _class "mt-4" + _id "5b242f77f68a48a1b01d7a525f53170c" + span { text "Usage" } + } + div { span { text "View namespaces" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "kns ls" } + } + } + div { span { text "Change namespace" } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "kns set kube-system" } + } + } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "574b57c6b7eb40e6876b7e784fbd12a5" + span { text "Helm" } + } + div { span { text "Package manager for Kubernetes." } } + h4 { + _class "mt-4" + _id "c7dfe063ad1049a7852d327944082712" + span { text "Installation" } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "scoop install helm" } + } + } + h4 { + _class "mt-4" + _id "6c99bf09cf264266a0744b5e6475254e" + span { text "Usage" } + } + div { span { text "Install a chart (i.e., package)." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "helm install stable/postgresql --name my-postgres" } + } + } + div { span { text "List charts." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "helm list" } + } + } + div { span { text "Show status of chart." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "helm status my-postgres" } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "25f686d21b1b4c198bd8815c22259c1f" + span { text "Pulumi" } + } + div { span { text "Infrastructure as code." } } + h4 { + _class "mt-4" + _id "71b4c1ab23944ee5a4529ba4f3b0186c" + span { text "Installation" } + } + div { span { text "Install using Scoop." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "scoop install pulumi" } + } + } + h4 { + _class "mt-4" + _id "4e74b911a37545f094daf9001a729ac2" + span { text "Usage" } + } + div { span { text "Create a new project." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "mkdir pulumi\npulumi new kubernetes-typescript" } + } + } + div { span { text "Preview the changes." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "pulumi preview" } + } + } + div { span { text "Update the resources." } } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + span { text "pulumi up" } + } + } + h4 { + _class "mt-4" + _id "cdf41758f1f245cb9107050198cc4c40" + span { text "Resources" } + } + ul { + _class "list-disc" + + li { + a { + _href "https://www.pulumi.com/" + span { text "Pulumi" } + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "ef28796ed44c4f50a81aa6a9f053b00c" + span { text "Lightshot" } + } + div { span { text "Screen capture tool. (Used for most of the images in this post.)" } } + h4 { + _class "mt-4" + _id "20e7cdcb76034d26bf914fbaed5153da" + span { text "Installation" } + } + div { + span { text "Install Lightshot by downloading " } + + a { + _href "https://app.prntscr.com/en/index.html" + span { text "here" } + } + + span { text "." } + } + h4 { + _class "mt-4" + _id "8e38c631ef9f4618ad060626297884b7" + span { text "Usage" } + } + div { + span { text "Take a screen shot by pressing the " } + + code { + _class "language-none" + text "PrtScr" + } + + span { + text + " button on your keyboard. You can then select an area on your screen, add lines or arrows, and save or copy the image to your clipboard." + } + } + h4 { + _class "mt-4" + _id "9df5b39db26c45cab55e51e9d46f7855" + span { text "Resources" } + } + ul { + _class "list-disc" + + li { + a { + _href "https://app.prntscr.com/en/index.html" + span { text "Lightshot homepage" } + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "480356f622e441b1a1d8386ca7fffa97" + span { text "ScreenToGif" } + } + div { span { text "Screen capture tool, but GIFs." } } + h4 { + _class "mt-4" + _id "ea103d45657e49fbacf5baa74f88b2d1" + span { text "Installation" } + } + div { + span { text "Download and install from " } + + a { + _href "https://www.screentogif.com/" + span { text "screentogif.com" } + } + + span { text "." } + } + h4 { + _class "mt-4" + _id "cbf4b23e2545417db65f03591c08f94f" + span { text "Usage" } + } + div { span { text "Start ScreenToGif." } } + div { + span { text "Drag the window around the area you would like to record and press " } + + code { + _class "language-none" + text "F7" + } + + span { text " to start recording. Press " } + + code { + _class "language-none" + text "F8" + } + + span { text " to stop recording." } + } + img { + _class "drop-shadow-xl rounded" + _src "https://assets.meiermade.com/andymeier/articles/dev-env/screentogif-demo-57717811367a.gif" + _alt "ScreenToGif recording controls around a selected screen area" + _attr ("loading", "lazy") + _attr ("width", "945") + _attr ("height", "492") + } + h4 { + _class "mt-4" + _id "b6bce6d12c4d44d1b006354c7ee0f290" + span { text "Resources" } + } + ul { + _class "list-disc" + + li { + a { + _href "https://www.screentogif.com/" + span { text "ScreenToGif homepage" } + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } + h3 { + _class "mt-6" + _id "eab0baa1fec84f048158239eac825d77" + span { text "OBS Studio" } + } + div { span { text "Screen recording tool." } } + h4 { + _class "mt-4" + _id "932bd7a700414c9c95946428f679c2bc" + span { text "Installation" } + } + div { + span { text "Download and install from " } + + a { + _href "https://obsproject.com/download" + span { text "OBS Studio website" } + } + + span { text "." } + } + h4 { + _class "mt-4" + _id "b05f575dc2d4480b8048552838561ce0" + span { text "Usage" } + } + div { + span { text "Check out " } + + a { + _href "https://becomeablogger.com/obs/" + span { text "becomeablogger.com" } + } + + span { text " for some great resources on how to use OBS Studio." } + } + h4 { + _class "mt-4" + _id "9b787b11af064cac9a39effca7b98693" + span { text "Resources" } + } + ul { + _class "list-disc" + + li { + a { + _href "https://obsproject.com/" + span { text "OBS Studio" } + } + } + } + div { br } + div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } ] + +let article = Article.create metadata (ArticlePage.primary metadata content) diff --git a/app/src/App/src/Articles/Posts/FSharpSemanticKernel.fs b/app/src/App/src/Articles/Posts/FSharpSemanticKernel.fs new file mode 100644 index 0000000..ac0ccf7 --- /dev/null +++ b/app/src/App/src/Articles/Posts/FSharpSemanticKernel.fs @@ -0,0 +1,105 @@ +module App.Articles.Posts.FSharpSemanticKernel + +open App.Articles +open App.Articles.Shared +open FSharp.ViewEngine +open System +open type Html + +let private metadata = + { permalink = "fsharp-semantic-kernel" + title = "F# Semantic Kernel" + summary = "Create an AI assistant using F# and Microsoft’s Semantic Kernel" + cover = "https://assets.meiermade.com/andymeier/articles/shared/gradient-purple-4776537cdf89.webp" + tags = [| "AI"; "Programming"; "F#" |] + createdAt = DateTimeOffset(2024, 1, 23, 0, 0, 0, TimeSpan.Zero) } + +let private content = + [ div { + span { text "Microsoft’s " } + + a { + _href "https://github.com/microsoft/semantic-kernel" + span { text "Semantic Kernel SDK" } + } + + span { + text + " is a set of libraries which allows you to easily build applications which integrate with Large Language Model (LLM) APIs such as " + } + + a { + _href "https://platform.openai.com/docs/introduction" + span { text "OpenAI" } + } + + span { + text + ". It allows you to automatically orchestrate calls between the connected APIs and your code. This is extremely powerful as you can effectively build ‘skills’ for AI assistants to help understand and solve problems in your specific domain." + } + } + div { br } + div { + span { + text + "When building with the Semantic Kernel SDK, a ‘skill’ is effectively a class with a set of methods with annotations on the method itself as well as the input and output values. You can then add this to the kernel and it will be available as a tool when making requests in OpenAI chat completion. The real magic happens when the kernel receives the response as it will then automatically call the method based on the tool call in the OpenAI response." + } + } + div { br } + div { + span { + text + "To get a better understanding of how this works I created a short F# script using the Semantic Kernel SDK. In this script I created a Widget Plugin which can manage widget resources. In this example I am just using an in memory database (a dictionary) but you can imagine that this could be your own application database or API. I am using F#’s built in MailboxProcessor to help manage the console input and output as it helps me reason about the state of the program. The " + } + + a { + _href "https://learn.microsoft.com/en-us/semantic-kernel/agents/" + span { text "Semantic Kernel documentation" } + } + + span { text " has other examples of how to create agents." } + } + pre { + _class "language-fsharp" + + code { + _class "language-fsharp" + + span { + text + "#r \"nuget: Microsoft.Extensions.Logging\"\n#r \"nuget: Microsoft.Extensions.Logging.Console\"\n#r \"nuget: Microsoft.SemanticKernel\"\n#r \"nuget: FSharp.Control.AsyncSeq\"\n\nopen Microsoft.Extensions.Logging\nopen Microsoft.Extensions.DependencyInjection\nopen Microsoft.SemanticKernel\nopen Microsoft.SemanticKernel.ChatCompletion\nopen Microsoft.SemanticKernel.Connectors.OpenAI\nopen FSharp.Control\nopen System\nopen System.Text\nopen System.Threading\nopen System.Threading.Tasks\nopen System.ComponentModel\nopen System.Collections.Generic\n\ntype AgentStatus =\n | ReadyForUser\n | ReadyForAssistant\n\ntype AgentState =\n { history:ChatMessageContent list\n asisstantBuffer:StringBuilder\n status:AgentStatus }\n\ntype AgentAction =\n | GetUserInput\n | GetAssistantResponse of history:ChatMessageContent list\n\ntype AgentMessage =\n | UserMessage of content:string\n | StreamingAssistantMessage of content:string\n | StreamingAssistantMessageFinished\n | GetNextAction of channel:AsyncReplyChannel\n\ntype AgentMailbox = MailboxProcessor\n\ntype Evolve = AgentState -> AgentMessage -> AgentState\ntype NextAction = AgentState -> AgentAction\n\nlet getNextAction : NextAction =\n fun state ->\n match state.status with\n | ReadyForUser -> GetUserInput\n | ReadyForAssistant -> GetAssistantResponse state.history\n\nlet evolve : Evolve =\n fun state message ->\n match message with\n | UserMessage content ->\n { state with\n history = ChatMessageContent(AuthorRole.User, content) :: state.history\n status = ReadyForAssistant }\n | StreamingAssistantMessage content ->\n { state with asisstantBuffer = state.asisstantBuffer.Append(content) }\n | StreamingAssistantMessageFinished ->\n let content = state.asisstantBuffer.ToString()\n { state with\n asisstantBuffer = StringBuilder()\n history = ChatMessageContent(AuthorRole.Assistant, content) :: state.history\n status = ReadyForUser }\n | GetNextAction channel -> channel.Reply(getNextAction state); state\n\ntype Agent(kernel:Kernel) =\n let settings = OpenAIPromptExecutionSettings(ToolCallBehavior=ToolCallBehavior.AutoInvokeKernelFunctions)\n let chatService = kernel.GetRequiredService()\n\n let startMailbox initialState cancellationToken =\n AgentMailbox.Start((fun inbox ->\n AsyncSeq.initInfiniteAsync (fun _ -> inbox.Receive())\n |> AsyncSeq.fold evolve initialState\n |> Async.Ignore), cancellationToken)\n\n let rec runAsync (mailbox:AgentMailbox) = async {\n match! mailbox.PostAndAsyncReply(GetNextAction) with\n | GetUserInput ->\n do! Console.Out.WriteAsync(\"user > \") |> Async.AwaitTask\n let! content = Console.In.ReadLineAsync() |> Async.AwaitTask\n match content with\n | content when String.IsNullOrEmpty(content) ->\n return ()\n | content when content = Environment.NewLine ->\n do! runAsync mailbox\n | content ->\n mailbox.Post(UserMessage content)\n | GetAssistantResponse history ->\n let chunks = chatService.GetStreamingChatMessageContentsAsync(\n ChatHistory(List.rev history),\n executionSettings=settings,\n kernel=kernel)\n for chunk in AsyncSeq.ofAsyncEnum chunks do \n if chunk.Role.HasValue then\n do! Console.Out.WriteAsync($\"{chunk.Role} > \") |> Async.AwaitTask\n do! Console.Out.WriteAsync(chunk.Content) |> Async.AwaitTask\n mailbox.Post(StreamingAssistantMessage chunk.Content)\n do! Console.Out.WriteLineAsync() |> Async.AwaitTask\n mailbox.Post(StreamingAssistantMessageFinished)\n return! runAsync mailbox\n }\n\n member _.RunAsync(systemMessage:string) = async {\n let! cancellationToken = Async.CancellationToken\n let initialState =\n { history = List.singleton (ChatMessageContent(AuthorRole.System, systemMessage))\n asisstantBuffer = StringBuilder()\n status = ReadyForAssistant }\n let mailbox = startMailbox initialState cancellationToken\n do! runAsync mailbox\n }\n\ntype Widget = { id:Guid; name:string; widgetType:string }\n\ntype WidgetPlugin(loggerFactory:ILoggerFactory) =\n let logger = loggerFactory.CreateLogger()\n let widgets = Dictionary()\n\n []\n []\n member _.CreateWidget\n ([] name:string,\n [] widgetType:string)\n :[] Task = task {\n logger.LogInformation(\"Creating widget: {name}\", name)\n let widget = { id = Guid.NewGuid(); name = name; widgetType = widgetType } \n widgets.Add(widget.id, widget)\n return \"Successfully created widget\"\n }\n\n []\n []\n member _.UpdateWidgetName\n ([] id:Guid,\n [] name:string)\n :[] Task = task {\n logger.LogInformation(\"Updating widget name: {id} {name}\", id, name)\n return\n match widgets.TryGetValue(id) with\n | false, _ ->\n \"Widget not found\"\n | true, widget ->\n widgets[id] <- { widget with name = name }\n \"Successfully updated widget name\"\n }\n\n []\n []\n member _.DeleteWidget\n ([] id:Guid)\n :[] Task = task {\n logger.LogInformation(\"Deleting widget: {id}\", id)\n let removed = widgets.Remove(id)\n return if removed then \"Widget deleted\" else \"Widget not found\"\n }\n\n []\n []\n member _.ListWidgets() : [] Task = task {\n return widgets.Values\n }\n\nlet main () =\n let cts = new CancellationTokenSource()\n let cancellationToken = cts.Token\n Console.CancelKeyPress.Add(fun _ -> cts.Cancel())\n let apiKey = Environment.GetEnvironmentVariable(\"OPENAI_API_KEY\")\n let loggerFactory = LoggerFactory.Create(fun b -> b.AddConsole().SetMinimumLevel(LogLevel.Information) |> ignore)\n let builder = Kernel.CreateBuilder().AddOpenAIChatCompletion(\"gpt-4-1106-preview\", apiKey)\n builder.Services.AddSingleton(loggerFactory) |> ignore\n builder.Plugins.AddFromType() |> ignore\n let kernel = builder.Build()\n\n let systemMessage = \"\"\"\n You are a friendly assistant. Your job is help client's manage their widgets.\n If you are not given enough information to complete the task then ask for more information.\n Start by asking the client how you can help them with their widgets.\n \"\"\"\n let agent = Agent(kernel)\n let work = agent.RunAsync(systemMessage)\n try Async.RunSynchronously(work, cancellationToken=cancellationToken)\n with\n | :? OperationCanceledException -> Console.WriteLine(\"Agent stopped\")\n | ex -> raise ex\n\nmain()" + } + } + } + div { + span { text "Here is the output after running the script (you can run with " } + + code { + _class "language-none" + text "dotnet fsi script.fsx" + } + + span { text ")" } + } + pre { + _class "language-plain text" + + code { + _class "language-plain text" + + span { + text + "assistant > How can I assist you with your widgets today?\nuser > Could you create a widget named W1\nassistant > Of course! To go ahead with creating the widget, I'll just need to know the type of widget you would like me to create. There are three types available: 'Foo', 'Bar', and 'Baz'. Which one would you like for your widget named W1?\nuser > Foo please\nassistant > info: CreateWidget[0]\n Function CreateWidget invoking.\ninfo: FSI_0002.WidgetPlugin[0]\n Creating widget: W1\ninfo: CreateWidget[0]\n Function CreateWidget succeeded.\ninfo: CreateWidget[0]\n Function completed. Duration: 0.0049415s\nassistant > The widget named W1 of type 'Foo' has been successfully created. Is there anything else I can help you with regarding your widgets?\nuser > Could you create another widget named W2 of type Baz\nassistant > info: CreateWidget[0]\n Function CreateWidget invoking.\ninfo: FSI_0002.WidgetPlugin[0]\n Creating widget: W2\ninfo: CreateWidget[0]\n Function CreateWidget succeeded.\ninfo: CreateWidget[0]\n Function completed. Duration: 0.0001877s\nassistant > The widget named W2 of type 'Baz' has been successfully created. Is there anything else I can assist you with?\nuser > Could you list my widgets\nassistant > info: ListWidgets[0]\n Function ListWidgets invoking.\ninfo: ListWidgets[0]\n Function ListWidgets succeeded.\ninfo: ListWidgets[0]\n Function completed. Duration: 0.002207s\nassistant > You currently have the following widgets:\n\n1. Widget Name: W1\n - ID: fc39cda8-835b-4426-8c95-331b911560ed\n - Type: Foo\n\n2. Widget Name: W2\n - ID: 00a79541-09d1-423b-ad9f-6280145fe28b\n - Type: Baz\n\nIf you need further assistance with these widgets, feel free to let me know!\nuser > Thanks. Could you delete widget W1\nassistant > info: DeleteWidget[0]\n Function DeleteWidget invoking.\ninfo: FSI_0002.WidgetPlugin[0]\n Deleting widget: fc39cda8-835b-4426-8c95-331b911560ed\ninfo: DeleteWidget[0]\n Function DeleteWidget succeeded.\ninfo: DeleteWidget[0]\n Function completed. Duration: 0.0065881s\nassistant > Widget W1 has been successfully deleted. If there's anything else I can do for you, just let me know!\nuser > List widgets again please\nassistant > info: ListWidgets[0]\n Function ListWidgets invoking.\ninfo: ListWidgets[0]\n Function ListWidgets succeeded.\ninfo: ListWidgets[0]\n Function completed. Duration: 0.001004s\nassistant > After deleting Widget W1, here's the current list of your widgets:\n\n1. Widget Name: W2\n - ID: 00a79541-09d1-423b-ad9f-6280145fe28b\n - Type: Baz\n\nPlease let me know if there's anything more I can help you with your widgets.\nuser >" + } + } + } + div { + span { + text + "Hopefully this gives you a sense of how the Semantic Kernel works. The plugins are extremely powerful as you can take basically any API and connect it with natural language queries." + } + } + div { br } + div { br } ] + +let article = Article.create metadata (ArticlePage.primary metadata content) diff --git a/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs b/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs new file mode 100644 index 0000000..6803f10 --- /dev/null +++ b/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs @@ -0,0 +1,1671 @@ +module App.Articles.Posts.PersonalInfrastructure + +open App.Articles +open App.Articles.Shared +open FSharp.ViewEngine +open System +open type Html + +let private metadata = + { permalink = "personal-infrastructure" + title = "Personal Infrastructure" + summary = "How I set up the infrastructure for hosting my apps and services" + cover = "https://assets.meiermade.com/andymeier/articles/personal-infrastructure/cover-735b86220f20.webp" + tags = [| "DevOps"; "Pulumi"; "Programming"; "TypeScript" |] + createdAt = DateTimeOffset(2022, 8, 26, 0, 0, 0, TimeSpan.Zero) } + +let private content = + [ h2 { + _class "mt-8" + _id "758baa07a9c043c98fe5e89f68158a4f" + span { text "Summary" } + } + div { + span { + text + "In this post I will walk through how I set up my network and servers in order to run this blog and other services. " + } + } + div { span { text "I chose to build my own ‘cloud’ because" } } + ol { + _class "list-decimal" + li { span { text "I wanted to learn about networking and DevOps" } } + + li { + span { + text "The costs of running servers on DigitalOcean or AWS was more than I wanted to spend each month " + } + } + + li { + span { text "It was fun. I like building things and interacting with the physical world brings me joy" } + } + } + div { + span { text "My current infrastructure runs on 3 Raspberry Pis in my apartment. I followed " } + + a { + _href "https://www.pulumi.com/docs/guides/crosswalk/kubernetes/playbooks/" + span { text "Pulumi’s Playbook for Kubernetes" } + } + + span { + text + " for organizing the resources into different ‘stacks’ which I will go through in detail. You can see all the code in " + } + + a { + _href "https://github.com/ameier38/infrastructure" + span { text "my GitHub repo" } + } + + span { text "." } + } + div { br } + img { + _class "drop-shadow-xl rounded" + + _src + "https://assets.meiermade.com/andymeier/articles/personal-infrastructure/raspberry-pi-cluster-507654f64fad.webp" + + _alt "Three Raspberry Pi computers mounted in a home server rack" + _attr ("loading", "lazy") + _attr ("width", "1600") + _attr ("height", "1200") + } + h2 { + _class "mt-8" + _id "9876847e07a74d3da0e8f4ebad6b8888" + span { text "Table of Contents" } + } + ul { + _class "list-disc" + + li { + a { + _href "#fb580b4b8c014b3dbe6f77f1bde90f37" + span { text "Hardware" } + } + + span { text ": Everything I bought" } + } + + li { + a { + _href "#27c23f067a954b6eab3ece985ac07c02" + span { text "Identity Stack" } + } + + span { text ": Users, roles, keys, and permissions" } + } + + li { + a { + _href "#573dfd6c0afe47d3a8d484c944e24842" + span { text "Managed Infrastructure Stack" } + } + + span { text ": Resources needed to run the cluster" } + } + + li { + a { + _href "#7a1f1ed7f7da4059a63db2d46a4ad7f9" + span { text "Cluster Stack" } + } + + span { text ": Cluster deployment " } + } + + li { + a { + _href "#f1d5b2ab35694d7cac0fdc80862ef03d" + span { text "Cluster Services Stack" } + } + + span { text ": Cluster wide resources" } + } + + li { + a { + _href "#23ec3e2370f34b5eb33d4dd87df8d901" + span { text "App Services Stack" } + } + + span { text ": App specific resources" } + } + + li { + a { + _href "#246a7816de444b889fd4e169e6017b31" + span { text "Managed Apps Stack" } + } + + span { text ": Apps developed by someone else (e.g. Grafana) " } + } + + li { + a { + _href "#2ac83008618d4529be74301b94f49b13" + span { text "Apps Stacks" } + } + + span { text ": Apps developed by me (e.g., this blog)" } + } + + li { + a { + _href "#96bd7ae28beb485bb4aa482490ff5536" + span { text "CI/CD" } + } + + span { text ": Automated deployment using GitHub actions" } + } + } + h2 { + _class "mt-8" + _id "fb580b4b8c014b3dbe6f77f1bde90f37" + span { text "Hardware" } + } + ul { + _class "list-disc" + li { span { text "3 x Raspberry Pi 4 8GB" } } + li { span { text "3 x Raspberry Pi POE Hat" } } + li { span { text "3 x 32GB flash drive" } } + li { span { text "3 x CAT 6 1 foot ethernet cables" } } + + li { + span { text "1 x " } + + a { + _href "https://smile.amazon.com/gp/product/B082G2G2F8" + span { text "8 port POE Network Switch" } + } + } + + li { + span { text "1 x " } + + a { + _href "https://smile.amazon.com/gp/product/B07R5Q8MTJ" + span { text "6U Server Cabinet" } + } + } + + li { + span { text "1 x " } + + a { + _href "https://www.etsy.com/listing/978719017/1u-rack-for-raspberry-pi-19-rackmount" + span { text "1U Raspberry Pi Rack Mount" } + } + } + + li { + span { text "1 x " } + + a { + _href "https://smile.amazon.com/gp/product/B00006B834" + span { text "1U Rack Mount Power Strip" } + } + } + } + h2 { + _class "mt-8" + _id "fb96de2e2abc4e869b209eb9f7b568ef" + span { text "Stacks" } + } + div { + span { + text + "The reason for splitting up the infrastructure into different stacks is to limit the potential blast radius of errors. Typically the lower stacks (where the network, cluster, etc. are deployed) will change the least and the higher stacks (where applications are deployed) will change the most. This helps isolate potential errors when making changes. " + } + } + h3 { + _class "mt-6" + _id "27c23f067a954b6eab3ece985ac07c02" + span { text "Identity Stack" } + } + div { + span { + text + "This stack defines the users, roles, permissions, and keys that will be used by the other stacks in order to make changes to managed resources. In my case I am using AWS for key management, S3 buckets, container registries, and sending email notifications, so I have defined roles and permissions in order to deploy those resources." + } + } + div { + span { + text + "In a fresh AWS account I first manually created a GitHub identity provider which will allow GitHub actions to assume AWS roles in my account. You can read more about how this is configured in the " + } + + a { + _href + "https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services" + + span { text "GitHub documentation" } + } + + span { text ". Next I manually created an " } + + code { + _class "language-none" + text "identity-deployer" + } + + span { text " role with the following managed permissions:" } + } + ul { + _class "list-disc" + + li { + code { + _class "language-none" + text "IAMFullAccess" + } + } + + li { + code { + _class "language-none" + text "AWSKeyManagementServicePowerUser" + } + } + } + div { span { text "and the following trust relationship:" } } + pre { + _class "language-json" + + code { + _class "language-json" + + span { + text + "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"400689721046\"\n },\n \"Action\": \"sts:AssumeRole\"\n },\n {\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Federated\": \"arn:aws:iam::400689721046:oidc-provider/token.actions.githubusercontent.com\"\n },\n \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n \"Condition\": {\n \"StringEquals\": {\n \"token.actions.githubusercontent.com:aud\": \"sts.amazonaws.com\"\n },\n \"StringLike\": {\n \"token.actions.githubusercontent.com:sub\": \"repo:ameier38/infrastructure:*\"\n }\n }\n }\n ]\n}" + } + } + } + div { + span { + text + "This role has permissions to manage IAM resources and KMS keys, and the trust policy allows the role to be assumed by users in my account and by GitHub actions running in the " + } + + a { + _href "https://github.com/ameier38/infrastructure" + span { text "ameier38/infrastructure repo" } + } + + span { text "." } + } + div { + span { text "Next I created an " } + + code { + _class "language-none" + text "admin" + } + + span { text " user with the following policy attached:" } + } + pre { + _class "language-json" + + code { + _class "language-json" + + span { + text + "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Resource\": \"arn:aws:iam::400689721046:role/identity-deployer\"\n }\n ]\n}" + } + } + } + div { + span { text "This allows the " } + + code { + _class "language-none" + text "admin" + } + + span { text " user to assume the " } + + code { + _class "language-none" + text "identity-deployer" + } + + span { text " role. I added the " } + + code { + _class "language-none" + text "admin" + } + + span { text " user keys to the " } + + code { + _class "language-none" + text "~/.aws/credentials" + } + + span { text " file on my computer." } + } + pre { + _class "language-toml" + + code { + _class "language-toml" + span { text "[admin]\naws_access_key_id={ACCESS_KEY}\naws_secret_access_key={SECRET_KEY}" } + } + } + div { + span { text "I then added the " } + + code { + _class "language-none" + text "identity-deployer" + } + + span { text " role to the " } + + code { + _class "language-none" + text "~/.aws/config" + } + + span { text " file so I could assume this role in order to deploy the stack." } + } + pre { + _class "language-toml" + + code { + _class "language-toml" + + span { + text + "[profile admin]\nregion=us-east-1\noutput=json\n\n[profile identity-deployer]\nrole_arn=arn:aws:iam::400689721046:role/identity-deployer\nsource_profile=admin" + } + } + } + div { + span { text "With the " } + + code { + _class "language-none" + text "identity-deployer" + } + + span { text " role and " } + + code { + _class "language-none" + text "admin" + } + + span { text " user created, I can then create the identity stack using the Pulumi CLI. " } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "pulumi new aws-typescript" } + } + } + div { + span { + text + "In the new Pulumi project I created the encryption key which will be used by the other stacks to encrypt configuration secrets." + } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + span { text "import * as aws from '@pulumi/aws'\n\nconst pulumiKey = new aws.kms.Key('pulumi')" } + } + } + div { + span { text "Next I created the " } + + code { + _class "language-none" + text "infrastructure-deployer" + } + + span { text " role." } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as aws from '@pulumi/aws'\nimport * as identityProvider from './identityProvider'\nimport * as config from '../config'\n\nconst infrastructureDeployer = new aws.iam.Role('infrastructure-deployer', {\n name: 'infrastructure-deployer',\n assumeRolePolicy: {\n Version: '2012-10-17',\n Statement: [\n // Trust principals in this account to assume role\n {\n Effect: 'Allow',\n Action: 'sts:AssumeRole',\n Principal: {\n AWS: config.accountId\n }\n },\n // Allow `infrastructure` repo actions to assume role\n {\n Effect: 'Allow',\n Action: 'sts:AssumeRoleWithWebIdentity',\n Principal: {\n Federated: identityProvider.githubIdentityProviderArn\n },\n Condition: {\n StringEquals: {\n 'token.actions.githubusercontent.com:aud': 'sts.amazonaws.com'\n },\n StringLike: {\n 'token.actions.githubusercontent.com:sub': 'repo:ameier38/infrastructure:*'\n }\n }\n }\n ]\n }\n})" + } + } + } + div { + span { text "Then I attached a policy to the " } + + code { + _class "language-none" + text "infrastructure-deployer" + } + + span { text " role." } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "new aws.iam.RolePolicy('infrastructure-deployer', {\n name: 'infrastructure-deployer',\n role: role.infrastructureDeployerName,\n policy: {\n Version: '2012-10-17',\n Statement: [\n // Allow usage of `pulumi` key\n {\n Effect: 'Allow',\n Action: [\n 'kms:Decrypt',\n 'kms:Encrypt'\n ],\n Resource: key.pulumiKey.arn\n },\n // Allow management of cloudflared ecr repository\n {\n Effect: 'Allow',\n Action: 'ecr:GetAuthorizationToken',\n Resource: '*'\n },\n {\n Effect: 'Allow',\n Action: [\n 'ecr:*'\n ],\n Resource: pulumi.interpolate `arn:aws:ecr:${config.region}:${config.accountId}:repository/cloudflared-*`\n },\n // Allow management of ameier38-public bucket\n {\n Effect: 'Allow',\n Action: [\n 's3:*',\n ],\n Resource: [\n 'arn:aws:s3:::ameier38-public',\n 'arn:aws:s3:::ameier38-public/*'\n ]\n },\n // Allow `infrastructure-deployer` role to manage email service\n {\n Effect: 'Allow',\n Action: [\n 'ses:*',\n ],\n Resource: '*'\n },\n ]\n }\n})" + } + } + } + div { + span { text "You can see the rest of the code in the " } + + a { + _href "https://github.com/ameier38/infrastructure/tree/main/1-identity" + span { text "GitHub repo" } + } + + span { text "." } + } + div { + span { text "I can then deploy the stack by first assuming the " } + + code { + _class "language-none" + text "identity-deployer" + } + + span { text " role and using the Pulumi CLI." } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "$env:AWS_PROFILE=\"identity-deployer\"\npulumi up" } + } + } + h3 { + _class "mt-6" + _id "573dfd6c0afe47d3a8d484c944e24842" + span { text "Managed Infrastructure Stack" } + } + div { + span { + text + "This stack includes resources needed to run and connect to the Kubernetes cluster. In order to create the stack I first added the " + } + + code { + _class "language-none" + text "infrastructure-deployer" + } + + span { text " role to the " } + + code { + _class "language-none" + text "~/.aws/config" + } + + span { text " file." } + } + pre { + _class "language-toml" + + code { + _class "language-toml" + + span { + text + "[profile infrastructure-deployer]\nrole_arn=arn:aws:iam::400689721046:role/infrastructure-deployer\nsource_profile=admin" + } + } + } + div { + span { text "Then I assumed the " } + + code { + _class "language-none" + text "infrastructure-deployer" + } + + span { text " role and created the stack using the " } + + code { + _class "language-none" + text "pulumi" + } + + span { text " encryption key created in the identity stack." } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + + span { + text + "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi new aws-typescript --secrets-provider \"awskms://{pulumi key id}?region=us-east-1\"" + } + } + } + h4 { + _class "mt-4" + _id "bb0431f031fd4e6e96b44f0af7ebfe20" + span { text "Kubernetes API Tunnel" } + } + div { + span { + text + "Since I am running Kubernetes on Raspberry Pis in my apartment I need some way to connect to the Kubernetes API from outside my home network (such as GitHub Actions for deploying applications). This is made possible using " + } + + a { + _href "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/" + span { text "Cloudflare Tunnels" } + } + + span { + text + ". A tunnel is a persistent connection between a daemon application (called cloudflared) and the nearest Cloudflare datacenter. Cloudflare creates a public IP address for each tunnel and then proxies requests to that IP address to the cloudflared daemon. The cloudflared daemon then forwards the request to a service based on rules you specify. The below diagram from " + } + + a { + _href "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/#how-it-works" + span { text "Cloudflare’s documentation" } + } + + span { text " illustrates this well." } + } + img { + _class "drop-shadow-xl rounded" + + _src + "https://assets.meiermade.com/andymeier/articles/personal-infrastructure/cloudflare-tunnel-diagram-ddaa9b198f33.webp" + + _alt "Cloudflare Tunnel routing a browser request through Cloudflare to a service on a local server" + _attr ("loading", "lazy") + _attr ("width", "1768") + _attr ("height", "1102") + } + div { + span { + text + "I set up the cloudflared daemon on the Raspberry Pi running the master Kubernetes node. You can see this later in the " + } + + a { + _href "#ccd359bcf0b448efae3cefbf6ac48284" + span { text "Cluster Stack" } + } + + span { text "." } + } + div { span { text "Using Pulumi I can create the tunnel and configure the credentials. " } } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as cloudflare from '@pulumi/cloudflare'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as random from '@pulumi/random'\n\nconst tunnelSecret = new random.RandomPassword('k8s-api-tunnel', {\n length: 32\n})\n\nexport const k8sApiTunnel = new cloudflare.ArgoTunnel('k8s-api', {\n accountId: cloudflare.config.accountId!,\n name: 'k8s-api',\n secret: tunnelSecret.result.apply(s => Buffer.from(s).toString('base64'))\n})\n\nexport const k8sApiTunnelCredentials = pulumi.all([\n k8sApiTunnel.accountId,\n k8sApiTunnel.id,\n k8sApiTunnel.name,\n k8sApiTunnel.secret\n]).apply(([accountId, tunnelId, tunnelName, tunnelSecret]) => {\n return JSON.stringify({\n AccountTag: accountId,\n TunnelID: tunnelId,\n TunnelName: tunnelName,\n TunnelSecret: tunnelSecret\n })\n})" + } + } + } + div { + _class "bg-gray-200 dark:bg-gray-800 rounded p-2" + span { text "The tunnel credentials format is not well documented but to get an example run " } + + code { + _class "language-none" + text "cloudflared tunnel create" + } + } + h4 { + _class "mt-4" + _id "15f01fbec7194949a53899b8a59073a9" + span { text "DNS Records" } + } + div { + span { + text + "With the tunnel defined, I then created a friendly DNS record to point to the tunnel. I use this domain in my kubeconfig file in order to connect to the Kubernetes API using kubectl." + } + } + div { + span { text "First I created the " } + + a { + _href "https://www.cloudflare.com/learning/dns/glossary/dns-zone/" + span { text "Cloudflare zone" } + } + + span { text "." } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as cloudflare from '@pulumi/cloudflare'\n\nconst andrewmeierDotDev = new cloudflare.Zone('andrewmeier.dev', {\n zone: 'andrewmeier.dev'\n})\n\nnew cloudflare.ZoneSettingsOverride('andrewmeier.dev', {\n zoneId: andrewmeierDotDev.id,\n settings: {\n ssl: 'strict'\n }\n})\n\nexport const andrewmeierDotDevZoneId = andrewmeierDotDev.id\nexport const andrewmeierDotDevDomain = andrewmeierDotDev.zone" + } + } + } + div { + span { text "Next I created the DNS record " } + + code { + _class "language-none" + text "k8s.andrewmeier.dev" + } + + span { text " to point to the tunnel." } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as cloudflare from '@pulumi/cloudflare'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as tunnel from './tunnel'\nimport * as zone from './zone'\n\nexport const k8sApiRecord = new cloudflare.Record('k8s.andrewmeier.dev', {\n zoneId: zone.andrewmeierDotDevZoneId,\n name: 'k8s',\n type: 'CNAME',\n value: tunnel.k8sApiTunnel.cname,\n proxied: true\n})" + } + } + } + h4 { + _class "mt-4" + _id "fbcd4ab34cd243b794de5698f11b5573" + span { text "Identity Provider" } + } + div { + span { + text + "For applications that I don’t want to expose to the public I can also use Cloudflare to authenticate requests with an identity provider. I chose to use GitHub as the identity provider but there are other options as well (such as Google)." + } + } + div { + span { text "I first created a " } + + a { + _href "https://docs.github.com/en/developers/apps/building-oauth-apps/creating-an-oauth-app" + span { text "GitHub OAuth application" } + } + + span { text " and then created the " } + + a { + _href "https://developers.cloudflare.com/cloudflare-one/identity/" + span { text "Cloudflare Access Identity Provider" } + } + + span { text " in Pulumi using the client ID and client secret provided by the GitHub OAuth application." } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "const githubIdentityProvider = new cloudflare.AccessIdentityProvider('github', {\n name: 'github',\n type: 'github',\n accountId: cloudflare.config.accountId!,\n configs: [{\n clientId: config.githubConfig.clientId,\n clientSecret: config.githubConfig.clientSecret\n }]\n})" + } + } + } + h4 { + _class "mt-4" + _id "86529189d6b9472f86b11f303c74c3eb" + span { text "Access Application" } + } + div { + span { text "In order to authenticate access to the Kubernetes API, I must create a " } + + a { + _href "https://developers.cloudflare.com/cloudflare-one/tutorials/kubectl/" + span { text "Cloudflare Access Application" } + } + + span { text " associated with the DNS record that I created above." } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as cloudflare from '@pulumi/cloudflare'\nimport { githubIdentityProvider } from './accessIdentityProvider'\nimport { k8sApiRecord } from './record'\n\nexport const k8sApi = new cloudflare.AccessApplication('k8s-api', {\n name: 'Kubernetes API',\n domain: k8sApiRecord.hostname,\n accountId: cloudflare.config.accountId,\n allowedIdps: [ githubIdentityProvider.id ],\n autoRedirectToIdentity: true,\n type: 'self_hosted'\n}) " + } + } + } + div { + span { text "This way any request to " } + + code { + _class "language-none" + text "k8s.andrewmeier.dev" + } + + span { text " will first need to authenticate with GitHub." } + } + h4 { + _class "mt-4" + _id "e8047634165f4a8eb61fbbfc2687baaf" + span { text "Access Policy" } + } + div { + span { + text + "With the authentication configured I now need to configure authorization. This is accomplished using a " + } + + a { + _href "https://developers.cloudflare.com/cloudflare-one/policies/access/" + span { text "Cloudflare Access Policy" } + } + + span { + text + ". Because I also want to access the Kubernetes API when running GitHub actions, I first need to create an " + } + + a { + _href "https://developers.cloudflare.com/cloudflare-one/identity/service-tokens/" + span { text "Access Service Token" } + } + + span { text "." } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as cloudflare from '@pulumi/cloudflare'\n\nexport const githubServiceToken = new cloudflare.AccessServiceToken('github', {\n name: 'GitHub',\n accountId: cloudflare.config.accountId!\n})" + } + } + } + div { + span { + text + "Then I can create the access policies to authorize my email address (authenticated with GitHub) and systems using the service token." + } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as cloudflare from '@pulumi/cloudflare'\nimport { k8sApi } from './accessApplication'\nimport { githubServiceToken } from './serviceToken'\nimport { email } from '../config'\n\nnew cloudflare.AccessPolicy('k8s-api-user-access', {\n name: 'Kubernetes API User Access',\n precedence: 1,\n accountId: cloudflare.config.accountId,\n applicationId: k8sApi.id,\n decision: 'allow',\n includes: [{\n emails: [ email ]\n }]\n})\n\nnew cloudflare.AccessPolicy('k8s-api-github-access', {\n name: 'Kubernetes API GitHub Access',\n precedence: 2,\n accountId: cloudflare.config.accountId,\n applicationId: k8sApi.id,\n decision: 'non_identity',\n includes: [{\n serviceTokens: [ githubServiceToken.id ]\n }]\n})" + } + } + } + div { + span { text "I can now deploy the stack by assuming the " } + + code { + _class "language-none" + text "infrastructure-deployer" + } + + span { text " role then using the Pulumi CLI." } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi up" } + } + } + h3 { + _class "mt-6" + _id "7a1f1ed7f7da4059a63db2d46a4ad7f9" + span { text "Cluster Stack" } + } + div { + span { + text + "This stack defines the Kubernetes cluster. I decided to host the cluster myself instead of using a managed cluster for a few reasons:" + } + } + ol { + _class "list-decimal" + li { span { text "I wanted to learn more about networking " } } + li { span { text "It is cheaper" } } + } + div { + span { + text + "There are three nodes in the cluster, each of which is a Raspberry Pi. In order to run Kubernetes I am using " + } + + a { + _href "https://k3s.io/" + span { text "k3s" } + } + + span { + text + ", which is a lightweight version of Kubernetes. Running k3s on Raspberry Pis is great because they don’t take up much space (the entire rack fits in my coat closet), they don’t use much power (can run on PoE), and they are cheap (I bought them before chip crisis). " + } + } + div { + span { text "There is a bit of manual setup for each Pi which is provided in the " } + + a { + _href "https://github.com/ameier38/infrastructure/blob/main/2-cluster/README.md" + span { text "stack README" } + } + + span { text "." } + } + div { + span { text "Once the Pis are setup and running, I can install k3s and cloudflared using the " } + + a { + _href "https://www.pulumi.com/registry/packages/command/" + span { text "Pulumi Command" } + } + + span { text " package. I first created the stack using the key created in the identity stack." } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + + span { + text + "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi new aws-typescript --secrets-provider \"awskms://{pulumi key id}?region=us-east-1\"" + } + } + } + div { + span { + text + "Then I configured the connections to each of the Raspberry Pis and retrieved the Kubernetes API tunnel information exported from the Managed Infrastructure stack." + } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as pulumi from '@pulumi/pulumi'\nimport * as command from '@pulumi/command'\n\nexport const env = pulumi.getStack()\n\nconst managedInfrastructureStack = new pulumi.StackReference('ameier38/managed-infrastructure/prod')\n\nexport const k8sApiTunnelId = managedInfrastructureStack.requireOutput('k8sApiTunnelId')\nexport const k8sApiTunnelCredentials = managedInfrastructureStack.requireOutput('k8sApiTunnelCredentials')\nexport const k8sApiTunnelHost = managedInfrastructureStack.requireOutput('k8sApiTunnelHost')\n\nconst rawConfig = new pulumi.Config()\nexport const privateKey = rawConfig.requireSecret('privateKey')\n\nexport const masterConn: command.types.input.remote.ConnectionArgs = {\n host: 'ameier-1',\n port: 22,\n user: 'root',\n privateKey: privateKey\n}\n\nexport const agent1Conn: command.types.input.remote.ConnectionArgs = {\n host: 'ameier-2',\n port: 22,\n user: 'root',\n privateKey: privateKey\n}\n\nexport const agent2Conn: command.types.input.remote.ConnectionArgs = {\n host: 'ameier-3',\n port: 22,\n user: 'root',\n privateKey: privateKey\n} " + } + } + } + div { span { text "Then I created the scripts required to install cloudflared and k3s." } } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as command from '@pulumi/command'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as config from './config'\n\n// ref: https://developers.cloudflare.com/cloudflare-one/tutorials/kubectl/\nconst installCloudflaredScript = pulumi.interpolate `\necho \"Installing cloudflared\"\n\nset -e\n\necho \"Creating config directory\"\nmkdir -p /etc/cloudflared\n\necho \"Writing credentials\"\ncat << EOF > /etc/cloudflared/credentials.json\n${config.k8sApiTunnelCredentials}\nEOF\n\necho \"Writing config\"\ncat << EOF > /etc/cloudflared/config.yml\ntunnel: ${config.k8sApiTunnelId}\ncredentials-file: /etc/cloudflared/credentials.json\ningress:\n - hostname: ${config.k8sApiTunnelHost}\n service: tcp://localhost:6443\n originRequest:\n proxyType: socks\n - service: http_status:404\nEOF\n\necho \"Downloading cloudflared\"\ncurl -sfLO https://github.com/cloudflare/cloudflared/releases/download/2022.3.4/cloudflared-linux-arm64\n\necho \"Updating cloudflared permissions\"\nchmod +x cloudflared-linux-arm64\n\necho \"Moving cloudflared to bin\"\nmv cloudflared-linux-arm64 /usr/local/bin/cloudflared\n\nif [ ! -f /etc/systemd/system/cloudflared.service ]\nthen\n echo \"Installing cloudflared service\"\n cloudflared service install\n echo \"Starting cloudflared service\"\n systemctl start cloudflared \nelse\n echo \"Restarting cloudflared service\"\n systemctl restart cloudflared\nfi\n`\n\nconst installK3sMaster = new command.remote.Command('install-k3s-master', {\n connection: config.masterConn,\n create: 'curl -sfL https://get.k3s.io | sh -'\n})\n\nnew command.remote.Command('install-cloudflared', {\n connection: config.masterConn,\n create: installCloudflaredScript,\n triggers: [ installCloudflaredScript ]\n})\n\nconst readKubeconfig = new command.remote.Command('read-kubeconfig', {\n connection: config.masterConn,\n create: 'cat /etc/rancher/k3s/k3s.yaml'\n}, { dependsOn: installK3sMaster })\n\nexport const kubeconfig =\n pulumi\n .all([readKubeconfig.stdout, config.k8sApiTunnelHost])\n .apply(([kubeconfig, host]) => kubeconfig.replace('127.0.0.1', host))\n\nconst readToken = new command.remote.Command('read-token', {\n connection: config.masterConn,\n create: 'cat /var/lib/rancher/k3s/server/node-token'\n}, {dependsOn: installK3sMaster })\n\nconst token = readToken.stdout.apply(token => token.replace('\\n', ''))\n\nfor (const [i, conn] of [config.agent1Conn, config.agent2Conn].entries()) {\n new command.remote.Command(`install-k3s-agent-${i}`, {\n connection: conn,\n create: pulumi.interpolate `curl -sfL https://get.k3s.io | K3S_URL=\"https://${config.masterConn.host}:6443\" K3S_TOKEN=\"${token}\" sh -`,\n triggers: [token]\n })\n}" + } + } + } + div { + span { text "Then I can assume the " } + + code { + _class "language-none" + text "infrastructure-deployer" + } + + span { text " role (needed to access KMS key in order to decrypt secrets) and deploy the cluster." } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi up" } + } + } + div { + _class "bg-gray-200 dark:bg-gray-800 rounded p-2" + + span { + text + "I must run this on the local network in order to access the Raspberry Pis. I could set up SSH with cloudflared running on each Pi but have not done it yet 😃" + } + } + h4 { + _class "mt-4" + _id "02504c7d07d74c2685db65e08c85920c" + span { text "Connecting" } + } + div { + span { + text + "In order to connect to the cluster using kubectl I have to configure a few things. First I need to export the kubeconfig file from the Cluster stack." + } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "pulumi stack output --show-secrets kubeconfig > ~/.kube/kubeconfig" } + } + } + div { span { text "Then I have to configure the kubeconfig file to use a proxy." } } + pre { + _class "language-yaml" + + code { + _class "language-yaml" + + span { + text + "apiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: ...\n proxy-url: socks5://localhost:1234\n server: https://k8s.andrewmeier.dev:6443\n name: default\ncontexts:\n- context:\n cluster: default\n namespace: andrewmeier\n user: default\n name: default\ncurrent-context: default\nkind: Config\npreferences: {}\nusers:\n- name: default\n user:\n client-certificate-data: ...\n client-key-data: ..." + } + } + } + div { + span { text "Note that I configured the tunnel in the installation script with " } + + code { + _class "language-none" + text "proxyType: socks" + } + + span { text " and pointed to the Kubernetes API " } + + code { + _class "language-none" + text "tcp://localhost:6443" + } + + span { text " as shown below." } + } + pre { + _class "language-yaml" + + code { + _class "language-yaml" + + span { + text + "tunnel: ${config.k8sApiTunnelId}\ncredentials-file: /etc/cloudflared/credentials.json\ningress:\n - hostname: ${config.k8sApiTunnelHost}\n service: tcp://localhost:6443\n originRequest:\n proxyType: socks\n - service: http_status:404" + } + } + } + div { span { text "Then on my laptop I connect to the tunnel using the cloudflared CLI." } } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "cloudflared access tcp --hostname=k8s.andrewmeier.dev --url=localhost:1234" } + } + } + div { + span { text "This sets up a proxy server on my laptop which will direct requests from " } + + code { + _class "language-none" + text "localhost:1234" + } + + span { text " to " } + + code { + _class "language-none" + text "k8s.andrewmeier.dev" + } + + span { + text + ". Above I configured the kubeconfig to use this proxy. In a different shell, when I first run a kubectl command, a browser window will open asking me to authenticate with GitHub (I set up an access policy for the Kubernetes API in the Managed Infrastructure stack). Additional details about using kubectl with Cloudflare Tunnels can be found in the " + } + + a { + _href "https://developers.cloudflare.com/cloudflare-one/tutorials/kubectl/" + span { text "Cloudflare documentation" } + } + + span { text "." } + } + div { + span { + text + "To make this easier for me, I added a function to my PowerShell profile to connect to the tunnel as a Job." + } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + + span { + text + "function start-ameier-k8s-tunnel {\n $env:KUBECONFIG=\"C:\\Users\\andy\\.kube\\ameier-kubeconfig\"\n Start-Job -Name ameier-k8s-tunnel -ScriptBlock { cloudflared access tcp --hostname=k8s.andrewmeier.dev --url=localhost:1234 }\n}" + } + } + } + div { + span { text "Then before running my kubectl commands I just need to make sure to run " } + + code { + _class "language-none" + text "start-ameier-k8s-tunnel" + } + + span { text " first." } + } + h3 { + _class "mt-6" + _id "f1d5b2ab35694d7cac0fdc80862ef03d" + span { text "Cluster Services Stack" } + } + div { + span { + text + "This stack defines all the cluster-wide services that are used for running and monitoring applications. I first created the stack using the Pulumi CLI." + } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + + span { + text + "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi new aws-typescript --secrets-provider \"awskms://{pulumi key id}?region=us-east-1\"" + } + } + } + div { + span { + text + "Next, because this stack will connect to the Kubernetes cluster, I need to configure the stack to use the kubeconfig file that I created above." + } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "cat ~/.kube/kubeconfig | pulumi config set --secret kubernetes:kubeconfig" } + } + } + h4 { + _class "mt-4" + _id "f42bc896f4364370a9370e116069d86d" + span { text "Reverse Proxy" } + } + div { + span { text "I use Traefik for the reverse proxy which is used to manage request routing. Traefik " } + + a { + _href "https://rancher.com/docs/k3s/latest/en/networking/#traefik-ingress-controller" + span { text "ships with k3s" } + } + + span { text " so there is not much to set up. In my case I want to use " } + + a { + _href "https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/full-strict/" + span { text "Cloudflare’s Full Strict SSL" } + } + + span { text " which requires the use of of a Cloudflare origin certificate to terminate TLS. " } + } + div { + span { text "I first created the origin certificate, leveraging the convenient " } + + a { + _href "https://www.pulumi.com/registry/packages/tls/" + span { text "Pulumi TLS package" } + } + + span { text "." } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as cloudflare from '@pulumi/cloudflare'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as tls from '@pulumi/tls'\nimport * as config from '../config'\n\nexport const originCertPrivateKey = new tls.PrivateKey('origin-cert', {\n algorithm: 'RSA'\n})\n\nconst originCertRequest = new tls.CertRequest('origin-cert-request', {\n privateKeyPem: originCertPrivateKey.privateKeyPem,\n subject: {\n commonName: config.andrewmeierDotDevDomain,\n organization: 'andrewmeier.dev'\n }\n})\n\nexport const originCert = new cloudflare.OriginCaCertificate('origin-cert', {\n csr: originCertRequest.certRequestPem,\n requestType: 'origin-rsa',\n hostnames: [\n config.andrewmeierDotDevDomain,\n pulumi.interpolate `*.${config.andrewmeierDotDevDomain}`\n ]\n})" + } + } + } + div { span { text "Next I configured Traefik to use this certificate for terminating TLS." } } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as k8s from '@pulumi/kubernetes'\nimport { originCert, originCertPrivateKey } from '../cloudflare/originCertificate'\n\n// Traefik is deployed as part of k3s\n\nconst originCertSecret = new k8s.core.v1.Secret('origin-cert', {\n metadata: { namespace: 'kube-system' },\n stringData: {\n 'tls.crt': originCert.certificate,\n 'tls.key': originCertPrivateKey.privateKeyPem\n }\n})\n\n// Enables Cloudflare Full Strict SSL\nnew k8s.apiextensions.CustomResource('tls-store', {\n apiVersion: 'traefik.containo.us/v1alpha1',\n kind: 'TLSStore',\n metadata: {\n name: 'default',\n namespace: 'kube-system'\n },\n spec: {\n defaultCertificate: {\n secretName: originCertSecret.metadata.name\n }\n }\n})" + } + } + } + h4 { + _class "mt-4" + _id "ee00759c3def4058ba87450e0d264d27" + span { text "Tunnel" } + } + div { + span { text "In order to connect to applications from outside the cluster I created another " } + + a { + _href "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/" + span { text "Cloudflare Tunnel" } + } + + span { text ". " } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as cloudflare from '@pulumi/cloudflare'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as random from '@pulumi/random'\n\nconst k8sTunnelSecret = new random.RandomPassword('k8s-tunnel-secret', {\n length: 32\n})\n\nexport const k8sTunnel = new cloudflare.ArgoTunnel('k8s', {\n accountId: cloudflare.config.accountId!,\n name: 'k8s',\n secret: k8sTunnelSecret.result.apply(s => Buffer.from(s).toString('base64'))\n})\n\nexport const k8sTunnelCredentials = pulumi.all([\n k8sTunnel.accountId,\n k8sTunnel.id,\n k8sTunnel.name,\n k8sTunnel.secret\n]).apply(([accountId, tunnelId, tunnelName, tunnelSecret]) => {\n return JSON.stringify({\n AccountTag: accountId,\n TunnelID: tunnelId,\n TunnelName: tunnelName,\n TunnelSecret: tunnelSecret\n })\n})" + } + } + } + div { + span { + text + "I then created a deployment for the cloudflared daemon and configured it to forward requests from the tunnel to the Traefik proxy. " + } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as k8s from '@pulumi/kubernetes'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as repository from '../aws/repository'\nimport * as tunnel from '../cloudflare/tunnel'\nimport * as config from '../config'\n\nconst identifier = 'cloudflared'\n\nconst cloudflaredConfig = pulumi.interpolate `\ntunnel: ${tunnel.k8sTunnel.id}\ncredentials-file: /var/secrets/cloudflared/credentials.json\nmetrics: 0.0.0.0:2000\nno-autoupdate: true\ningress:\n - hostname: ${config.andrewmeierDotDevDomain}\n service: http://traefik.kube-system\n - hostname: '*.${config.andrewmeierDotDevDomain}'\n service: http://traefik.kube-system\n - service: http_status:404\n`\n\nconst cloudflaredSecret = new k8s.core.v1.Secret(identifier, {\n metadata: { namespace: 'kube-system' },\n stringData: {\n 'config.yaml': cloudflaredConfig,\n 'credentials.json': tunnel.k8sTunnelCredentials\n }\n})\n\nconst registrySecret = new k8s.core.v1.Secret(`${identifier}-registry`, {\n metadata: { namespace: 'kube-system' },\n type: 'kubernetes.io/dockerconfigjson',\n stringData: {\n '.dockerconfigjson': repository.cloudflaredDockerconfigjson\n }\n})\n\nconst labels = { 'app.kubernetes.io/name': identifier }\n\nnew k8s.apps.v1.Deployment(identifier, {\n metadata: {\n name: identifier,\n namespace: 'kube-system'\n },\n spec: {\n replicas: 1,\n selector: { matchLabels: labels },\n template: {\n metadata: {\n labels: labels,\n annotations: {\n 'prometheus.io/scrape': 'true',\n 'prometheus.io/path': '/metrics',\n 'prometheus.io/port': '2000',\n }\n },\n spec: {\n imagePullSecrets: [{\n name: registrySecret.metadata.name\n }],\n containers: [{\n name: identifier,\n image: repository.cloudflaredImageName,\n args: [\n 'tunnel',\n '--config', '/var/secrets/cloudflared/config.yaml',\n 'run'\n ],\n livenessProbe: {\n httpGet: { path: '/ready', port: 2000 },\n failureThreshold: 1,\n initialDelaySeconds: 10,\n periodSeconds: 10\n },\n volumeMounts: [{\n name: 'cloudflared',\n mountPath: '/var/secrets/cloudflared',\n readOnly: true\n }]\n }],\n volumes: [{\n name: 'cloudflared',\n secret: { secretName: cloudflaredSecret.metadata.name }\n }],\n nodeSelector: { 'kubernetes.io/arch': 'arm64' }\n } \n }\n }\n})" + } + } + } + div { + span { text "This will allow me to use the " } + + a { + _href "https://doc.traefik.io/traefik/routing/providers/kubernetes-crd/#kind-ingressroute" + span { text "Traefik IngressRoute" } + } + + span { text " to direct traffic to services running in the cluster." } + } + h4 { + _class "mt-4" + _id "442c43c7c180479c8ce304ba110de961" + span { text "Monitoring " } + } + div { + span { + text + "I use Prometheus for monitoring applications. It is easy to expose metrics endpoints using client libraries such as " + } + + a { + _href "https://github.com/prometheus-net/prometheus-net" + span { text "prometheus-net" } + } + + span { + text + ". Then you just need to annotate the pods and Prometheus will take care of scraping each pod. I used " + } + + a { + _href "https://helm.sh/" + span { text "Helm" } + } + + span { text " as part of the " } + + a { + _href "https://www.pulumi.com/registry/packages/kubernetes/" + span { text "Pulumi Kubernetes package" } + } + + span { text " to deploy." } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as k8s from '@pulumi/kubernetes'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as namespace from './namespace'\n\nconst chart = new k8s.helm.v3.Chart('prometheus', {\n chart: 'prometheus',\n version: '15.5.3',\n fetchOpts: { repo: 'https://prometheus-community.github.io/helm-charts' },\n namespace: namespace.monitoringNamespace,\n values: {\n serviceAccounts: {\n alertmanager: { create: false },\n pushgateway: { create: false }\n },\n alertmanager: { enabled: false },\n pushgateway: { enabled: false }\n }\n})\n\nconst internalHost =\n pulumi.all([chart, namespace.monitoringNamespace]).apply(([chart, namespace]) => {\n const meta = chart.getResourceProperty('v1/Service', namespace, 'prometheus-server', 'metadata')\n return pulumi.interpolate `${meta.name}.${meta.namespace}.svc.cluster.local`\n })\n\nconst internalPort =\n pulumi.all([chart, namespace.monitoringNamespace]).apply(([chart, namespace]) => {\n const spec = chart.getResourceProperty('v1/Service', namespace, 'prometheus-server', 'spec')\n return spec.ports[0].port\n })\n\nexport const internalUrl = pulumi.interpolate `http://${internalHost}:${internalPort}`" + } + } + } + div { + span { + text + "I use Promtail and Loki to aggregate the logs from all the applications. Promtail takes care of scraping the pod logs and sending to Loki in the format it expects. Loki is nice as it integrates with Grafana and uses the same query structure as Prometheus. I also used Helm to deploy Loki and Promtail. You can see the " + } + + a { + _href "https://github.com/ameier38/infrastructure/tree/main/4-cluster-services" + span { text "rest of the code on GitHub" } + } + + span { text "." } + } + div { + span { text "Again, like with the previous stacks, I can deploy the stack by assuming the " } + + code { + _class "language-none" + text "infrastructure-deployer" + } + + span { + text + " role and using the Pulumi CLI. I also need to connect to the tunnel so that the stack can connect to the Kubernetes API." + } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "$env:AWS_PROFILE=\"infrastructure-deployer\"\nstart-ameier-k8s-tunnel\npulumi up" } + } + } + h3 { + _class "mt-6" + _id "23ec3e2370f34b5eb33d4dd87df8d901" + span { text "App Services Stack" } + } + div { + span { + text + "This stack is used for any application specific resources such as databases and DNS records. In my case I do not use any databases at the moment so it is just used for DNS and configuring access to internal services. Again, I first created the stack using the Pulumi CLI." + } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + + span { + text + "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi new aws-typescript --secrets-provider \"awskms://{pulumi key id}?region=us-east-1\"" + } + } + } + div { + span { + text + "Next I created the DNS records for the applications which all point to the hostname of the tunnel created in the Cluster Services stack (this tunnel routes requests to Traefik)." + } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as cloudflare from '@pulumi/cloudflare'\nimport * as config from '../config'\n\nexport const traefikRecord = new cloudflare.Record('traefik.andrewmeier.dev', {\n zoneId: config.andrewmeierDotDevZoneId,\n name: 'traefik',\n type: 'CNAME',\n value: config.k8sTunnelHost,\n proxied: true\n})\n\nexport const whoamiRecord = new cloudflare.Record('whoami.andrewmeier.dev', {\n zoneId: config.andrewmeierDotDevZoneId,\n name: 'whoami',\n type: 'CNAME',\n value: config.k8sTunnelHost,\n proxied: true\n})\n\nexport const grafanaRecord = new cloudflare.Record('grafana.andrewmeier.dev', {\n zoneId: config.andrewmeierDotDevZoneId,\n name: 'grafana',\n type: 'CNAME',\n value: config.k8sTunnelHost,\n proxied: true\n})\n\nexport const andrewmeierRecord = new cloudflare.Record('andrewmeier.dev', {\n zoneId: config.andrewmeierDotDevZoneId,\n name: '@',\n type: 'CNAME',\n value: config.k8sTunnelHost,\n proxied: true\n})" + } + } + } + div { + span { text "Next I created " } + + a { + _href "https://developers.cloudflare.com/cloudflare-one/applications/" + span { text "Cloudflare Access Applications" } + } + + span { text " for each of the applications that I want to authenticate user access." } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as cloudflare from '@pulumi/cloudflare'\nimport * as record from './record'\nimport * as config from '../config'\n\nexport const traefik = new cloudflare.AccessApplication('traefik', {\n name: 'Traefik',\n domain: record.traefikRecord.hostname,\n allowedIdps: [ config.githubIdentityProviderId ],\n autoRedirectToIdentity: true,\n accountId: cloudflare.config.accountId,\n logoUrl: config.logoUrl,\n httpOnlyCookieAttribute: false\n})\n\nexport const whoami = new cloudflare.AccessApplication('whoami', {\n name: 'Whoami',\n domain: record.whoamiRecord.hostname,\n allowedIdps: [ config.githubIdentityProviderId ],\n autoRedirectToIdentity: true,\n accountId: cloudflare.config.accountId,\n logoUrl: config.logoUrl,\n httpOnlyCookieAttribute: false\n})\n\nexport const grafana = new cloudflare.AccessApplication('grafana', {\n name: 'Grafana',\n domain: record.grafanaRecord.hostname,\n allowedIdps: [ config.githubIdentityProviderId ],\n autoRedirectToIdentity: true,\n accountId: cloudflare.config.accountId,\n logoUrl: config.logoUrl,\n httpOnlyCookieAttribute: false\n})" + } + } + } + div { + span { text "Lastly I created " } + + a { + _href "https://developers.cloudflare.com/cloudflare-one/policies/access/" + span { text "Cloudflare Access Policies" } + } + + span { text " to authorize my email." } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as cloudflare from '@pulumi/cloudflare'\nimport * as app from './accessApplication'\nimport * as config from '../config'\n\nnew cloudflare.AccessPolicy('traefik-user-access', {\n name: 'Traefik User Access',\n precedence: 1,\n accountId: cloudflare.config.accountId,\n applicationId: app.traefik.id,\n decision: 'allow',\n includes: [{\n emails: [ config.email ]\n }]\n})\n\nnew cloudflare.AccessPolicy('whoami-user-access', {\n name: 'Whoami User Access',\n precedence: 1,\n accountId: cloudflare.config.accountId,\n applicationId: app.whoami.id,\n decision: 'allow',\n includes: [{\n emails: [ config.email ]\n }]\n})\n\nnew cloudflare.AccessPolicy('grafana-user-access', {\n name: 'Grafana User Access',\n precedence: 1,\n accountId: cloudflare.config.accountId,\n applicationId: app.grafana.id,\n decision: 'allow',\n includes: [{\n emails: [ config.email ]\n }]\n})" + } + } + } + div { + span { text "As before, I assume the " } + + code { + _class "language-none" + text "infrastructure-deployer" + } + + span { text " role and deploy the stack using the Pulumi CLI." } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi up" } + } + } + h3 { + _class "mt-6" + _id "246a7816de444b889fd4e169e6017b31" + span { text "Managed Apps Stack" } + } + div { + span { text "This stack is used for any 3rd party applications that I want to deploy. I am currently using " } + + a { + _href "https://grafana.com/" + span { text "Grafana" } + } + + span { text " to visualize logs and metrics and " } + + a { + _href "https://github.com/traefik/whoami" + span { text "whoami" } + } + + span { text " to debug routing and requests. I also expose the " } + + a { + _href "https://doc.traefik.io/traefik/operations/dashboard/" + span { text "Traefik Dashboard" } + } + + span { text " in this stack. As before, I first created the stack using the Pulumi CLI." } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + + span { + text + "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi new aws-typescript --secrets-provider \"awskms://{pulumi key id}?region=us-east-1\"" + } + } + } + div { + span { text "I also need to add the kubeconfig file since I will need to connect to the Kubernetes cluster." } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "cat ~/.kube/kubeconfig | pulumi config set --secret kubernetes:kubeconfig" } + } + } + div { + span { + text + "Next I created the Grafana resources. I use Helm again to deploy the Grafana application and use the " + } + + a { + _href "https://doc.traefik.io/traefik/routing/providers/kubernetes-crd/#kind-ingressroute" + span { text "Traefik IngressRoute CRD" } + } + + span { text " to route any requests to " } + + code { + _class "language-none" + text "grafana.andrewmeier.dev" + } + + span { text " to the Grafana service." } + } + pre { + _class "language-typescript" + + code { + _class "language-typescript" + + span { + text + "import * as k8s from '@pulumi/kubernetes'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as random from '@pulumi/random'\nimport * as config from '../config'\n\nconst identifier = 'grafana'\n\nconst rawAdminPassword = new random.RandomPassword('admin-password', {\n length: 20\n})\n\nexport const adminPassword = rawAdminPassword.result\n\nconst secret = new k8s.core.v1.Secret(identifier, {\n metadata: { namespace: config.monitoringNamespace},\n stringData: {\n user: 'admin',\n password: adminPassword\n }\n})\n\nconst chart = new k8s.helm.v3.Chart(identifier, {\n chart: 'grafana',\n version: '6.24.1',\n fetchOpts: { repo: 'https://grafana.github.io/helm-charts' },\n namespace: config.monitoringNamespace,\n values: {\n // Use old version to provision notifiers\n image: { tag: '8.2.7' },\n testFramework: { enabled: false },\n persistence: {\n inMemory: { enabled: true }\n },\n admin: {\n existingSecret: secret.metadata.name,\n userKey: 'user',\n passwordKey: 'password'\n },\n 'grafana.ini': {\n server: {\n root_url: pulumi.interpolate `https://${config.grafanaHost}`,\n },\n smtp: {\n enabled: true,\n host: 'email-smtp.us-east-1.amazonaws.com:587',\n user: config.smtpUserAccessKeyId,\n password: config.smtpUserSmtpPassword,\n from_address: '" + + text "grafana@andrewmeier.dev" + + text + "'\n },\n users: {\n auto_assign_org_role: 'Admin'\n },\n 'auth.proxy': {\n enabled: true,\n header_name: 'Cf-Access-Authenticated-User-Email',\n header_property: 'email'\n }\n },\n datasources: {\n 'datasources.yaml': {\n apiVersion: 1,\n datasources: [\n {\n name: 'Prometheus',\n type: 'prometheus',\n url: config.prometheusUrl,\n access: 'proxy',\n isDefault: true\n },\n {\n name: 'Loki',\n type: 'loki',\n url: config.lokiUrl,\n access: 'proxy',\n jsonData: { maxLines: 1000 }\n }\n ]\n }\n },\n notifiers: {\n 'notifiers.yaml': {\n notifiers: [\n {\n name: 'email-notifier',\n type: 'email',\n uid: 'email1',\n org_id: 1,\n is_default: true,\n settings: { addresses: config.email }\n }\n ]\n }\n }\n }\n})\n\nconst internalPort =\n pulumi.all([chart, config.monitoringNamespace]).apply(([chart, namespace]) => {\n const spec = chart.getResourceProperty('v1/Service', namespace, identifier, 'spec')\n return spec.ports[0].port\n })\n\nnew k8s.apiextensions.CustomResource(`${identifier}-route`, {\n apiVersion: 'traefik.containo.us/v1alpha1',\n kind: 'IngressRoute',\n metadata: { namespace: config.monitoringNamespace },\n spec: {\n entryPoints: ['web'],\n routes: [{\n kind: 'Rule',\n match: pulumi.interpolate `Host(\\`${config.grafanaHost}\\`)`,\n services: [{\n kind: 'Service',\n name: identifier,\n namespace: config.monitoringNamespace,\n port: internalPort\n }]\n }]\n }\n})" + } + } + } + div { + span { + text + "Grafana plays nicely with proxy authentication and I can configure it to automatically log in the user by specifying that it should use the " + } + + code { + _class "language-none" + text "Cf-Access-Authenticated-User-Email" + } + + span { text " header which Cloudflare Access will set after authenticating the user." } + } + div { + span { text "Next I created the resources for whoami and the Traefik dashboard. You can see the " } + + a { + _href "https://github.com/ameier38/infrastructure/tree/main/5-app-services" + span { text "rest of this code on GitHub" } + } + + span { text "." } + } + div { + span { text "I can deploy the stack by assuming the " } + + code { + _class "language-none" + text "infrastructure-deployer" + } + + span { text " role, connecting to the Kubernetes API tunnel, and using the Pulumi CLI." } + } + pre { + _class "language-powershell" + + code { + _class "language-powershell" + span { text "$env:AWS_PROFILE=\"infrastructure-deployer\"\nstart-ameier-k8s-tunnel\npulumi up" } + } + } + h3 { + _class "mt-6" + _id "2ac83008618d4529be74301b94f49b13" + span { text "Apps Stacks" } + } + div { + span { + text + "Lastly, each app gets its own stack which is used to deploy the application into the cluster. For instance, this blog has its own stack which you can " + } + + a { + _href "https://github.com/ameier38/andrewmeier.dev/tree/main/pulumi" + span { text "see on GitHub" } + } + + span { text ". The main difference with the blog stack is that it has a separate " } + + code { + _class "language-none" + text "blog-deployer" + } + + span { text " role which can be assumed by GitHub actions from the blog repo." } + } + h2 { + _class "mt-8" + _id "96bd7ae28beb485bb4aa482490ff5536" + span { text "CI/CD" } + } + div { + span { + text + "In order to deploy the stacks that connect to the Kubernetes cluster using GitHub, I need to set up GitHub actions to connect to the Kubernetes API tunnel before running the Pulumi CLI. Because I can’t use the browser to log in, this is where I use the service token that I created in the Managed Infrastructure stack. In my GitHub workflow file, I added a step which connects to the cloudflared tunnel using the managed Docker image." + } + } + pre { + _class "language-yaml" + + code { + _class "language-yaml" + + span { + text + "- name: Start Tunnel\n run: |\n docker run \\\n -d \\\n -p 1234:1234 \\\n cloudflare/cloudflared:2022.3.2 \\\n access tcp \\\n --hostname=k8s.andrewmeier.dev \\\n --url=0.0.0.0:1234 \\\n --service-token-id=${{ secrets.tunnel-token-id }} \\\n --service-token-secret=${{ secrets.tunnel-token-secret }}" + } + } + } + div { + span { text "Also, in order to assume the " } + + code { + _class "language-none" + text "infrastructur-deployer" + } + + span { text " AWS role I am using GitHub as a trusted OIDC provider to assume the role with the permission " } + + code { + _class "language-none" + text "AssumeRoleWithWebIdentity" + } + + span { text ". I configured this in the Identity stack. I can then use the " } + + code { + _class "language-none" + text "aws-actions/configure-aws-credentials" + } + + span { text " GitHub action to assume the role." } + } + pre { + _class "language-yaml" + + code { + _class "language-yaml" + + span { + text + "- name: Configure AWS Credentials\n uses: aws-actions/configure-aws-credentials@v1\n with:\n aws-region: us-east-1\n role-to-assume: arn:aws:iam::400689721046:role/infrastructure-deployer\n role-session-name: github" + } + } + } + div { + span { text "You can see all the workflows in " } + + a { + _href "https://github.com/ameier38/infrastructure/tree/main/.github/workflows" + span { text "the GitHub repo" } + } + + span { text "." } + } + h2 { + _class "mt-8" + _id "f18fa32e5c574e258ca8797fda272420" + span { text "Conclusion" } + } + div { + span { + text + "In this post I covered how I created my personal “cloud” that I use to run my apps and services. It has a lot of pieces but once it is set up it rarely changes. The other nice thing is that it only requires the up front cost of purchasing the equipment. The ongoing cost is near zero as I am using the free tiers of AWS and Cloudflare." + } + } + div { + span { + text + "I have also found that this structure scales nicely and I use effectively the same setup for my work environments. As more people are contributing to the infrastructure, having separate stacks gives me confidence that deployment errors will be less likely to happen." + } + } + div { span { text "I hope you find this useful!" } } ] + +let article = Article.create metadata (ArticlePage.primary metadata content) diff --git a/app/src/App/src/Articles/Shared.fs b/app/src/App/src/Articles/Shared.fs new file mode 100644 index 0000000..bd2a549 --- /dev/null +++ b/app/src/App/src/Articles/Shared.fs @@ -0,0 +1,119 @@ +module App.Articles.Shared + +open App.Articles +open App.Common.View +open FSharp.ViewEngine +open type Datastar +open type Html + +module ArticleCard = + let private tag (text: string) = span { + _class + "inline-flex items-center rounded-md bg-gray-50 px-2 py-1 text-xs font-medium text-gray-600 ring-1 ring-inset ring-gray-500/10 dark:bg-gray-800 dark:text-gray-300 dark:ring-gray-600" + + text + } + + let tags (tags: string[]) = div { + _class "flex flex-wrap gap-2" + + for tag' in tags do + tag tag' + } + + let summary (article': Article) = + let url = SiteUrl.article article'.permalink + + article { + _class "py-6 border-b border-gray-300/60 dark:border-gray-700/60" + + div { + _class "flex items-center flex-wrap gap-x-4 gap-y-1 text-sm text-gray-400 dark:text-gray-500" + + div { + _class "inline-flex items-center whitespace-nowrap" + + span { + _class "mr-1.5" + MiniIcon.calendar + } + + time { + _datetime (article'.createdAt.ToString("yyyy-MM-dd")) + article'.createdAt.ToString("MMMM d, yyyy") + } + } + } + + h2 { + _class "mt-2 text-xl font-semibold tracking-tight text-gray-900 dark:text-gray-100" + + a { + _href url + _dataOn ("click__prevent", $"@get('{url}')") + _class "hover:text-emerald-600 dark:hover:text-emerald-400" + article'.title + } + } + + p { + _class "mt-2 text-base text-gray-600 dark:text-gray-400" + article'.summary + } + + div { + _class "mt-4" + tags article'.tags + } + } + +module ArticlePage = + let primary (metadata: ArticleMetadata) (content: HtmlElement list) = + let page = div { + div { + _class "bg-cover bg-no-repeat bg-center bg-blend-overlay bg-gray-800" + + match SafeOutput.tryBackgroundImageStyle metadata.cover with + | Some style -> _style style + | None -> () + + div { + _class "pt-28 pb-20 px-4 mx-auto max-w-5xl flex flex-col justify-end items-start text-gray-50" + + time { + _class "text-base text-gray-50 border-l border-gray-300 pl-2" + _datetime (metadata.createdAt.ToString("yyyy-MM-dd")) + metadata.createdAt.ToString("MMMM d, yyyy") + } + + h1 { + _class "mt-4 text-4xl font-bold tracking-tight text-gray-50" + metadata.title + } + + div { + _class "mt-5" + ArticleCard.tags metadata.tags + } + } + } + + article { + _class "mx-auto max-w-5xl px-4" + + div { + _class + "mt-8 prose prose-lg dark:prose-invert prose-code:before:hidden prose-code:after:hidden max-w-none" + + _dataInit "highlightCode($el)" + + for element in content do + element + } + } + + script { _src (Asset.fingerprinted "/scripts/prism.1.29.0.js") } + script { js "function highlightCode(el){if(el?.querySelectorAll)Prism.highlightAllUnder(el)}" } + } + + Page.primary page diff --git a/app/src/App/src/Articles/View.fs b/app/src/App/src/Articles/View.fs index cd54603..17e513b 100644 --- a/app/src/App/src/Articles/View.fs +++ b/app/src/App/src/Articles/View.fs @@ -1,6 +1,7 @@ module App.Articles.View -open Domain.Article +open App.Articles +open App.Articles.Shared open FSharp.ViewEngine open App.Common.View open System @@ -250,177 +251,6 @@ let articlesPage (state:ArticlesPageState) = } Page.primary content -module RichTextView = - let private notionBlockLinkRegex = System.Text.RegularExpressions.Regex(@"^/[0-9a-f]{32}#([0-9a-f]{32})$") - - let private toAnchorHref (href:string) = - let m = notionBlockLinkRegex.Match(href) - if m.Success then $"#{m.Groups.[1].Value}" - else href - - let toHtml (t: Domain.Notion.RichText) = - let inner = - if t.annotations.code then - code { _class "language-none"; t.plainText } - else - span { - _class [ - if t.annotations.bold then "font-bold" - if t.annotations.italic then "italic" - if t.annotations.underline then "underline" - if t.annotations.strikethrough then "line-through" - ] - t.plainText - } - - match t.href |> Option.map toAnchorHref |> Option.bind SafeOutput.tryLinkAttribute with - | Some href -> a { _href href; inner } - | None -> inner - -module Block = - let (|Bulleted|Numbered|Other|) (block:Domain.Notion.Block) = - match block.blockType with - | Domain.Notion.BlockType.BulletedListItem _ -> Bulleted - | Domain.Notion.BlockType.NumberedListItem _ -> Numbered - | _ -> Other - - let rec toHtml (block:Domain.Notion.Block) : HtmlElement = - let cleanId = block.id.Replace("-", "") - - match block.blockType with - | Domain.Notion.BlockType.Heading1 richText -> - h2 { - _class "mt-8"; _id cleanId - for t in richText do RichTextView.toHtml t - } - | Domain.Notion.BlockType.Heading2 richText -> - h3 { - _class "mt-6"; _id cleanId - for t in richText do RichTextView.toHtml t - } - | Domain.Notion.BlockType.Heading3 richText -> - h4 { - _class "mt-4"; _id cleanId - for t in richText do RichTextView.toHtml t - } - | Domain.Notion.BlockType.Paragraph richText -> - div { - if List.isEmpty richText then br - else for t in richText do RichTextView.toHtml t - } - | Domain.Notion.BlockType.BulletedListItem(richText, children) -> - li { - for t in richText do RichTextView.toHtml t - for child in children do toHtml child - } - | Domain.Notion.BlockType.NumberedListItem(richText, children) -> - li { - for t in richText do RichTextView.toHtml t - for child in children do toHtml child - } - | Domain.Notion.BlockType.Code(richText, language) -> - let language = - match language with - | "f#" -> "fsharp" - | "JSON" -> "json" - | "TOML" -> "toml" - | other -> other - let languageClass = $"language-{language}" - pre { - _class languageClass - code { - _class languageClass - for t in richText do RichTextView.toHtml t - } - } - | Domain.Notion.BlockType.Image url -> - match SafeOutput.tryImageAttribute url with - | Some safeUrl -> img { _class "drop-shadow-xl rounded"; _src safeUrl; _alt "" } - | None -> empty - | Domain.Notion.BlockType.Divider -> - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - | Domain.Notion.BlockType.Quote richText -> - blockquote { for t in richText do RichTextView.toHtml t } - | Domain.Notion.BlockType.Callout richText -> - div { - _class "bg-gray-200 dark:bg-gray-800 rounded p-2" - for t in richText do RichTextView.toHtml t - } - | Domain.Notion.BlockType.Unsupported -> empty - -module Content = - let toHtml (blocks:Domain.Notion.Block list) = - let elements = ResizeArray() - let bulletedListItems = ResizeArray() - let numberedListItems = ResizeArray() - - let flushBulletedListItems () = - let children = List.ofSeq bulletedListItems - let unorderedList = ul { _class "list-disc"; for c in children do c } - elements.Add(unorderedList) - bulletedListItems.Clear() - - let flushNumberedListItems () = - let children = List.ofSeq numberedListItems - let orderedList = ol { _class "list-decimal"; for c in children do c } - elements.Add(orderedList) - numberedListItems.Clear() - - for block in blocks do - match block with - | Block.Bulleted -> - if numberedListItems.Count > 0 then flushNumberedListItems() - bulletedListItems.Add(Block.toHtml block) - | Block.Numbered -> - if bulletedListItems.Count > 0 then flushBulletedListItems() - numberedListItems.Add(Block.toHtml block) - | Block.Other -> - if numberedListItems.Count > 0 then flushNumberedListItems() - if bulletedListItems.Count > 0 then flushBulletedListItems() - elements.Add(Block.toHtml block) - - if numberedListItems.Count > 0 then flushNumberedListItems() - if bulletedListItems.Count > 0 then flushBulletedListItems() - List.ofSeq elements - -let articlePage (article':Article) = - let content = - div { - div { - _class "bg-cover bg-no-repeat bg-center bg-blend-overlay bg-gray-800" - match SafeOutput.tryBackgroundImageStyle article'.cover with - | Some style -> _style style - | None -> () - div { - _class "pt-28 pb-20 px-4 mx-auto max-w-5xl flex flex-col justify-end items-start text-gray-50" - time { - _class "text-base text-gray-50 border-l border-gray-300 pl-2" - _datetime (article'.createdAt.ToString("yyyy-MM-dd")) - article'.createdAt.ToString("MMMM d, yyyy") - } - h1 { - _class "mt-4 text-4xl font-bold tracking-tight text-gray-50" - article'.title - } - div { - _class "mt-5" - ArticleCard.tags article'.tags - } - } - } - article { - _class "mx-auto max-w-5xl px-4" - div { - _class "mt-8 prose prose-lg dark:prose-invert prose-code:before:hidden prose-code:after:hidden max-w-none" - _dataInit "highlightCode($el)" - for el in Content.toHtml article'.blocks do el - } - } - script { _src (Asset.fingerprinted "/scripts/prism.1.29.0.js") } - script { js "function highlightCode(el){if(el?.querySelectorAll)Prism.highlightAllUnder(el)}" } - } - Page.primary content - let notFoundPage = let content = div { diff --git a/app/src/App/src/Common/View.fs b/app/src/App/src/Common/View.fs index e6ac774..0b12b8a 100644 --- a/app/src/App/src/Common/View.fs +++ b/app/src/App/src/Common/View.fs @@ -1,7 +1,6 @@ module App.Common.View open FSharp.ViewEngine -open Domain.Article open System open System.Collections.Generic open System.IO @@ -32,29 +31,17 @@ module Asset = resolveWithManifest manifest.Value path module SafeOutput = - let private linkSchemes = Set.ofList [ Uri.UriSchemeHttp; Uri.UriSchemeHttps; Uri.UriSchemeMailto ] let private imageSchemes = Set.ofList [ Uri.UriSchemeHttp; Uri.UriSchemeHttps ] - let private tryAbsoluteUrl (allowedSchemes:Set) (value:string) = + let private tryImageUrl (value:string) = match Uri.TryCreate(value, UriKind.Absolute) with - | true, uri when allowedSchemes.Contains(uri.Scheme.ToLowerInvariant()) -> + | true, uri when imageSchemes.Contains(uri.Scheme.ToLowerInvariant()) -> uri.GetComponents(UriComponents.AbsoluteUri, UriFormat.UriEscaped) |> Some | _ -> None - let tryLinkAttribute (value:string) = - if value.StartsWith("#", StringComparison.Ordinal) then - Some value - elif value.StartsWith("/", StringComparison.Ordinal) && not (value.StartsWith("//", StringComparison.Ordinal)) then - Some value - else - tryAbsoluteUrl linkSchemes value - - let tryImageAttribute (value:string) = - tryAbsoluteUrl imageSchemes value - let tryBackgroundImageStyle (value:string) = value - |> tryAbsoluteUrl imageSchemes + |> tryImageUrl |> Option.map (fun url -> let cssUrl = url @@ -179,50 +166,6 @@ module Disclosure = } } -module ArticleCard = - let private tag (text:string) = - span { - _class "inline-flex items-center rounded-md bg-gray-50 px-2 py-1 text-xs font-medium text-gray-600 ring-1 ring-inset ring-gray-500/10 dark:bg-gray-800 dark:text-gray-300 dark:ring-gray-600" - text - } - - let tags (tags:string[]) = - div { - _class "flex flex-wrap gap-2" - for tag' in tags do tag tag' - } - - let summary (article':Article) = - let url = SiteUrl.article article'.permalink - article { - _class "py-6 border-b border-gray-300/60 dark:border-gray-700/60" - div { - _class "flex items-center flex-wrap gap-x-4 gap-y-1 text-sm text-gray-400 dark:text-gray-500" - div { - _class "inline-flex items-center whitespace-nowrap" - span { _class "mr-1.5"; MiniIcon.calendar } - time { - _datetime (article'.createdAt.ToString("yyyy-MM-dd")) - article'.createdAt.ToString("MMMM d, yyyy") - } - } - } - h2 { - _class "mt-2 text-xl font-semibold tracking-tight text-gray-900 dark:text-gray-100" - a { - _href url - _dataOn ("click__prevent", $"@get('{url}')") - _class "hover:text-emerald-600 dark:hover:text-emerald-400" - article'.title - } - } - p { _class "mt-2 text-base text-gray-600 dark:text-gray-400"; article'.summary } - div { - _class "mt-4" - tags article'.tags - } - } - module Footer = let primary = div { diff --git a/app/src/App/src/Config.fs b/app/src/App/src/Config.fs index 6e28718..829d7e8 100644 --- a/app/src/App/src/Config.fs +++ b/app/src/App/src/Config.fs @@ -1,8 +1,18 @@ namespace App -open Domain open System +module Env = + let variable (key:string) = + match Environment.GetEnvironmentVariable key with + | value when String.IsNullOrEmpty value -> failwith $"Environment variable '{key}' is required" + | value -> value + + let variableOrDefault (key:string) (defaultValue:string) = + match Environment.GetEnvironmentVariable key with + | value when String.IsNullOrEmpty value -> defaultValue + | value -> value + type SeqConfig = { endpoint:string } @@ -29,9 +39,7 @@ type Config = appName:string server:ServerConfig seq:SeqConfig - googleAnalytics:GoogleAnalyticsConfig - sqlite:Sqlite.Config - notion:Notion.Config } + googleAnalytics:GoogleAnalyticsConfig } module Config = let load () = @@ -39,6 +47,4 @@ module Config = appName = "andymeier" server = ServerConfig.load () seq = SeqConfig.load () - googleAnalytics = GoogleAnalyticsConfig.load () - sqlite = Sqlite.Config.load () - notion = Notion.Config.load () } + googleAnalytics = GoogleAnalyticsConfig.load () } diff --git a/app/src/App/src/Index/Handler.fs b/app/src/App/src/Index/Handler.fs index f019c50..fb742a4 100644 --- a/app/src/App/src/Index/Handler.fs +++ b/app/src/App/src/Index/Handler.fs @@ -2,6 +2,7 @@ module App.Index.Handler open App.Infrastructure open App.ServiceRegistry +open App.Articles open App.Common.Handler open App.Index.View open Giraffe @@ -10,8 +11,7 @@ open StarFederation.Datastar.DependencyInjection let private getHomePage (services:Services) : HttpHandler = fun next ctx -> task { use _span = services.telemetry.startActiveSpan "app.index.get_home_page" - let! articles = services.article.listArticles () - let recentArticles = articles |> List.truncate 3 + let recentArticles = Catalog.all |> List.truncate 3 let page = homePage recentArticles if ctx.IsDatastar then diff --git a/app/src/App/src/Index/View.fs b/app/src/App/src/Index/View.fs index a51c505..0c2e128 100644 --- a/app/src/App/src/Index/View.fs +++ b/app/src/App/src/Index/View.fs @@ -2,7 +2,8 @@ module App.Index.View open FSharp.ViewEngine open App.Infrastructure -open Domain.Article +open App.Articles +open App.Articles.Shared open App.Common.View open type Html open type Datastar diff --git a/app/src/App/src/Infrastructure.fs b/app/src/App/src/Infrastructure.fs index 28e0db7..c40d92d 100644 --- a/app/src/App/src/Infrastructure.fs +++ b/app/src/App/src/Infrastructure.fs @@ -1,33 +1,9 @@ [] module App.Infrastructure -open FSharp.ViewEngine open Giraffe -open type Html -open JetBrains.Annotations -open Markdig open Microsoft.AspNetCore.Http -[] -module HtmlExtensions = - let private markdownPipeline = - MarkdownPipelineBuilder() - .UseAdvancedExtensions() - .Build() - - type Html with - static member markdown([] markdown:string) = - let markdown' = - if isNull markdown then "" - else markdown - - let html = Markdown.ToHtml(markdown', markdownPipeline) - - div { - _class "prose prose-lg dark:prose-invert max-w-none" - raw html - } - [] module HttpContextExtensions = type HttpContext with diff --git a/app/src/App/src/Program.fs b/app/src/App/src/Program.fs index 78cfa17..7c487ac 100644 --- a/app/src/App/src/Program.fs +++ b/app/src/App/src/Program.fs @@ -1,6 +1,5 @@ open App open App.ServiceRegistry -open Domain open Giraffe open Microsoft.AspNetCore.Builder open Microsoft.AspNetCore.Http @@ -51,7 +50,6 @@ let configureServices (serviceCollection: IServiceCollection) (tracerProvider: T serviceCollection .AddSerilog() .AddSingleton(tracerProvider) - .AddHostedService(fun _ -> Article.SyncBackgroundService(services.article)) |> ignore serviceCollection.AddDatastar() |> ignore diff --git a/app/src/App/src/Services.fs b/app/src/App/src/Services.fs index cb45d78..47a1811 100644 --- a/app/src/App/src/Services.fs +++ b/app/src/App/src/Services.fs @@ -1,23 +1,12 @@ module App.ServiceRegistry -open Domain open OpenTelemetry.Trace -open System -open System.Net.Http type Services = { config: Config - telemetry: Telemetry.Service - article: Article.Service } + telemetry: Telemetry.Service } module Services = let create (config: Config) (tracer: Tracer) = - let telemetry = Telemetry.Service.create tracer - let socketsHandler = new SocketsHttpHandler(PooledConnectionLifetime = TimeSpan.FromHours(1.)) - let httpClient = new HttpClient(socketsHandler) - let notion = Notion.Service.create config.notion telemetry httpClient - let article = Article.Service.create config.notion telemetry config.sqlite notion - { config = config - telemetry = telemetry - article = article } + telemetry = Telemetry.Service.create tracer } diff --git a/app/src/Domain/Telemetry.fs b/app/src/App/src/Telemetry.fs similarity index 57% rename from app/src/Domain/Telemetry.fs rename to app/src/App/src/Telemetry.fs index 37f0f91..c459cc5 100644 --- a/app/src/Domain/Telemetry.fs +++ b/app/src/App/src/Telemetry.fs @@ -1,12 +1,11 @@ -module Domain.Telemetry +module App.Telemetry open OpenTelemetry.Trace type StartActiveSpan = string -> TelemetrySpan -type Service = - { startActiveSpan:StartActiveSpan } +type Service = { startActiveSpan: StartActiveSpan } module Service = - let create (tracer:Tracer) : Service = + let create (tracer: Tracer) : Service = { startActiveSpan = fun name -> tracer.StartActiveSpan name } diff --git a/app/src/Build/Program.fs b/app/src/Build/Program.fs index fd055cf..ff471ad 100644 --- a/app/src/Build/Program.fs +++ b/app/src/Build/Program.fs @@ -5,11 +5,9 @@ open Fake.IO.FileSystemOperators open System open System.IO open System.Net -open System.Net.Http open System.Net.Sockets open System.Security.Cryptography open System.Text.Json -open System.Threading open System.Threading.Tasks Environment.GetCommandLineArgs() @@ -84,38 +82,15 @@ let availableLocalPort () = listener.Start() (listener.LocalEndpoint :?> IPEndPoint).Port -let waitForHttpHealth (name:string) (url:string) = - use httpClient = new HttpClient() - let mutable healthy = false - let mutable attempt = 1 - - while not healthy && attempt <= 30 do - try - use response = httpClient.GetAsync(url).GetAwaiter().GetResult() - healthy <- response.IsSuccessStatusCode - with _ -> - () - - if not healthy then Thread.Sleep 500 - attempt <- attempt + 1 - - if not healthy then failwith $"{name} did not become healthy at {url}" - Target.create "StartDeps" <| fun _ -> Trace.trace "Starting dependencies (seq)" exec "docker-compose" rootDir ["up"; "-d"; "seq"] |> Task.WaitAll -Target.create "StartMockNotion" <| fun _ -> - Trace.trace "Starting MockNotion" - exec "docker-compose" rootDir ["up"; "-d"; "--build"; "mock-notion"] |> Task.WaitAll - waitForHttpHealth "MockNotion" "http://localhost:5015/healthz" - Target.create "EnsureDevCert" <| fun _ -> Trace.trace "Ensuring trusted ASP.NET Core HTTPS development certificate" exec "dotnet" rootDir ["dev-certs"; "https"; "--trust"] |> Task.WaitAll Target.create "Watch" <| fun _ -> - let sqlitePath = rootDir ".data" "app.db" let serverUrl = $"https://localhost:{availableLocalPort ()}" Trace.trace $"Starting local server at {serverUrl}" @@ -123,11 +98,7 @@ Target.create "Watch" <| fun _ -> Map.ofList [ "ASPNETCORE_ENVIRONMENT", "Development" "GOOGLE_ANALYTICS_MEASUREMENT_ID", "G-LOCAL" - "NOTION_API_KEY", "mock-notion-token" - "NOTION_ARTICLES_DATABASE_ID", "mock-articles" - "NOTION_BASE_URL", "http://localhost:5015/v1" "SERVER_URL", serverUrl - "SQLITE_PATH", sqlitePath ] |> EnvMap.ofMap @@ -155,8 +126,7 @@ Target.create "Publish" <| fun _ -> Target.create "Default" (fun _ -> Target.listAvailable()) -"StartDeps" ==>! "StartMockNotion" -"StartMockNotion" ==>! "EnsureDevCert" +"StartDeps" ==>! "EnsureDevCert" "EnsureDevCert" ==>! "Watch" "BuildCss" ==>! "Publish" diff --git a/app/src/Domain/Article.fs b/app/src/Domain/Article.fs deleted file mode 100644 index ea7ac23..0000000 --- a/app/src/Domain/Article.fs +++ /dev/null @@ -1,396 +0,0 @@ -module Domain.Article - -open FSharp.UMX -open Microsoft.Data.Sqlite -open Sqlite -open Serilog -open System -open System.Threading.Tasks - -// ============================================================ -// Types -// ============================================================ - -type [] articleId -type ArticleId = string - -module ArticleId = - let toString (a:ArticleId) = UMX.untag a - let ofString (a:string) : ArticleId = UMX.tag a - let toBlockId (a:ArticleId) : Notion.BlockId = UMX.cast a - -type Article = - { id:string - permalink:string - title:string - summary:string - icon:string - iconDescription:string - cover:string - coverDescription:string - tags:string[] - createdAt:DateTimeOffset - updatedAt:DateTimeOffset - blocks:Notion.Block list - syncedAt:DateTimeOffset } - -// ============================================================ -// Notion -> Article mapping -// ============================================================ - -module NotionPage = - let toArticle (syncedAt: DateTimeOffset) (page: Notion.Page) : Article = - { id = page.id - permalink = page |> Notion.Page.getText "Permalink" - title = page |> Notion.Page.getTitle "Title" - summary = page |> Notion.Page.getText "Summary" - icon = page |> Notion.Page.getIconUrl - iconDescription = page |> Notion.Page.getText "Icon Description" - cover = page |> Notion.Page.getCoverUrl - coverDescription = page |> Notion.Page.getText "Cover Description" - tags = page |> Notion.Page.getMultiSelect "Tags" - createdAt = page |> Notion.Page.getDate "Created At" - updatedAt = page |> Notion.Page.getDate "Updated At" - blocks = [] - syncedAt = syncedAt } - -// ============================================================ -// Service -// ============================================================ - -type ListArticles = unit -> Task
-type TryGetArticle = string -> Task
-type SyncDatabase = unit -> Task - -type Service = - { listArticles: ListArticles - tryGetArticle: TryGetArticle - syncDatabase: SyncDatabase } - -module Service = - - let private ensureSchema (conn: SqliteConnection) = - task { - // language=sqlite - let sql = - """ - CREATE TABLE IF NOT EXISTS articles ( - id TEXT PRIMARY KEY, - permalink TEXT NOT NULL UNIQUE, - title TEXT NOT NULL, - summary TEXT NOT NULL, - icon TEXT, - icon_description TEXT, - cover TEXT, - cover_description TEXT, - tags_json TEXT NOT NULL, - created_at_utc TEXT NOT NULL, - updated_at_utc TEXT NOT NULL, - blocks_json TEXT NOT NULL, - synced_at_utc TEXT NOT NULL - ); - CREATE INDEX IF NOT EXISTS idx_articles_created_at ON articles(created_at_utc DESC); - """ - - do! - Sql.connect conn - |> Sql.sql sql - |> Sql.executeNonQuery - } - - let private upsertArticle (conn: SqliteConnection) (article: Article) (syncedAt: DateTimeOffset) = - task { - // language=sqlite - let sql = - """ - INSERT INTO articles ( - id, permalink, title, summary, icon, icon_description, cover, cover_description, - tags_json, created_at_utc, updated_at_utc, blocks_json, synced_at_utc - ) - VALUES ( - $id, $permalink, $title, $summary, $icon, $icon_description, $cover, $cover_description, - $tags_json, $created_at_utc, $updated_at_utc, $blocks_json, $synced_at_utc - ) - ON CONFLICT(id) DO UPDATE SET - permalink = excluded.permalink, - title = excluded.title, - summary = excluded.summary, - icon = excluded.icon, - icon_description = excluded.icon_description, - cover = excluded.cover, - cover_description = excluded.cover_description, - tags_json = excluded.tags_json, - created_at_utc = excluded.created_at_utc, - updated_at_utc = excluded.updated_at_utc, - blocks_json = excluded.blocks_json, - synced_at_utc = excluded.synced_at_utc; - """ - - do! - Sql.connect conn - |> Sql.sql sql - |> Sql.parameters [ - "$id", Sql.text article.id - "$permalink", Sql.text article.permalink - "$title", Sql.text article.title - "$summary", Sql.text article.summary - "$icon", Sql.text article.icon - "$icon_description", Sql.text article.iconDescription - "$cover", Sql.text article.cover - "$cover_description", Sql.text article.coverDescription - "$tags_json", Sql.text (Json.serialize article.tags) - "$created_at_utc", Sql.timestamptz article.createdAt - "$updated_at_utc", Sql.timestamptz article.updatedAt - "$blocks_json", Sql.text (Json.serialize article.blocks) - "$synced_at_utc", Sql.timestamptz syncedAt - ] - |> Sql.executeNonQuery - } - - let private deleteStaleArticles (conn: SqliteConnection) (ids: string list) = - task { - match ids with - | [] -> - do! - Sql.connect conn - |> Sql.sql "DELETE FROM articles" - |> Sql.executeNonQuery - | _ -> - let placeholders = ids |> List.mapi (fun i _ -> $"$id{i}") - let joinedPlaceholders = String.Join(",", placeholders) - - let parameters = - ids - |> List.mapi (fun i id -> ($"$id{i}", Sql.text id)) - - do! - Sql.connect conn - |> Sql.sql $"DELETE FROM articles WHERE id NOT IN ({joinedPlaceholders})" - |> Sql.parameters parameters - |> Sql.executeNonQuery - } - - // --- Notion helpers (used only by syncDatabase) --- - - let private listBlocks (notion: Notion.Service) (blockId: Notion.BlockId) : Task = - let rec recurse (blockId: Notion.BlockId) : Task = - task { - let blocks = ResizeArray() - let mutable hasMore = true - let mutable cursor: Notion.Cursor option = None - - while hasMore do - let! res = notion.retrieveBlockChildren blockId cursor - - for block in res.results do - if block.hasChildren then - let! children = recurse (Notion.BlockId.ofString block.id) - - let updated = - match block.blockType with - | Notion.BlockType.BulletedListItem(rt, _) -> - { block with blockType = Notion.BlockType.BulletedListItem(rt, children) } - | Notion.BlockType.NumberedListItem(rt, _) -> - { block with blockType = Notion.BlockType.NumberedListItem(rt, children) } - | _ -> block - - blocks.Add(updated) - else - blocks.Add(block) - - hasMore <- res.hasMore - cursor <- res.nextCursor - - return Seq.toList blocks - } - - blockId |> recurse - - let private fetchPublishedArticles - (telemetry: Telemetry.Service) - (notion: Notion.Service) - (articlesDatabaseId: Notion.DatabaseId) - = - task { - use _span = telemetry.startActiveSpan "domain.article.fetch_published_articles" - let mutable hasMore = true - let mutable cursor: Notion.Cursor option = None - let pages = ResizeArray() - let filter = Notion.PropertyFilter.StatusEquals("Status", "Published") - - while hasMore do - let! res = - notion.queryDatabase articlesDatabaseId { filter = Some filter; startCursor = cursor } - - hasMore <- res.hasMore - cursor <- res.nextCursor - - for page in res.results do - pages.Add(page) - - return pages |> Seq.toList - } - - let private fetchArticle (notion: Notion.Service) (syncedAt: DateTimeOffset) (page: Notion.Page) = - task { - let article = NotionPage.toArticle syncedAt page - let blockId = ArticleId.ofString page.id |> ArticleId.toBlockId - let! blocks = listBlocks notion blockId - return { article with blocks = blocks } - } - - // --- Create --- - - let create - (config: Notion.Config) - (telemetry: Telemetry.Service) - (sqliteConfig: Sqlite.Config) - (notion: Notion.Service) - = - let connectionString = Sqlite.connectionString sqliteConfig - - let listArticles: ListArticles = - fun () -> - task { - use span = telemetry.startActiveSpan "domain.sqlite.list_articles" - use conn = new SqliteConnection(connectionString) - do! conn.OpenAsync() |> Task.Ignore - - // language=sqlite - let sql = - """ - SELECT - id, permalink, title, summary, icon, icon_description, cover, cover_description, - tags_json, created_at_utc, updated_at_utc, blocks_json, synced_at_utc - FROM articles - ORDER BY created_at_utc DESC - """ - - let! articles = - Sql.connect conn - |> Sql.sql sql - |> Sql.executeQuery (fun reader -> - { id = reader.string "id" - permalink = reader.string "permalink" - title = reader.string "title" - summary = reader.string "summary" - icon = reader.stringOption "icon" |> Option.defaultValue "" - iconDescription = reader.stringOption "icon_description" |> Option.defaultValue "" - cover = reader.stringOption "cover" |> Option.defaultValue "" - coverDescription = reader.stringOption "cover_description" |> Option.defaultValue "" - tags = reader.string "tags_json" |> Json.deserialize - createdAt = reader.dateTimeOffset "created_at_utc" - updatedAt = reader.dateTimeOffset "updated_at_utc" - blocks = reader.string "blocks_json" |> Json.deserialize - syncedAt = reader.dateTimeOffset "synced_at_utc" }) - - span.SetAttribute("count", articles.Length) |> ignore - return articles - } - - let tryGetArticle: TryGetArticle = - fun permalink -> - task { - use span = telemetry.startActiveSpan "domain.sqlite.try_get_article" - span.SetAttribute("permalink", permalink) |> ignore - - use conn = new SqliteConnection(connectionString) - do! conn.OpenAsync() |> Task.Ignore - - // language=sqlite - let sql = - """ - SELECT - id, permalink, title, summary, icon, icon_description, cover, cover_description, - tags_json, created_at_utc, updated_at_utc, blocks_json, synced_at_utc - FROM articles - WHERE permalink = $permalink - LIMIT 1 - """ - - let! rows = - Sql.connect conn - |> Sql.sql sql - |> Sql.parameter ("$permalink", Sql.text permalink) - |> Sql.executeQuery (fun reader -> - { id = reader.string "id" - permalink = reader.string "permalink" - title = reader.string "title" - summary = reader.string "summary" - icon = reader.stringOption "icon" |> Option.defaultValue "" - iconDescription = reader.stringOption "icon_description" |> Option.defaultValue "" - cover = reader.stringOption "cover" |> Option.defaultValue "" - coverDescription = reader.stringOption "cover_description" |> Option.defaultValue "" - tags = reader.string "tags_json" |> Json.deserialize - createdAt = reader.dateTimeOffset "created_at_utc" - updatedAt = reader.dateTimeOffset "updated_at_utc" - blocks = reader.string "blocks_json" |> Json.deserialize - syncedAt = reader.dateTimeOffset "synced_at_utc" }) - - return rows |> List.tryHead - } - - let syncDatabase: SyncDatabase = - fun () -> - task { - Log.Information("Syncing articles from Notion") - - try - let! pages = fetchPublishedArticles telemetry notion config.articlesDatabaseId - let syncedAt = DateTimeOffset.UtcNow - - let articles = ResizeArray
() - - for page in pages do - let permalink = page |> Notion.Page.getText "Permalink" - - try - let! article = fetchArticle notion syncedAt page - articles.Add(article) - Log.Debug("Fetched article {Permalink}", permalink) - with ex -> - Log.Error(ex, "Failed to fetch article {Permalink}", permalink) - - use conn = new SqliteConnection(connectionString) - do! conn.OpenAsync() |> Task.Ignore - do! ensureSchema conn - - for article in articles do - do! upsertArticle conn article syncedAt - - let ids = articles |> Seq.map _.id |> List.ofSeq - do! deleteStaleArticles conn ids - - Log.Information("Stored {Count} articles", articles.Count) - Log.Information("Article sync complete") - with ex -> - Log.Error(ex, "Article sync failed") - } - - { listArticles = listArticles - tryGetArticle = tryGetArticle - syncDatabase = syncDatabase } - -// ============================================================ -// Background service -// ============================================================ - -type SyncBackgroundService(articleService: Service) = - interface Microsoft.Extensions.Hosting.IHostedService with - member _.StartAsync(ct) = - let work () = - task { - while not ct.IsCancellationRequested do - do! articleService.syncDatabase () - - try - do! Task.Delay(TimeSpan.FromMinutes(30.), ct) - with :? OperationCanceledException -> - () - } - - Task.Run(Func(fun () -> work () :> Task)) |> ignore - Task.CompletedTask - - member _.StopAsync(_ct) = - Task.CompletedTask diff --git a/app/src/Domain/Domain.fsproj b/app/src/Domain/Domain.fsproj deleted file mode 100644 index 6aa562e..0000000 --- a/app/src/Domain/Domain.fsproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - net10.0 - $(NoWarn);NU1510 - - - - - - - - - - - diff --git a/app/src/Domain/Infrastructure.fs b/app/src/Domain/Infrastructure.fs deleted file mode 100644 index b058663..0000000 --- a/app/src/Domain/Infrastructure.fs +++ /dev/null @@ -1,34 +0,0 @@ -[] -module Domain.Infrastructure - -open System -open System.Text.Json -open System.Text.Json.Serialization -open System.Threading.Tasks - -module Env = - let variable (key:string) = - match Environment.GetEnvironmentVariable(key) with - | value when String.IsNullOrEmpty(value) -> failwith $"Environment variable '{key}' is required" - | value -> value - - let variableOrDefault (key:string) (defaultValue:string) = - match Environment.GetEnvironmentVariable(key) with - | value when String.IsNullOrEmpty(value) -> defaultValue - | value -> value - -[] -module TaskExtensions = - type Task with - static member Ignore(t:Task) = task { let! _ = t in return () } - -module Json = - let private options = - JsonFSharpOptions.Default() - .ToJsonSerializerOptions() - - let serialize<'T> (value: 'T) = - JsonSerializer.Serialize(value, options) - - let deserialize<'T> (json: string) = - JsonSerializer.Deserialize<'T>(json, options) diff --git a/app/src/Domain/Notion.fs b/app/src/Domain/Notion.fs deleted file mode 100644 index 2c7efa6..0000000 --- a/app/src/Domain/Notion.fs +++ /dev/null @@ -1,475 +0,0 @@ -module Domain.Notion - -open System -open System.Net.Http -open System.Net.Http.Headers -open System.Text -open System.Text.Json -open System.Threading.Tasks -open FSharp.UMX - -// ============================================================ -// Phantom Types -// ============================================================ - -type [] databaseId -type DatabaseId = string - -module DatabaseId = - let toString (d:DatabaseId) = UMX.untag d - let ofString (d:string) : DatabaseId = UMX.tag d - -type [] pageId -type PageId = string - -module PageId = - let toString (p:PageId) = UMX.untag p - let ofString (p:string) : PageId = UMX.tag p - -type [] blockId -type BlockId = string - -module BlockId = - let toString (b:BlockId) = UMX.untag b - let ofString (b:string) : BlockId = UMX.tag b - -type [] cursor -type Cursor = string - -module Cursor = - let toString (c:Cursor) = UMX.untag c - let ofString (c:string) : Cursor = UMX.tag c - -// ============================================================ -// Config -// ============================================================ - -type Config = - { articlesDatabaseId:DatabaseId - apiKey:string - baseUrl:string } - -module Config = - let load () = - { articlesDatabaseId = Env.variable "NOTION_ARTICLES_DATABASE_ID" |> DatabaseId.ofString - apiKey = Env.variable "NOTION_API_KEY" - baseUrl = Env.variableOrDefault "NOTION_BASE_URL" "https://api.notion.com/v1" } - -// ============================================================ -// Types -// ============================================================ - -type Annotations = - { bold: bool - italic: bool - strikethrough: bool - underline: bool - code: bool - color: string } - -type RichText = - { plainText: string - href: string option - annotations: Annotations } - -type FileObject = - { url: string } - -[] -type BlockType = - | Paragraph of richText: RichText list - | Heading1 of richText: RichText list - | Heading2 of richText: RichText list - | Heading3 of richText: RichText list - | BulletedListItem of richText: RichText list * children: Block list - | NumberedListItem of richText: RichText list * children: Block list - | Code of richText: RichText list * language: string - | Image of url: string - | Divider - | Quote of richText: RichText list - | Callout of richText: RichText list - | Unsupported - -and Block = - { id: string - hasChildren: bool - blockType: BlockType } - -[] -type PropertyValue = - | Title of RichText list - | RichText of RichText list - | Email of string - | Checkbox of bool - | Date of DateTimeOffset option - | Status of string - | Select of string - | MultiSelect of string list - | Unknown - -type Page = - { id: string - icon: FileObject option - cover: FileObject option - properties: Map } - -type PaginatedResponse<'T> = - { results: 'T list - hasMore: bool - nextCursor: Cursor option } - -// ============================================================ -// JSON Parsing -// ============================================================ - -module Parse = - - let private str (el: JsonElement) = - match el.ValueKind with - | JsonValueKind.String -> el.GetString() - | _ -> "" - - let private optStr (el: JsonElement) = - match el.ValueKind with - | JsonValueKind.String -> - let s = el.GetString() - if String.IsNullOrEmpty(s) then None else Some s - | _ -> None - - let private tryGetProp (name: string) (el: JsonElement) = - match el.TryGetProperty(name) with - | true, v -> Some v - | _ -> None - - let richText (el: JsonElement) : RichText = - let annotations = - match tryGetProp "annotations" el with - | Some a -> - { bold = a.GetProperty("bold").GetBoolean() - italic = a.GetProperty("italic").GetBoolean() - strikethrough = a.GetProperty("strikethrough").GetBoolean() - underline = a.GetProperty("underline").GetBoolean() - code = a.GetProperty("code").GetBoolean() - color = str (a.GetProperty("color")) } - | None -> - { bold = false - italic = false - strikethrough = false - underline = false - code = false - color = "default" } - - { plainText = el.GetProperty("plain_text") |> str - href = tryGetProp "href" el |> Option.bind optStr - annotations = annotations } - - let richTextList (el: JsonElement) : RichText list = - [ for item in el.EnumerateArray() do - richText item ] - - let fileObject (el: JsonElement) : FileObject option = - match tryGetProp "type" el |> Option.map str with - | Some "file" -> tryGetProp "file" el |> Option.map (fun f -> { url = str (f.GetProperty("url")) }) - | Some "external" -> - tryGetProp "external" el |> Option.map (fun f -> { url = str (f.GetProperty("url")) }) - | _ -> None - - let propertyValue (el: JsonElement) : PropertyValue = - match tryGetProp "type" el |> Option.map str with - | Some "title" -> PropertyValue.Title(el.GetProperty("title") |> richTextList) - | Some "rich_text" -> PropertyValue.RichText(el.GetProperty("rich_text") |> richTextList) - | Some "email" -> - match tryGetProp "email" el |> Option.bind optStr with - | Some e -> PropertyValue.Email e - | None -> PropertyValue.Email "" - | Some "checkbox" -> PropertyValue.Checkbox(el.GetProperty("checkbox").GetBoolean()) - | Some "date" -> - match tryGetProp "date" el with - | Some d when d.ValueKind <> JsonValueKind.Null -> - match tryGetProp "start" d |> Option.bind optStr with - | Some s -> - match DateTimeOffset.TryParse(s) with - | true, dt -> PropertyValue.Date(Some dt) - | _ -> PropertyValue.Date None - | None -> PropertyValue.Date None - | _ -> PropertyValue.Date None - | Some "status" -> - match tryGetProp "status" el with - | Some s when s.ValueKind <> JsonValueKind.Null -> PropertyValue.Status(str (s.GetProperty("name"))) - | _ -> PropertyValue.Status "" - | Some "select" -> - match tryGetProp "select" el with - | Some s when s.ValueKind <> JsonValueKind.Null -> PropertyValue.Select(str (s.GetProperty("name"))) - | _ -> PropertyValue.Select "" - | Some "multi_select" -> - match tryGetProp "multi_select" el with - | Some ms -> - PropertyValue.MultiSelect - [ for item in ms.EnumerateArray() do - str (item.GetProperty("name")) ] - | None -> PropertyValue.MultiSelect [] - | _ -> PropertyValue.Unknown - - let page (el: JsonElement) : Page = - let icon = - tryGetProp "icon" el - |> Option.bind (fun v -> - if v.ValueKind = JsonValueKind.Null then None - else fileObject v) - let cover = - tryGetProp "cover" el - |> Option.bind (fun v -> - if v.ValueKind = JsonValueKind.Null then None - else fileObject v) - - let properties = - match tryGetProp "properties" el with - | Some props -> - [ for prop in props.EnumerateObject() do - prop.Name, propertyValue prop.Value ] - |> Map.ofList - | None -> Map.empty - - { id = str (el.GetProperty("id")) - icon = icon - cover = cover - properties = properties } - - let block (el: JsonElement) : Block = - let id = str (el.GetProperty("id")) - - let hasChildren = - match tryGetProp "has_children" el with - | Some v -> v.GetBoolean() - | None -> false - - let blockType = - match tryGetProp "type" el |> Option.map str with - | Some "paragraph" -> BlockType.Paragraph(el.GetProperty("paragraph").GetProperty("rich_text") |> richTextList) - | Some "heading_1" -> BlockType.Heading1(el.GetProperty("heading_1").GetProperty("rich_text") |> richTextList) - | Some "heading_2" -> BlockType.Heading2(el.GetProperty("heading_2").GetProperty("rich_text") |> richTextList) - | Some "heading_3" -> BlockType.Heading3(el.GetProperty("heading_3").GetProperty("rich_text") |> richTextList) - | Some "bulleted_list_item" -> - BlockType.BulletedListItem(el.GetProperty("bulleted_list_item").GetProperty("rich_text") |> richTextList, []) - | Some "numbered_list_item" -> - BlockType.NumberedListItem(el.GetProperty("numbered_list_item").GetProperty("rich_text") |> richTextList, []) - | Some "code" -> - let codeEl = el.GetProperty("code") - let lang = str (codeEl.GetProperty("language")) - BlockType.Code(codeEl.GetProperty("rich_text") |> richTextList, lang) - | Some "image" -> - let imageEl = el.GetProperty("image") - let url = - match tryGetProp "type" imageEl |> Option.map str with - | Some "file" -> str (imageEl.GetProperty("file").GetProperty("url")) - | Some "external" -> str (imageEl.GetProperty("external").GetProperty("url")) - | _ -> "" - BlockType.Image url - | Some "divider" -> BlockType.Divider - | Some "quote" -> BlockType.Quote(el.GetProperty("quote").GetProperty("rich_text") |> richTextList) - | Some "callout" -> BlockType.Callout(el.GetProperty("callout").GetProperty("rich_text") |> richTextList) - | _ -> BlockType.Unsupported - - { id = id - hasChildren = hasChildren - blockType = blockType } - - let paginatedPages (doc: JsonDocument) : PaginatedResponse = - let root = doc.RootElement - - { results = - [ for item in root.GetProperty("results").EnumerateArray() do - page item ] - hasMore = root.GetProperty("has_more").GetBoolean() - nextCursor = - match tryGetProp "next_cursor" root with - | Some v when v.ValueKind = JsonValueKind.String -> Some(v.GetString() |> Cursor.ofString) - | _ -> None } - - let paginatedBlocks (doc: JsonDocument) : PaginatedResponse = - let root = doc.RootElement - - { results = - [ for item in root.GetProperty("results").EnumerateArray() do - block item ] - hasMore = root.GetProperty("has_more").GetBoolean() - nextCursor = - match tryGetProp "next_cursor" root with - | Some v when v.ValueKind = JsonValueKind.String -> Some(v.GetString() |> Cursor.ofString) - | _ -> None } - -// ============================================================ -// Page Helpers -// ============================================================ - -module Page = - - let tryGetProperty (key: string) (page: Page) = - Map.tryFind key page.properties - - let getIconUrl (page: Page) = - page.icon |> Option.map _.url |> Option.defaultValue "" - - let getCoverUrl (page: Page) = - page.cover |> Option.map _.url |> Option.defaultValue "" - - let getTitle (key: string) (page: Page) = - match tryGetProperty key page with - | Some(PropertyValue.Title texts) -> texts |> List.tryHead |> Option.map _.plainText |> Option.defaultValue "" - | _ -> "" - - let getText (key: string) (page: Page) = - match tryGetProperty key page with - | Some(PropertyValue.RichText texts) -> - texts |> List.tryHead |> Option.map _.plainText |> Option.defaultValue "" - | _ -> "" - - let getCheckbox (key: string) (page: Page) = - match tryGetProperty key page with - | Some(PropertyValue.Checkbox v) -> v - | _ -> false - - let getDate (key: string) (page: Page) = - match tryGetProperty key page with - | Some(PropertyValue.Date(Some dt)) -> dt - | _ -> DateTimeOffset.MinValue - - let getStatus (key: string) (page: Page) = - match tryGetProperty key page with - | Some(PropertyValue.Status s) -> s - | _ -> "" - - let getSelect (key: string) (page: Page) = - match tryGetProperty key page with - | Some(PropertyValue.Select s) -> s - | _ -> "" - - let getMultiSelect (key: string) (page: Page) = - match tryGetProperty key page with - | Some(PropertyValue.MultiSelect items) -> items |> Array.ofList - | _ -> Array.empty - -// ============================================================ -// HTTP Client -// ============================================================ - -[] -let private NotionApiVersion = "2022-06-28" - -let private apiUrl (config:Config) (path:string) = - config.baseUrl.TrimEnd('/') + path - -let private createRequest (config: Config) (method: HttpMethod) (url: string) = - let req = new HttpRequestMessage(method, url) - req.Headers.Authorization <- AuthenticationHeaderValue("Bearer", config.apiKey) - req.Headers.Add("Notion-Version", NotionApiVersion) - req - -let private jsonContent (json: string) = - new StringContent(json, Encoding.UTF8, "application/json") - -// ============================================================ -// Service -// ============================================================ - -[] -type PropertyFilter = - | StatusEquals of property: string * value: string - | RichTextEquals of property: string * value: string - -module PropertyFilter = - let toObj (filter: PropertyFilter) : obj = - match filter with - | PropertyFilter.StatusEquals(property, value) -> - {| property = property; status = {| equals = value |} |} - | PropertyFilter.RichTextEquals(property, value) -> - {| property = property; rich_text = {| equals = value |} |} - -type QueryDatabaseParams = - { filter: PropertyFilter option - startCursor: Cursor option } - -type Service = - { queryDatabase: DatabaseId -> QueryDatabaseParams -> Task> - retrievePage: PageId -> Task - retrieveBlockChildren: BlockId -> Cursor option -> Task> } - -module Service = - - let private queryDatabase - (telemetry: Telemetry.Service) - (config: Config) - (httpClient: HttpClient) - : DatabaseId -> QueryDatabaseParams -> Task> = - fun databaseId queryParams -> - task { - let dbId = DatabaseId.toString databaseId - use span = telemetry.startActiveSpan "domain.notion.query_database" - span.SetAttribute("database_id", dbId) |> ignore - let url = apiUrl config $"/databases/{dbId}/query" - let req = createRequest config HttpMethod.Post url - - let body = dict [ - match queryParams.filter with - | Some f -> "filter", PropertyFilter.toObj f - | None -> () - match queryParams.startCursor with - | Some c -> "start_cursor", Cursor.toString c :> obj - | None -> () - ] - req.Content <- jsonContent (Json.serialize body) - let! resp = httpClient.SendAsync(req) - resp.EnsureSuccessStatusCode() |> ignore - let! body = resp.Content.ReadAsStringAsync() - use doc = JsonDocument.Parse(body) - return Parse.paginatedPages doc - } - - let private retrievePage - (telemetry: Telemetry.Service) - (config: Config) - (httpClient: HttpClient) - : PageId -> Task = - fun pageId -> - task { - let pgId = PageId.toString pageId - use span = telemetry.startActiveSpan "domain.notion.retrieve_page" - span.SetAttribute("page_id", pgId) |> ignore - let url = apiUrl config $"/pages/{pgId}" - let req = createRequest config HttpMethod.Get url - let! resp = httpClient.SendAsync(req) - resp.EnsureSuccessStatusCode() |> ignore - let! body = resp.Content.ReadAsStringAsync() - use doc = JsonDocument.Parse(body) - return Parse.page doc.RootElement - } - - let private retrieveBlockChildren - (telemetry: Telemetry.Service) - (config: Config) - (httpClient: HttpClient) - : BlockId -> Cursor option -> Task> = - fun blockId startCursor -> - task { - let blkId = BlockId.toString blockId - use span = telemetry.startActiveSpan "domain.notion.retrieve_block_children" - span.SetAttribute("block_id", blkId) |> ignore - - let mutable url = apiUrl config $"/blocks/{blkId}/children?page_size=100" - - match startCursor with - | Some c -> url <- url + $"&start_cursor={Cursor.toString c}" - | None -> () - - let req = createRequest config HttpMethod.Get url - let! resp = httpClient.SendAsync(req) - resp.EnsureSuccessStatusCode() |> ignore - let! body = resp.Content.ReadAsStringAsync() - use doc = JsonDocument.Parse(body) - return Parse.paginatedBlocks doc - } - - let create (config: Config) (telemetry: Telemetry.Service) (httpClient: HttpClient) = - { queryDatabase = queryDatabase telemetry config httpClient - retrievePage = retrievePage telemetry config httpClient - retrieveBlockChildren = retrieveBlockChildren telemetry config httpClient } diff --git a/app/src/Domain/Sqlite.fs b/app/src/Domain/Sqlite.fs deleted file mode 100644 index 799ecf6..0000000 --- a/app/src/Domain/Sqlite.fs +++ /dev/null @@ -1,106 +0,0 @@ -module Domain.Sqlite - -open Microsoft.Data.Sqlite -open System -open System.IO - -type Config = - { path: string } - -module Config = - let load () = - { path = Env.variable "SQLITE_PATH" } - -let connectionString (config: Config) = - let directory = Path.GetDirectoryName(config.path) - - if not (String.IsNullOrWhiteSpace(directory)) then - Directory.CreateDirectory(directory) |> ignore - - $"Data Source={config.path};Cache=Shared" - - -type SqliteDataReader with - member private this.Read<'T>(col: string) = this.GetFieldValue<'T>(this.GetOrdinal(col)) - member private this.ReadOption<'T>(col: string) = - let idx = this.GetOrdinal(col) - if this.IsDBNull(idx) then None else Some(this.GetFieldValue<'T>(idx)) - - member this.string(col: string) = this.Read(col) - member this.stringOption(col: string) = this.ReadOption(col) - member this.dateTimeOffset(col: string) = this.string(col) |> DateTimeOffset.Parse - - -type SqliteValue = - | Text of string - | TextOption of string option - - -type SqliteParameter = string * SqliteValue - -type SqliteCommand = - { sql: string option - parameters: SqliteParameter list - conn: SqliteConnection option } - -module SqliteParameter = - let toSqliteParameter ((name, value): SqliteParameter) : Microsoft.Data.Sqlite.SqliteParameter = - let p = Microsoft.Data.Sqlite.SqliteParameter() - p.ParameterName <- name - - match value with - | Text text -> p.Value <- text - | TextOption value -> - match value with - | Some text -> p.Value <- text - | None -> p.Value <- DBNull.Value - - p - -module SqliteCommand = - let toSqliteCommand (command: SqliteCommand) = - match command.conn, command.sql with - | Some conn, Some sql -> - let sqliteCommand = new Microsoft.Data.Sqlite.SqliteCommand(sql, conn) - - command.parameters - |> List.iter (fun p -> - let sqliteParameter = SqliteParameter.toSqliteParameter p - sqliteCommand.Parameters.Add(sqliteParameter) |> ignore) - - sqliteCommand - | None, _ -> failwith "No connection provided" - | _, None -> failwith "No sql provided" - -module Sql = - let text (value: string) = value |> SqliteValue.Text - let textOption (value: string option) = value |> SqliteValue.TextOption - let timestamptz (value: DateTimeOffset) = value.ToString("O") |> SqliteValue.Text - - let connect (conn: SqliteConnection) = - { sql = None - parameters = [] - conn = Some conn } - - let sql (sql: string) (command: SqliteCommand) = - { command with sql = Some sql } - - let parameter (parameter: SqliteParameter) (command: SqliteCommand) = - { command with parameters = parameter :: command.parameters } - - let parameters (parameters: SqliteParameter list) (command: SqliteCommand) = - { command with parameters = parameters @ command.parameters } - - let executeNonQuery (command: SqliteCommand) = - task { - use sqliteCommand = SqliteCommand.toSqliteCommand command - let! _ = sqliteCommand.ExecuteNonQueryAsync() - return () - } - - let executeQuery (read: SqliteDataReader -> 'T) (command: SqliteCommand) = - task { - use sqliteCommand = SqliteCommand.toSqliteCommand command - use! reader = sqliteCommand.ExecuteReaderAsync() - return [ while reader.Read() do read reader ] - } diff --git a/app/src/Domain/paket.references b/app/src/Domain/paket.references deleted file mode 100644 index a8e8261..0000000 --- a/app/src/Domain/paket.references +++ /dev/null @@ -1,6 +0,0 @@ -FSharp.SystemTextJson -FSharp.UMX -Microsoft.Data.Sqlite -OpenTelemetry -Serilog -Microsoft.Extensions.Hosting.Abstractions diff --git a/app/src/MockNotion/Dockerfile b/app/src/MockNotion/Dockerfile deleted file mode 100644 index 35e477b..0000000 --- a/app/src/MockNotion/Dockerfile +++ /dev/null @@ -1,20 +0,0 @@ -FROM mcr.microsoft.com/dotnet/sdk:10.0-noble AS builder - -WORKDIR /app - -COPY .config .config -RUN dotnet tool restore - -COPY paket.dependencies paket.lock ./ -RUN dotnet paket install && dotnet paket restore - -COPY src src -RUN dotnet publish src/MockNotion/MockNotion.fsproj --configuration Release --output /out --self-contained false - -FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble-chiseled-extra AS runner - -WORKDIR /app -COPY --from=builder /out . - -EXPOSE 5015 -ENTRYPOINT ["dotnet", "MockNotion.dll"] diff --git a/app/src/MockNotion/MockNotion.fsproj b/app/src/MockNotion/MockNotion.fsproj deleted file mode 100644 index 551ed14..0000000 --- a/app/src/MockNotion/MockNotion.fsproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - net10.0 - MockNotion - MockNotion - $(NoWarn);NU1510 - - - - - - - diff --git a/app/src/MockNotion/Program.fs b/app/src/MockNotion/Program.fs deleted file mode 100644 index 50c3d7c..0000000 --- a/app/src/MockNotion/Program.fs +++ /dev/null @@ -1,153 +0,0 @@ -module MockNotion - -open Giraffe -open Microsoft.AspNetCore.Builder -open Microsoft.AspNetCore.Http -open System -open System.Threading.Tasks - -module Fixture = - [] - let apiKey = "mock-notion-token" - - [] - let databaseId = "mock-articles" - - [] - let apiVersion = "2022-06-28" - - let private annotations = - """{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"}""" - - let private richText text = - $"""{{"type":"text","text":{{"content":"{text}"}},"annotations":{annotations},"plain_text":"{text}","href":null}}""" - - let private page id title permalink summary tags createdAt updatedAt = - let tags = tags |> List.map (fun tag -> $"""{{"name":"{tag}"}}""") |> String.concat "," - - $"""{{ - "object":"page", - "id":"{id}", - "icon":null, - "cover":null, - "properties":{{ - "Title":{{"type":"title","title":[{richText title}]}}, - "Permalink":{{"type":"rich_text","rich_text":[{richText permalink}]}}, - "Summary":{{"type":"rich_text","rich_text":[{richText summary}]}}, - "Tags":{{"type":"multi_select","multi_select":[{tags}]}}, - "Created At":{{"type":"date","date":{{"start":"{createdAt}","end":null}}}}, - "Updated At":{{"type":"date","date":{{"start":"{updatedAt}","end":null}}}}, - "Status":{{"type":"status","status":{{"name":"Published"}}}} - }} - }}""" - - let private financeArticle = - page - "mock-finance-systems" - "Mock finance systems" - "mock-finance-systems" - "A fictional local article about dependable finance operations." - [ "Finance"; "Local development" ] - "2026-01-15T00:00:00.000+00:00" - "2026-01-15T00:00:00.000+00:00" - - let private engineeringArticle = - page - "mock-engineering-notes" - "Mock engineering notes" - "mock-engineering-notes" - "A fictional local article used to exercise the article index and detail view." - [ "Engineering"; "Mock" ] - "2026-02-01T00:00:00.000+00:00" - "2026-02-01T00:00:00.000+00:00" - - let queryDatabase = - $"""{{"object":"list","results":[{engineeringArticle},{financeArticle}],"has_more":false,"next_cursor":null}}""" - - let private blocks heading paragraph = - $"""{{ - "object":"list", - "results":[ - {{"object":"block","id":"{heading}-heading","type":"heading_1","has_children":false,"heading_1":{{"rich_text":[{richText heading}]}}}}, - {{"object":"block","id":"{heading}-paragraph","type":"paragraph","has_children":false,"paragraph":{{"rich_text":[{richText paragraph}]}}}} - ], - "has_more":false, - "next_cursor":null - }}""" - - let tryFindPage id = - match id with - | "mock-finance-systems" -> Some financeArticle - | "mock-engineering-notes" -> Some engineeringArticle - | _ -> None - - let tryFindBlocks id = - match id with - | "mock-finance-systems" -> Some(blocks "Mock finance systems" "This fictional article is available only through the local MockNotion service.") - | "mock-engineering-notes" -> Some(blocks "Mock engineering notes" "This fictional article verifies local article synchronization without a live Notion workspace.") - | _ -> None - -let private json (body:string) : HttpHandler = - fun _next ctx -> task { - ctx.Response.ContentType <- "application/json" - do! ctx.Response.WriteAsync body - return Some ctx - } - -let private unauthorized : HttpHandler = - fun _next ctx -> task { - ctx.SetStatusCode StatusCodes.Status401Unauthorized - return! json """{"object":"error","status":401,"code":"unauthorized","message":"Invalid mock Notion credentials"}""" _next ctx - } - -let private requireNotionRequest (handler:HttpHandler) : HttpHandler = - fun next ctx -> task { - let authorization = ctx.Request.Headers.Authorization.ToString() - let version = ctx.Request.Headers["Notion-Version"].ToString() - - if authorization = $"Bearer {Fixture.apiKey}" && version = Fixture.apiVersion then - return! handler next ctx - else - return! unauthorized next ctx - } - -let private notFound : HttpHandler = - fun next ctx -> task { - ctx.SetStatusCode StatusCodes.Status404NotFound - return! json """{"object":"error","status":404,"code":"object_not_found","message":"Mock Notion object was not found"}""" next ctx - } - -let private queryDatabase : HttpHandler = - json Fixture.queryDatabase - -let private retrievePage id : HttpHandler = - match Fixture.tryFindPage id with - | Some page -> json page - | None -> notFound - -let private retrieveBlockChildren id : HttpHandler = - match Fixture.tryFindBlocks id with - | Some blocks -> json blocks - | None -> notFound - -let app : HttpHandler = - choose [ - GET >=> route "/healthz" >=> text "ok" - requireNotionRequest ( - choose [ - POST >=> route $"/v1/databases/{Fixture.databaseId}/query" >=> queryDatabase - GET >=> routef "/v1/pages/%s" retrievePage - GET >=> routef "/v1/blocks/%s/children" retrieveBlockChildren - notFound - ]) - ] - -[] -let main _args = - let url = Environment.GetEnvironmentVariable("MOCK_NOTION_URL") |> Option.ofObj |> Option.defaultValue "http://0.0.0.0:5015" - let builder = WebApplication.CreateBuilder() - builder.Services.AddGiraffe() |> ignore - let webApp = builder.Build() - webApp.UseGiraffe app - webApp.Run url - 0 diff --git a/app/src/MockNotion/paket.references b/app/src/MockNotion/paket.references deleted file mode 100644 index 378494c..0000000 --- a/app/src/MockNotion/paket.references +++ /dev/null @@ -1 +0,0 @@ -Giraffe diff --git a/app/src/Tests/ArticleCatalogTests.fs b/app/src/Tests/ArticleCatalogTests.fs new file mode 100644 index 0000000..bb12d92 --- /dev/null +++ b/app/src/Tests/ArticleCatalogTests.fs @@ -0,0 +1,70 @@ +module ArticleCatalogTests + +open App.Articles +open Expecto +open FSharp.ViewEngine + +[] +let articleCatalogTests = + testList + "Article catalog" + [ test "contains the three published articles in reverse chronological order" { + let permalinks = Catalog.all |> List.map _.permalink + + Expect.equal + permalinks + [ "fsharp-semantic-kernel"; "personal-infrastructure"; "dev-env" ] + "Expected the published article catalog" + } + + test "renders source-controlled article pages with durable assets" { + let rendered = + Catalog.all + |> List.map (fun article -> article, Render.toHtmlDocString article.page) + + for article, html in rendered do + Expect.stringContains html article.title $"Expected {article.permalink} title" + + Expect.stringContains + html + "https://assets.meiermade.com/andymeier/articles/" + $"Expected {article.permalink} GCS assets" + + Expect.isFalse + (html.Contains "prod-files-secure.s3") + $"Expected {article.permalink} not to use signed Notion assets" + + Expect.isFalse + (html.Contains "app.notion.com") + $"Expected {article.permalink} not to use Notion assets" + + let semanticKernel = + rendered + |> List.find (fun (article, _) -> article.permalink = "fsharp-semantic-kernel") + |> snd + + let infrastructure = + rendered + |> List.find (fun (article, _) -> article.permalink = "personal-infrastructure") + |> snd + + let developmentEnvironment = + rendered |> List.find (fun (article, _) -> article.permalink = "dev-env") |> snd + + Expect.stringContains semanticKernel "Semantic Kernel SDK" "Expected Semantic Kernel content" + + Expect.stringContains + infrastructure + "My current infrastructure runs on 3 Raspberry Pis" + "Expected infrastructure content" + + Expect.stringContains + developmentEnvironment + "Windows Subsystem for Linux" + "Expected development environment content" + } + + test "finds articles by permalink" { + Expect.isSome (Catalog.tryFind "personal-infrastructure") "Expected a published article" + Expect.isNone (Catalog.tryFind "missing") "Expected an unknown permalink not to resolve" + } ] diff --git a/app/src/Tests/ArticleFilterTests.fs b/app/src/Tests/ArticleFilterTests.fs index bcb399a..1aa24a1 100644 --- a/app/src/Tests/ArticleFilterTests.fs +++ b/app/src/Tests/ArticleFilterTests.fs @@ -1,24 +1,20 @@ module ArticleFilterTests +open App.Articles open App.Articles.Handler -open Domain.Article open Expecto +open FSharp.ViewEngine open System +open type Html -let private article title summary tags createdAt = - { id = title - permalink = title.ToLowerInvariant().Replace(" ", "-") +let private article (title:string) (summary:string) (tags:string[]) (createdAt:DateTimeOffset) : Article = + { permalink = title.ToLowerInvariant().Replace(" ", "-") title = title summary = summary - icon = "" - iconDescription = "" - cover = "" - coverDescription = "" + cover = "https://assets.meiermade.com/andymeier/articles/shared/cover.webp" tags = tags createdAt = createdAt - updatedAt = createdAt - blocks = [] - syncedAt = createdAt } + page = empty } let private articles = [ article "Finance systems" "Notes on dependable operations." [| "Finance"; "Architecture" |] (DateTimeOffset(2026, 2, 1, 0, 0, 0, TimeSpan.Zero)) diff --git a/app/src/Tests/ArticleServiceTests.fs b/app/src/Tests/ArticleServiceTests.fs deleted file mode 100644 index 1dbd485..0000000 --- a/app/src/Tests/ArticleServiceTests.fs +++ /dev/null @@ -1,163 +0,0 @@ -module ArticleServiceTests - -open Domain -open Expecto -open Microsoft.Data.Sqlite -open OpenTelemetry -open OpenTelemetry.Trace -open System -open System.IO -open System.Threading.Tasks - -let private withTempDb (run: Sqlite.Config -> Task<'a>) = - task { - let path = Path.Combine(Path.GetTempPath(), $"andymeier-tests-{Guid.NewGuid():N}.db") - - try - return! run { path = path } - finally - if File.Exists(path) then - try - File.Delete(path) - with - | :? IOException -> () - } - -let private telemetry () = - let tracerProvider = Sdk.CreateTracerProviderBuilder().AddSource("tests").Build() - let tracer = tracerProvider.GetTracer("tests") - Telemetry.Service.create tracer - -let private notionConfig: Notion.Config = - { articlesDatabaseId = Notion.DatabaseId.ofString "db" - apiKey = "token" - baseUrl = "https://api.notion.com/v1" } - -let private emptyNotionService: Notion.Service = - { queryDatabase = - fun _ _ -> - task { - return - { Notion.PaginatedResponse.results = [] - hasMore = false - nextCursor = None } - } - retrievePage = - fun _ -> - task { - return - { id = "" - icon = None - cover = None - properties = Map.empty } - } - retrieveBlockChildren = - fun _ _ -> - task { - return - { Notion.PaginatedResponse.results = [] - hasMore = false - nextCursor = None } - } } - -let private seedArticle (connectionString: string) = - task { - use conn = new SqliteConnection(connectionString) - do! conn.OpenAsync() |> Task.Ignore - - // language=sqlite - let schemaSql = - """ - CREATE TABLE IF NOT EXISTS articles ( - id TEXT PRIMARY KEY, - permalink TEXT NOT NULL UNIQUE, - title TEXT NOT NULL, - summary TEXT NOT NULL, - icon TEXT, - icon_description TEXT, - cover TEXT, - cover_description TEXT, - tags_json TEXT NOT NULL, - created_at_utc TEXT NOT NULL, - updated_at_utc TEXT NOT NULL, - blocks_json TEXT NOT NULL, - synced_at_utc TEXT NOT NULL - ); - """ - - do! - Sqlite.Sql.connect conn - |> Sqlite.Sql.sql schemaSql - |> Sqlite.Sql.executeNonQuery - - // language=sqlite - let insertSql = - """ - INSERT INTO articles ( - id, permalink, title, summary, icon, icon_description, cover, cover_description, - tags_json, created_at_utc, updated_at_utc, blocks_json, synced_at_utc - ) - VALUES ( - $id, $permalink, $title, $summary, $icon, $icon_description, $cover, $cover_description, - $tags_json, $created_at_utc, $updated_at_utc, $blocks_json, $synced_at_utc - ); - """ - - do! - Sqlite.Sql.connect conn - |> Sqlite.Sql.sql insertSql - |> Sqlite.Sql.parameters [ - "$id", Sqlite.Sql.text "a1" - "$permalink", Sqlite.Sql.text "hello-world" - "$title", Sqlite.Sql.text "Hello" - "$summary", Sqlite.Sql.text "Summary" - "$icon", Sqlite.Sql.text "" - "$icon_description", Sqlite.Sql.text "" - "$cover", Sqlite.Sql.text "" - "$cover_description", Sqlite.Sql.text "" - "$tags_json", Sqlite.Sql.text "[]" - "$created_at_utc", Sqlite.Sql.text "2026-01-01T00:00:00.0000000+00:00" - "$updated_at_utc", Sqlite.Sql.text "2026-01-01T00:00:00.0000000+00:00" - "$blocks_json", Sqlite.Sql.text "[]" - "$synced_at_utc", Sqlite.Sql.text "2026-01-01T00:00:00.0000000+00:00" - ] - |> Sqlite.Sql.executeNonQuery - } - -[] -let articleServiceTests = - testList "Article Service" [ - testTask "listArticles and tryGetArticle read from sqlite" { - let! _ = - withTempDb (fun sqliteConfig -> - let connectionString = Sqlite.connectionString sqliteConfig - - let service = - Article.Service.create notionConfig (telemetry()) sqliteConfig emptyNotionService - - task { - do! seedArticle connectionString - let! articles = service.listArticles () - let! article = service.tryGetArticle "hello-world" - - Expect.equal articles.Length 1 "Expected one article" - Expect.equal articles.[0].permalink "hello-world" "Expected permalink" - Expect.isSome article "Expected article by permalink" - }) - return () - } - - testTask "syncDatabase creates schema when missing" { - let! _ = - withTempDb (fun sqliteConfig -> - let service = - Article.Service.create notionConfig (telemetry()) sqliteConfig emptyNotionService - - task { - do! service.syncDatabase () - let! articles = service.listArticles () - Expect.equal articles [] "Expected empty list after empty sync" - }) - return () - } - ] \ No newline at end of file diff --git a/app/src/Tests/ArticleTests.fs b/app/src/Tests/ArticleTests.fs deleted file mode 100644 index 6b28eab..0000000 --- a/app/src/Tests/ArticleTests.fs +++ /dev/null @@ -1,22 +0,0 @@ -module ArticleTests - -open Domain -open Expecto - -[] -let domainTests = - testList "Domain" [ - test "ArticleId round-trips" { - let value = "abc123" - let id = Article.ArticleId.ofString value - let roundTripped = Article.ArticleId.toString id - Expect.equal roundTripped value "ArticleId should round-trip" - } - - test "ArticleId converts to Notion BlockId" { - let value = "abc123" - let id = Article.ArticleId.ofString value - let blockId = Article.ArticleId.toBlockId id - Expect.equal (Notion.BlockId.toString blockId) value "BlockId conversion should preserve value" - } - ] diff --git a/app/src/Tests/MockNotionTests.fs b/app/src/Tests/MockNotionTests.fs deleted file mode 100644 index 9f7d78c..0000000 --- a/app/src/Tests/MockNotionTests.fs +++ /dev/null @@ -1,33 +0,0 @@ -module Tests.MockNotionTests - -open System.Text.Json -open Expecto -open MockNotion - -[] -let tests = - testList "MockNotion" [ - test "returns two fictional published articles" { - use doc = JsonDocument.Parse(Fixture.queryDatabase) - let articles = doc.RootElement.GetProperty("results") - - Expect.equal (articles.GetArrayLength()) 2 "Expected two local articles" - - let titles = - articles.EnumerateArray() - |> Seq.map (fun page -> - page.GetProperty("properties").GetProperty("Title").GetProperty("title").[0].GetProperty("plain_text").GetString()) - |> Set.ofSeq - - Expect.equal titles (Set.ofList [ "Mock engineering notes"; "Mock finance systems" ]) "Expected fictional article titles" - } - - test "returns deterministic blocks for each fictional article" { - let financeBlocks = Fixture.tryFindBlocks "mock-finance-systems" - let engineeringBlocks = Fixture.tryFindBlocks "mock-engineering-notes" - - Expect.isSome financeBlocks "Expected finance article blocks" - Expect.isSome engineeringBlocks "Expected engineering article blocks" - Expect.isNone (Fixture.tryFindBlocks "unknown") "Expected unknown article to have no blocks" - } - ] diff --git a/app/src/Tests/NotionPageTests.fs b/app/src/Tests/NotionPageTests.fs deleted file mode 100644 index 8b64cab..0000000 --- a/app/src/Tests/NotionPageTests.fs +++ /dev/null @@ -1,107 +0,0 @@ -module Tests.NotionPageTests - -open System -open Domain.Notion -open Expecto - -let private mkRichText text = - { plainText = text - href = None - annotations = - { bold = false - italic = false - strikethrough = false - underline = false - code = false - color = "default" } } - -let private mkPage properties = - { id = "page-1" - icon = None - cover = None - properties = properties |> Map.ofList } - -let getterTests = - testList "Page helpers" [ - test "getTitle returns first rich text plain text" { - let page = mkPage [ "Title", PropertyValue.Title [ mkRichText "Hello" ] ] - Expect.equal (Page.getTitle "Title" page) "Hello" "title" - } - - test "getTitle returns empty for missing key" { - let page = mkPage [] - Expect.equal (Page.getTitle "Title" page) "" "empty" - } - - test "getText returns first rich text plain text" { - let page = mkPage [ "Summary", PropertyValue.RichText [ mkRichText "A summary" ] ] - Expect.equal (Page.getText "Summary" page) "A summary" "text" - } - - test "getCheckbox returns value" { - let page = mkPage [ "Active", PropertyValue.Checkbox true ] - Expect.isTrue (Page.getCheckbox "Active" page) "true" - } - - test "getCheckbox returns false for missing" { - let page = mkPage [] - Expect.isFalse (Page.getCheckbox "Active" page) "false" - } - - test "getDate returns date" { - let dt = DateTimeOffset(2025, 6, 1, 0, 0, 0, TimeSpan.Zero) - let page = mkPage [ "Created", PropertyValue.Date(Some dt) ] - Expect.equal (Page.getDate "Created" page) dt "date" - } - - test "getDate returns MinValue for None" { - let page = mkPage [ "Created", PropertyValue.Date None ] - Expect.equal (Page.getDate "Created" page) DateTimeOffset.MinValue "min" - } - - test "getStatus returns name" { - let page = mkPage [ "Status", PropertyValue.Status "Published" ] - Expect.equal (Page.getStatus "Status" page) "Published" "status" - } - - test "getSelect returns name" { - let page = mkPage [ "Category", PropertyValue.Select "Tech" ] - Expect.equal (Page.getSelect "Category" page) "Tech" "select" - } - - test "getMultiSelect returns names" { - let page = mkPage [ "Tags", PropertyValue.MultiSelect [ "A"; "B" ] ] - Expect.equal (Page.getMultiSelect "Tags" page) [| "A"; "B" |] "multi_select" - } - - test "getMultiSelect returns empty for missing" { - let page = mkPage [] - Expect.equal (Page.getMultiSelect "Tags" page) Array.empty "empty" - } - - test "getIconUrl returns url" { - let page = - { id = "p1" - icon = Some { url = "https://example.com/icon.png" } - cover = None - properties = Map.empty } - Expect.equal (Page.getIconUrl page) "https://example.com/icon.png" "icon" - } - - test "getIconUrl returns empty for None" { - let page = mkPage [] - Expect.equal (Page.getIconUrl page) "" "no icon" - } - - test "getCoverUrl returns url" { - let page = - { id = "p1" - icon = None - cover = Some { url = "https://example.com/cover.jpg" } - properties = Map.empty } - Expect.equal (Page.getCoverUrl page) "https://example.com/cover.jpg" "cover" - } - ] - -[] -let tests = testList "Notion.Page" [ getterTests ] diff --git a/app/src/Tests/NotionParseTests.fs b/app/src/Tests/NotionParseTests.fs deleted file mode 100644 index 0711fda..0000000 --- a/app/src/Tests/NotionParseTests.fs +++ /dev/null @@ -1,472 +0,0 @@ -module Tests.NotionParseTests - -open System -open System.Text.Json -open Domain.Notion -open Expecto - -let private defaultAnnotations = - """{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"}""" - -let private richTextJson (text: string) = - $"""{{ - "type":"text", - "text":{{"content":"{text}"}}, - "annotations":{defaultAnnotations}, - "plain_text":"{text}", - "href":null - }}""" - -let private richTextJsonWithHref (text: string) (href: string) = - $"""{{ - "type":"text", - "text":{{"content":"{text}","link":{{"url":"{href}"}}}}, - "annotations":{defaultAnnotations}, - "plain_text":"{text}", - "href":"{href}" - }}""" - -let private richTextJsonBold (text: string) = - $"""{{ - "type":"text", - "text":{{"content":"{text}"}}, - "annotations":{{"bold":true,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"}}, - "plain_text":"{text}", - "href":null - }}""" - -let richTextTests = - testList "Parse.richText" [ - test "parses plain text" { - let json = richTextJson "Hello" - use doc = JsonDocument.Parse(json) - let rt = Parse.richText doc.RootElement - Expect.equal rt.plainText "Hello" "plain text" - Expect.isNone rt.href "no href" - Expect.isFalse rt.annotations.bold "not bold" - Expect.isFalse rt.annotations.code "not code" - } - - test "parses text with href" { - let json = richTextJsonWithHref "Link" "https://example.com" - use doc = JsonDocument.Parse(json) - let rt = Parse.richText doc.RootElement - Expect.equal rt.plainText "Link" "plain text" - Expect.equal rt.href (Some "https://example.com") "href" - } - - test "parses bold annotation" { - let json = richTextJsonBold "Bold" - use doc = JsonDocument.Parse(json) - let rt = Parse.richText doc.RootElement - Expect.isTrue rt.annotations.bold "bold" - Expect.isFalse rt.annotations.italic "not italic" - } - ] - -let propertyValueTests = - testList "Parse.propertyValue" [ - test "parses title" { - let json = $"""{{"type":"title","title":[{richTextJson "My Title"}]}}""" - use doc = JsonDocument.Parse(json) - let pv = Parse.propertyValue doc.RootElement - match pv with - | PropertyValue.Title texts -> - Expect.equal texts.Length 1 "one item" - Expect.equal texts.[0].plainText "My Title" "title text" - | _ -> failtestf "expected Title, got %A" pv - } - - test "parses rich_text" { - let json = $"""{{"type":"rich_text","rich_text":[{richTextJson "Some text"}]}}""" - use doc = JsonDocument.Parse(json) - let pv = Parse.propertyValue doc.RootElement - match pv with - | PropertyValue.RichText texts -> - Expect.equal texts.[0].plainText "Some text" "text" - | _ -> failtestf "expected RichText, got %A" pv - } - - test "parses email" { - let json = """{"type":"email","email":"test@example.com"}""" - use doc = JsonDocument.Parse(json) - let pv = Parse.propertyValue doc.RootElement - Expect.equal pv (PropertyValue.Email "test@example.com") "email" - } - - test "parses null email" { - let json = """{"type":"email","email":null}""" - use doc = JsonDocument.Parse(json) - let pv = Parse.propertyValue doc.RootElement - Expect.equal pv (PropertyValue.Email "") "empty email" - } - - test "parses checkbox true" { - let json = """{"type":"checkbox","checkbox":true}""" - use doc = JsonDocument.Parse(json) - let pv = Parse.propertyValue doc.RootElement - Expect.equal pv (PropertyValue.Checkbox true) "checkbox" - } - - test "parses date" { - let json = """{"type":"date","date":{"start":"2025-01-15T00:00:00.000+00:00","end":null}}""" - use doc = JsonDocument.Parse(json) - let pv = Parse.propertyValue doc.RootElement - match pv with - | PropertyValue.Date(Some dt) -> - Expect.equal dt.Year 2025 "year" - Expect.equal dt.Month 1 "month" - Expect.equal dt.Day 15 "day" - | _ -> failtestf "expected Date, got %A" pv - } - - test "parses null date" { - let json = """{"type":"date","date":null}""" - use doc = JsonDocument.Parse(json) - let pv = Parse.propertyValue doc.RootElement - Expect.equal pv (PropertyValue.Date None) "null date" - } - - test "parses status" { - let json = """{"type":"status","status":{"name":"Published"}}""" - use doc = JsonDocument.Parse(json) - let pv = Parse.propertyValue doc.RootElement - Expect.equal pv (PropertyValue.Status "Published") "status" - } - - test "parses null status" { - let json = """{"type":"status","status":null}""" - use doc = JsonDocument.Parse(json) - let pv = Parse.propertyValue doc.RootElement - Expect.equal pv (PropertyValue.Status "") "null status" - } - - test "parses select" { - let json = """{"type":"select","select":{"name":"Option A"}}""" - use doc = JsonDocument.Parse(json) - let pv = Parse.propertyValue doc.RootElement - Expect.equal pv (PropertyValue.Select "Option A") "select" - } - - test "parses multi_select" { - let json = """{"type":"multi_select","multi_select":[{"name":"Tag1"},{"name":"Tag2"}]}""" - use doc = JsonDocument.Parse(json) - let pv = Parse.propertyValue doc.RootElement - Expect.equal pv (PropertyValue.MultiSelect [ "Tag1"; "Tag2" ]) "multi_select" - } - - test "parses unknown type" { - let json = """{"type":"formula","formula":{"type":"number","number":42}}""" - use doc = JsonDocument.Parse(json) - let pv = Parse.propertyValue doc.RootElement - Expect.equal pv PropertyValue.Unknown "unknown" - } - ] - -let fileObjectTests = - testList "Parse.fileObject" [ - test "parses uploaded file" { - let json = """{"type":"file","file":{"url":"https://s3.amazonaws.com/img.png"}}""" - use doc = JsonDocument.Parse(json) - let fo = Parse.fileObject doc.RootElement - Expect.equal fo (Some { url = "https://s3.amazonaws.com/img.png" }) "uploaded file" - } - - test "parses external file" { - let json = """{"type":"external","external":{"url":"https://example.com/img.png"}}""" - use doc = JsonDocument.Parse(json) - let fo = Parse.fileObject doc.RootElement - Expect.equal fo (Some { url = "https://example.com/img.png" }) "external file" - } - - test "returns None for unknown type" { - let json = """{"type":"emoji","emoji":"🎉"}""" - use doc = JsonDocument.Parse(json) - let fo = Parse.fileObject doc.RootElement - Expect.isNone fo "no file" - } - ] - -let blockTests = - testList "Parse.block" [ - test "parses paragraph" { - let json = - $"""{{ - "object":"block","id":"abc-123","type":"paragraph","has_children":false, - "paragraph":{{"rich_text":[{richTextJson "Hello world"}]}} - }}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - Expect.equal b.id "abc-123" "id" - Expect.isFalse b.hasChildren "no children" - match b.blockType with - | BlockType.Paragraph rt -> - Expect.equal rt.[0].plainText "Hello world" "text" - | _ -> failtestf "expected Paragraph, got %A" b.blockType - } - - test "parses heading_1" { - let json = - $"""{{ - "object":"block","id":"h1-id","type":"heading_1","has_children":false, - "heading_1":{{"rich_text":[{richTextJson "Title"}]}} - }}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - match b.blockType with - | BlockType.Heading1 rt -> Expect.equal rt.[0].plainText "Title" "heading text" - | _ -> failtestf "expected Heading1, got %A" b.blockType - } - - test "parses heading_2" { - let json = - $"""{{ - "object":"block","id":"h2-id","type":"heading_2","has_children":false, - "heading_2":{{"rich_text":[{richTextJson "Subtitle"}]}} - }}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - match b.blockType with - | BlockType.Heading2 rt -> Expect.equal rt.[0].plainText "Subtitle" "heading text" - | _ -> failtestf "expected Heading2, got %A" b.blockType - } - - test "parses heading_3" { - let json = - $"""{{ - "object":"block","id":"h3-id","type":"heading_3","has_children":false, - "heading_3":{{"rich_text":[{richTextJson "Section"}]}} - }}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - match b.blockType with - | BlockType.Heading3 rt -> Expect.equal rt.[0].plainText "Section" "heading text" - | _ -> failtestf "expected Heading3, got %A" b.blockType - } - - test "parses bulleted_list_item" { - let json = - $"""{{ - "object":"block","id":"bl-id","type":"bulleted_list_item","has_children":false, - "bulleted_list_item":{{"rich_text":[{richTextJson "Item 1"}]}} - }}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - match b.blockType with - | BlockType.BulletedListItem(rt, children) -> - Expect.equal rt.[0].plainText "Item 1" "text" - Expect.isEmpty children "no children initially" - | _ -> failtestf "expected BulletedListItem, got %A" b.blockType - } - - test "parses numbered_list_item" { - let json = - $"""{{ - "object":"block","id":"nl-id","type":"numbered_list_item","has_children":false, - "numbered_list_item":{{"rich_text":[{richTextJson "Step 1"}]}} - }}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - match b.blockType with - | BlockType.NumberedListItem(rt, children) -> - Expect.equal rt.[0].plainText "Step 1" "text" - Expect.isEmpty children "no children initially" - | _ -> failtestf "expected NumberedListItem, got %A" b.blockType - } - - test "parses code block" { - let json = - $"""{{ - "object":"block","id":"code-id","type":"code","has_children":false, - "code":{{"rich_text":[{richTextJson "let x = 1"}],"language":"f#"}} - }}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - match b.blockType with - | BlockType.Code(rt, lang) -> - Expect.equal rt.[0].plainText "let x = 1" "code text" - Expect.equal lang "f#" "language" - | _ -> failtestf "expected Code, got %A" b.blockType - } - - test "parses image with uploaded file" { - let json = - """{"object":"block","id":"img-id","type":"image","has_children":false, - "image":{"type":"file","file":{"url":"https://s3.example.com/photo.png"}}}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - match b.blockType with - | BlockType.Image url -> Expect.equal url "https://s3.example.com/photo.png" "image url" - | _ -> failtestf "expected Image, got %A" b.blockType - } - - test "parses image with external file" { - let json = - """{"object":"block","id":"img-id","type":"image","has_children":false, - "image":{"type":"external","external":{"url":"https://example.com/photo.png"}}}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - match b.blockType with - | BlockType.Image url -> Expect.equal url "https://example.com/photo.png" "image url" - | _ -> failtestf "expected Image, got %A" b.blockType - } - - test "parses divider" { - let json = """{"object":"block","id":"div-id","type":"divider","has_children":false,"divider":{}}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - Expect.equal b.blockType BlockType.Divider "divider" - } - - test "parses quote" { - let json = - $"""{{ - "object":"block","id":"q-id","type":"quote","has_children":false, - "quote":{{"rich_text":[{richTextJson "A wise quote"}]}} - }}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - match b.blockType with - | BlockType.Quote rt -> Expect.equal rt.[0].plainText "A wise quote" "quote text" - | _ -> failtestf "expected Quote, got %A" b.blockType - } - - test "parses callout" { - let json = - $"""{{ - "object":"block","id":"co-id","type":"callout","has_children":false, - "callout":{{"rich_text":[{richTextJson "Note this"}],"icon":{{"type":"emoji","emoji":"💡"}}}} - }}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - match b.blockType with - | BlockType.Callout rt -> Expect.equal rt.[0].plainText "Note this" "callout text" - | _ -> failtestf "expected Callout, got %A" b.blockType - } - - test "parses has_children true" { - let json = - $"""{{ - "object":"block","id":"parent-id","type":"bulleted_list_item","has_children":true, - "bulleted_list_item":{{"rich_text":[{richTextJson "Parent"}]}} - }}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - Expect.isTrue b.hasChildren "has children" - } - - test "parses unsupported block type" { - let json = - """{"object":"block","id":"x-id","type":"table_of_contents","has_children":false,"table_of_contents":{}}""" - use doc = JsonDocument.Parse(json) - let b = Parse.block doc.RootElement - Expect.equal b.blockType BlockType.Unsupported "unsupported" - } - ] - -let pageTests = - testList "Parse.page" [ - test "parses page with all property types" { - let json = - $"""{{ - "object":"page", - "id":"page-123", - "icon":{{"type":"external","external":{{"url":"https://example.com/icon.png"}}}}, - "cover":{{"type":"file","file":{{"url":"https://s3.example.com/cover.jpg"}}}}, - "properties":{{ - "Title":{{"type":"title","title":[{richTextJson "My Article"}]}}, - "Summary":{{"type":"rich_text","rich_text":[{richTextJson "A summary"}]}}, - "Email":{{"type":"email","email":"a@b.com"}}, - "Active":{{"type":"checkbox","checkbox":true}}, - "Created At":{{"type":"date","date":{{"start":"2025-06-01T00:00:00.000+00:00"}}}}, - "Status":{{"type":"status","status":{{"name":"Published"}}}}, - "Category":{{"type":"select","select":{{"name":"Tech"}}}}, - "Tags":{{"type":"multi_select","multi_select":[{{"name":"F#"}},{{"name":"Web"}}]}} - }} - }}""" - use doc = JsonDocument.Parse(json) - let p = Parse.page doc.RootElement - Expect.equal p.id "page-123" "id" - Expect.equal p.icon (Some { url = "https://example.com/icon.png" }) "icon" - Expect.equal p.cover (Some { url = "https://s3.example.com/cover.jpg" }) "cover" - Expect.equal (Map.count p.properties) 8 "8 properties" - } - - test "parses page with no icon or cover" { - let json = - $"""{{ - "object":"page", - "id":"page-456", - "icon":null, - "cover":null, - "properties":{{ - "Title":{{"type":"title","title":[{richTextJson "Simple"}]}} - }} - }}""" - use doc = JsonDocument.Parse(json) - let p = Parse.page doc.RootElement - Expect.isNone p.icon "no icon" - Expect.isNone p.cover "no cover" - } - ] - -let paginatedTests = - testList "Parse.paginated" [ - test "parses paginated pages" { - let json = - $"""{{ - "object":"list", - "results":[{{ - "object":"page","id":"p1", - "icon":null,"cover":null, - "properties":{{"Title":{{"type":"title","title":[{richTextJson "Page 1"}]}}}} - }}], - "has_more":true, - "next_cursor":"cursor-abc" - }}""" - use doc = JsonDocument.Parse(json) - let res = Parse.paginatedPages doc - Expect.equal res.results.Length 1 "one result" - Expect.isTrue res.hasMore "has more" - Expect.equal res.nextCursor (Some (Cursor.ofString "cursor-abc")) "cursor" - } - - test "parses paginated pages with no more" { - let json = - """{"object":"list","results":[],"has_more":false,"next_cursor":null}""" - use doc = JsonDocument.Parse(json) - let res = Parse.paginatedPages doc - Expect.isEmpty res.results "empty" - Expect.isFalse res.hasMore "no more" - Expect.isNone res.nextCursor "no cursor" - } - - test "parses paginated blocks" { - let json = - $"""{{ - "object":"list", - "results":[ - {{"object":"block","id":"b1","type":"paragraph","has_children":false, - "paragraph":{{"rich_text":[{richTextJson "Hello"}]}}}}, - {{"object":"block","id":"b2","type":"divider","has_children":false,"divider":{{}}}} - ], - "has_more":false, - "next_cursor":null - }}""" - use doc = JsonDocument.Parse(json) - let res = Parse.paginatedBlocks doc - Expect.equal res.results.Length 2 "two blocks" - Expect.isFalse res.hasMore "no more" - } - ] - -[] -let tests = - testList "Notion.Parse" [ - richTextTests - propertyValueTests - fileObjectTests - blockTests - pageTests - paginatedTests - ] diff --git a/app/src/Tests/NotionServiceTests.fs b/app/src/Tests/NotionServiceTests.fs deleted file mode 100644 index 2e7dd60..0000000 --- a/app/src/Tests/NotionServiceTests.fs +++ /dev/null @@ -1,316 +0,0 @@ -module Tests.NotionServiceTests - -open System -open System.Net -open System.Net.Http -open System.Text -open System.Threading -open System.Threading.Tasks -open Domain -open Domain.Notion -open Expecto - -// ============================================================ -// Test helpers -// ============================================================ - -let private defaultAnnotations = - """{"bold":false,"italic":false,"strikethrough":false,"underline":false,"code":false,"color":"default"}""" - -let private richTextJson (text: string) = - $"""{{ - "type":"text", - "text":{{"content":"{text}"}}, - "annotations":{defaultAnnotations}, - "plain_text":"{text}", - "href":null - }}""" - -/// HttpMessageHandler that returns a canned response -type MockHandler(handler: HttpRequestMessage -> HttpResponseMessage) = - inherit HttpMessageHandler() - - override _.SendAsync(request, _ct) = - Task.FromResult(handler request) - -let private mockHttpClient (responses: (string * string) list) = - let mutable callIndex = 0 - - let handler = - new MockHandler(fun _req -> - let _url, body = - if callIndex < responses.Length then - responses.[callIndex] - else - "", """{"results":[],"has_more":false,"next_cursor":null}""" - - callIndex <- callIndex + 1 - - new HttpResponseMessage( - HttpStatusCode.OK, - Content = new StringContent(body, Encoding.UTF8, "application/json") - )) - - new HttpClient(handler) - -let private testConfig: Config = - { articlesDatabaseId = DatabaseId.ofString "articles-db" - apiKey = "test-token" - baseUrl = "http://notion.test/v1" } - -let private noopTelemetry: Telemetry.Service = - { startActiveSpan = - fun _name -> - // Return a no-op span using the global no-op tracer - let tracer = - OpenTelemetry.Trace.TracerProvider - .Default.GetTracer("test") - - tracer.StartActiveSpan("noop") } - -// ============================================================ -// Tests -// ============================================================ - -let queryDatabaseTests = - testList "Service.queryDatabase" [ - testTask "uses the configured endpoint and Notion request headers" { - let mutable request: HttpRequestMessage option = None - let handler = - new MockHandler(fun req -> - request <- Some req - new HttpResponseMessage( - HttpStatusCode.OK, - Content = new StringContent("""{"results":[],"has_more":false,"next_cursor":null}""", Encoding.UTF8, "application/json") - )) - let httpClient = new HttpClient(handler) - let svc = Service.create testConfig noopTelemetry httpClient - - let! _ = svc.queryDatabase testConfig.articlesDatabaseId { filter = None; startCursor = None } - - let request = request |> Option.defaultWith (fun () -> failtest "Expected a Notion request") - Expect.equal request.RequestUri.AbsoluteUri "http://notion.test/v1/databases/articles-db/query" "Expected configured Notion base URL" - Expect.equal request.Headers.Authorization.Scheme "Bearer" "Expected bearer authentication" - Expect.equal request.Headers.Authorization.Parameter "test-token" "Expected configured API key" - Expect.equal (request.Headers.GetValues("Notion-Version") |> Seq.exactlyOne) "2022-06-28" "Expected Notion API version" - } - - testTask "returns parsed pages" { - let responseJson = - $"""{{ - "object":"list", - "results":[{{ - "object":"page", - "id":"page-1", - "icon":null, - "cover":null, - "properties":{{ - "Title":{{"type":"title","title":[{richTextJson "Article 1"}]}}, - "Status":{{"type":"status","status":{{"name":"Published"}}}} - }} - }},{{ - "object":"page", - "id":"page-2", - "icon":null, - "cover":null, - "properties":{{ - "Title":{{"type":"title","title":[{richTextJson "Article 2"}]}}, - "Status":{{"type":"status","status":{{"name":"Draft"}}}} - }} - }}], - "has_more":false, - "next_cursor":null - }}""" - - let httpClient = mockHttpClient [ "", responseJson ] - let svc = Service.create testConfig noopTelemetry httpClient - - let! res = - svc.queryDatabase (DatabaseId.ofString "articles-db") { filter = None; startCursor = None } - - Expect.equal res.results.Length 2 "two pages" - Expect.equal (Page.getTitle "Title" res.results.[0]) "Article 1" "first title" - Expect.equal (Page.getStatus "Status" res.results.[1]) "Draft" "second status" - Expect.isFalse res.hasMore "no more" - } - - testTask "handles pagination cursor" { - let page1Json = - $"""{{ - "object":"list", - "results":[{{ - "object":"page","id":"p1","icon":null,"cover":null, - "properties":{{"Title":{{"type":"title","title":[{richTextJson "First"}]}}}} - }}], - "has_more":true, - "next_cursor":"cursor-abc" - }}""" - - let page2Json = - $"""{{ - "object":"list", - "results":[{{ - "object":"page","id":"p2","icon":null,"cover":null, - "properties":{{"Title":{{"type":"title","title":[{richTextJson "Second"}]}}}} - }}], - "has_more":false, - "next_cursor":null - }}""" - - let httpClient = mockHttpClient [ "", page1Json; "", page2Json ] - let svc = Service.create testConfig noopTelemetry httpClient - - let! res1 = - svc.queryDatabase (DatabaseId.ofString "articles-db") { filter = None; startCursor = None } - - Expect.isTrue res1.hasMore "has more" - Expect.equal res1.nextCursor (Some (Cursor.ofString "cursor-abc")) "cursor" - - let! res2 = - svc.queryDatabase - (DatabaseId.ofString "articles-db") - { filter = None - startCursor = res1.nextCursor } - - Expect.equal res2.results.Length 1 "one page" - Expect.isFalse res2.hasMore "no more" - } - - testTask "returns empty for no results" { - let responseJson = - """{"object":"list","results":[],"has_more":false,"next_cursor":null}""" - - let httpClient = mockHttpClient [ "", responseJson ] - let svc = Service.create testConfig noopTelemetry httpClient - - let! res = - svc.queryDatabase (DatabaseId.ofString "articles-db") { filter = None; startCursor = None } - - Expect.isEmpty res.results "empty" - } - ] - -let retrievePageTests = - testList "Service.retrievePage" [ - testTask "returns parsed page" { - let responseJson = - $"""{{ - "object":"page", - "id":"page-abc", - "icon":{{"type":"external","external":{{"url":"https://example.com/icon.png"}}}}, - "cover":{{"type":"file","file":{{"url":"https://s3.example.com/cover.jpg"}}}}, - "properties":{{ - "Title":{{"type":"title","title":[{richTextJson "My Page"}]}}, - "Permalink":{{"type":"rich_text","rich_text":[{richTextJson "my-page"}]}}, - "Status":{{"type":"status","status":{{"name":"Published"}}}}, - "Tags":{{"type":"multi_select","multi_select":[{{"name":"F#"}},{{"name":"Web"}}]}} - }} - }}""" - - let httpClient = mockHttpClient [ "", responseJson ] - let svc = Service.create testConfig noopTelemetry httpClient - - let! page = svc.retrievePage (PageId.ofString "page-abc") - - Expect.equal page.id "page-abc" "id" - Expect.equal (Page.getTitle "Title" page) "My Page" "title" - Expect.equal (Page.getText "Permalink" page) "my-page" "permalink" - Expect.equal (Page.getStatus "Status" page) "Published" "status" - Expect.equal (Page.getMultiSelect "Tags" page) [| "F#"; "Web" |] "tags" - Expect.equal (Page.getIconUrl page) "https://example.com/icon.png" "icon" - Expect.equal (Page.getCoverUrl page) "https://s3.example.com/cover.jpg" "cover" - } - ] - -let retrieveBlockChildrenTests = - testList "Service.retrieveBlockChildren" [ - testTask "returns parsed blocks" { - let responseJson = - $"""{{ - "object":"list", - "results":[ - {{"object":"block","id":"b1","type":"heading_1","has_children":false, - "heading_1":{{"rich_text":[{richTextJson "Introduction"}]}}}}, - {{"object":"block","id":"b2","type":"paragraph","has_children":false, - "paragraph":{{"rich_text":[{richTextJson "Some content here."}]}}}}, - {{"object":"block","id":"b3","type":"code","has_children":false, - "code":{{"rich_text":[{richTextJson "let x = 42"}],"language":"f#"}}}}, - {{"object":"block","id":"b4","type":"divider","has_children":false,"divider":{{}}}}, - {{"object":"block","id":"b5","type":"image","has_children":false, - "image":{{"type":"external","external":{{"url":"https://example.com/img.png"}}}}}} - ], - "has_more":false, - "next_cursor":null - }}""" - - let httpClient = mockHttpClient [ "", responseJson ] - let svc = Service.create testConfig noopTelemetry httpClient - - let! res = svc.retrieveBlockChildren (BlockId.ofString "block-parent") None - - Expect.equal res.results.Length 5 "five blocks" - - match res.results.[0].blockType with - | BlockType.Heading1 rt -> Expect.equal rt.[0].plainText "Introduction" "h1" - | other -> failtestf "expected Heading1, got %A" other - - match res.results.[1].blockType with - | BlockType.Paragraph rt -> Expect.equal rt.[0].plainText "Some content here." "paragraph" - | other -> failtestf "expected Paragraph, got %A" other - - match res.results.[2].blockType with - | BlockType.Code(rt, lang) -> - Expect.equal rt.[0].plainText "let x = 42" "code" - Expect.equal lang "f#" "language" - | other -> failtestf "expected Code, got %A" other - - Expect.equal res.results.[3].blockType BlockType.Divider "divider" - - match res.results.[4].blockType with - | BlockType.Image url -> Expect.equal url "https://example.com/img.png" "image" - | other -> failtestf "expected Image, got %A" other - } - - testTask "handles pagination" { - let page1Json = - $"""{{ - "object":"list", - "results":[ - {{"object":"block","id":"b1","type":"paragraph","has_children":false, - "paragraph":{{"rich_text":[{richTextJson "First"}]}}}} - ], - "has_more":true, - "next_cursor":"block-cursor" - }}""" - - let page2Json = - $"""{{ - "object":"list", - "results":[ - {{"object":"block","id":"b2","type":"paragraph","has_children":false, - "paragraph":{{"rich_text":[{richTextJson "Second"}]}}}} - ], - "has_more":false, - "next_cursor":null - }}""" - - let httpClient = mockHttpClient [ "", page1Json; "", page2Json ] - let svc = Service.create testConfig noopTelemetry httpClient - - let! res1 = svc.retrieveBlockChildren (BlockId.ofString "parent-id") None - Expect.equal res1.results.Length 1 "first page" - Expect.isTrue res1.hasMore "has more" - - let! res2 = svc.retrieveBlockChildren (BlockId.ofString "parent-id") res1.nextCursor - Expect.equal res2.results.Length 1 "second page" - Expect.isFalse res2.hasMore "no more" - } - ] - -[] -let tests = - testList - "Notion.Service" - [ queryDatabaseTests - retrievePageTests - retrieveBlockChildrenTests ] diff --git a/app/src/Tests/Tests.fsproj b/app/src/Tests/Tests.fsproj index c1ac930..d84b418 100644 --- a/app/src/Tests/Tests.fsproj +++ b/app/src/Tests/Tests.fsproj @@ -8,19 +8,13 @@ - - - - - - + - \ No newline at end of file diff --git a/app/src/Tests/ViewTests.fs b/app/src/Tests/ViewTests.fs index feba529..b59356e 100644 --- a/app/src/Tests/ViewTests.fs +++ b/app/src/Tests/ViewTests.fs @@ -1,5 +1,7 @@ module ViewTests +open App.Articles +open App.Articles.Shared open App.Common.View open Expecto open FSharp.ViewEngine @@ -100,20 +102,14 @@ let tests = test "does not let article permalinks escape attributes or Datastar expressions" { let unsafePermalink = "\" onmouseover=\"alert(1)" - let article : Domain.Article.Article = - { id = "article" - permalink = unsafePermalink + let article : Article = + { permalink = unsafePermalink title = "Example article" summary = "Summary" - icon = "" - iconDescription = "" - cover = "" - coverDescription = "" + cover = "https://assets.meiermade.com/andymeier/articles/shared/cover.webp" tags = [||] createdAt = System.DateTimeOffset(2026, 2, 1, 0, 0, 0, System.TimeSpan.Zero) - updatedAt = System.DateTimeOffset(2026, 2, 1, 0, 0, 0, System.TimeSpan.Zero) - blocks = [] - syncedAt = System.DateTimeOffset(2026, 2, 1, 0, 0, 0, System.TimeSpan.Zero) } + page = empty } let html = ArticleCard.summary article |> Render.toHtmlDocString @@ -121,33 +117,11 @@ let tests = Expect.stringContains html "/articles/%22%20onmouseover%3D%22alert%281%29" "Expected permalink to be encoded as one URL segment" } - test "allows safe Notion links without rendering unsafe URL schemes or attributes" { - let richText href : Domain.Notion.RichText = - { plainText = "Example" - href = Some href - annotations = - { bold = false - italic = false - strikethrough = false - underline = false - code = false - color = "default" } } - - let safeHtml = App.Articles.View.RichTextView.toHtml (richText "https://example.com/?a=1&b=2") |> Render.toHtmlDocString - let unsafeHtml = App.Articles.View.RichTextView.toHtml (richText "javascript:alert(1)\" onclick=\"alert(2)") |> Render.toHtmlDocString - - Expect.stringContains safeHtml "href=\"https://example.com/?a=1&b=2\"" "Expected a safe, encoded HTTPS link" - Expect.isFalse (unsafeHtml.Contains " Render.toHtmlDocString + let html = ArticlePage.primary metadata [] |> Render.toHtmlDocString Expect.stringContains html "Engineering" "Expected article tag on detail page" Expect.stringContains html "Finance" "Expected article tag on detail page" diff --git a/e2e/scripts/start-local.sh b/e2e/scripts/start-local.sh index f15e31f..0af559d 100644 --- a/e2e/scripts/start-local.sh +++ b/e2e/scripts/start-local.sh @@ -6,19 +6,15 @@ e2e_dir="$(cd "$script_dir/.." && pwd)" repo_dir="$(cd "$e2e_dir/.." && pwd)" app_dir="$repo_dir/app" server_port="${E2E_SERVER_PORT:-5051}" -mock_port="${E2E_MOCK_NOTION_PORT:-5052}" log_dir="${TMPDIR:-/tmp}/andymeier-e2e" mkdir -p "$log_dir" -mock_pid="" app_pid="" cleanup() { - for pid in "$app_pid" "$mock_pid"; do - if [[ -n "$pid" ]]; then kill "$pid" 2>/dev/null || true; fi - done - for pid in "$app_pid" "$mock_pid"; do - if [[ -n "$pid" ]]; then wait "$pid" 2>/dev/null || true; fi - done + if [[ -n "$app_pid" ]]; then + kill "$app_pid" 2>/dev/null || true + wait "$app_pid" 2>/dev/null || true + fi } trap cleanup EXIT INT TERM @@ -26,37 +22,16 @@ cd "$app_dir" if [[ "${E2E_SKIP_DOTNET_BUILD:-0}" != "1" ]]; then dotnet build src/App/App.fsproj --nologo --verbosity minimal - dotnet build src/MockNotion/MockNotion.fsproj --nologo --verbosity minimal fi ./fake.sh BuildCss -MOCK_NOTION_URL="http://127.0.0.1:${mock_port}" \ - dotnet run --no-build --project src/MockNotion/MockNotion.fsproj > "$log_dir/mock-notion.log" 2>&1 & -mock_pid=$! - -for _ in $(seq 1 60); do - if curl --fail --silent "http://127.0.0.1:${mock_port}/healthz" >/dev/null; then break; fi - sleep 1 -done - -if ! curl --fail --silent "http://127.0.0.1:${mock_port}/healthz" >/dev/null; then - cat "$log_dir/mock-notion.log" >&2 || true - exit 1 -fi - -sqlite_path="$log_dir/articles-${server_port}.db" -rm -f "$sqlite_path" ASPNETCORE_ENVIRONMENT=Development \ GOOGLE_ANALYTICS_MEASUREMENT_ID=G-LOCAL \ -NOTION_API_KEY=mock-notion-token \ -NOTION_ARTICLES_DATABASE_ID=mock-articles \ -NOTION_BASE_URL="http://127.0.0.1:${mock_port}/v1" \ OTEL_RESOURCE_ATTRIBUTES="deployment.environment.name=e2e" \ OTEL_SERVICE_NAME="andymeier-e2e" \ SEQ_ENDPOINT="http://127.0.0.1:5341" \ SERVER_URL="http://127.0.0.1:${server_port}" \ -SQLITE_PATH="$sqlite_path" \ dotnet run --no-build --project src/App/App.fsproj > "$log_dir/app.log" 2>&1 & app_pid=$! @@ -69,12 +44,7 @@ for _ in $(seq 1 60); do sleep 1 done -for _ in $(seq 1 60); do - if curl --fail --silent "http://127.0.0.1:${server_port}/articles" | grep -q 'Mock engineering notes'; then break; fi - sleep 1 -done - -if ! curl --fail --silent "http://127.0.0.1:${server_port}/articles" | grep -q 'Mock engineering notes'; then +if ! curl --fail --silent "http://127.0.0.1:${server_port}/articles" | grep -q 'F# Semantic Kernel'; then cat "$log_dir/app.log" >&2 || true exit 1 fi diff --git a/e2e/tests/routes.spec.ts b/e2e/tests/routes.spec.ts index 0584580..5394fdf 100644 --- a/e2e/tests/routes.spec.ts +++ b/e2e/tests/routes.spec.ts @@ -1,8 +1,15 @@ import { expect, test } from '@playwright/test' const isRemote = process.env.E2E_START_LOCAL === '0' +const testImage = Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=', 'base64') test.beforeEach(async ({ page }) => { + if (!isRemote) { + await page.route('https://assets.meiermade.com/andymeier/articles/**', route => + route.fulfill({ contentType: 'image/png', body: testImage }), + ) + } + await page.addInitScript(() => localStorage.setItem('analytics-consent', 'declined')) }) @@ -18,43 +25,39 @@ test('homepage renders recent articles', async ({ page }) => { await expect(page.getByRole('heading', { name: 'Recent articles', exact: true })).toBeVisible() }) -test('articles index renders and opens a published article when available', async ({ page }) => { +test('articles index renders and opens a source-controlled article', async ({ page }) => { const response = await page.goto('/articles', { waitUntil: 'domcontentloaded' }) expect(response?.status()).toBe(200) await expect(page.getByRole('heading', { name: 'Articles', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'F# Semantic Kernel', exact: true })).toBeVisible() - const articleLinks = page.locator('#page a[href^="/articles/"]') - if (await articleLinks.count()) { - const href = await articleLinks.first().getAttribute('href') - expect(href).toBeTruthy() - const articleResponse = await page.goto(href!, { waitUntil: 'domcontentloaded' }) - expect(articleResponse?.status()).toBe(200) - await expect(page.locator('article')).toBeVisible() - } else { - await expect(page.getByRole('heading', { name: 'No articles found', exact: true })).toBeVisible() - } + const articleResponse = await page.goto('/articles/fsharp-semantic-kernel', { waitUntil: 'domcontentloaded' }) + expect(articleResponse?.status()).toBe(200) + await expect(page.locator('article')).toBeVisible() + await expect(page.getByRole('heading', { name: 'F# Semantic Kernel', exact: true })).toBeVisible() + await expect(page.getByText('Microsoft’s Semantic Kernel SDK', { exact: false }).first()).toBeVisible() }) -test('local article search and detail routes use MockNotion fixtures', async ({ page }) => { - test.skip(isRemote, 'Published production content is not a deterministic fixture.') - - await page.goto('/articles?search=engineering', { waitUntil: 'domcontentloaded' }) - await expect(page.getByRole('heading', { name: 'Mock engineering notes', exact: true })).toBeVisible() +test('article search, detail content, and GCS images are deterministic', async ({ page }) => { + await page.goto('/articles?search=semantic', { waitUntil: 'domcontentloaded' }) + await expect(page.getByRole('heading', { name: 'F# Semantic Kernel', exact: true })).toBeVisible() await expect(page.getByRole('link', { name: 'Clear search' })).toBeVisible() - const response = await page.goto('/articles/mock-finance-systems', { waitUntil: 'domcontentloaded' }) + const response = await page.goto('/articles/personal-infrastructure', { waitUntil: 'domcontentloaded' }) expect(response?.status()).toBe(200) - await expect(page.getByRole('heading', { name: 'Mock finance systems', exact: true }).first()).toBeVisible() - await expect(page.getByText('Finance', { exact: true }).first()).toBeVisible() + await expect(page.getByRole('heading', { name: 'Personal Infrastructure', exact: true }).first()).toBeVisible() + await expect(page.getByText('DevOps', { exact: true }).first()).toBeVisible() + + const clusterImage = page.getByRole('img', { name: 'Three Raspberry Pi computers mounted in a home server rack' }) + await expect(clusterImage).toHaveAttribute('src', /^https:\/\/assets\.meiermade\.com\/andymeier\/articles\//) + await expect.poll(() => clusterImage.evaluate(image => (image as HTMLImageElement).naturalWidth)).toBeGreaterThan(0) }) test('article filter disclosures support native keyboard selection', async ({ page }) => { - test.skip(isRemote, 'Published production filters are not deterministic fixtures.') - for (const filter of [ - { name: 'tag', ariaLabel: 'Tag filter', value: 'Engineering' }, - { name: 'year', ariaLabel: 'Published year filter', value: '2026' }, + { name: 'tag', ariaLabel: 'Tag filter', value: '.NET' }, + { name: 'year', ariaLabel: 'Published year filter', value: '2024' }, ]) { await page.goto('/articles', { waitUntil: 'domcontentloaded' }) await page.getByText('+ Add filter', { exact: true }).click() @@ -69,6 +72,9 @@ test('article filter disclosures support native keyboard selection', async ({ pa await expect(panel).toBeVisible() await expect(button).toHaveAttribute('aria-expanded', 'true') await page.keyboard.press('Tab') + if (await panel.evaluate(element => element === document.activeElement)) { + await page.keyboard.press('Tab') + } await expect(option).toBeFocused() await page.keyboard.press('Escape') @@ -78,6 +84,9 @@ test('article filter disclosures support native keyboard selection', async ({ pa await button.press('Space') await expect(panel).toBeVisible() await page.keyboard.press('Tab') + if (await panel.evaluate(element => element === document.activeElement)) { + await page.keyboard.press('Tab') + } await expect(option).toBeFocused() await page.keyboard.press('Enter') @@ -132,4 +141,8 @@ test('articles remain usable at a mobile viewport', async ({ page }) => { await expect(page.getByRole('heading', { name: 'Articles', exact: true })).toBeVisible() expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) + + await page.goto('/articles/personal-infrastructure', { waitUntil: 'domcontentloaded' }) + await expect(page.getByRole('heading', { name: 'Personal Infrastructure', exact: true })).toBeVisible() + expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) }) diff --git a/pulumi/src/config.ts b/pulumi/src/config.ts index 176af7a..5927b28 100644 --- a/pulumi/src/config.ts +++ b/pulumi/src/config.ts @@ -32,13 +32,6 @@ export const seqConfig = { endpoint: rawSeqConfig.require('endpoint') } -const rawNotionConfig = new pulumi.Config('notion') - -export const notionConfig = { - articlesDatabaseId: rawNotionConfig.require('articlesDatabaseId'), - apiKey: rawNotionConfig.requireSecret('apiKey') -} - const rawGoogleAnalyticsConfig = new pulumi.Config('googleAnalytics') export const googleAnalyticsConfig = { diff --git a/pulumi/src/k8s/deployment.ts b/pulumi/src/k8s/deployment.ts index e7b7dfa..a9c478d 100644 --- a/pulumi/src/k8s/deployment.ts +++ b/pulumi/src/k8s/deployment.ts @@ -4,23 +4,6 @@ import * as image from '../docker/image' import * as config from '../config' import * as tunnel from '../cloudflare/tunnel' -let appSecret = new k8s.core.v1.Secret('app', { - metadata: { - name: 'app', - namespace: config.k8sConfig.namespace - }, - immutable: true, - stringData: { - ASPNETCORE_ENVIRONMENT: 'Production', - SERVER_URL: 'http://0.0.0.0:5000', - SEQ_ENDPOINT: config.seqConfig.endpoint, - SQLITE_PATH: '/data/app.db', - NOTION_ARTICLES_DATABASE_ID: config.notionConfig.articlesDatabaseId, - NOTION_API_KEY: config.notionConfig.apiKey, - GOOGLE_ANALYTICS_MEASUREMENT_ID: config.googleAnalyticsConfig.measurementId - } -}, { provider }) - const cloudflaredSecret = new k8s.core.v1.Secret('cloudflared', { metadata: { name: 'cloudflared', @@ -66,12 +49,16 @@ const deployment = new k8s.apps.v1.Deployment('app', { image: image.imageRef, securityContext: containerSecurityContext, imagePullPolicy: 'IfNotPresent', - envFrom: [{ secretRef: { name: appSecret.metadata.name } }], + env: [ + { name: 'ASPNETCORE_ENVIRONMENT', value: 'Production' }, + { name: 'SERVER_URL', value: 'http://0.0.0.0:5000' }, + { name: 'SEQ_ENDPOINT', value: config.seqConfig.endpoint }, + { name: 'GOOGLE_ANALYTICS_MEASUREMENT_ID', value: config.googleAnalyticsConfig.measurementId }, + ], resources: { requests: { cpu: '25m', memory: '64Mi' }, limits: { cpu: '250m', memory: '256Mi' }, }, - volumeMounts: [{ name: 'app-data', mountPath: '/data' }], livenessProbe: { httpGet: { path: '/health', @@ -108,17 +95,11 @@ const deployment = new k8s.apps.v1.Deployment('app', { periodSeconds: 10 } } - ], - volumes: [ - { - name: 'app-data', - emptyDir: {} - } ] } } } -}, { provider, dependsOn: [appSecret, cloudflaredSecret] }) +}, { provider, dependsOn: cloudflaredSecret }) new k8s.core.v1.Service('app', { metadata: { From 15465dd05bc7484f82d3f5a643050efe0fad5fef Mon Sep 17 00:00:00 2001 From: Andy Meier Date: Tue, 11 Aug 2026 08:26:04 -0400 Subject: [PATCH 2/8] Match code font size to article text --- app/src/App/input.css | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/App/input.css b/app/src/App/input.css index 4230ab0..8797e57 100644 --- a/app/src/App/input.css +++ b/app/src/App/input.css @@ -4,9 +4,12 @@ @plugin "@tailwindcss/typography"; @custom-variant dark (&:where(.dark, .dark *)); -/* Inline code: monospace fonts render larger at the same font-size, - so scale down to visually match surrounding body text. */ -.prose :not(pre) > code[class*="language-"] { +/* Monospace fonts render larger at the same font-size, + so scale code down to visually match surrounding body text. */ +.prose code[class*="language-"] { font-size: 0.875em; +} + +.prose :not(pre) > code[class*="language-"] { overflow-wrap: anywhere; } From 47f1f59454d7142509240d76d3a1d62434fc5c0d Mon Sep 17 00:00:00 2001 From: Andy Meier Date: Tue, 11 Aug 2026 09:16:10 -0400 Subject: [PATCH 3/8] Rewrite development environment article --- .../Articles/Posts/DevelopmentEnvironment.fs | 1954 +++-------------- app/src/Tests/ArticleCatalogTests.fs | 40 +- e2e/tests/routes.spec.ts | 23 +- 3 files changed, 395 insertions(+), 1622 deletions(-) diff --git a/app/src/App/src/Articles/Posts/DevelopmentEnvironment.fs b/app/src/App/src/Articles/Posts/DevelopmentEnvironment.fs index 80c7605..9555845 100644 --- a/app/src/App/src/Articles/Posts/DevelopmentEnvironment.fs +++ b/app/src/App/src/Articles/Posts/DevelopmentEnvironment.fs @@ -9,1666 +9,394 @@ open type Html let private metadata = { permalink = "dev-env" title = "Development Environment" - summary = "How I set up my computer for development" + summary = "How I set up a Mac for agent-driven software development and infrastructure work" cover = "https://assets.meiermade.com/andymeier/articles/shared/gradient-purple-4776537cdf89.webp" - tags = [| "Programming"; "Python"; "F#"; ".NET"; "AI" |] - createdAt = DateTimeOffset(2020, 4, 4, 0, 0, 0, TimeSpan.Zero) } + tags = [| "Programming"; "AI"; "macOS"; "Python"; ".NET"; "Infrastructure" |] + createdAt = DateTimeOffset(2026, 8, 11, 0, 0, 0, TimeSpan.Zero) } + +let private heading id' label = h2 { + _class "mt-10 scroll-mt-24" + _id id' + text label +} + +let private subheading id' label = h3 { + _class "mt-6 scroll-mt-24" + _id id' + text label +} + +let private paragraph value = p { text value } + +let private inlineCode value = code { + _class "language-none" + text value +} + +let private codeBlock language value = pre { + _class $"language-{language}" + + code { + _class $"language-{language}" + span { text value } + } +} + +let private link href label = a { + _href href + text label +} let private content = - [ h3 { - _class "mt-6" - _id "a49afb67c49944c49874c3e568079409" - span { text "Table of Contents" } + [ p { + text + "This is the development environment I set up on a new Mac. The machine provides a dependable command-line foundation, each repository declares its own build and test dependencies, and the Pi coding agent is where I do almost all development. I use JetBrains IDEs to review and debug code and to work with databases." + } + p { + text + "I keep the global installation intentionally small. Tools that define the workstation belong in Homebrew; tools that define a project belong in that project's lock files and tool manifests. This makes the computer easy to recreate without letting global package versions silently change a build." + } + nav { + _ariaLabel "Table of contents" + + h2 { + _class "mt-8" + text "Contents" + } + + ul { + _class "list-disc" + + for id', label in + [ "computer", "Computer" + "macos", "macOS and Homebrew" + "terminal", "Terminal environment" + "source-control", "Source control and credentials" + "runtimes", "Language runtimes" + "pi", "Pi coding agent" + "ides", "JetBrains IDEs" + "infrastructure", "Containers and infrastructure" + "utilities", "Supporting command-line tools" + "projects", "Repository-owned tools" + "verify", "Verify the setup" ] do + li { + a { + _href $"#{id'}" + text label + } + } + } + } + heading "computer" "Computer" + paragraph + "I use a 14-inch MacBook Pro with an Apple M5 Max chip and 128 GB of memory. The memory is more important to me than maximizing any single benchmark: I regularly have several Pi sessions, JetBrains IDEs, Docker workloads, browser tests, and local application processes open at the same time." + paragraph + "I keep macOS current and enable FileVault during initial setup. I also sign in to the services I use for work before installing developer tools, particularly 1Password, GitHub, Google Cloud, and JetBrains Toolbox." + heading "macos" "macOS and Homebrew" + p { + text "I start by installing Apple's " + link "https://developer.apple.com/xcode/resources/" "Xcode Command Line Tools" + text ". They provide Git and the native build tools expected by many packages." + } + codeBlock "bash" "xcode-select --install" + p { + text "I use " + link "https://brew.sh/" "Homebrew" + text " for workstation-level packages. On Apple silicon, I add Homebrew to zsh after installation." + } + codeBlock + "bash" + "echo 'eval \"$(/opt/homebrew/bin/brew shellenv)\"' >> ~/.zprofile\neval \"$(/opt/homebrew/bin/brew shellenv)\"" + paragraph "These formulae make up the core command-line environment:" + codeBlock + "bash" + "brew install cloudflared fnm gh googleworkspace-cli kubectx kubernetes-cli pulumi ripgrep starship tmux uv" + paragraph "I install the desktop applications and larger SDKs as casks:" + codeBlock + "bash" + "brew install --cask 1password-cli docker-desktop dotnet-sdk gcloud-cli ghostty jetbrains-toolbox" + paragraph + "I do not pin versions in this bootstrap list. Homebrew provides the workstation tools, while repositories pin the versions that can affect a build." + heading "terminal" "Terminal environment" + p { + text "I use " + link "https://ghostty.org/" "Ghostty" + + text + " as my terminal. It is a native macOS application with tabs, splits, GPU-accelerated rendering, and support for the keyboard protocol Pi uses for modified key combinations." + } + p { + text "Pi recommends one Ghostty binding so " + inlineCode "Option+Backspace" + text " behaves consistently. I add it to " + inlineCode "~/Library/Application Support/com.mitchellh.ghostty/config" + text "." + } + codeBlock "ini" "keybind = alt+backspace=text:\\x1b\\x7f" + p { + text "macOS already uses zsh. I add " + link "https://starship.rs/" "Starship" + text " for a compact prompt and initialize both Starship and fnm from " + inlineCode "~/.zshrc" + text "." + } + codeBlock "bash" "eval \"$(fnm env --use-on-cd --shell zsh)\"\neval \"$(starship init zsh)\"" + p { + text "I use " + link "https://github.com/tmux/tmux" "tmux" + + text + " for application watchers, local servers, tunnels, and any other process that should keep running while Pi continues working. A named session is easy to inspect, reattach, or stop." + } + codeBlock "bash" "tmux new-session -s app\ntmux attach-session -t app" + heading "source-control" "Source control and credentials" + p { + text "The Xcode Command Line Tools install Git. I configure my identity and use " + link "https://cli.github.com/" "GitHub CLI" + text " for authentication, repositories, issues, pull requests, checks, and releases." + } + codeBlock + "bash" + "git config --global user.name \"Your Name\"\ngit config --global user.email \"you@example.com\"\ngit config --global init.defaultBranch main\ngh auth login\ngh auth setup-git" + p { + text "The " + link "https://developer.1password.com/docs/cli/" "1Password CLI" + + text + " is a core part of the environment rather than an occasional utility. Pi skills use it to inject credentials into short-lived processes, which keeps secrets out of shell history, repositories, and ad hoc environment files." + } + codeBlock "bash" "op signin\nop vault list" + paragraph + "I authenticate service CLIs interactively on the workstation. Workloads and CI use workload identity, service accounts, or repository secrets rather than copying my personal credentials." + heading "runtimes" "Language runtimes" + paragraph + "I install runtime managers globally, but let each repository declare the runtime and dependency versions it needs. My primary stacks are TypeScript and JavaScript, Python, and F#/.NET." + subheading "node" "Node.js" + p { + text "I use " + link "https://github.com/Schniz/fnm" "fnm" + text " to install and switch Node.js versions. npm ships with Node.js and is also how I install Pi." + } + codeBlock "bash" "fnm install --lts\nnode --version\nnpm --version" + paragraph + "Projects commit their package manifest and lock file. I normally use npm ci for an existing repository so the installed dependency graph matches the lock file exactly." + subheading "python" "Python and uv" + p { + text "I use " + link "https://docs.astral.sh/uv/" "uv" + + text + " for Python versions, virtual environments, project dependencies, lock files, scripts, and Python command-line tools. I do not manage a separate pyenv, pip, virtualenv, Poetry, or pipx setup." + } + codeBlock "bash" "uv python install\nuv init\nuv add requests\nuv add --dev pytest\nuv sync\nuv run pytest" + p { + text "For an existing project, " + inlineCode "uv sync" + text " restores the environment and " + inlineCode "uv run" + + text + " runs Python or a project command inside it. Keeping every Python invocation behind uv makes the selected interpreter and dependency environment explicit." + } + subheading "dotnet" ".NET and F#" + p { + text "The " + link "https://dotnet.microsoft.com/download" ".NET SDK" + + text + " provides the compiler, runtime, templates, test runner, and F# Interactive. Most of my application work in .NET is written in F#." + } + codeBlock "bash" "dotnet --info\ndotnet tool restore\ndotnet test" + paragraph + "Repositories restore Paket, FAKE, Fantomas, and other .NET tools through checked-in manifests or build scripts. I avoid installing project build tools globally." + heading "pi" "Pi coding agent" + p { + text "The " + link "https://pi.dev/" "Pi coding agent" + + text + " is my primary development environment. Pi is a terminal coding harness that gives the model repository context and tools for reading, editing, running commands, and verifying the result. Its small core can be extended with AGENTS.md files, skills, prompt templates, extensions, and packages." + } + paragraph "After Node.js is available, I install Pi globally and start it from the repository I want to work in." + codeBlock "bash" "npm install -g --ignore-scripts @earendil-works/pi-coding-agent\ncd ~/repos/example\npi" + p { + text "Inside Pi I run " + inlineCode "/login" + + text + " and select the OpenAI Codex subscription provider for my ChatGPT Pro account. I use the model selector when I want to change models and keep high reasoning as my normal default." + } + codeBlock + "json" + "{\n \"defaultProvider\": \"openai-codex\",\n \"defaultModel\": \"gpt-5.6-sol\",\n \"defaultThinkingLevel\": \"high\",\n \"theme\": \"dark\",\n \"enableInstallTelemetry\": false\n}" + p { + text "The global settings file lives at " + inlineCode "~/.pi/agent/settings.json" + + text + ". Pi stores sessions by working directory, so I can resume a repository's previous work instead of rebuilding all context from scratch. Long sessions compact automatically while preserving the full JSONL history." + } + subheading "pi-context" "Instructions, skills, and packages" + p { + text "I keep global operating rules in " + inlineCode "~/.pi/agent/AGENTS.md" + text " and repository-specific rules in each repository's " + inlineCode "AGENTS.md" + + text + ". These files tell Pi how the project is structured, which package manager to use, how to run tests, and which deployment operations are safe." + } + paragraph + "I also load a private skills package plus small packages for image generation and client context. Skills add repeatable workflows for GitHub, Google Cloud, Google Workspace, 1Password, Notion, browser testing, documents, infrastructure, and other services without placing every instruction in every prompt. Pi only loads a skill's full instructions when the task needs it." + p { + text + "I review package source before installing it because Pi packages and skills can direct tools with full user permissions. " + + link + "https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/docs/packages.md" + "Pi's package documentation" + + text " describes the trust and installation model." + } + subheading "pi-workflow" "Daily workflow" + paragraph + "I do essentially all development through Pi. I start it in a repository, describe the outcome I want, and discuss the approach first when the work has meaningful design or operational tradeoffs. Pi inspects the repository, makes the changes, runs the relevant tests, and verifies the resulting application or artifact." + paragraph + "I steer the session as new information appears rather than waiting for a large batch of work to finish. For user-facing changes, Pi runs Playwright and captures rendered evidence. For infrastructure work, it previews changes and leaves deployment to the repository's established CI workflow. Git and GitHub CLI keep the branch, commit, pull request, and checks visible throughout the process." + heading "ides" "JetBrains IDEs" + p { + text "I install " + link "https://www.jetbrains.com/toolbox-app/" "JetBrains Toolbox" + text " and use it to manage three IDEs:" } ul { _class "list-disc" li { - a { - _href "#c51d078bdf6a4feeb1194e5f8aa0d710" - span { text "Computer" } - } - - span { text ": Recommended specs for computer." } - } - - li { - a { - _href "#17286da7f6d34a11a97c81678ecee5f6" - span { text "Dropbox" } - } - - span { text ": File storage." } - } - - li { - a { - _href "#e5da454cee68425fbd9bf06fd8abe011" - span { text "Windows Terminal" } - } - - span { text ": Terminal for Windows." } - } - - li { - a { - _href "#0f093452c51644acb4b1509e9ac1da0f" - span { text "Windows Subsystem for Linux" } - } - - span { text ": Run Linux on Windows." } - } - - li { - a { - _href "#b39403d15e5243889ccc920b6ce4211a" - span { text "Scoop" } - } - - span { text ": Package manager for Windows." } - } - - li { - a { - _href "#1bb350e0e0234eecb508cce2b94780c2" - span { text "oh-my-posh" } - } - - span { text ": Better terminal prompt." } - } - - li { - a { - _href "#f29adc05e09941fbb42cfd37caa8eb1d" - span { text "Vim" } - } - - span { text ": Text editor to speed up your typing." } - } - - li { - a { - _href "#0de016a3d94a491c944d9e014acf4f02" - span { text "Vimium" } - } - - span { text ": Google Chrome extension to speed up your Googling." } - } - - li { - a { - _href "#0fc2f8a2f2504da8b0185b0a80562d4e" - span { text "Visual Studio Code" } - } - - span { text ": IDE to speed up your development." } - } - - li { - a { - _href "#d53358bfb6774cf1b1a73d743c81162e" - span { text "Git" } - } - - span { text ": Version control for champs." } - } - - li { - a { - _href "#8788b21dfe394fb782765cf1e571d931" - span { text "Docker" } - } - - span { text ": Container management." } - } - - li { - a { - _href "#987a17e9957446638ea3d4b5cc8aadae" - span { text "dotnet" } - } - - span { text ": .NET Core CLI for building .NET applications." } - } - - li { - a { - _href "#a07c6ae342f94aca8894c237ecdc1388" - span { text "Node" } - } - - span { text ": A JavaScript runtime." } - } - - li { - a { - _href "#9440715cc7e740cea2f4bdab7d77b9af" - span { text "Python" } - } - - span { text ": Easy to read, learn, and use programming language." } - } - - li { - a { - _href "#dc8d7f26672e457b9f1d93c796f3c22c" - span { text "kubectl" } - } - - span { text ": Kubernetes CLI." } - } - - li { - a { - _href "#09e3cf5418074ca6aa8cee17a05913e2" - span { text "kubectxwin" } - } - - span { text ": CLI for configuring Kubernetes contexts." } - } - - li { - a { - _href "#8d6aae336cb64346a8596d6d328f63ff" - span { text "kubenswin" } - } - - span { text ": CLI for configuring Kubernetes namespaces." } - } - - li { - a { - _href "#574b57c6b7eb40e6876b7e784fbd12a5" - span { text "Helm" } - } - - span { text ": Package manager for Kubernetes." } - } - - li { - a { - _href "#25f686d21b1b4c198bd8815c22259c1f" - span { text "Pulumi" } - } - - span { text ": Infrastructure as code." } - } - - li { - a { - _href "#ef28796ed44c4f50a81aa6a9f053b00c" - span { text "Lightshot" } - } - - span { text ": Screen capture tool." } - } - - li { - a { - _href "#480356f622e441b1a1d8386ca7fffa97" - span { text "ScreenToGif" } - } - - span { text ": Screen capture tool, but GIFs." } - } - - li { - a { - _href "#eab0baa1fec84f048158239eac825d77" - span { text "OBS Studio" } - } - - span { text ": Screen recording tool." } - } - } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "6f29ab163e11464d9bf97f46915f281f" - span { text "Computer" } - } - div { span { text "I use a MacBook Pro (M4 Max) with 64 GB of memory." } } - ul { - _class "list-disc" - - li { - span { - _class "font-bold" - text "Memory" - } - - span { text ": 64 GB" } - } - - li { - span { - _class "font-bold" - text "Chip" - } - - span { text ": Apple M4 Max" } - } - - li { - span { - _class "font-bold" - text "Disk" - } - - span { text ": 1 TB" } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "9e7a142ea9c24440bfce3ff77fffb24b" - span { text "Google Drive" } - } - div { - span { - text - "Google Drive is great for scanning documents. I keep a single ‘Documents’ folder with all my files and then just use search when I need to find something. I use the file name convention " - } - - code { - _class "language-none" - text "YYYY-MM-DD Description" - } - - span { text " so I can also look back historically. The mobile app scanner works really well." } - } - h4 { - _class "mt-4" - _id "6bfdde616b0f478eb33017bd267f17ce" - span { text "Installation" } - } - div { - span { text "Navigate to " } - - a { - _href "https://www.google.com/drive/download/" - span { text "https://www.google.com/drive/download/" } + strong { text "PyCharm" } + text " for Python and data projects." } - span { text " and install for your system." } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "e5da454cee68425fbd9bf06fd8abe011" - span { text "Windows Terminal" } - } - div { span { text "New terminal for Windows. Makes for a much better terminal experience." } } - h4 { - _class "mt-4" - _id "8a2814bb222d4ad38e0d4a076d84336e" - span { text "Installation" } - } - div { span { text "Open the Windows Store and search for ‘terminal’. Then click ‘Install’." } } - img { - _class "drop-shadow-xl rounded" - _src "https://assets.meiermade.com/andymeier/articles/dev-env/windows-terminal-e5d8e6f409da.webp" - _alt "Windows Terminal in Microsoft Store search results" - _attr ("loading", "lazy") - _attr ("width", "995") - _attr ("height", "692") - } - h4 { - _class "mt-4" - _id "2c580980a8364e4182ebc62ba35b29a0" - span { text "Resources" } - } - ul { - _class "list-disc" - li { - a { - _href "https://docs.microsoft.com/en-us/windows/terminal/" - span { text "Windows Terminal Overview" } - } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "0f093452c51644acb4b1509e9ac1da0f" - span { text "Windows Subsystem for Linux (WSL)" } - } - div { span { text "Run Linux on Windows." } } - h4 { - _class "mt-4" - _id "531e866e81ee4ce9a5ce775f6c47b765" - span { text "Installation" } - } - div { span { text "Open PowerShell and run" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "wsl --install" } - } - } - div { span { text "Install Ubuntu" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "wsl --install --distribution Ubuntu" } + strong { text "Rider" } + text " for F#, .NET, and mixed .NET/web solutions." } - } - h4 { - _class "mt-4" - _id "c1f4bdd16d214044b30527c9e84c727a" - span { text "Usage" } - } - div { - span { text "Open " } - - a { - _href "#e5da454cee68425fbd9bf06fd8abe011" - span { text "Windows Terminal" } - } - - span { text " and open Ubuntu." } - } - img { - _class "drop-shadow-xl rounded" - _src "https://assets.meiermade.com/andymeier/articles/dev-env/wsl-ubuntu-8852344c5af9.webp" - _alt "Ubuntu 20.04 selected in the Windows Terminal profile menu" - _attr ("loading", "lazy") - _attr ("width", "758") - _attr ("height", "401") - } - h4 { - _class "mt-4" - _id "cdc0611d9ffa4b0e95771f7ca5e39f28" - span { text "References" } - } - ul { - _class "list-disc" li { - a { - _href "https://docs.microsoft.com/en-us/windows/wsl/install-win10" - span { text "Windows 10 Installation Guide" } - } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "b39403d15e5243889ccc920b6ce4211a" - span { text "Scoop" } - } - div { span { text "Package manager for Windows." } } - h4 { - _class "mt-4" - _id "c70dea33136e423aa4c7c46bfca1bf5c" - span { text "Installation" } - } - div { span { text "Set the execution policy." } } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "Set-ExecutionPolicy RemoteSigned -s CurrentUser" } + strong { text "WebStorm" } + text " for TypeScript, JavaScript, and frontend projects." } } - div { span { text "Install scoop." } } - pre { - _class "language-powershell" + paragraph + "I use these IDEs primarily to review the code Pi changed: navigating types and usages, inspecting diffs, running a debugger, and understanding an unfamiliar area of a repository. They complement the agent workflow rather than serving as the main place where I type code." + paragraph + "JetBrains also has the best database connection support of any IDE family I have tried. Its database explorer, query console, schema navigation, result viewer, and generated diagrams are a major reason I stay with the JetBrains ecosystem." + heading "infrastructure" "Containers and infrastructure" + p { + text "I use " + link "https://docs.docker.com/desktop/setup/install/mac-install/" "Docker Desktop" - code { - _class "language-powershell" - span { text "iex (New-Object net.webclient).downloadstring('https://get.scoop.sh')" } - } + text + " for local containers and Compose environments. I install the application globally, while repositories own their Dockerfiles, Compose files, and image versions." } - div { span { text "Install sudo." } } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "scoop install sudo" } - } + codeBlock "bash" "docker version\ndocker compose version\ndocker ps" + p { + text "The " + link "https://cloud.google.com/sdk/docs/install-sdk" "gcloud CLI" + text " handles Google Cloud authentication, configuration, diagnostics, and direct resource inspection." } - blockquote { span { text "This allows you to run a command as an ‘Administrator’." } } - div { span { text "Add extras and versions buckets." } } - pre { - _class "language-powershell" + codeBlock "bash" "gcloud auth login\ngcloud auth application-default login\ngcloud config list" + p { + text "For Kubernetes I use " + link "https://kubernetes.io/docs/reference/kubectl/" "kubectl" + text " with " + link "https://github.com/ahmetb/kubectx" "kubectx and kubens" - code { - _class "language-powershell" - span { text "scoop bucket add extras\nscoop bucket add versions" } - } - } - h4 { - _class "mt-4" - _id "7d874f6738f74e2b811c630d71e919ba" - span { text "Usage" } + text + ". kubectx makes the active cluster explicit, while kubens switches the default namespace without repeatedly editing commands." } - div { span { text "Search for packages" } } - pre { - _class "language-powershell" + codeBlock "bash" "kubectl config get-contexts\nkubectx\nkubectx \nkubens \nkubectl get pods" + p { + text "I use " + link "https://www.pulumi.com/docs/iac/" "Pulumi" - code { - _class "language-powershell" - span { text "scoop search vim" } - } + text + " for infrastructure as code. Projects select fully qualified stacks and use previews to review the proposed resource changes. Deployment is normally performed by CI after merge rather than by running an update manually from the laptop." } - div { span { text "Install a package" } } - pre { - _class "language-powershell" + codeBlock "bash" "pulumi login\npulumi stack select //\npulumi preview" + p { + text "I install " - code { - _class "language-powershell" - span { text "scoop install vim" } - } - } - h4 { - _class "mt-4" - _id "2bf9d412a11948a38c2805d855b82751" - span { text "References" } - } - ul { - _class "list-disc" + link + "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/downloads/" + "cloudflared" - li { - a { - _href "https://github.com/lukesampson/scoop" - span { text "Scoop GitHub" } - } - } + text + " for local and administrative Cloudflare Tunnel work. Tunnel configuration itself belongs with the infrastructure that owns it rather than in global shell configuration." } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "1bb350e0e0234eecb508cce2b94780c2" - span { text "oh-my-posh" } - } - div { span { text "Better prompt." } } - h4 { - _class "mt-4" - _id "51a14fb8b3b64a5e87cde0c750c070c0" - span { text "Installation" } - } - div { span { text "Install with Scoop." } } - pre { - _class "language-plain text" + heading "utilities" "Supporting command-line tools" + p { + text "Pi works best when the shell has small, composable tools. " + link "https://github.com/BurntSushi/ripgrep" "ripgrep" + text " searches repositories, " + inlineCode "jq" + text " filters JSON returned by CLIs, and " + inlineCode "curl" - code { - _class "language-plain text" - - span { - text - "scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json" - } - } + text + " is useful for health checks and direct HTTP diagnostics. macOS supplies jq and curl; I add ripgrep through Homebrew." } - div { span { text "Open your profile." } } - pre { - _class "language-plain text" + p { + text "I also install the " + link "https://github.com/googleworkspace/cli" "Google Workspace CLI" - code { - _class "language-plain text" - span { text "vim $env:PROFILE" } - } + text + " (gws). Pi uses it through dedicated skills to work with Gmail, Calendar, Drive, Docs, Sheets, and Slides. Interactive OAuth is enough for a personal workstation." } - div { span { text "Add the following line to the top of your profile to use the ‘paradox’ theme." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" + codeBlock "bash" "gws auth login\ngws drive files list --params '{\"pageSize\": 5}'" + p { + text "Browser testing is installed per repository with " + link "https://playwright.dev/" "Playwright" - span { - text - "Invoke-Expression (oh-my-posh --init --shell pwsh --config \"$(scoop prefix oh-my-posh)/themes/paradox.omp.json\")" - } - } - } - h4 { - _class "mt-4" - _id "ba2c895b61374cb7b08713ef45dfbac7" - span { text "References" } + text + ". Pi uses it for end-to-end tests, screenshots, responsive checks, and visual inspection. Keeping it in the project's package manifest ensures the tests and browser tooling move together." } + codeBlock "bash" "npm ci\nnpx playwright install\nnpx playwright test" + heading "projects" "Repository-owned tools" + paragraph + "A new workstation should not require a hand-maintained global installation of every framework used by every repository. After cloning a project, I follow its AGENTS.md and README and let its package managers restore the rest." ul { _class "list-disc" li { - a { - _href "https://ohmyposh.dev/" - span { text "oh-my-posh" } - } - } - - li { - a { - _href - "https://www.hanselman.com/blog/HowToMakeAPrettyPromptInWindowsTerminalWithPowerlineNerdFontsCascadiaCodeWSLAndOhmyposh.aspx" - - span { text "How to Make A Pretty Prompt In Windows Terminal" } - } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "f29adc05e09941fbb42cfd37caa8eb1d" - span { text "Vim" } - } - div { - span { text - "Text editor to speed up your typing. It takes a little while to get used to but the persistence pays of in the long run." - } - } - h4 { - _class "mt-4" - _id "bbecbcc3379e47e69e4dfff724bab516" - span { text "Installation" } - } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "scoop install vim" } - } - } - h4 { - _class "mt-4" - _id "ba7e07790fbc40e9a83985bec35d39ba" - span { text "Usage" } - } - div { span { text "Open vim in current directory." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "vim ." } - } - } - div { span { text "Open a file in vim" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "vim ./my-file.txt" } - } - } - h4 { - _class "mt-4" - _id "91c8a98fd7d04c5192b499e56e7a0846" - span { text "Resources" } - } - ul { - _class "list-disc" - - li { - a { - _href "https://www.openvim.com/" - span { text "Online Vim tutorial" } - } + "npm restores TypeScript, Tailwind CSS, Playwright, and other Node.js dependencies from the lock file." } li { - a { - _href "https://danielmiessler.com/study/vim/" - span { text "More Advanced Vim" } - } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "0de016a3d94a491c944d9e014acf4f02" - span { text "Vimium" } - } - div { - span { text - "Google Chrome extension to speed up your Googling. Use Vim keybindings to navigate around the browser." - } - } - h4 { - _class "mt-4" - _id "5e8f6d47794747a9913f0e455fd814c7" - span { text "Installation" } - } - div { - span { text "Head to " } - - a { - _href "https://vimium.github.io/" - span { text "Vimium homepage" } - } - - span { text " and click the ‘Install’ button. Or search for ‘Vimium’ in the " } - - a { - _href "https://chrome.google.com/webstore/category/extensions" - span { text "Chrome Web Store" } - } - - span { text " and install from there." } - } - h4 { - _class "mt-4" - _id "9554b968670548a987cde6b6332a6a7c" - span { text "Usage" } - } - ul { - _class "list-disc" - - li { - code { - _class "language-none" - text "j,k" - } - - span { text ": used to scroll up and down respectively." } + "uv restores Python, dbt, Dagster, notebook, test, lint, and formatting dependencies from pyproject.toml and uv.lock." } li { - code { - _class "language-none" - text "d,u" - } - - span { text ": used to page up and down respectively." } - } - - li { - code { - _class "language-none" - text "f-{other}" - } - - span { text ": used to show links on page and then navigate to " } - - code { - _class "language-none" - text "{other}" - } - - span { text " which was the shown link." } - } - - li { - code { - _class "language-none" - text "?" - } - - span { text ": show the rest of the keybindings and other help." } - } - } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "0fc2f8a2f2504da8b0185b0a80562d4e" - span { text "Visual Studio Code" } - } - div { span { text "IDE to speed up your development." } } - h4 { - _class "mt-4" - _id "d4db4295bc23462eb4125f4214b91ce9" - span { text "Installation" } - } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "scoop install vscode" } - } - } - h4 { - _class "mt-4" - _id "02254c35b9844c38bc9715d55adb7c88" - span { text "Usage" } - } - div { span { text "Open current directory in VS Code." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "code ." } - } - } - div { span { text "Open file in VS Code." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "code ./my-file.txt" } + text + "dotnet restores NuGet and Paket dependencies, while the local tool manifest restores FAKE, Fantomas, and related tools." } - } - h4 { - _class "mt-4" - _id "6f403dc7ff0c4907a8ac41c3b166526f" - span { text "References" } - } - ul { - _class "list-disc" li { - a { - _href "https://code.visualstudio.com/" - span { text "VS Code Homepage" } - } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "d53358bfb6774cf1b1a73d743c81162e" - span { text "Git" } - } - div { span { text "Version control for champs." } } - h4 { - _class "mt-4" - _id "f2a83a7d09c74720ab03fc9ad1c05594" - span { text "Installation" } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "scoop install git" } - } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "git config --global credential.helper manager-core" } - } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "git config --global core.autocrlf true" } - } - } - h4 { - _class "mt-4" - _id "c8419963dc974f17bda7ad813c5f29c7" - span { text "Usage" } - } - div { span { text "Initialize a new repository." } } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "mkdir my-repo\ncd my-repo\ngit init" } - } - } - div { span { text "Add a file to track." } } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "echo \"hello\" > hello.txt\ngit add hello.txt" } - } - } - div { span { text "Commit changes." } } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "git commit -m 'added hello.txt'" } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "8788b21dfe394fb782765cf1e571d931" - span { text "Docker" } - } - div { span { text "Container management." } } - h4 { - _class "mt-4" - _id "d890c0d3b96a4e2ba392e895af391db7" - span { text "Installation" } - } - div { - span { text "Go to " } - - a { - _href "https://docs.docker.com/desktop/windows/install/" - span { text "Docker install page" } - } - - span { text " to install." } - } - h4 { - _class "mt-4" - _id "14ebf66e1b184c26adcff2c3dc3f96d9" - span { text "Usage" } - } - div { span { text "View running containers" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "docker ps -a" } - } - } - div { span { text "View local images" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "docker images" } - } - } - div { span { text "Pull image from DockerHub" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "docker pull bash" } - } - } - div { span { text "Run a container" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "docker run -it bash" } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "987a17e9957446638ea3d4b5cc8aadae" - span { text "dotnet" } - } - div { span { text "Cross platform toolchain for developing .NET applications." } } - h4 { - _class "mt-4" - _id "5e1348c00dc547cc98c6a6faa0c836df" - span { text "Installation" } - } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "scoop install dotnet-sdk" } - } - } - h4 { - _class "mt-4" - _id "d6ebf7cd79334fb89907022e29808aee" - span { text "Usage" } - } - div { span { text "Create a new F# console application" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "dotnet new console -lang F# -n my-fsharp-app" } - } - } - div { span { text "Run F# Interactive" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - - span { - text - "dotnet fsi\n\nMicrosoft (R) F# Interactive version 12.0.0.0 for F# 6.0\nCopyright (c) Microsoft Corporation. All Rights Reserved.\n\nFor help type #help;;\n\n> let x = 1;;\nval x: int = 1\n\n> let y = 2;;\nval y: int = 2\n\n> x + y;;\nval it: int = 3" - } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "a07c6ae342f94aca8894c237ecdc1388" - span { text "Node" } - } - div { span { text "A JavaScript runtime." } } - h4 { - _class "mt-4" - _id "fbddeed3fd6b4d2b92b0474925cc56e5" - span { text "Installation" } - } - div { - span { text "First install " } - - a { - _href "https://github.com/coreybutler/nvm-windows" - span { text "nvm-windows" } - } - - span { text "." } - } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "scoop install nvm" } - } - } - div { span { text "List available versions." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - - span { - text - "nvm list available\n\n| CURRENT | LTS | OLD STABLE | OLD UNSTABLE |\n|--------------|--------------|--------------|--------------|\n| 17.8.0 | 16.14.2 | 0.12.18 | 0.11.16 |\n| 17.7.2 | 16.14.1 | 0.12.17 | 0.11.15 |\n| 17.7.1 | 16.14.0 | 0.12.16 | 0.11.14 |\n| 17.7.0 | 16.13.2 | 0.12.15 | 0.11.13 |\n| 17.6.0 | 16.13.1 | 0.12.14 | 0.11.12 |\n| 17.5.0 | 16.13.0 | 0.12.13 | 0.11.11 |\n| 17.4.0 | 14.19.1 | 0.12.12 | 0.11.10 |\n| 17.3.1 | 14.19.0 | 0.12.11 | 0.11.9 |\n| 17.3.0 | 14.18.3 | 0.12.10 | 0.11.8 |\n| 17.2.0 | 14.18.2 | 0.12.9 | 0.11.7 |\n| 17.1.0 | 14.18.1 | 0.12.8 | 0.11.6 |\n| 17.0.1 | 14.18.0 | 0.12.7 | 0.11.5 |\n| 17.0.0 | 14.17.6 | 0.12.6 | 0.11.4 |\n| 16.12.0 | 14.17.5 | 0.12.5 | 0.11.3 |\n| 16.11.1 | 14.17.4 | 0.12.4 | 0.11.2 |\n| 16.11.0 | 14.17.3 | 0.12.3 | 0.11.1 |\n| 16.10.0 | 14.17.2 | 0.12.2 | 0.11.0 |\n| 16.9.1 | 14.17.1 | 0.12.1 | 0.9.12 |\n| 16.9.0 | 14.17.0 | 0.12.0 | 0.9.11 |\n| 16.8.0 | 14.16.1 | 0.10.48 | 0.9.10 |" - } - } - } - div { span { text "Install the latest LTS." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "nvm install 16.14.2" } - } - } - div { span { text "Use installed version." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "nvm use 16.14.2" } - } - } - h4 { - _class "mt-4" - _id "a26cf862186f4a53a85384051bc506b4" - span { text "Usage" } - } - div { span { text "Run JavaScript REPL." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - - span { - text - "node\nWelcome to Node.js v14.17.0.\nType \".help\" for more information.\n> var x = 1;\nundefined\n> var y = 2;\nundefined\n> x + y\n3" - } - } - } - h4 { - _class "mt-4" - _id "a4b8f32372fd4523bd69f77997d65523" - span { text "Resources" } - } - ul { - _class "list-disc" - - li { - a { - _href "https://github.com/coreybutler/nvm-windows" - span { text "nvm-windows" } - } - } - - li { - a { - _href "https://nodejs.org/en/docs/" - span { text "Node docs" } - } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "9440715cc7e740cea2f4bdab7d77b9af" - span { text "Python" } - } - div { span { text "Easy to read, learn, and use programming language." } } - h4 { - _class "mt-4" - _id "c1d21d8adaef4e17a5f2c2cbd76711ee" - span { text "Installation" } - } - div { - span { text "Install " } - - code { - _class "language-none" - text "pyenv" - } - } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "scoop install pyenv" } - } - } - div { span { text "List available versions" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - - span { - text - "pyenv install --list\n:: [Info] :: Mirror: https://www.python.org/ftp/python\n3.8.9\n3.8.10\n3.9.0\n3.9.2\n3.9.6" - } - } - } - div { span { text "Install latest version." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "pyenv install 3.9.6" } - } - } - div { span { text "Set latest as global version." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "pyenv global 3.9.6" } - } - } - h4 { - _class "mt-4" - _id "82151d8fe59f4c148b64e4125434ee3b" - span { text "Usage" } - } - div { span { text "Check version." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "python --version" } - } - } - div { span { text "Run Python REPL." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - - span { - text - "python\nPython 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n>>> x = 1\n>>> y = 2\n>>> x + y\n3" - } - } - } - h4 { - _class "mt-4" - _id "0dcaf2ab2d004f8887a3d902076b26da" - span { text "References" } - } - ul { - _class "list-disc" - - li { - a { - _href "https://www.python.org/" - span { text "Python homepage" } - } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "dc8d7f26672e457b9f1d93c796f3c22c" - span { text "kubectl" } - } - div { span { text "Kubernetes CLI." } } - h4 { - _class "mt-4" - _id "622bb5b9c2b94509bee7897d0f024308" - span { text "Installation" } - } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "scoop install kubectl" } - } - } - div { - span { text "Update your " } - - code { - _class "language-none" - text "KUBECONFIG" - } - - span { text " environment variable and (optionally) add an alias." } - } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "vim $PROFILE" } - } - } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "$env:KUBECONFIG = \"C:\\Users\\\\.kube\\config;\"\nSet-Alias k kubectl" } - } - } - div { span { text "Then reload your profile." } } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text ". $PROFILE" } - } - } - h4 { - _class "mt-4" - _id "32f1a4f3d38041e293220ee37a4d114b" - span { text "Usage" } - } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "k get pods --all-namespaces" } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "09e3cf5418074ca6aa8cee17a05913e2" - span { text "kubectxwin" } - } - div { span { text "CLI for configuring Kubernetes contexts" } } - h4 { - _class "mt-4" - _id "12d198f06176419182a932f3a336824b" - span { text "Installation" } - } - div { span { text "Clone the repository." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "git clone https://github.com/thomasliddledba/kubectxwin.git" } - } - } - div { span { text "Add the executable to the PATH and (optionally) add an alias." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "vim $PROFILE" } - } - } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "$env:Path += \";C:\\\\bin\"\nSet-Alias ktx kubectxwin" } - } - } - div { span { text "Reload your profile." } } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text ". $PROFILE" } - } - } - h4 { - _class "mt-4" - _id "246edef1fe5e45cc932271dbab566aad" - span { text "Usage" } - } - div { span { text "View contexts" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "ktx ls" } - } - } - div { span { text "Change context" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "ktx set docker-desktop\nSwitched to context \"docker-for-desktop\"." } - } - } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "8d6aae336cb64346a8596d6d328f63ff" - span { text "kubenswin" } - } - div { span { text "CLI for configuring Kubernetes namespaces" } } - h4 { - _class "mt-4" - _id "2cccdfa0b9a945539c46515d7f437a5d" - span { text "Installation" } - } - div { span { text "Clone the repository." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "git clone https://github.com/thomasliddledba/kubenswin.git" } - } - } - div { span { text "Add the executable to the PATH and (optionally) add an alias." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "vim $PROFILE" } - } - } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "$env:Path += \";C:\\{path to kubenswin repo}\\bin\"\nSet-Alias kns kubenswin" } - } - } - div { span { text "Reload your profile." } } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text ". $PROFILE" } - } - } - h4 { - _class "mt-4" - _id "5b242f77f68a48a1b01d7a525f53170c" - span { text "Usage" } - } - div { span { text "View namespaces" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "kns ls" } - } - } - div { span { text "Change namespace" } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "kns set kube-system" } - } - } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "574b57c6b7eb40e6876b7e784fbd12a5" - span { text "Helm" } - } - div { span { text "Package manager for Kubernetes." } } - h4 { - _class "mt-4" - _id "c7dfe063ad1049a7852d327944082712" - span { text "Installation" } - } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "scoop install helm" } - } - } - h4 { - _class "mt-4" - _id "6c99bf09cf264266a0744b5e6475254e" - span { text "Usage" } - } - div { span { text "Install a chart (i.e., package)." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "helm install stable/postgresql --name my-postgres" } - } - } - div { span { text "List charts." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "helm list" } - } - } - div { span { text "Show status of chart." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "helm status my-postgres" } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "25f686d21b1b4c198bd8815c22259c1f" - span { text "Pulumi" } - } - div { span { text "Infrastructure as code." } } - h4 { - _class "mt-4" - _id "71b4c1ab23944ee5a4529ba4f3b0186c" - span { text "Installation" } - } - div { span { text "Install using Scoop." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "scoop install pulumi" } - } - } - h4 { - _class "mt-4" - _id "4e74b911a37545f094daf9001a729ac2" - span { text "Usage" } - } - div { span { text "Create a new project." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "mkdir pulumi\npulumi new kubernetes-typescript" } - } - } - div { span { text "Preview the changes." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "pulumi preview" } - } - } - div { span { text "Update the resources." } } - pre { - _class "language-plain text" - - code { - _class "language-plain text" - span { text "pulumi up" } - } - } - h4 { - _class "mt-4" - _id "cdf41758f1f245cb9107050198cc4c40" - span { text "Resources" } - } - ul { - _class "list-disc" - - li { - a { - _href "https://www.pulumi.com/" - span { text "Pulumi" } - } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "ef28796ed44c4f50a81aa6a9f053b00c" - span { text "Lightshot" } - } - div { span { text "Screen capture tool. (Used for most of the images in this post.)" } } - h4 { - _class "mt-4" - _id "20e7cdcb76034d26bf914fbaed5153da" - span { text "Installation" } - } - div { - span { text "Install Lightshot by downloading " } - - a { - _href "https://app.prntscr.com/en/index.html" - span { text "here" } - } - - span { text "." } - } - h4 { - _class "mt-4" - _id "8e38c631ef9f4618ad060626297884b7" - span { text "Usage" } - } - div { - span { text "Take a screen shot by pressing the " } - - code { - _class "language-none" - text "PrtScr" - } - - span { text - " button on your keyboard. You can then select an area on your screen, add lines or arrows, and save or copy the image to your clipboard." - } - } - h4 { - _class "mt-4" - _id "9df5b39db26c45cab55e51e9d46f7855" - span { text "Resources" } - } - ul { - _class "list-disc" - - li { - a { - _href "https://app.prntscr.com/en/index.html" - span { text "Lightshot homepage" } - } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "480356f622e441b1a1d8386ca7fffa97" - span { text "ScreenToGif" } - } - div { span { text "Screen capture tool, but GIFs." } } - h4 { - _class "mt-4" - _id "ea103d45657e49fbacf5baa74f88b2d1" - span { text "Installation" } - } - div { - span { text "Download and install from " } - - a { - _href "https://www.screentogif.com/" - span { text "screentogif.com" } - } - - span { text "." } - } - h4 { - _class "mt-4" - _id "cbf4b23e2545417db65f03591c08f94f" - span { text "Usage" } - } - div { span { text "Start ScreenToGif." } } - div { - span { text "Drag the window around the area you would like to record and press " } - - code { - _class "language-none" - text "F7" - } - - span { text " to start recording. Press " } - - code { - _class "language-none" - text "F8" - } - - span { text " to stop recording." } - } - img { - _class "drop-shadow-xl rounded" - _src "https://assets.meiermade.com/andymeier/articles/dev-env/screentogif-demo-57717811367a.gif" - _alt "ScreenToGif recording controls around a selected screen area" - _attr ("loading", "lazy") - _attr ("width", "945") - _attr ("height", "492") - } - h4 { - _class "mt-4" - _id "b6bce6d12c4d44d1b006354c7ee0f290" - span { text "Resources" } - } - ul { - _class "list-disc" - - li { - a { - _href "https://www.screentogif.com/" - span { text "ScreenToGif homepage" } - } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } - h3 { - _class "mt-6" - _id "eab0baa1fec84f048158239eac825d77" - span { text "OBS Studio" } - } - div { span { text "Screen recording tool." } } - h4 { - _class "mt-4" - _id "932bd7a700414c9c95946428f679c2bc" - span { text "Installation" } - } - div { - span { text "Download and install from " } - - a { - _href "https://obsproject.com/download" - span { text "OBS Studio website" } - } - - span { text "." } - } - h4 { - _class "mt-4" - _id "b05f575dc2d4480b8048552838561ce0" - span { text "Usage" } - } - div { - span { text "Check out " } - - a { - _href "https://becomeablogger.com/obs/" - span { text "becomeablogger.com" } - } - - span { text " for some great resources on how to use OBS Studio." } - } - h4 { - _class "mt-4" - _id "9b787b11af064cac9a39effca7b98693" - span { text "Resources" } - } - ul { - _class "list-disc" - - li { - a { - _href "https://obsproject.com/" - span { text "OBS Studio" } - } - } - } - div { br } - div { _class "border-b-2 border-gray-300/60 dark:border-gray-700/60" } ] + "Docker and Compose provide services such as Postgres, Airbyte, and other repository-specific infrastructure when a project needs them." + } + } + paragraph + "This division is important for Pi as well as for people. When every repository contains its own instructions and deterministic restore commands, the agent can reproduce the same environment locally and in CI instead of relying on undocumented global state." + heading "verify" "Verify the setup" + paragraph + "I finish by opening a new Ghostty window and verifying that the main commands resolve from a clean shell:" + codeBlock + "bash" + "git --version\ngh --version\nop --version\nfnm --version\nnode --version\nnpm --version\nuv --version\ndotnet --version\npi --version\ndocker version\ngcloud version\nkubectl version --client\nkubectx --version\nkubens --version\npulumi version\ncloudflared --version\ngws --version\nrg --version\njq --version\ntmux -V" + paragraph + "At that point the workstation is ready. Cloning a repository and following its checked-in setup instructions supplies the project-specific layer; Pi, the terminal tools, and the IDEs provide the consistent layer across all of them." ] let article = Article.create metadata (ArticlePage.primary metadata content) diff --git a/app/src/Tests/ArticleCatalogTests.fs b/app/src/Tests/ArticleCatalogTests.fs index bb12d92..62abbe0 100644 --- a/app/src/Tests/ArticleCatalogTests.fs +++ b/app/src/Tests/ArticleCatalogTests.fs @@ -13,7 +13,7 @@ let articleCatalogTests = Expect.equal permalinks - [ "fsharp-semantic-kernel"; "personal-infrastructure"; "dev-env" ] + [ "dev-env"; "fsharp-semantic-kernel"; "personal-infrastructure" ] "Expected the published article catalog" } @@ -58,10 +58,40 @@ let articleCatalogTests = "My current infrastructure runs on 3 Raspberry Pis" "Expected infrastructure content" - Expect.stringContains - developmentEnvironment - "Windows Subsystem for Linux" - "Expected development environment content" + for tool in + [ "Homebrew" + "Ghostty" + "Starship" + "tmux" + "GitHub CLI" + "1Password CLI" + "fnm" + "Node.js" + "uv" + ".NET SDK" + "Pi coding agent" + "PyCharm" + "Rider" + "WebStorm" + "Docker Desktop" + "gcloud" + "kubectl" + "kubectx" + "kubens" + "Pulumi" + "cloudflared" + "Google Workspace CLI" + "ripgrep" + "jq" + "Playwright" ] do + Expect.stringContains + developmentEnvironment + tool + $"Expected development environment content for {tool}" + + Expect.isFalse + (developmentEnvironment.Contains "Windows Subsystem for Linux") + "Expected obsolete Windows setup content to be removed" } test "finds articles by permalink" { diff --git a/e2e/tests/routes.spec.ts b/e2e/tests/routes.spec.ts index 5394fdf..1e1a3c3 100644 --- a/e2e/tests/routes.spec.ts +++ b/e2e/tests/routes.spec.ts @@ -39,6 +39,16 @@ test('articles index renders and opens a source-controlled article', async ({ pa await expect(page.getByText('Microsoft’s Semantic Kernel SDK', { exact: false }).first()).toBeVisible() }) +test('development environment article presents the current setup', async ({ page }) => { + const response = await page.goto('/articles/dev-env', { waitUntil: 'domcontentloaded' }) + + expect(response?.status()).toBe(200) + await expect(page.getByRole('heading', { name: 'Development Environment', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'Pi coding agent', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'JetBrains IDEs', exact: true })).toBeVisible() + await expect(page.getByText('Windows Subsystem for Linux', { exact: false })).toHaveCount(0) +}) + test('article search, detail content, and GCS images are deterministic', async ({ page }) => { await page.goto('/articles?search=semantic', { waitUntil: 'domcontentloaded' }) await expect(page.getByRole('heading', { name: 'F# Semantic Kernel', exact: true })).toBeVisible() @@ -57,7 +67,7 @@ test('article search, detail content, and GCS images are deterministic', async ( test('article filter disclosures support native keyboard selection', async ({ page }) => { for (const filter of [ { name: 'tag', ariaLabel: 'Tag filter', value: '.NET' }, - { name: 'year', ariaLabel: 'Published year filter', value: '2024' }, + { name: 'year', ariaLabel: 'Published year filter', value: '2026' }, ]) { await page.goto('/articles', { waitUntil: 'domcontentloaded' }) await page.getByText('+ Add filter', { exact: true }).click() @@ -142,7 +152,12 @@ test('articles remain usable at a mobile viewport', async ({ page }) => { await expect(page.getByRole('heading', { name: 'Articles', exact: true })).toBeVisible() expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) - await page.goto('/articles/personal-infrastructure', { waitUntil: 'domcontentloaded' }) - await expect(page.getByRole('heading', { name: 'Personal Infrastructure', exact: true })).toBeVisible() - expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) + for (const article of [ + { path: '/articles/personal-infrastructure', title: 'Personal Infrastructure' }, + { path: '/articles/dev-env', title: 'Development Environment' }, + ]) { + await page.goto(article.path, { waitUntil: 'domcontentloaded' }) + await expect(page.getByRole('heading', { name: article.title, exact: true })).toBeVisible() + expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) + } }) From d2fa1207f74c01f5a5e5975bf32f08c69b7e3eb9 Mon Sep 17 00:00:00 2001 From: Andy Meier Date: Tue, 11 Aug 2026 09:34:01 -0400 Subject: [PATCH 4/8] Add spacing above article footer --- app/src/App/src/Articles/Shared.fs | 2 +- e2e/tests/routes.spec.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/App/src/Articles/Shared.fs b/app/src/App/src/Articles/Shared.fs index bd2a549..030caa1 100644 --- a/app/src/App/src/Articles/Shared.fs +++ b/app/src/App/src/Articles/Shared.fs @@ -103,7 +103,7 @@ module ArticlePage = div { _class - "mt-8 prose prose-lg dark:prose-invert prose-code:before:hidden prose-code:after:hidden max-w-none" + "mt-8 pb-8 prose prose-lg dark:prose-invert prose-code:before:hidden prose-code:after:hidden max-w-none" _dataInit "highlightCode($el)" diff --git a/e2e/tests/routes.spec.ts b/e2e/tests/routes.spec.ts index 1e1a3c3..864ca13 100644 --- a/e2e/tests/routes.spec.ts +++ b/e2e/tests/routes.spec.ts @@ -47,6 +47,7 @@ test('development environment article presents the current setup', async ({ page await expect(page.getByRole('heading', { name: 'Pi coding agent', exact: true })).toBeVisible() await expect(page.getByRole('heading', { name: 'JetBrains IDEs', exact: true })).toBeVisible() await expect(page.getByText('Windows Subsystem for Linux', { exact: false })).toHaveCount(0) + await expect(page.locator('article > div')).toHaveCSS('padding-bottom', '32px') }) test('article search, detail content, and GCS images are deterministic', async ({ page }) => { From 24e76387bc2a01216b8146019be6845086ca7195 Mon Sep 17 00:00:00 2001 From: Andy Meier Date: Tue, 11 Aug 2026 10:46:07 -0400 Subject: [PATCH 5/8] Rewrite personal infrastructure article --- .../Articles/Posts/PersonalInfrastructure.fs | 1989 +++-------------- app/src/Tests/ArticleCatalogTests.fs | 19 +- e2e/tests/routes.spec.ts | 11 +- 3 files changed, 379 insertions(+), 1640 deletions(-) diff --git a/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs b/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs index 6803f10..692f1b1 100644 --- a/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs +++ b/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs @@ -9,1663 +9,390 @@ open type Html let private metadata = { permalink = "personal-infrastructure" title = "Personal Infrastructure" - summary = "How I set up the infrastructure for hosting my apps and services" - cover = "https://assets.meiermade.com/andymeier/articles/personal-infrastructure/cover-735b86220f20.webp" - tags = [| "DevOps"; "Pulumi"; "Programming"; "TypeScript" |] - createdAt = DateTimeOffset(2022, 8, 26, 0, 0, 0, TimeSpan.Zero) } + summary = "How I run a small GCP platform with GKE, Pulumi ESC, and Cloudflare" + cover = "https://assets.meiermade.com/andymeier/articles/shared/gradient-purple-4776537cdf89.webp" + tags = [| "DevOps"; "Pulumi"; "GCP"; "Kubernetes"; "Cloudflare"; "TypeScript" |] + createdAt = DateTimeOffset(2026, 8, 11, 0, 0, 0, TimeSpan.Zero) } + +let private heading id' label = h2 { + _class "mt-10 scroll-mt-24" + _id id' + text label +} + +let private subheading id' label = h3 { + _class "mt-6 scroll-mt-24" + _id id' + text label +} + +let private paragraph value = p { text value } + +let private inlineCode value = code { + _class "language-none" + text value +} + +let private link href label = a { + _href href + text label +} + +let private architectureStep number title description = li { + _class "relative border-l border-gray-200 pl-6 dark:border-gray-700 lg:border-l-0 lg:border-t lg:pl-0 lg:pt-6" + + span { + _class + "absolute -left-3 -top-1 inline-flex size-6 items-center justify-center rounded-full bg-emerald-600 text-xs font-semibold text-white ring-4 ring-white dark:bg-emerald-500 dark:ring-gray-900 lg:-top-3 lg:left-0" + + text number + } + + h3 { + _class "m-0 text-base font-semibold text-gray-900 dark:text-gray-100" + text title + } + + p { + _class "mt-2 text-sm leading-6 text-gray-600 dark:text-gray-400" + text description + } +} + +let private architectureOverview = section { + _class + "not-prose my-10 rounded-2xl border border-gray-200 bg-gray-50/70 p-6 dark:border-gray-700 dark:bg-gray-800/40 sm:p-8" + + _ariaLabel "Infrastructure layers" + + div { + _class "max-w-2xl" + + p { + _class "text-sm font-semibold uppercase tracking-wider text-emerald-700 dark:text-emerald-400" + text "Dependency order" + } + + p { + _class "mt-2 text-lg font-semibold text-gray-900 dark:text-gray-100" + text "Identity establishes trust; each later layer consumes the outputs before it." + } + } + + ol { + _class "mt-8 grid grid-cols-1 gap-7 lg:grid-cols-4 lg:gap-6" + + architectureStep + "1" + "Platform identity" + "Projects, service accounts, IAM grants, groups, and workload-identity bindings." + + architectureStep + "2" + "Shared infrastructure" + "Networking, GKE, databases, storage, secrets, edge services, and shared workloads." + + architectureStep + "3" + "Environments" + "Pulumi ESC composes stack outputs, short-lived credentials, secrets, and configuration." + + architectureStep + "4" + "Applications" + "Product repositories build images and deploy workloads into their assigned boundaries." + } +} let private content = - [ h2 { - _class "mt-8" - _id "758baa07a9c043c98fe5e89f68158a4f" - span { text "Summary" } - } - div { - span { - text - "In this post I will walk through how I set up my network and servers in order to run this blog and other services. " - } - } - div { span { text "I chose to build my own ‘cloud’ because" } } - ol { - _class "list-decimal" - li { span { text "I wanted to learn about networking and DevOps" } } - - li { - span { - text "The costs of running servers on DigitalOcean or AWS was more than I wanted to spend each month " - } - } - - li { - span { text "It was fun. I like building things and interacting with the physical world brings me joy" } - } - } - div { - span { text "My current infrastructure runs on 3 Raspberry Pis in my apartment. I followed " } - - a { - _href "https://www.pulumi.com/docs/guides/crosswalk/kubernetes/playbooks/" - span { text "Pulumi’s Playbook for Kubernetes" } - } - - span { - text - " for organizing the resources into different ‘stacks’ which I will go through in detail. You can see all the code in " - } - - a { - _href "https://github.com/ameier38/infrastructure" - span { text "my GitHub repo" } - } - - span { text "." } - } - div { br } - img { - _class "drop-shadow-xl rounded" - - _src - "https://assets.meiermade.com/andymeier/articles/personal-infrastructure/raspberry-pi-cluster-507654f64fad.webp" - - _alt "Three Raspberry Pi computers mounted in a home server rack" - _attr ("loading", "lazy") - _attr ("width", "1600") - _attr ("height", "1200") - } - h2 { - _class "mt-8" - _id "9876847e07a74d3da0e8f4ebad6b8888" - span { text "Table of Contents" } - } - ul { - _class "list-disc" - - li { - a { - _href "#fb580b4b8c014b3dbe6f77f1bde90f37" - span { text "Hardware" } - } - - span { text ": Everything I bought" } - } - - li { - a { - _href "#27c23f067a954b6eab3ece985ac07c02" - span { text "Identity Stack" } - } - - span { text ": Users, roles, keys, and permissions" } - } - - li { - a { - _href "#573dfd6c0afe47d3a8d484c944e24842" - span { text "Managed Infrastructure Stack" } - } - - span { text ": Resources needed to run the cluster" } - } - - li { - a { - _href "#7a1f1ed7f7da4059a63db2d46a4ad7f9" - span { text "Cluster Stack" } - } - - span { text ": Cluster deployment " } - } - - li { - a { - _href "#f1d5b2ab35694d7cac0fdc80862ef03d" - span { text "Cluster Services Stack" } - } - - span { text ": Cluster wide resources" } - } - - li { - a { - _href "#23ec3e2370f34b5eb33d4dd87df8d901" - span { text "App Services Stack" } - } - - span { text ": App specific resources" } - } - - li { - a { - _href "#246a7816de444b889fd4e169e6017b31" - span { text "Managed Apps Stack" } - } - - span { text ": Apps developed by someone else (e.g. Grafana) " } - } - - li { - a { - _href "#2ac83008618d4529be74301b94f49b13" - span { text "Apps Stacks" } - } - - span { text ": Apps developed by me (e.g., this blog)" } - } - - li { - a { - _href "#96bd7ae28beb485bb4aa482490ff5536" - span { text "CI/CD" } - } - - span { text ": Automated deployment using GitHub actions" } - } - } - h2 { - _class "mt-8" - _id "fb580b4b8c014b3dbe6f77f1bde90f37" - span { text "Hardware" } - } + [ p { + text + "My personal infrastructure is a small cloud platform for the applications, data systems, automation, and internal tools I operate through Meier Made. It uses managed Google Cloud services for the parts that are expensive to operate well, Kubernetes as the common workload layer, Cloudflare as the edge, and Pulumi to keep the entire system reviewable as code." + } + p { + text + "The goal is not to imitate a large enterprise platform. It is to create one dependable foundation that I can understand, change safely, and reuse across products without rebuilding identity, networking, databases, observability, and deployment automation every time. The result is deliberately modest in scale but complete enough to support real production workloads." + } + nav { + _ariaLabel "Table of contents" + + h2 { + _class "mt-8" + text "Contents" + } + + ul { + _class "list-disc" + + for id', label in + [ "principles", "Design principles" + "platform", "The platform at a glance" + "identity", "Identity before infrastructure" + "gcp", "The shared GCP foundation" + "kubernetes", "Kubernetes as the workload boundary" + "edge", "Cloudflare at the edge" + "data", "Data, storage, and secrets" + "observability", "Observability and analytics" + "environments", "Pulumi ESC as the configuration layer" + "delivery", "Application delivery" + "operations", "Operating the platform" + "tradeoffs", "Intentional tradeoffs" ] do + li { + a { + _href $"#{id'}" + text label + } + } + } + } + heading "principles" "Design principles" + paragraph + "I use a few principles to decide whether a resource belongs in the platform and how it should be managed. They keep the architecture from becoming either a collection of one-off application stacks or an oversized internal platform." ul { _class "list-disc" - li { span { text "3 x Raspberry Pi 4 8GB" } } - li { span { text "3 x Raspberry Pi POE Hat" } } - li { span { text "3 x 32GB flash drive" } } - li { span { text "3 x CAT 6 1 foot ethernet cables" } } li { - span { text "1 x " } + strong { text "Managed where operations matter." } - a { - _href "https://smile.amazon.com/gp/product/B082G2G2F8" - span { text "8 port POE Network Switch" } - } - } - - li { - span { text "1 x " } - - a { - _href "https://smile.amazon.com/gp/product/B07R5Q8MTJ" - span { text "6U Server Cabinet" } - } - } - - li { - span { text "1 x " } - - a { - _href "https://www.etsy.com/listing/978719017/1u-rack-for-raspberry-pi-19-rackmount" - span { text "1U Raspberry Pi Rack Mount" } - } - } - - li { - span { text "1 x " } - - a { - _href "https://smile.amazon.com/gp/product/B00006B834" - span { text "1U Rack Mount Power Strip" } - } - } - } - h2 { - _class "mt-8" - _id "fb96de2e2abc4e869b209eb9f7b568ef" - span { text "Stacks" } - } - div { - span { - text - "The reason for splitting up the infrastructure into different stacks is to limit the potential blast radius of errors. Typically the lower stacks (where the network, cluster, etc. are deployed) will change the least and the higher stacks (where applications are deployed) will change the most. This helps isolate potential errors when making changes. " - } - } - h3 { - _class "mt-6" - _id "27c23f067a954b6eab3ece985ac07c02" - span { text "Identity Stack" } - } - div { - span { - text - "This stack defines the users, roles, permissions, and keys that will be used by the other stacks in order to make changes to managed resources. In my case I am using AWS for key management, S3 buckets, container registries, and sending email notifications, so I have defined roles and permissions in order to deploy those resources." - } - } - div { - span { text - "In a fresh AWS account I first manually created a GitHub identity provider which will allow GitHub actions to assume AWS roles in my account. You can read more about how this is configured in the " - } - - a { - _href - "https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services" - - span { text "GitHub documentation" } - } - - span { text ". Next I manually created an " } - - code { - _class "language-none" - text "identity-deployer" - } - - span { text " role with the following managed permissions:" } - } - ul { - _class "list-disc" - - li { - code { - _class "language-none" - text "IAMFullAccess" - } + " Google manages the Kubernetes control plane, PostgreSQL, Redis, object storage, secret storage, and the underlying availability and patching concerns for those services." } li { - code { - _class "language-none" - text "AWSKeyManagementServicePowerUser" - } - } - } - div { span { text "and the following trust relationship:" } } - pre { - _class "language-json" - - code { - _class "language-json" - - span { - text - "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"400689721046\"\n },\n \"Action\": \"sts:AssumeRole\"\n },\n {\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"Federated\": \"arn:aws:iam::400689721046:oidc-provider/token.actions.githubusercontent.com\"\n },\n \"Action\": \"sts:AssumeRoleWithWebIdentity\",\n \"Condition\": {\n \"StringEquals\": {\n \"token.actions.githubusercontent.com:aud\": \"sts.amazonaws.com\"\n },\n \"StringLike\": {\n \"token.actions.githubusercontent.com:sub\": \"repo:ameier38/infrastructure:*\"\n }\n }\n }\n ]\n}" - } - } - } - div { - span { - text - "This role has permissions to manage IAM resources and KMS keys, and the trust policy allows the role to be assumed by users in my account and by GitHub actions running in the " - } - - a { - _href "https://github.com/ameier38/infrastructure" - span { text "ameier38/infrastructure repo" } - } - - span { text "." } - } - div { - span { text "Next I created an " } - - code { - _class "language-none" - text "admin" - } - - span { text " user with the following policy attached:" } - } - pre { - _class "language-json" - - code { - _class "language-json" - - span { - text - "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Effect\": \"Allow\",\n \"Action\": \"sts:AssumeRole\",\n \"Resource\": \"arn:aws:iam::400689721046:role/identity-deployer\"\n }\n ]\n}" - } - } - } - div { - span { text "This allows the " } - - code { - _class "language-none" - text "admin" - } - - span { text " user to assume the " } - - code { - _class "language-none" - text "identity-deployer" - } - - span { text " role. I added the " } - - code { - _class "language-none" - text "admin" - } - - span { text " user keys to the " } + strong { text "One owner for every resource." } - code { - _class "language-none" - text "~/.aws/credentials" - } - - span { text " file on my computer." } - } - pre { - _class "language-toml" - - code { - _class "language-toml" - span { text "[admin]\naws_access_key_id={ACCESS_KEY}\naws_secret_access_key={SECRET_KEY}" } - } - } - div { - span { text "I then added the " } - - code { - _class "language-none" - text "identity-deployer" - } - - span { text " role to the " } - - code { - _class "language-none" - text "~/.aws/config" - } - - span { text " file so I could assume this role in order to deploy the stack." } - } - pre { - _class "language-toml" - - code { - _class "language-toml" - - span { - text - "[profile admin]\nregion=us-east-1\noutput=json\n\n[profile identity-deployer]\nrole_arn=arn:aws:iam::400689721046:role/identity-deployer\nsource_profile=admin" - } - } - } - div { - span { text "With the " } - - code { - _class "language-none" - text "identity-deployer" - } - - span { text " role and " } - - code { - _class "language-none" - text "admin" - } - - span { text " user created, I can then create the identity stack using the Pulumi CLI. " } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "pulumi new aws-typescript" } - } - } - div { - span { - text - "In the new Pulumi project I created the encryption key which will be used by the other stacks to encrypt configuration secrets." - } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - span { text "import * as aws from '@pulumi/aws'\n\nconst pulumiKey = new aws.kms.Key('pulumi')" } - } - } - div { - span { text "Next I created the " } - - code { - _class "language-none" - text "infrastructure-deployer" - } - - span { text " role." } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as aws from '@pulumi/aws'\nimport * as identityProvider from './identityProvider'\nimport * as config from '../config'\n\nconst infrastructureDeployer = new aws.iam.Role('infrastructure-deployer', {\n name: 'infrastructure-deployer',\n assumeRolePolicy: {\n Version: '2012-10-17',\n Statement: [\n // Trust principals in this account to assume role\n {\n Effect: 'Allow',\n Action: 'sts:AssumeRole',\n Principal: {\n AWS: config.accountId\n }\n },\n // Allow `infrastructure` repo actions to assume role\n {\n Effect: 'Allow',\n Action: 'sts:AssumeRoleWithWebIdentity',\n Principal: {\n Federated: identityProvider.githubIdentityProviderArn\n },\n Condition: {\n StringEquals: {\n 'token.actions.githubusercontent.com:aud': 'sts.amazonaws.com'\n },\n StringLike: {\n 'token.actions.githubusercontent.com:sub': 'repo:ameier38/infrastructure:*'\n }\n }\n }\n ]\n }\n})" - } - } - } - div { - span { text "Then I attached a policy to the " } - - code { - _class "language-none" - text "infrastructure-deployer" - } - - span { text " role." } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "new aws.iam.RolePolicy('infrastructure-deployer', {\n name: 'infrastructure-deployer',\n role: role.infrastructureDeployerName,\n policy: {\n Version: '2012-10-17',\n Statement: [\n // Allow usage of `pulumi` key\n {\n Effect: 'Allow',\n Action: [\n 'kms:Decrypt',\n 'kms:Encrypt'\n ],\n Resource: key.pulumiKey.arn\n },\n // Allow management of cloudflared ecr repository\n {\n Effect: 'Allow',\n Action: 'ecr:GetAuthorizationToken',\n Resource: '*'\n },\n {\n Effect: 'Allow',\n Action: [\n 'ecr:*'\n ],\n Resource: pulumi.interpolate `arn:aws:ecr:${config.region}:${config.accountId}:repository/cloudflared-*`\n },\n // Allow management of ameier38-public bucket\n {\n Effect: 'Allow',\n Action: [\n 's3:*',\n ],\n Resource: [\n 'arn:aws:s3:::ameier38-public',\n 'arn:aws:s3:::ameier38-public/*'\n ]\n },\n // Allow `infrastructure-deployer` role to manage email service\n {\n Effect: 'Allow',\n Action: [\n 'ses:*',\n ],\n Resource: '*'\n },\n ]\n }\n})" - } - } - } - div { - span { text "You can see the rest of the code in the " } - - a { - _href "https://github.com/ameier38/infrastructure/tree/main/1-identity" - span { text "GitHub repo" } - } - - span { text "." } - } - div { - span { text "I can then deploy the stack by first assuming the " } - - code { - _class "language-none" - text "identity-deployer" - } - - span { text " role and using the Pulumi CLI." } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "$env:AWS_PROFILE=\"identity-deployer\"\npulumi up" } - } - } - h3 { - _class "mt-6" - _id "573dfd6c0afe47d3a8d484c944e24842" - span { text "Managed Infrastructure Stack" } - } - div { - span { - text - "This stack includes resources needed to run and connect to the Kubernetes cluster. In order to create the stack I first added the " - } - - code { - _class "language-none" - text "infrastructure-deployer" - } - - span { text " role to the " } - - code { - _class "language-none" - text "~/.aws/config" - } - - span { text " file." } - } - pre { - _class "language-toml" - - code { - _class "language-toml" - - span { - text - "[profile infrastructure-deployer]\nrole_arn=arn:aws:iam::400689721046:role/infrastructure-deployer\nsource_profile=admin" - } - } - } - div { - span { text "Then I assumed the " } - - code { - _class "language-none" - text "infrastructure-deployer" - } - - span { text " role and created the stack using the " } - - code { - _class "language-none" - text "pulumi" - } - - span { text " encryption key created in the identity stack." } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - - span { - text - "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi new aws-typescript --secrets-provider \"awskms://{pulumi key id}?region=us-east-1\"" - } - } - } - h4 { - _class "mt-4" - _id "bb0431f031fd4e6e96b44f0af7ebfe20" - span { text "Kubernetes API Tunnel" } - } - div { - span { - text - "Since I am running Kubernetes on Raspberry Pis in my apartment I need some way to connect to the Kubernetes API from outside my home network (such as GitHub Actions for deploying applications). This is made possible using " - } - - a { - _href "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/" - span { text "Cloudflare Tunnels" } - } - - span { text - ". A tunnel is a persistent connection between a daemon application (called cloudflared) and the nearest Cloudflare datacenter. Cloudflare creates a public IP address for each tunnel and then proxies requests to that IP address to the cloudflared daemon. The cloudflared daemon then forwards the request to a service based on rules you specify. The below diagram from " - } - - a { - _href "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/#how-it-works" - span { text "Cloudflare’s documentation" } + " Identity, shared infrastructure, environment composition, and application deployment have distinct Pulumi projects. A resource lives at the lowest layer that can own it without creating duplication." } - span { text " illustrates this well." } - } - img { - _class "drop-shadow-xl rounded" - - _src - "https://assets.meiermade.com/andymeier/articles/personal-infrastructure/cloudflare-tunnel-diagram-ddaa9b198f33.webp" + li { + strong { text "Short-lived identity by default." } - _alt "Cloudflare Tunnel routing a browser request through Cloudflare to a service on a local server" - _attr ("loading", "lazy") - _attr ("width", "1768") - _attr ("height", "1102") - } - div { - span { text - "I set up the cloudflared daemon on the Raspberry Pi running the master Kubernetes node. You can see this later in the " - } - - a { - _href "#ccd359bcf0b448efae3cefbf6ac48284" - span { text "Cluster Stack" } + " CI and supported workloads exchange identity for temporary credentials instead of carrying static cloud keys. Permissions are granted to purpose-specific service accounts rather than to one universal deployer." } - span { text "." } - } - div { span { text "Using Pulumi I can create the tunnel and configure the credentials. " } } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as cloudflare from '@pulumi/cloudflare'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as random from '@pulumi/random'\n\nconst tunnelSecret = new random.RandomPassword('k8s-api-tunnel', {\n length: 32\n})\n\nexport const k8sApiTunnel = new cloudflare.ArgoTunnel('k8s-api', {\n accountId: cloudflare.config.accountId!,\n name: 'k8s-api',\n secret: tunnelSecret.result.apply(s => Buffer.from(s).toString('base64'))\n})\n\nexport const k8sApiTunnelCredentials = pulumi.all([\n k8sApiTunnel.accountId,\n k8sApiTunnel.id,\n k8sApiTunnel.name,\n k8sApiTunnel.secret\n]).apply(([accountId, tunnelId, tunnelName, tunnelSecret]) => {\n return JSON.stringify({\n AccountTag: accountId,\n TunnelID: tunnelId,\n TunnelName: tunnelName,\n TunnelSecret: tunnelSecret\n })\n})" - } - } - } - div { - _class "bg-gray-200 dark:bg-gray-800 rounded p-2" - span { text "The tunnel credentials format is not well documented but to get an example run " } + li { + strong { text "Private origins." } - code { - _class "language-none" - text "cloudflared tunnel create" - } - } - h4 { - _class "mt-4" - _id "15f01fbec7194949a53899b8a59073a9" - span { text "DNS Records" } - } - div { - span { text - "With the tunnel defined, I then created a friendly DNS record to point to the tunnel. I use this domain in my kubeconfig file in order to connect to the Kubernetes API using kubectl." - } - } - div { - span { text "First I created the " } - - a { - _href "https://www.cloudflare.com/learning/dns/glossary/dns-zone/" - span { text "Cloudflare zone" } - } - - span { text "." } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as cloudflare from '@pulumi/cloudflare'\n\nconst andrewmeierDotDev = new cloudflare.Zone('andrewmeier.dev', {\n zone: 'andrewmeier.dev'\n})\n\nnew cloudflare.ZoneSettingsOverride('andrewmeier.dev', {\n zoneId: andrewmeierDotDev.id,\n settings: {\n ssl: 'strict'\n }\n})\n\nexport const andrewmeierDotDevZoneId = andrewmeierDotDev.id\nexport const andrewmeierDotDevDomain = andrewmeierDotDev.zone" - } - } - } - div { - span { text "Next I created the DNS record " } - - code { - _class "language-none" - text "k8s.andrewmeier.dev" + " Worker nodes and data services live on private networking. Cloudflare Tunnel carries application traffic to the cluster without requiring a public Kubernetes load balancer." } - span { text " to point to the tunnel." } + li { + strong { text "Preview before update." } + + text + " Infrastructure changes arrive through pull requests with tests and Pulumi previews. The reviewed main branch, rather than a laptop, is the normal path to production." + } + } + heading "platform" "The platform at a glance" + paragraph + "The platform is split into four layers. Three shared repositories define identity, common infrastructure, and environments. Product repositories own the final application-specific deployment. The separation is more important than the repository names: each layer has a narrow responsibility and exports only what the next layer needs." + architectureOverview + p { + text "The dependency direction is intentional. " + inlineCode "platform-identity" + text " establishes projects and principals. " + inlineCode "platform-infrastructure" + text " uses those principals to create shared resources and access boundaries. " + inlineCode "environments" + + text + " turns outputs and secrets into usable configuration. Application stacks receive that configuration without needing to understand how the platform was assembled." + } + paragraph + "Pulumi TypeScript is the common language across these layers. Stack outputs are contracts between projects, while Pulumi ESC is the composition point. This avoids copying values between repositories and makes a dependency visible where it is consumed." + heading "identity" "Identity before infrastructure" + p { + text "The identity layer starts with the " + + link + "https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy" + "Google Cloud resource hierarchy" + + text + ". It creates the projects that separate platform, product, and data responsibilities, enables the APIs each project needs, and defines the service accounts used by automation and workloads. Project separation provides a useful IAM and billing boundary without requiring each application to recreate the entire platform." + } + paragraph + "I distinguish deployment identities from runtime identities. A deployer can change a specific Pulumi stack and its assigned Kubernetes namespace. A runtime account receives only the Google Cloud permissions the application needs after it starts. The GKE node account has its own infrastructure role and is not reused as an application identity." + p { + text "For CI, Pulumi ESC uses OpenID Connect to obtain short-lived Google credentials. " + + link + "https://www.pulumi.com/docs/esc/integrations/dynamic-login-credentials/gcp-login/" + "ESC's GCP login integration" + + text + " exchanges the environment's OIDC assertion for access to a designated deployer account. GitHub Actions needs permission to request an identity token, but it does not need a long-lived Google service-account key in the repository." + } + p { + text "Inside the cluster, " + + link + "https://cloud.google.com/kubernetes-engine/docs/concepts/workload-identity" + "Workload Identity Federation for GKE" + + text + " maps Kubernetes service accounts to narrowly scoped Google service accounts. Snowplow components, data workloads, and product services can therefore authenticate to Google APIs without mounting cloud keys into their pods. Some external integrations still impose their own credential constraints, but the normal platform path is keyless." + } + paragraph + "There is one unavoidable bootstrap boundary: the identity stack cannot create the identity required to deploy itself. A pre-existing workload-identity pool and initial deployer establish that root of trust. After that bootstrap, the identity project manages the normal grants and exports consumed by the rest of the platform." + heading "gcp" "The shared GCP foundation" + p { + text + "The shared infrastructure runs in a custom Google Cloud VPC. Google Kubernetes Engine worker nodes use private addresses, and the application and service address ranges are allocated separately from the node subnet. A Cloud NAT gateway provides controlled outbound internet access with a stable egress address, while the cluster does not depend on public addresses for individual nodes." } - pre { - _class "language-typescript" + p { + text "The cluster uses " - code { - _class "language-typescript" + link + "https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview#standard" + "GKE Standard mode" - span { - text - "import * as cloudflare from '@pulumi/cloudflare'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as tunnel from './tunnel'\nimport * as zone from './zone'\n\nexport const k8sApiRecord = new cloudflare.Record('k8s.andrewmeier.dev', {\n zoneId: zone.andrewmeierDotDevZoneId,\n name: 'k8s',\n type: 'CNAME',\n value: tunnel.k8sApiTunnel.cname,\n proxied: true\n})" - } - } - } - h4 { - _class "mt-4" - _id "fbcd4ab34cd243b794de5698f11b5573" - span { text "Identity Provider" } - } - div { - span { - text - "For applications that I don’t want to expose to the public I can also use Cloudflare to authenticate requests with an identity provider. I chose to use GitHub as the identity provider but there are other options as well (such as Google)." - } - } - div { - span { text "I first created a " } - - a { - _href "https://docs.github.com/en/developers/apps/building-oauth-apps/creating-an-oauth-app" - span { text "GitHub OAuth application" } - } - - span { text " and then created the " } - - a { - _href "https://developers.cloudflare.com/cloudflare-one/identity/" - span { text "Cloudflare Access Identity Provider" } - } - - span { text " in Pulumi using the client ID and client secret provided by the GitHub OAuth application." } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "const githubIdentityProvider = new cloudflare.AccessIdentityProvider('github', {\n name: 'github',\n type: 'github',\n accountId: cloudflare.config.accountId!,\n configs: [{\n clientId: config.githubConfig.clientId,\n clientSecret: config.githubConfig.clientSecret\n }]\n})" - } - } - } - h4 { - _class "mt-4" - _id "86529189d6b9472f86b11f303c74c3eb" - span { text "Access Application" } - } - div { - span { text "In order to authenticate access to the Kubernetes API, I must create a " } - - a { - _href "https://developers.cloudflare.com/cloudflare-one/tutorials/kubectl/" - span { text "Cloudflare Access Application" } - } - - span { text " associated with the DNS record that I created above." } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as cloudflare from '@pulumi/cloudflare'\nimport { githubIdentityProvider } from './accessIdentityProvider'\nimport { k8sApiRecord } from './record'\n\nexport const k8sApi = new cloudflare.AccessApplication('k8s-api', {\n name: 'Kubernetes API',\n domain: k8sApiRecord.hostname,\n accountId: cloudflare.config.accountId,\n allowedIdps: [ githubIdentityProvider.id ],\n autoRedirectToIdentity: true,\n type: 'self_hosted'\n}) " - } - } - } - div { - span { text "This way any request to " } - - code { - _class "language-none" - text "k8s.andrewmeier.dev" - } - - span { text " will first need to authenticate with GitHub." } - } - h4 { - _class "mt-4" - _id "e8047634165f4a8eb61fbbfc2687baaf" - span { text "Access Policy" } - } - div { - span { - text - "With the authentication configured I now need to configure authorization. This is accomplished using a " - } - - a { - _href "https://developers.cloudflare.com/cloudflare-one/policies/access/" - span { text "Cloudflare Access Policy" } - } - - span { - text - ". Because I also want to access the Kubernetes API when running GitHub actions, I first need to create an " - } - - a { - _href "https://developers.cloudflare.com/cloudflare-one/identity/service-tokens/" - span { text "Access Service Token" } - } - - span { text "." } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as cloudflare from '@pulumi/cloudflare'\n\nexport const githubServiceToken = new cloudflare.AccessServiceToken('github', {\n name: 'GitHub',\n accountId: cloudflare.config.accountId!\n})" - } - } - } - div { - span { - text - "Then I can create the access policies to authorize my email address (authenticated with GitHub) and systems using the service token." - } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as cloudflare from '@pulumi/cloudflare'\nimport { k8sApi } from './accessApplication'\nimport { githubServiceToken } from './serviceToken'\nimport { email } from '../config'\n\nnew cloudflare.AccessPolicy('k8s-api-user-access', {\n name: 'Kubernetes API User Access',\n precedence: 1,\n accountId: cloudflare.config.accountId,\n applicationId: k8sApi.id,\n decision: 'allow',\n includes: [{\n emails: [ email ]\n }]\n})\n\nnew cloudflare.AccessPolicy('k8s-api-github-access', {\n name: 'Kubernetes API GitHub Access',\n precedence: 2,\n accountId: cloudflare.config.accountId,\n applicationId: k8sApi.id,\n decision: 'non_identity',\n includes: [{\n serviceTokens: [ githubServiceToken.id ]\n }]\n})" - } - } - } - div { - span { text "I can now deploy the stack by assuming the " } - - code { - _class "language-none" - text "infrastructure-deployer" - } - - span { text " role then using the Pulumi CLI." } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi up" } - } - } - h3 { - _class "mt-6" - _id "7a1f1ed7f7da4059a63db2d46a4ad7f9" - span { text "Cluster Stack" } - } - div { - span { - text - "This stack defines the Kubernetes cluster. I decided to host the cluster myself instead of using a managed cluster for a few reasons:" - } - } - ol { - _class "list-decimal" - li { span { text "I wanted to learn more about networking " } } - li { span { text "It is cheaper" } } - } - div { - span { - text - "There are three nodes in the cluster, each of which is a Raspberry Pi. In order to run Kubernetes I am using " - } - - a { - _href "https://k3s.io/" - span { text "k3s" } - } - - span { - text - ", which is a lightweight version of Kubernetes. Running k3s on Raspberry Pis is great because they don’t take up much space (the entire rack fits in my coat closet), they don’t use much power (can run on PoE), and they are cheap (I bought them before chip crisis). " - } - } - div { - span { text "There is a bit of manual setup for each Pi which is provided in the " } - - a { - _href "https://github.com/ameier38/infrastructure/blob/main/2-cluster/README.md" - span { text "stack README" } - } - - span { text "." } - } - div { - span { text "Once the Pis are setup and running, I can install k3s and cloudflared using the " } - - a { - _href "https://www.pulumi.com/registry/packages/command/" - span { text "Pulumi Command" } - } - - span { text " package. I first created the stack using the key created in the identity stack." } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - - span { - text - "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi new aws-typescript --secrets-provider \"awskms://{pulumi key id}?region=us-east-1\"" - } - } - } - div { - span { - text - "Then I configured the connections to each of the Raspberry Pis and retrieved the Kubernetes API tunnel information exported from the Managed Infrastructure stack." - } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as pulumi from '@pulumi/pulumi'\nimport * as command from '@pulumi/command'\n\nexport const env = pulumi.getStack()\n\nconst managedInfrastructureStack = new pulumi.StackReference('ameier38/managed-infrastructure/prod')\n\nexport const k8sApiTunnelId = managedInfrastructureStack.requireOutput('k8sApiTunnelId')\nexport const k8sApiTunnelCredentials = managedInfrastructureStack.requireOutput('k8sApiTunnelCredentials')\nexport const k8sApiTunnelHost = managedInfrastructureStack.requireOutput('k8sApiTunnelHost')\n\nconst rawConfig = new pulumi.Config()\nexport const privateKey = rawConfig.requireSecret('privateKey')\n\nexport const masterConn: command.types.input.remote.ConnectionArgs = {\n host: 'ameier-1',\n port: 22,\n user: 'root',\n privateKey: privateKey\n}\n\nexport const agent1Conn: command.types.input.remote.ConnectionArgs = {\n host: 'ameier-2',\n port: 22,\n user: 'root',\n privateKey: privateKey\n}\n\nexport const agent2Conn: command.types.input.remote.ConnectionArgs = {\n host: 'ameier-3',\n port: 22,\n user: 'root',\n privateKey: privateKey\n} " - } - } - } - div { span { text "Then I created the scripts required to install cloudflared and k3s." } } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as command from '@pulumi/command'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as config from './config'\n\n// ref: https://developers.cloudflare.com/cloudflare-one/tutorials/kubectl/\nconst installCloudflaredScript = pulumi.interpolate `\necho \"Installing cloudflared\"\n\nset -e\n\necho \"Creating config directory\"\nmkdir -p /etc/cloudflared\n\necho \"Writing credentials\"\ncat << EOF > /etc/cloudflared/credentials.json\n${config.k8sApiTunnelCredentials}\nEOF\n\necho \"Writing config\"\ncat << EOF > /etc/cloudflared/config.yml\ntunnel: ${config.k8sApiTunnelId}\ncredentials-file: /etc/cloudflared/credentials.json\ningress:\n - hostname: ${config.k8sApiTunnelHost}\n service: tcp://localhost:6443\n originRequest:\n proxyType: socks\n - service: http_status:404\nEOF\n\necho \"Downloading cloudflared\"\ncurl -sfLO https://github.com/cloudflare/cloudflared/releases/download/2022.3.4/cloudflared-linux-arm64\n\necho \"Updating cloudflared permissions\"\nchmod +x cloudflared-linux-arm64\n\necho \"Moving cloudflared to bin\"\nmv cloudflared-linux-arm64 /usr/local/bin/cloudflared\n\nif [ ! -f /etc/systemd/system/cloudflared.service ]\nthen\n echo \"Installing cloudflared service\"\n cloudflared service install\n echo \"Starting cloudflared service\"\n systemctl start cloudflared \nelse\n echo \"Restarting cloudflared service\"\n systemctl restart cloudflared\nfi\n`\n\nconst installK3sMaster = new command.remote.Command('install-k3s-master', {\n connection: config.masterConn,\n create: 'curl -sfL https://get.k3s.io | sh -'\n})\n\nnew command.remote.Command('install-cloudflared', {\n connection: config.masterConn,\n create: installCloudflaredScript,\n triggers: [ installCloudflaredScript ]\n})\n\nconst readKubeconfig = new command.remote.Command('read-kubeconfig', {\n connection: config.masterConn,\n create: 'cat /etc/rancher/k3s/k3s.yaml'\n}, { dependsOn: installK3sMaster })\n\nexport const kubeconfig =\n pulumi\n .all([readKubeconfig.stdout, config.k8sApiTunnelHost])\n .apply(([kubeconfig, host]) => kubeconfig.replace('127.0.0.1', host))\n\nconst readToken = new command.remote.Command('read-token', {\n connection: config.masterConn,\n create: 'cat /var/lib/rancher/k3s/server/node-token'\n}, {dependsOn: installK3sMaster })\n\nconst token = readToken.stdout.apply(token => token.replace('\\n', ''))\n\nfor (const [i, conn] of [config.agent1Conn, config.agent2Conn].entries()) {\n new command.remote.Command(`install-k3s-agent-${i}`, {\n connection: conn,\n create: pulumi.interpolate `curl -sfL https://get.k3s.io | K3S_URL=\"https://${config.masterConn.host}:6443\" K3S_TOKEN=\"${token}\" sh -`,\n triggers: [token]\n })\n}" - } - } - } - div { - span { text "Then I can assume the " } - - code { - _class "language-none" - text "infrastructure-deployer" - } - - span { text " role (needed to access KMS key in order to decrypt secrets) and deploy the cluster." } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi up" } - } - } - div { - _class "bg-gray-200 dark:bg-gray-800 rounded p-2" - - span { - text - "I must run this on the local network in order to access the Raspberry Pis. I could set up SSH with cloudflared running on each Pi but have not done it yet 😃" - } - } - h4 { - _class "mt-4" - _id "02504c7d07d74c2685db65e08c85920c" - span { text "Connecting" } - } - div { - span { - text - "In order to connect to the cluster using kubectl I have to configure a few things. First I need to export the kubeconfig file from the Cluster stack." - } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "pulumi stack output --show-secrets kubeconfig > ~/.kube/kubeconfig" } - } - } - div { span { text "Then I have to configure the kubeconfig file to use a proxy." } } - pre { - _class "language-yaml" - - code { - _class "language-yaml" - - span { - text - "apiVersion: v1\nclusters:\n- cluster:\n certificate-authority-data: ...\n proxy-url: socks5://localhost:1234\n server: https://k8s.andrewmeier.dev:6443\n name: default\ncontexts:\n- context:\n cluster: default\n namespace: andrewmeier\n user: default\n name: default\ncurrent-context: default\nkind: Config\npreferences: {}\nusers:\n- name: default\n user:\n client-certificate-data: ...\n client-key-data: ..." - } - } - } - div { - span { text "Note that I configured the tunnel in the installation script with " } - - code { - _class "language-none" - text "proxyType: socks" - } - - span { text " and pointed to the Kubernetes API " } - - code { - _class "language-none" - text "tcp://localhost:6443" - } - - span { text " as shown below." } - } - pre { - _class "language-yaml" - - code { - _class "language-yaml" - - span { - text - "tunnel: ${config.k8sApiTunnelId}\ncredentials-file: /etc/cloudflared/credentials.json\ningress:\n - hostname: ${config.k8sApiTunnelHost}\n service: tcp://localhost:6443\n originRequest:\n proxyType: socks\n - service: http_status:404" - } - } - } - div { span { text "Then on my laptop I connect to the tunnel using the cloudflared CLI." } } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "cloudflared access tcp --hostname=k8s.andrewmeier.dev --url=localhost:1234" } - } - } - div { - span { text "This sets up a proxy server on my laptop which will direct requests from " } - - code { - _class "language-none" - text "localhost:1234" - } - - span { text " to " } - - code { - _class "language-none" - text "k8s.andrewmeier.dev" - } - - span { - text - ". Above I configured the kubeconfig to use this proxy. In a different shell, when I first run a kubectl command, a browser window will open asking me to authenticate with GitHub (I set up an access policy for the Kubernetes API in the Managed Infrastructure stack). Additional details about using kubectl with Cloudflare Tunnels can be found in the " - } - - a { - _href "https://developers.cloudflare.com/cloudflare-one/tutorials/kubectl/" - span { text "Cloudflare documentation" } - } - - span { text "." } - } - div { - span { - text - "To make this easier for me, I added a function to my PowerShell profile to connect to the tunnel as a Job." - } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - - span { - text - "function start-ameier-k8s-tunnel {\n $env:KUBECONFIG=\"C:\\Users\\andy\\.kube\\ameier-kubeconfig\"\n Start-Job -Name ameier-k8s-tunnel -ScriptBlock { cloudflared access tcp --hostname=k8s.andrewmeier.dev --url=localhost:1234 }\n}" - } - } - } - div { - span { text "Then before running my kubectl commands I just need to make sure to run " } - - code { - _class "language-none" - text "start-ameier-k8s-tunnel" - } - - span { text " first." } - } - h3 { - _class "mt-6" - _id "f1d5b2ab35694d7cac0fdc80862ef03d" - span { text "Cluster Services Stack" } - } - div { - span { - text - "This stack defines all the cluster-wide services that are used for running and monitoring applications. I first created the stack using the Pulumi CLI." - } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - - span { - text - "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi new aws-typescript --secrets-provider \"awskms://{pulumi key id}?region=us-east-1\"" - } - } - } - div { - span { - text - "Next, because this stack will connect to the Kubernetes cluster, I need to configure the stack to use the kubeconfig file that I created above." - } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "cat ~/.kube/kubeconfig | pulumi config set --secret kubernetes:kubeconfig" } - } - } - h4 { - _class "mt-4" - _id "f42bc896f4364370a9370e116069d86d" - span { text "Reverse Proxy" } - } - div { - span { text "I use Traefik for the reverse proxy which is used to manage request routing. Traefik " } - - a { - _href "https://rancher.com/docs/k3s/latest/en/networking/#traefik-ingress-controller" - span { text "ships with k3s" } - } - - span { text " so there is not much to set up. In my case I want to use " } - - a { - _href "https://developers.cloudflare.com/ssl/origin-configuration/ssl-modes/full-strict/" - span { text "Cloudflare’s Full Strict SSL" } - } - - span { text " which requires the use of of a Cloudflare origin certificate to terminate TLS. " } - } - div { - span { text "I first created the origin certificate, leveraging the convenient " } - - a { - _href "https://www.pulumi.com/registry/packages/tls/" - span { text "Pulumi TLS package" } - } - - span { text "." } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as cloudflare from '@pulumi/cloudflare'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as tls from '@pulumi/tls'\nimport * as config from '../config'\n\nexport const originCertPrivateKey = new tls.PrivateKey('origin-cert', {\n algorithm: 'RSA'\n})\n\nconst originCertRequest = new tls.CertRequest('origin-cert-request', {\n privateKeyPem: originCertPrivateKey.privateKeyPem,\n subject: {\n commonName: config.andrewmeierDotDevDomain,\n organization: 'andrewmeier.dev'\n }\n})\n\nexport const originCert = new cloudflare.OriginCaCertificate('origin-cert', {\n csr: originCertRequest.certRequestPem,\n requestType: 'origin-rsa',\n hostnames: [\n config.andrewmeierDotDevDomain,\n pulumi.interpolate `*.${config.andrewmeierDotDevDomain}`\n ]\n})" - } - } - } - div { span { text "Next I configured Traefik to use this certificate for terminating TLS." } } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as k8s from '@pulumi/kubernetes'\nimport { originCert, originCertPrivateKey } from '../cloudflare/originCertificate'\n\n// Traefik is deployed as part of k3s\n\nconst originCertSecret = new k8s.core.v1.Secret('origin-cert', {\n metadata: { namespace: 'kube-system' },\n stringData: {\n 'tls.crt': originCert.certificate,\n 'tls.key': originCertPrivateKey.privateKeyPem\n }\n})\n\n// Enables Cloudflare Full Strict SSL\nnew k8s.apiextensions.CustomResource('tls-store', {\n apiVersion: 'traefik.containo.us/v1alpha1',\n kind: 'TLSStore',\n metadata: {\n name: 'default',\n namespace: 'kube-system'\n },\n spec: {\n defaultCertificate: {\n secretName: originCertSecret.metadata.name\n }\n }\n})" - } - } - } - h4 { - _class "mt-4" - _id "ee00759c3def4058ba87450e0d264d27" - span { text "Tunnel" } - } - div { - span { text "In order to connect to applications from outside the cluster I created another " } - - a { - _href "https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/" - span { text "Cloudflare Tunnel" } - } - - span { text ". " } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as cloudflare from '@pulumi/cloudflare'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as random from '@pulumi/random'\n\nconst k8sTunnelSecret = new random.RandomPassword('k8s-tunnel-secret', {\n length: 32\n})\n\nexport const k8sTunnel = new cloudflare.ArgoTunnel('k8s', {\n accountId: cloudflare.config.accountId!,\n name: 'k8s',\n secret: k8sTunnelSecret.result.apply(s => Buffer.from(s).toString('base64'))\n})\n\nexport const k8sTunnelCredentials = pulumi.all([\n k8sTunnel.accountId,\n k8sTunnel.id,\n k8sTunnel.name,\n k8sTunnel.secret\n]).apply(([accountId, tunnelId, tunnelName, tunnelSecret]) => {\n return JSON.stringify({\n AccountTag: accountId,\n TunnelID: tunnelId,\n TunnelName: tunnelName,\n TunnelSecret: tunnelSecret\n })\n})" - } - } - } - div { - span { - text - "I then created a deployment for the cloudflared daemon and configured it to forward requests from the tunnel to the Traefik proxy. " - } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as k8s from '@pulumi/kubernetes'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as repository from '../aws/repository'\nimport * as tunnel from '../cloudflare/tunnel'\nimport * as config from '../config'\n\nconst identifier = 'cloudflared'\n\nconst cloudflaredConfig = pulumi.interpolate `\ntunnel: ${tunnel.k8sTunnel.id}\ncredentials-file: /var/secrets/cloudflared/credentials.json\nmetrics: 0.0.0.0:2000\nno-autoupdate: true\ningress:\n - hostname: ${config.andrewmeierDotDevDomain}\n service: http://traefik.kube-system\n - hostname: '*.${config.andrewmeierDotDevDomain}'\n service: http://traefik.kube-system\n - service: http_status:404\n`\n\nconst cloudflaredSecret = new k8s.core.v1.Secret(identifier, {\n metadata: { namespace: 'kube-system' },\n stringData: {\n 'config.yaml': cloudflaredConfig,\n 'credentials.json': tunnel.k8sTunnelCredentials\n }\n})\n\nconst registrySecret = new k8s.core.v1.Secret(`${identifier}-registry`, {\n metadata: { namespace: 'kube-system' },\n type: 'kubernetes.io/dockerconfigjson',\n stringData: {\n '.dockerconfigjson': repository.cloudflaredDockerconfigjson\n }\n})\n\nconst labels = { 'app.kubernetes.io/name': identifier }\n\nnew k8s.apps.v1.Deployment(identifier, {\n metadata: {\n name: identifier,\n namespace: 'kube-system'\n },\n spec: {\n replicas: 1,\n selector: { matchLabels: labels },\n template: {\n metadata: {\n labels: labels,\n annotations: {\n 'prometheus.io/scrape': 'true',\n 'prometheus.io/path': '/metrics',\n 'prometheus.io/port': '2000',\n }\n },\n spec: {\n imagePullSecrets: [{\n name: registrySecret.metadata.name\n }],\n containers: [{\n name: identifier,\n image: repository.cloudflaredImageName,\n args: [\n 'tunnel',\n '--config', '/var/secrets/cloudflared/config.yaml',\n 'run'\n ],\n livenessProbe: {\n httpGet: { path: '/ready', port: 2000 },\n failureThreshold: 1,\n initialDelaySeconds: 10,\n periodSeconds: 10\n },\n volumeMounts: [{\n name: 'cloudflared',\n mountPath: '/var/secrets/cloudflared',\n readOnly: true\n }]\n }],\n volumes: [{\n name: 'cloudflared',\n secret: { secretName: cloudflaredSecret.metadata.name }\n }],\n nodeSelector: { 'kubernetes.io/arch': 'arm64' }\n } \n }\n }\n})" - } - } - } - div { - span { text "This will allow me to use the " } - - a { - _href "https://doc.traefik.io/traefik/routing/providers/kubernetes-crd/#kind-ingressroute" - span { text "Traefik IngressRoute" } - } - - span { text " to direct traffic to services running in the cluster." } - } - h4 { - _class "mt-4" - _id "442c43c7c180479c8ce304ba110de961" - span { text "Monitoring " } - } - div { - span { - text - "I use Prometheus for monitoring applications. It is easy to expose metrics endpoints using client libraries such as " - } - - a { - _href "https://github.com/prometheus-net/prometheus-net" - span { text "prometheus-net" } - } - - span { - text - ". Then you just need to annotate the pods and Prometheus will take care of scraping each pod. I used " - } - - a { - _href "https://helm.sh/" - span { text "Helm" } - } - - span { text " as part of the " } - - a { - _href "https://www.pulumi.com/registry/packages/kubernetes/" - span { text "Pulumi Kubernetes package" } - } - - span { text " to deploy." } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as k8s from '@pulumi/kubernetes'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as namespace from './namespace'\n\nconst chart = new k8s.helm.v3.Chart('prometheus', {\n chart: 'prometheus',\n version: '15.5.3',\n fetchOpts: { repo: 'https://prometheus-community.github.io/helm-charts' },\n namespace: namespace.monitoringNamespace,\n values: {\n serviceAccounts: {\n alertmanager: { create: false },\n pushgateway: { create: false }\n },\n alertmanager: { enabled: false },\n pushgateway: { enabled: false }\n }\n})\n\nconst internalHost =\n pulumi.all([chart, namespace.monitoringNamespace]).apply(([chart, namespace]) => {\n const meta = chart.getResourceProperty('v1/Service', namespace, 'prometheus-server', 'metadata')\n return pulumi.interpolate `${meta.name}.${meta.namespace}.svc.cluster.local`\n })\n\nconst internalPort =\n pulumi.all([chart, namespace.monitoringNamespace]).apply(([chart, namespace]) => {\n const spec = chart.getResourceProperty('v1/Service', namespace, 'prometheus-server', 'spec')\n return spec.ports[0].port\n })\n\nexport const internalUrl = pulumi.interpolate `http://${internalHost}:${internalPort}`" - } - } - } - div { - span { - text - "I use Promtail and Loki to aggregate the logs from all the applications. Promtail takes care of scraping the pod logs and sending to Loki in the format it expects. Loki is nice as it integrates with Grafana and uses the same query structure as Prometheus. I also used Helm to deploy Loki and Promtail. You can see the " - } - - a { - _href "https://github.com/ameier38/infrastructure/tree/main/4-cluster-services" - span { text "rest of the code on GitHub" } - } - - span { text "." } - } - div { - span { text "Again, like with the previous stacks, I can deploy the stack by assuming the " } - - code { - _class "language-none" - text "infrastructure-deployer" - } - - span { - text - " role and using the Pulumi CLI. I also need to connect to the tunnel so that the stack can connect to the Kubernetes API." - } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "$env:AWS_PROFILE=\"infrastructure-deployer\"\nstart-ameier-k8s-tunnel\npulumi up" } - } - } - h3 { - _class "mt-6" - _id "23ec3e2370f34b5eb33d4dd87df8d901" - span { text "App Services Stack" } - } - div { - span { - text - "This stack is used for any application specific resources such as databases and DNS records. In my case I do not use any databases at the moment so it is just used for DNS and configuring access to internal services. Again, I first created the stack using the Pulumi CLI." - } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - - span { - text - "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi new aws-typescript --secrets-provider \"awskms://{pulumi key id}?region=us-east-1\"" - } - } - } - div { - span { - text - "Next I created the DNS records for the applications which all point to the hostname of the tunnel created in the Cluster Services stack (this tunnel routes requests to Traefik)." - } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as cloudflare from '@pulumi/cloudflare'\nimport * as config from '../config'\n\nexport const traefikRecord = new cloudflare.Record('traefik.andrewmeier.dev', {\n zoneId: config.andrewmeierDotDevZoneId,\n name: 'traefik',\n type: 'CNAME',\n value: config.k8sTunnelHost,\n proxied: true\n})\n\nexport const whoamiRecord = new cloudflare.Record('whoami.andrewmeier.dev', {\n zoneId: config.andrewmeierDotDevZoneId,\n name: 'whoami',\n type: 'CNAME',\n value: config.k8sTunnelHost,\n proxied: true\n})\n\nexport const grafanaRecord = new cloudflare.Record('grafana.andrewmeier.dev', {\n zoneId: config.andrewmeierDotDevZoneId,\n name: 'grafana',\n type: 'CNAME',\n value: config.k8sTunnelHost,\n proxied: true\n})\n\nexport const andrewmeierRecord = new cloudflare.Record('andrewmeier.dev', {\n zoneId: config.andrewmeierDotDevZoneId,\n name: '@',\n type: 'CNAME',\n value: config.k8sTunnelHost,\n proxied: true\n})" - } - } - } - div { - span { text "Next I created " } - - a { - _href "https://developers.cloudflare.com/cloudflare-one/applications/" - span { text "Cloudflare Access Applications" } - } - - span { text " for each of the applications that I want to authenticate user access." } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as cloudflare from '@pulumi/cloudflare'\nimport * as record from './record'\nimport * as config from '../config'\n\nexport const traefik = new cloudflare.AccessApplication('traefik', {\n name: 'Traefik',\n domain: record.traefikRecord.hostname,\n allowedIdps: [ config.githubIdentityProviderId ],\n autoRedirectToIdentity: true,\n accountId: cloudflare.config.accountId,\n logoUrl: config.logoUrl,\n httpOnlyCookieAttribute: false\n})\n\nexport const whoami = new cloudflare.AccessApplication('whoami', {\n name: 'Whoami',\n domain: record.whoamiRecord.hostname,\n allowedIdps: [ config.githubIdentityProviderId ],\n autoRedirectToIdentity: true,\n accountId: cloudflare.config.accountId,\n logoUrl: config.logoUrl,\n httpOnlyCookieAttribute: false\n})\n\nexport const grafana = new cloudflare.AccessApplication('grafana', {\n name: 'Grafana',\n domain: record.grafanaRecord.hostname,\n allowedIdps: [ config.githubIdentityProviderId ],\n autoRedirectToIdentity: true,\n accountId: cloudflare.config.accountId,\n logoUrl: config.logoUrl,\n httpOnlyCookieAttribute: false\n})" - } - } - } - div { - span { text "Lastly I created " } - - a { - _href "https://developers.cloudflare.com/cloudflare-one/policies/access/" - span { text "Cloudflare Access Policies" } - } - - span { text " to authorize my email." } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as cloudflare from '@pulumi/cloudflare'\nimport * as app from './accessApplication'\nimport * as config from '../config'\n\nnew cloudflare.AccessPolicy('traefik-user-access', {\n name: 'Traefik User Access',\n precedence: 1,\n accountId: cloudflare.config.accountId,\n applicationId: app.traefik.id,\n decision: 'allow',\n includes: [{\n emails: [ config.email ]\n }]\n})\n\nnew cloudflare.AccessPolicy('whoami-user-access', {\n name: 'Whoami User Access',\n precedence: 1,\n accountId: cloudflare.config.accountId,\n applicationId: app.whoami.id,\n decision: 'allow',\n includes: [{\n emails: [ config.email ]\n }]\n})\n\nnew cloudflare.AccessPolicy('grafana-user-access', {\n name: 'Grafana User Access',\n precedence: 1,\n accountId: cloudflare.config.accountId,\n applicationId: app.grafana.id,\n decision: 'allow',\n includes: [{\n emails: [ config.email ]\n }]\n})" - } - } - } - div { - span { text "As before, I assume the " } - - code { - _class "language-none" - text "infrastructure-deployer" - } - - span { text " role and deploy the stack using the Pulumi CLI." } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi up" } - } - } - h3 { - _class "mt-6" - _id "246a7816de444b889fd4e169e6017b31" - span { text "Managed Apps Stack" } - } - div { - span { text "This stack is used for any 3rd party applications that I want to deploy. I am currently using " } - - a { - _href "https://grafana.com/" - span { text "Grafana" } - } - - span { text " to visualize logs and metrics and " } - - a { - _href "https://github.com/traefik/whoami" - span { text "whoami" } - } - - span { text " to debug routing and requests. I also expose the " } - - a { - _href "https://doc.traefik.io/traefik/operations/dashboard/" - span { text "Traefik Dashboard" } - } - - span { text " in this stack. As before, I first created the stack using the Pulumi CLI." } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - - span { - text - "$env:AWS_PROFILE=\"infrastructure-deployer\"\npulumi new aws-typescript --secrets-provider \"awskms://{pulumi key id}?region=us-east-1\"" - } - } - } - div { - span { text "I also need to add the kubeconfig file since I will need to connect to the Kubernetes cluster." } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "cat ~/.kube/kubeconfig | pulumi config set --secret kubernetes:kubeconfig" } - } - } - div { - span { - text - "Next I created the Grafana resources. I use Helm again to deploy the Grafana application and use the " - } - - a { - _href "https://doc.traefik.io/traefik/routing/providers/kubernetes-crd/#kind-ingressroute" - span { text "Traefik IngressRoute CRD" } - } - - span { text " to route any requests to " } - - code { - _class "language-none" - text "grafana.andrewmeier.dev" - } - - span { text " to the Grafana service." } - } - pre { - _class "language-typescript" - - code { - _class "language-typescript" - - span { - text - "import * as k8s from '@pulumi/kubernetes'\nimport * as pulumi from '@pulumi/pulumi'\nimport * as random from '@pulumi/random'\nimport * as config from '../config'\n\nconst identifier = 'grafana'\n\nconst rawAdminPassword = new random.RandomPassword('admin-password', {\n length: 20\n})\n\nexport const adminPassword = rawAdminPassword.result\n\nconst secret = new k8s.core.v1.Secret(identifier, {\n metadata: { namespace: config.monitoringNamespace},\n stringData: {\n user: 'admin',\n password: adminPassword\n }\n})\n\nconst chart = new k8s.helm.v3.Chart(identifier, {\n chart: 'grafana',\n version: '6.24.1',\n fetchOpts: { repo: 'https://grafana.github.io/helm-charts' },\n namespace: config.monitoringNamespace,\n values: {\n // Use old version to provision notifiers\n image: { tag: '8.2.7' },\n testFramework: { enabled: false },\n persistence: {\n inMemory: { enabled: true }\n },\n admin: {\n existingSecret: secret.metadata.name,\n userKey: 'user',\n passwordKey: 'password'\n },\n 'grafana.ini': {\n server: {\n root_url: pulumi.interpolate `https://${config.grafanaHost}`,\n },\n smtp: {\n enabled: true,\n host: 'email-smtp.us-east-1.amazonaws.com:587',\n user: config.smtpUserAccessKeyId,\n password: config.smtpUserSmtpPassword,\n from_address: '" - - text "grafana@andrewmeier.dev" - - text - "'\n },\n users: {\n auto_assign_org_role: 'Admin'\n },\n 'auth.proxy': {\n enabled: true,\n header_name: 'Cf-Access-Authenticated-User-Email',\n header_property: 'email'\n }\n },\n datasources: {\n 'datasources.yaml': {\n apiVersion: 1,\n datasources: [\n {\n name: 'Prometheus',\n type: 'prometheus',\n url: config.prometheusUrl,\n access: 'proxy',\n isDefault: true\n },\n {\n name: 'Loki',\n type: 'loki',\n url: config.lokiUrl,\n access: 'proxy',\n jsonData: { maxLines: 1000 }\n }\n ]\n }\n },\n notifiers: {\n 'notifiers.yaml': {\n notifiers: [\n {\n name: 'email-notifier',\n type: 'email',\n uid: 'email1',\n org_id: 1,\n is_default: true,\n settings: { addresses: config.email }\n }\n ]\n }\n }\n }\n})\n\nconst internalPort =\n pulumi.all([chart, config.monitoringNamespace]).apply(([chart, namespace]) => {\n const spec = chart.getResourceProperty('v1/Service', namespace, identifier, 'spec')\n return spec.ports[0].port\n })\n\nnew k8s.apiextensions.CustomResource(`${identifier}-route`, {\n apiVersion: 'traefik.containo.us/v1alpha1',\n kind: 'IngressRoute',\n metadata: { namespace: config.monitoringNamespace },\n spec: {\n entryPoints: ['web'],\n routes: [{\n kind: 'Rule',\n match: pulumi.interpolate `Host(\\`${config.grafanaHost}\\`)`,\n services: [{\n kind: 'Service',\n name: identifier,\n namespace: config.monitoringNamespace,\n port: internalPort\n }]\n }]\n }\n})" - } - } - } - div { - span { - text - "Grafana plays nicely with proxy authentication and I can configure it to automatically log in the user by specifying that it should use the " - } - - code { - _class "language-none" - text "Cf-Access-Authenticated-User-Email" - } - - span { text " header which Cloudflare Access will set after authenticating the user." } - } - div { - span { text "Next I created the resources for whoami and the Traefik dashboard. You can see the " } - - a { - _href "https://github.com/ameier38/infrastructure/tree/main/5-app-services" - span { text "rest of this code on GitHub" } - } - - span { text "." } - } - div { - span { text "I can deploy the stack by assuming the " } - - code { - _class "language-none" - text "infrastructure-deployer" - } - - span { text " role, connecting to the Kubernetes API tunnel, and using the Pulumi CLI." } - } - pre { - _class "language-powershell" - - code { - _class "language-powershell" - span { text "$env:AWS_PROFILE=\"infrastructure-deployer\"\nstart-ameier-k8s-tunnel\npulumi up" } - } - } - h3 { - _class "mt-6" - _id "2ac83008618d4529be74301b94f49b13" - span { text "Apps Stacks" } - } - div { - span { - text - "Lastly, each app gets its own stack which is used to deploy the application into the cluster. For instance, this blog has its own stack which you can " - } - - a { - _href "https://github.com/ameier38/andrewmeier.dev/tree/main/pulumi" - span { text "see on GitHub" } - } - - span { text ". The main difference with the blog stack is that it has a separate " } - - code { - _class "language-none" - text "blog-deployer" - } - - span { text " role which can be assumed by GitHub actions from the blog repo." } - } - h2 { - _class "mt-8" - _id "96bd7ae28beb485bb4aa482490ff5536" - span { text "CI/CD" } - } - div { - span { - text - "In order to deploy the stacks that connect to the Kubernetes cluster using GitHub, I need to set up GitHub actions to connect to the Kubernetes API tunnel before running the Pulumi CLI. Because I can’t use the browser to log in, this is where I use the service token that I created in the Managed Infrastructure stack. In my GitHub workflow file, I added a step which connects to the cloudflared tunnel using the managed Docker image." - } - } - pre { - _class "language-yaml" - - code { - _class "language-yaml" - - span { - text - "- name: Start Tunnel\n run: |\n docker run \\\n -d \\\n -p 1234:1234 \\\n cloudflare/cloudflared:2022.3.2 \\\n access tcp \\\n --hostname=k8s.andrewmeier.dev \\\n --url=0.0.0.0:1234 \\\n --service-token-id=${{ secrets.tunnel-token-id }} \\\n --service-token-secret=${{ secrets.tunnel-token-secret }}" - } - } - } - div { - span { text "Also, in order to assume the " } - - code { - _class "language-none" - text "infrastructur-deployer" - } - - span { text " AWS role I am using GitHub as a trusted OIDC provider to assume the role with the permission " } - - code { - _class "language-none" - text "AssumeRoleWithWebIdentity" - } - - span { text ". I configured this in the Identity stack. I can then use the " } - - code { - _class "language-none" - text "aws-actions/configure-aws-credentials" - } - - span { text " GitHub action to assume the role." } - } - pre { - _class "language-yaml" - - code { - _class "language-yaml" - - span { - text - "- name: Configure AWS Credentials\n uses: aws-actions/configure-aws-credentials@v1\n with:\n aws-region: us-east-1\n role-to-assume: arn:aws:iam::400689721046:role/infrastructure-deployer\n role-session-name: github" - } - } - } - div { - span { text "You can see all the workflows in " } - - a { - _href "https://github.com/ameier38/infrastructure/tree/main/.github/workflows" - span { text "the GitHub repo" } - } - - span { text "." } - } - h2 { - _class "mt-8" - _id "f18fa32e5c574e258ca8797fda272420" - span { text "Conclusion" } - } - div { - span { - text - "In this post I covered how I created my personal “cloud” that I use to run my apps and services. It has a lot of pieces but once it is set up it rarely changes. The other nice thing is that it only requires the up front cost of purchasing the equipment. The ongoing cost is near zero as I am using the free tiers of AWS and Cloudflare." - } - } - div { - span { - text - "I have also found that this structure scales nicely and I use effectively the same setup for my work environments. As more people are contributing to the infrastructure, having separate stacks gives me confidence that deployment errors will be less likely to happen." - } + text + " because I want explicit control over node pools, Kubernetes resources, and workload placement. A primary node pool handles the regular baseline and can scale with demand. A secondary pool can scale down to zero and provides additional capacity without keeping every possible node running all the time. Google manages the control plane, upgrades follow the regular release channel, and Workload Identity is enabled at the cluster level." } - div { span { text "I hope you find this useful!" } } ] + paragraph + "Artifact Registry stores application container images close to the cluster. Application pipelines build immutable images, push them to the shared registry, and give Kubernetes the resulting image reference. This makes the deployed artifact explicit and keeps image production in the same reviewed workflow as the deployment that consumes it." + subheading "availability" "Availability profile" + paragraph + "The platform is intentionally zonal. The GKE cluster, Cloud SQL instance, and primary workload placement favor one zone instead of paying for regional redundancy. That is an acceptable trade for my current applications: a zonal outage can interrupt service, but the lower steady-state cost lets me run a proper managed platform continuously. Workload replicas, health probes, backups, and reproducible infrastructure reduce other failure modes without pretending that the system is multi-region." + heading "kubernetes" "Kubernetes as the workload boundary" + paragraph + "Kubernetes is the common execution layer, not the place where every concern is implemented. Stateless web applications, agents, data workloads, tunnel connectors, Seq, and the Snowplow processing components run there. PostgreSQL, Redis, object storage, secrets, Pub/Sub, and BigQuery remain managed Google Cloud services outside the cluster." + paragraph + "Each product or data workload receives its own namespace. The platform applies default CPU and memory requests, namespace-level limits, and role bindings that grant a product deployer administrative access only inside its namespace. A deployment for one product should not need cluster-wide credentials or permission to change another product's workloads." + paragraph + "Pods use non-root security contexts where the image supports them, drop unnecessary Linux capabilities, declare resource requests and limits, and expose liveness and readiness probes. These are small controls, but they make scheduling and failure recovery predictable on a compact cluster. They also give a deployment pipeline an objective signal that a rollout is ready before post-deployment checks begin." + paragraph + "The shared infrastructure project owns cluster-wide boundaries such as namespaces and RBAC. Application projects own their Deployments, Services, configuration, and product-specific service accounts. That division keeps the platform reusable while allowing each application to evolve independently." + heading "edge" "Cloudflare at the edge" + p { + text + "Cloudflare provides DNS, traffic filtering, access control, and the connection from the public edge to private services. A " + + link "https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/" "Cloudflare Tunnel" + + text + " is initiated outbound by cloudflared, so the origin does not require a public IP address or an inbound firewall opening. Public DNS records point to tunnel hostnames rather than directly to the cluster." + } + paragraph + "The platform runs a shared tunnel connector for platform services. Applications can also own a dedicated connector when that creates a cleaner lifecycle and access boundary. The high-level pattern remains the same: Cloudflare accepts the request, applies edge policy, and sends it through an authenticated tunnel to a ClusterIP service. There is no public Kubernetes ingress load balancer in the request path." + p { + text "Administrative applications are protected with " + link "https://developers.cloudflare.com/cloudflare-one/access-controls/" "Cloudflare Access" + + text + ". Interactive access uses Google Workspace as the identity provider, while service tokens cover narrowly defined machine-to-machine routes. Public endpoints, such as websites and analytics collection, use explicit bypass policies rather than being accidentally exposed by a broad rule." + } + paragraph + "Customer identity is a separate concern. Auth0 provides the shared customer-facing tenant, branded login experience, and custom authentication domain. Cloudflare Access answers “who can reach this administrative service?”; Auth0 answers “who is the customer using this product?” Keeping those roles distinct prevents edge administration policy from leaking into product authentication." + heading "data" "Data, storage, and secrets" + p { + text "The transactional data layer is a private " + link "https://cloud.google.com/sql/docs/postgres" "Cloud SQL for PostgreSQL" + + text + " instance. It has no public IPv4 address, requires encrypted connections, and exposes its private address only inside the VPC. A platform bootstrap job creates logical databases and restricted application roles so products do not share one superuser credential." + } + p { + text + "Automated backups, point-in-time recovery, and deletion protection cover the most important failure paths. " + + link "https://cloud.google.com/sql/docs/postgres/backup-recovery/pitr" "Point-in-time recovery" + + text + " is particularly useful because many database incidents are logical mistakes rather than disk failures. Protection also means destructive infrastructure changes must be staged deliberately instead of disappearing in the same update that removes a resource from code." + } + p { + text "A private " + link "https://cloud.google.com/memorystore/docs/redis/redis-overview" "Memorystore for Redis" + + text + " instance supports caching and short-lived application state. It uses the BASIC tier rather than a replicated high-availability tier. Redis is treated as recoverable infrastructure; PostgreSQL and object storage remain the durable systems of record." + } + paragraph + "Cloud Storage serves two different purposes. Private buckets hold platform data that should be reachable only by designated service accounts. The public assets bucket serves immutable website assets through a custom domain. Prefix-scoped IAM lets a publisher manage one site's files without gaining write access to every object in the bucket." + p { + text + "Secret Manager holds runtime credentials and integration secrets. Pulumi creates the secret containers and IAM policies, while values are populated separately so plaintext never appears in the infrastructure source. " + + link "https://www.pulumi.com/docs/esc/" "Pulumi ESC" + + text + " retrieves the versions at environment-open time and passes them to the stack as secret Pulumi configuration or process environment values." + } + heading "observability" "Observability and analytics" + p { + strong { text "Seq" } + + text + " is the shared destination for structured application logs and traces. Applications receive the internal ingestion endpoint through their environment and send machine-readable events rather than unstructured log lines. The Seq interface is routed through the platform tunnel and protected with Cloudflare Access, while ingestion uses a scoped API key." + } + p { + text + "Centralized events make it possible to follow a request across services, search by structured properties, and inspect production errors without opening a shell in a pod. Kubernetes logs are still useful for low-level diagnosis, but " + + link "https://docs.datalust.co/docs" "Seq" + text " is the normal starting point because it preserves the application context attached to each event." + } + p { + strong { text "Snowplow" } + + text + " provides the behavioral analytics pipeline. Collectors in GKE receive website events and publish good and bad records to Pub/Sub. An enrichment workload adds campaign attribution and referrer context, then a loader writes validated events to BigQuery in the data project. Failed records follow separate topics instead of silently disappearing." + } + p { + text "This follows Snowplow's " + + link + "https://docs.snowplow.io/docs/api-reference/loaders-storage-targets/bigquery-loader/" + "BigQuery loading architecture" + + text + ": collection and validation happen as a stream, while BigQuery becomes the durable analytical store. Separate Kubernetes service accounts give the collector, enricher, and loader only the Pub/Sub or BigQuery access each component requires." + } + heading "environments" "Pulumi ESC as the configuration layer" + paragraph + "Infrastructure outputs are useful only when downstream stacks can consume them safely. The environments repository defines Pulumi ESC environments as infrastructure code and composes the platform into product-specific views. Shared fragments provide Cloudflare and platform values; product environments add their own identity, secrets, namespace, and application configuration." + paragraph + "An environment can open outputs from the identity and infrastructure stacks, exchange its OIDC identity for a short-lived Google token, retrieve selected Secret Manager values, and construct files such as a kubeconfig. It then exposes only the Pulumi configuration and environment variables needed by the target stack." + paragraph + "This removes a large class of repository secrets and copied configuration. A product pipeline does not need to know the cluster endpoint, registry location, database address, Cloudflare account identifiers, or runtime secret values in advance. It opens its environment and receives a coherent snapshot assembled from the stacks that own those values. Secret values remain marked secret as they move through ESC and Pulumi." + paragraph + "The environment graph also documents dependency order. Identity outputs feed the platform environment; platform outputs feed product environments; product stacks consume those environments. When a shared output changes, previews show the effect where it will be used rather than relying on a person to update several independent configuration files." + heading "delivery" "Application delivery" + paragraph + "Application repositories own their final deployment layer at a high level. A typical stack builds a container, pushes it to Artifact Registry, deploys it to the assigned namespace, creates a ClusterIP service, and connects the appropriate Cloudflare hostname. Applications can add product-specific storage, customer identity clients, WAF rules, or scheduled workloads without placing those resources in the shared platform project." + paragraph + "The platform supplies boundaries and capabilities rather than one universal application chart. That keeps deployment code close to the application version it runs. It also means a product change can update its image and Kubernetes resources without previewing unrelated shared databases, IAM grants, or cluster services." + paragraph + "Pull requests run application tests and a Pulumi preview. After merge, GitHub Actions authenticates to Pulumi, opens the stack's ESC environment, builds the reviewed source, and performs the update. Health probes gate the Kubernetes rollout, and applications can run browser tests or API checks against the deployed service before the workflow is considered complete." + p { + text "I normally do not run " + inlineCode "pulumi up" + + text + " from my workstation. Local checks and previews are useful, but the main-branch workflow is the consistent deployment path. It creates an audit trail linking source, preview, review, update, and post-deployment evidence." + } + heading "operations" "Operating the platform" + paragraph + "Most routine operation is deliberately uneventful. GKE and the managed data services handle infrastructure health, Kubernetes restarts unhealthy containers, Cloudflare maintains edge connectivity, and deployment workflows reconcile code with the live resources. My work is usually reviewing a preview, inspecting Seq, checking a rollout, or tracing a failed event through Pub/Sub and BigQuery." + paragraph + "Changes to shared resources move in dependency order. Identity changes land before infrastructure that consumes a new principal. Infrastructure outputs land before environments reference them. Environment changes land before an application expects the new configuration. Pull request previews make that sequence visible and keep a single large update from hiding several independent assumptions." + paragraph + "Protected resources require extra care. For example, removing a protected database or secret is intentionally a multi-step process: first change the protection setting and deploy that state, then remove the resource in a later reviewed update. The inconvenience is useful because it prevents a routine refactor from becoming an immediate destructive operation." + paragraph + "The source of truth is the deployed TypeScript and ESC configuration plus the CI workflows that apply it. Architecture articles and READMEs are explanations, not executable truth, so they need to be kept current as the platform changes." + heading "tradeoffs" "Intentional tradeoffs" + paragraph + "This platform optimizes for a solo operator running several real services, not for zero downtime under every regional failure. A zonal GKE cluster and Cloud SQL instance can both be unavailable during a zone-level incident. BASIC Redis has no replica to promote. A shared cluster and database instance also create more shared blast radius than fully independent product platforms." + paragraph + "I accept those risks because regional clusters, highly available Redis, and separate database instances for every small product would materially increase the monthly baseline and operational surface. Durable data receives backups, point-in-time recovery, private networking, and deletion protection. Recoverable services are recreated from Pulumi. Applications declare health checks and resource bounds. That is the reliability level the current workloads justify." + paragraph + "The architecture also depends heavily on Google Cloud, Cloudflare, Pulumi, and Kubernetes. That is intentional. Portability is less valuable to me than having one coherent system with managed operations, explicit identity, private networking, and repeatable delivery. The source code describes how the pieces fit together, but I am not trying to make every service interchangeable." + paragraph + "The measure of success is straightforward: I can add an application by defining its identity and namespace, composing an environment, and deploying a product-owned stack. It receives secure configuration, private data access, logs, analytics, and an edge route without rebuilding the platform. That is enough infrastructure to support the work while remaining small enough for one person to understand." ] let article = Article.create metadata (ArticlePage.primary metadata content) diff --git a/app/src/Tests/ArticleCatalogTests.fs b/app/src/Tests/ArticleCatalogTests.fs index 62abbe0..c498e36 100644 --- a/app/src/Tests/ArticleCatalogTests.fs +++ b/app/src/Tests/ArticleCatalogTests.fs @@ -13,7 +13,7 @@ let articleCatalogTests = Expect.equal permalinks - [ "dev-env"; "fsharp-semantic-kernel"; "personal-infrastructure" ] + [ "personal-infrastructure"; "dev-env"; "fsharp-semantic-kernel" ] "Expected the published article catalog" } @@ -53,10 +53,19 @@ let articleCatalogTests = Expect.stringContains semanticKernel "Semantic Kernel SDK" "Expected Semantic Kernel content" - Expect.stringContains - infrastructure - "My current infrastructure runs on 3 Raspberry Pis" - "Expected infrastructure content" + for topic in + [ "Google Kubernetes Engine" + "Pulumi ESC" + "Cloudflare Tunnel" + "Seq" + "Snowplow" + "zonal" ] do + Expect.stringContains infrastructure topic $"Expected infrastructure content for {topic}" + + for obsoleteTopic in [ "Raspberry Pi"; "Penpot"; "Amazon Web Services" ] do + Expect.isFalse + (infrastructure.Contains obsoleteTopic) + $"Expected obsolete infrastructure content for {obsoleteTopic} to be removed" for tool in [ "Homebrew" diff --git a/e2e/tests/routes.spec.ts b/e2e/tests/routes.spec.ts index 864ca13..c434423 100644 --- a/e2e/tests/routes.spec.ts +++ b/e2e/tests/routes.spec.ts @@ -50,7 +50,7 @@ test('development environment article presents the current setup', async ({ page await expect(page.locator('article > div')).toHaveCSS('padding-bottom', '32px') }) -test('article search, detail content, and GCS images are deterministic', async ({ page }) => { +test('article search and source-controlled detail content are deterministic', async ({ page }) => { await page.goto('/articles?search=semantic', { waitUntil: 'domcontentloaded' }) await expect(page.getByRole('heading', { name: 'F# Semantic Kernel', exact: true })).toBeVisible() await expect(page.getByRole('link', { name: 'Clear search' })).toBeVisible() @@ -60,9 +60,12 @@ test('article search, detail content, and GCS images are deterministic', async ( await expect(page.getByRole('heading', { name: 'Personal Infrastructure', exact: true }).first()).toBeVisible() await expect(page.getByText('DevOps', { exact: true }).first()).toBeVisible() - const clusterImage = page.getByRole('img', { name: 'Three Raspberry Pi computers mounted in a home server rack' }) - await expect(clusterImage).toHaveAttribute('src', /^https:\/\/assets\.meiermade\.com\/andymeier\/articles\//) - await expect.poll(() => clusterImage.evaluate(image => (image as HTMLImageElement).naturalWidth)).toBeGreaterThan(0) + await expect(page.getByRole('heading', { name: 'The platform at a glance', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'Observability and analytics', exact: true })).toBeVisible() + await expect(page.getByText('Seq', { exact: true }).first()).toBeVisible() + await expect(page.getByText('Snowplow', { exact: true }).first()).toBeVisible() + await expect(page.getByText('Raspberry Pi', { exact: false })).toHaveCount(0) + await expect(page.getByText('Penpot', { exact: false })).toHaveCount(0) }) test('article filter disclosures support native keyboard selection', async ({ page }) => { From 4ca04a749302166f205ca93c28ec20812698de72 Mon Sep 17 00:00:00 2001 From: Andy Meier Date: Tue, 11 Aug 2026 11:41:30 -0400 Subject: [PATCH 6/8] Add infrastructure diagrams and examples --- THIRD_PARTY_NOTICES.md | 12 + app/src/App/input.css | 13 + .../Articles/Posts/PersonalInfrastructure.fs | 496 ++- app/src/App/src/Common/View.fs | 2 +- .../wwwroot/scripts/mermaid.11.16.0.min.js | 3587 +++++++++++++++++ app/src/Tests/ArticleCatalogTests.fs | 10 +- e2e/tests/routes.spec.ts | 26 +- 7 files changed, 3878 insertions(+), 268 deletions(-) create mode 100644 app/src/App/wwwroot/scripts/mermaid.11.16.0.min.js diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index f8839a2..9c75a23 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -14,6 +14,18 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## Mermaid 11.16.0 + +Source: https://github.com/mermaid-js/mermaid + +Copyright (c) 2014 - 2022 Knut Sveidqvist + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + ## PrismJS 1.29.0 Source: https://github.com/PrismJS/prism diff --git a/app/src/App/input.css b/app/src/App/input.css index 8797e57..c8ee887 100644 --- a/app/src/App/input.css +++ b/app/src/App/input.css @@ -13,3 +13,16 @@ .prose :not(pre) > code[class*="language-"] { overflow-wrap: anywhere; } + +.article-mermaid svg { + min-width: 52rem; + max-width: none; + height: auto; +} + +@media (min-width: 768px) { + .article-mermaid svg { + min-width: 0; + max-width: 100%; + } +} diff --git a/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs b/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs index 692f1b1..ee7923e 100644 --- a/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs +++ b/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs @@ -2,8 +2,10 @@ module App.Articles.Posts.PersonalInfrastructure open App.Articles open App.Articles.Shared +open App.Common.View open FSharp.ViewEngine open System +open type Datastar open type Html let private metadata = @@ -20,12 +22,6 @@ let private heading id' label = h2 { text label } -let private subheading id' label = h3 { - _class "mt-6 scroll-mt-24" - _id id' - text label -} - let private paragraph value = p { text value } let private inlineCode value = code { @@ -33,85 +29,196 @@ let private inlineCode value = code { text value } -let private link href label = a { - _href href - text label -} - -let private architectureStep number title description = li { - _class "relative border-l border-gray-200 pl-6 dark:border-gray-700 lg:border-l-0 lg:border-t lg:pl-0 lg:pt-6" +let private codeBlock language value = pre { + _class $"language-{language}" - span { - _class - "absolute -left-3 -top-1 inline-flex size-6 items-center justify-center rounded-full bg-emerald-600 text-xs font-semibold text-white ring-4 ring-white dark:bg-emerald-500 dark:ring-gray-900 lg:-top-3 lg:left-0" - - text number - } - - h3 { - _class "m-0 text-base font-semibold text-gray-900 dark:text-gray-100" - text title + code { + _class $"language-{language}" + span { text value } } +} - p { - _class "mt-2 text-sm leading-6 text-gray-600 dark:text-gray-400" - text description - } +let private link href label = a { + _href href + text label } -let private architectureOverview = section { +let private systemContextDiagram = + """flowchart LR + accTitle: Meier Made platform system context + accDescr: The developer and product users interact with the Meier Made Platform through GitHub Actions, Pulumi Cloud, Google Cloud, Cloudflare, and identity providers. + + operator["Developer and operator
(Person)
Builds and operates the platform"] + users["Product users and website visitors
(People)
Use hosted applications"] + platform["Meier Made Platform
(Software system)
Runs applications, data services, analytics, and operational tooling"]:::system + github["GitHub Actions
(External system)
Tests, previews, and deploys reviewed changes"] + pulumi["Pulumi Cloud and ESC
(External system)
Stores state and composes credentials and configuration"] + gcp["Google Cloud
(External system)
Runs compute, networking, databases, messaging, and storage"] + cloudflare["Cloudflare
(External system)
Provides DNS, edge policy, Access, and tunnels"] + identity["Auth0 and Google Workspace
(External systems)
Authenticate customers and administrators"] + + operator -->|Commits and reviews changes| github + operator -->|Operates services| platform + github -->|Runs Pulumi programs| pulumi + pulumi -->|Applies desired state| platform + users -->|Use applications through| cloudflare + cloudflare -->|Routes private-origin traffic| platform + platform -->|Runs on| gcp + platform -->|Delegates identity to| identity + + classDef system fill:#059669,stroke:#047857,color:#ffffff,stroke-width:3px""" + +let private systemContext = figure { _class - "not-prose my-10 rounded-2xl border border-gray-200 bg-gray-50/70 p-6 dark:border-gray-700 dark:bg-gray-800/40 sm:p-8" + "not-prose my-8 max-w-full overflow-x-auto rounded-xl border border-gray-200 bg-white p-4 dark:border-gray-700 dark:bg-gray-800 sm:p-6" - _ariaLabel "Infrastructure layers" + _attr ("data-system-context", "true") + _dataInit "renderMermaid($el)" div { - _class "max-w-2xl" - - p { - _class "text-sm font-semibold uppercase tracking-wider text-emerald-700 dark:text-emerald-400" - text "Dependency order" - } - - p { - _class "mt-2 text-lg font-semibold text-gray-900 dark:text-gray-100" - text "Identity establishes trust; each later layer consumes the outputs before it." - } - } - - ol { - _class "mt-8 grid grid-cols-1 gap-7 lg:grid-cols-4 lg:gap-6" - - architectureStep - "1" - "Platform identity" - "Projects, service accounts, IAM grants, groups, and workload-identity bindings." - - architectureStep - "2" - "Shared infrastructure" - "Networking, GKE, databases, storage, secrets, edge services, and shared workloads." - - architectureStep - "3" - "Environments" - "Pulumi ESC composes stack outputs, short-lived credentials, secrets, and configuration." - - architectureStep - "4" - "Applications" - "Product repositories build images and deploy workloads into their assigned boundaries." + _class "mermaid article-mermaid" + text systemContextDiagram } } +let private sharedRepositoryTree = + """meiermade/ +├── platform-identity/ +│ ├── index.ts +│ └── src/gcp/ +│ ├── project.ts +│ ├── serviceAccount.ts +│ ├── grant.ts +│ └── workloadIdentityPool.ts +│ +├── platform-infrastructure/ +│ ├── index.ts +│ └── src/ +│ ├── auth0/ +│ ├── cloudflare/ +│ ├── gcp/ +│ └── k8s/ +│ +└── environments/ + ├── index.ts + └── environments/ + ├── platform-identity/ + ├── platform-infrastructure/ + ├── shared/ + └── /""" + +let private applicationRepositoryTree = + """application/ +├── app/ +│ ├── src/App/ +│ ├── src/Build/ +│ ├── src/Tests/ +│ ├── Dockerfile +│ └── fake.sh +├── pulumi/ +│ ├── index.ts +│ └── src/ +│ ├── cloudflare/ +│ ├── docker/ +│ └── k8s/ +├── e2e/ +│ └── tests/ +└── .github/workflows/ + ├── preview.yml + └── deploy.yml""" + +let private gkeExample = + """const cluster = new gcp.container.Cluster('platform', { + location: `${region}-b`, + network: network.id, + subnetwork: subnet.id, + removeDefaultNodePool: true, + ipAllocationPolicy: { + clusterSecondaryRangeName: 'pods', + servicesSecondaryRangeName: 'services', + }, + privateClusterConfig: { + enablePrivateNodes: true, + enablePrivateEndpoint: false, + }, + releaseChannel: { channel: 'REGULAR' }, + workloadIdentityConfig: { + workloadPool: `${projectId}.svc.id.goog`, + }, +}) + +new gcp.container.NodePool('platform-primary', { + cluster: cluster.name, + autoscaling: { minNodeCount: 1, maxNodeCount: 4 }, + management: { autoRepair: true, autoUpgrade: true }, +})""" + +let private applicationDeploymentExample = + """const deployment = new k8s.apps.v1.Deployment('app', { + metadata: { namespace: config.k8s.namespace }, + spec: { + replicas: 1, + selector: { matchLabels: labels }, + template: { + metadata: { labels }, + spec: { + securityContext: { runAsNonRoot: true }, + containers: [{ + name: 'app', + image: image.imageRef, + resources: { + requests: { cpu: '25m', memory: '64Mi' }, + limits: { cpu: '250m', memory: '256Mi' }, + }, + livenessProbe: { + httpGet: { path: '/health', port: 5000 }, + }, + readinessProbe: { + httpGet: { path: '/health', port: 5000 }, + }, + }], + }, + }, + }, +})""" + +let private escExample = + """values: + stacks: + fn::open::pulumi-stacks: + stacks: + identity: + stack: platform-identity/prod + infrastructure: + stack: platform-infrastructure/prod + + gcpLogin: + fn::open::gcp-login: + project: ${stacks.identity.platformProjectNumber} + oidc: + workloadPoolId: ${stacks.identity.workloadIdentityPoolId} + providerId: pulumi + serviceAccount: ${stacks.identity.applicationDeployerEmail} + + environmentVariables: + GOOGLE_OAUTH_ACCESS_TOKEN: ${gcpLogin.accessToken} + + files: + KUBECONFIG: ${stacks.infrastructure.kubeconfig} + + pulumiConfig: + docker:registryUri: ${stacks.infrastructure.registryUri} + k8s:namespace: ${stacks.infrastructure.applicationNamespace} + seq:endpoint: ${stacks.infrastructure.seqIngestEndpoint}""" + let private content = [ p { text - "My personal infrastructure is a small cloud platform for the applications, data systems, automation, and internal tools I operate through Meier Made. It uses managed Google Cloud services for the parts that are expensive to operate well, Kubernetes as the common workload layer, Cloudflare as the edge, and Pulumi to keep the entire system reviewable as code." + "My personal infrastructure is a small cloud platform for the applications, data systems, automation, and internal tools I operate through Meier Made. Google Cloud provides managed compute and data services, Kubernetes is the common workload layer, Cloudflare is the edge, and Pulumi keeps the system reviewable as code." } p { text - "The goal is not to imitate a large enterprise platform. It is to create one dependable foundation that I can understand, change safely, and reuse across products without rebuilding identity, networking, databases, observability, and deployment automation every time. The result is deliberately modest in scale but complete enough to support real production workloads." + "The goal is one foundation that I can understand and reuse without rebuilding identity, networking, databases, observability, and deployment automation for every product. It is intentionally modest in scale, but it supports real production workloads and a repeatable path from a pull request to a running application." } nav { _ariaLabel "Table of contents" @@ -125,17 +232,13 @@ let private content = _class "list-disc" for id', label in - [ "principles", "Design principles" - "platform", "The platform at a glance" - "identity", "Identity before infrastructure" - "gcp", "The shared GCP foundation" - "kubernetes", "Kubernetes as the workload boundary" - "edge", "Cloudflare at the edge" - "data", "Data, storage, and secrets" + [ "context", "System context" + "repositories", "Repository layout" + "foundation", "Identity and GCP foundation" + "applications", "Application repositories" + "services", "Edge and data services" "observability", "Observability and analytics" - "environments", "Pulumi ESC as the configuration layer" - "delivery", "Application delivery" - "operations", "Operating the platform" + "environments", "Environments and delivery" "tradeoffs", "Intentional tradeoffs" ] do li { a { @@ -145,254 +248,117 @@ let private content = } } } - heading "principles" "Design principles" + heading "context" "System context" paragraph - "I use a few principles to decide whether a resource belongs in the platform and how it should be managed. They keep the architecture from becoming either a collection of one-off application stacks or an oversized internal platform." - ul { - _class "list-disc" - - li { - strong { text "Managed where operations matter." } - - text - " Google manages the Kubernetes control plane, PostgreSQL, Redis, object storage, secret storage, and the underlying availability and patching concerns for those services." - } - - li { - strong { text "One owner for every resource." } - - text - " Identity, shared infrastructure, environment composition, and application deployment have distinct Pulumi projects. A resource lives at the lowest layer that can own it without creating duplication." - } - - li { - strong { text "Short-lived identity by default." } - - text - " CI and supported workloads exchange identity for temporary credentials instead of carrying static cloud keys. Permissions are granted to purpose-specific service accounts rather than to one universal deployer." - } - - li { - strong { text "Private origins." } - - text - " Worker nodes and data services live on private networking. Cloudflare Tunnel carries application traffic to the cluster without requiring a public Kubernetes load balancer." - } - - li { - strong { text "Preview before update." } - - text - " Infrastructure changes arrive through pull requests with tests and Pulumi previews. The reviewed main branch, rather than a laptop, is the normal path to production." - } - } - heading "platform" "The platform at a glance" + "At the widest level, the Meier Made Platform is one software system. People reach its applications through Cloudflare, reviewed changes arrive through GitHub and Pulumi, its workloads run on Google Cloud, and identity is delegated to Google Workspace or Auth0. The diagram deliberately omits internal repositories and services; those belong at the next level of detail." + systemContext paragraph - "The platform is split into four layers. Three shared repositories define identity, common infrastructure, and environments. Product repositories own the final application-specific deployment. The separation is more important than the repository names: each layer has a narrow responsibility and exports only what the next layer needs." - architectureOverview + "Cloudflare Access protects administrative services with Google Workspace identity, while Auth0 handles customer-facing authentication. Pulumi Cloud stores stack state and Pulumi ESC composes deployment configuration. GitHub Actions is the normal execution environment for previews and updates, using short-lived credentials rather than a permanent Google Cloud key." + heading "repositories" "Repository layout" + paragraph + "The shared platform is split by ownership and deployment order. Identity must exist before shared infrastructure can use it, and both must exist before environments can expose their outputs to applications. Pulumi recommends this kind of layered structure when ownership and blast radius justify separating stacks." + codeBlock "none" sharedRepositoryTree p { - text "The dependency direction is intentional. " inlineCode "platform-identity" - text " establishes projects and principals. " + text " creates projects, service accounts, IAM grants, Google groups, and workload-identity bindings. " inlineCode "platform-infrastructure" - text " uses those principals to create shared resources and access boundaries. " + text " owns the VPC, GKE, data services, Cloudflare, Auth0, namespaces, Seq, and Snowplow. " inlineCode "environments" text - " turns outputs and secrets into usable configuration. Application stacks receive that configuration without needing to understand how the platform was assembled." + " defines the Pulumi ESC environments that join their outputs and secrets into configuration applications can consume." } paragraph - "Pulumi TypeScript is the common language across these layers. Stack outputs are contracts between projects, while Pulumi ESC is the composition point. This avoids copying values between repositories and makes a dependency visible where it is consumed." - heading "identity" "Identity before infrastructure" + "Each resource has one owner. Shared capabilities stay in the platform repositories; a product-specific route, image, deployment, or identity client stays with that product. This keeps routine application changes out of the larger shared-infrastructure preview." + heading "foundation" "Identity and GCP foundation" p { - text "The identity layer starts with the " + text "The identity layer follows the " link "https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy" "Google Cloud resource hierarchy" text - ". It creates the projects that separate platform, product, and data responsibilities, enables the APIs each project needs, and defines the service accounts used by automation and workloads. Project separation provides a useful IAM and billing boundary without requiring each application to recreate the entire platform." - } - paragraph - "I distinguish deployment identities from runtime identities. A deployer can change a specific Pulumi stack and its assigned Kubernetes namespace. A runtime account receives only the Google Cloud permissions the application needs after it starts. The GKE node account has its own infrastructure role and is not reused as an application identity." - p { - text "For CI, Pulumi ESC uses OpenID Connect to obtain short-lived Google credentials. " - - link - "https://www.pulumi.com/docs/esc/integrations/dynamic-login-credentials/gcp-login/" - "ESC's GCP login integration" - - text - " exchanges the environment's OIDC assertion for access to a designated deployer account. GitHub Actions needs permission to request an identity token, but it does not need a long-lived Google service-account key in the repository." - } - p { - text "Inside the cluster, " + ". Projects separate platform, product, and data permissions. Deployment service accounts are distinct from runtime accounts, and the GKE node identity is not reused by applications. Pulumi ESC obtains short-lived deployment credentials through OpenID Connect, while " link "https://cloud.google.com/kubernetes-engine/docs/concepts/workload-identity" "Workload Identity Federation for GKE" - text - " maps Kubernetes service accounts to narrowly scoped Google service accounts. Snowplow components, data workloads, and product services can therefore authenticate to Google APIs without mounting cloud keys into their pods. Some external integrations still impose their own credential constraints, but the normal platform path is keyless." + text " gives pods narrowly scoped Google identities without mounted keys." } paragraph - "There is one unavoidable bootstrap boundary: the identity stack cannot create the identity required to deploy itself. A pre-existing workload-identity pool and initial deployer establish that root of trust. After that bootstrap, the identity project manages the normal grants and exports consumed by the rest of the platform." - heading "gcp" "The shared GCP foundation" - p { - text - "The shared infrastructure runs in a custom Google Cloud VPC. Google Kubernetes Engine worker nodes use private addresses, and the application and service address ranges are allocated separately from the node subnet. A Cloud NAT gateway provides controlled outbound internet access with a stable egress address, while the cluster does not depend on public addresses for individual nodes." - } + "The shared infrastructure uses a custom VPC, private worker nodes, separate pod and service address ranges, and Cloud NAT for controlled outbound access. The important GKE settings are visible in this abridged version of the current Pulumi program:" + codeBlock "typescript" gkeExample + paragraph + "Google Kubernetes Engine (GKE) Standard mode provides explicit node-pool and workload control. The primary pool scales with demand, while a secondary pool can scale down to zero. Artifact Registry holds immutable application images close to the cluster, and namespaces plus Kubernetes RBAC limit each deployer to its assigned product or data boundary." + paragraph + "The platform is intentionally zonal. GKE and Cloud SQL favor one zone, and Redis uses the BASIC tier. A zone-level incident can interrupt service, but this keeps the continuous cost appropriate for the workloads. Backups, point-in-time recovery, health probes, deletion protection, and reproducible Pulumi programs address the failure modes that justify their cost today." + heading "applications" "Application repositories" p { - text "The cluster uses " - - link - "https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview#standard" - "GKE Standard mode" - text - " because I want explicit control over node pools, Kubernetes resources, and workload placement. A primary node pool handles the regular baseline and can scale with demand. A secondary pool can scale down to zero and provides additional capacity without keeping every possible node running all the time. Google manages the control plane, upgrades follow the regular release channel, and Workload Identity is enabled at the cluster level." + "Application code and its final infrastructure live together because the same owner changes both. A typical repository has this shape:" } + codeBlock "none" applicationRepositoryTree paragraph - "Artifact Registry stores application container images close to the cluster. Application pipelines build immutable images, push them to the shared registry, and give Kubernetes the resulting image reference. This makes the deployed artifact explicit and keeps image production in the same reviewed workflow as the deployment that consumes it." - subheading "availability" "Availability profile" - paragraph - "The platform is intentionally zonal. The GKE cluster, Cloud SQL instance, and primary workload placement favor one zone instead of paying for regional redundancy. That is an acceptable trade for my current applications: a zonal outage can interrupt service, but the lower steady-state cost lets me run a proper managed platform continuously. Workload replicas, health probes, backups, and reproducible infrastructure reduce other failure modes without pretending that the system is multi-region." - heading "kubernetes" "Kubernetes as the workload boundary" + "The application directory contains source, tests, the build, and its container definition. The Pulumi project builds and publishes that container, deploys it into the namespace supplied by the platform, and owns its Cloudflare hostname and product-specific resources. Playwright tests and GitHub workflows provide pre- and post-deployment evidence." paragraph - "Kubernetes is the common execution layer, not the place where every concern is implemented. Stateless web applications, agents, data workloads, tunnel connectors, Seq, and the Snowplow processing components run there. PostgreSQL, Redis, object storage, secrets, Pub/Sub, and BigQuery remain managed Google Cloud services outside the cluster." + "There is no universal application chart. Each stack declares the resources its workload actually needs, while following shared security and operational conventions. A representative deployment looks like this:" + codeBlock "typescript" applicationDeploymentExample paragraph - "Each product or data workload receives its own namespace. The platform applies default CPU and memory requests, namespace-level limits, and role bindings that grant a product deployer administrative access only inside its namespace. A deployment for one product should not need cluster-wide credentials or permission to change another product's workloads." - paragraph - "Pods use non-root security contexts where the image supports them, drop unnecessary Linux capabilities, declare resource requests and limits, and expose liveness and readiness probes. These are small controls, but they make scheduling and failure recovery predictable on a compact cluster. They also give a deployment pipeline an objective signal that a rollout is ready before post-deployment checks begin." - paragraph - "The shared infrastructure project owns cluster-wide boundaries such as namespaces and RBAC. Application projects own their Deployments, Services, configuration, and product-specific service accounts. That division keeps the platform reusable while allowing each application to evolve independently." - heading "edge" "Cloudflare at the edge" + "Production deployments also drop unnecessary Linux capabilities and may run an application-specific cloudflared connector beside the app. The essential contract is smaller: a reviewed image, a namespace boundary, realistic resource limits, and health endpoints Kubernetes can use during rollout." + heading "services" "Edge and data services" p { - text - "Cloudflare provides DNS, traffic filtering, access control, and the connection from the public edge to private services. A " - + text "A " link "https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/" "Cloudflare Tunnel" text - " is initiated outbound by cloudflared, so the origin does not require a public IP address or an inbound firewall opening. Public DNS records point to tunnel hostnames rather than directly to the cluster." + " is initiated outbound from the cluster, so application origins do not require public IP addresses or inbound firewall openings. Public DNS points to tunnel hostnames, and Cloudflare applies edge and Access policy before sending traffic to ClusterIP services. Platform services can share a connector; an application can own one when that gives it a cleaner lifecycle." } - paragraph - "The platform runs a shared tunnel connector for platform services. Applications can also own a dedicated connector when that creates a cleaner lifecycle and access boundary. The high-level pattern remains the same: Cloudflare accepts the request, applies edge policy, and sends it through an authenticated tunnel to a ClusterIP service. There is no public Kubernetes ingress load balancer in the request path." p { - text "Administrative applications are protected with " - link "https://developers.cloudflare.com/cloudflare-one/access-controls/" "Cloudflare Access" - - text - ". Interactive access uses Google Workspace as the identity provider, while service tokens cover narrowly defined machine-to-machine routes. Public endpoints, such as websites and analytics collection, use explicit bypass policies rather than being accidentally exposed by a broad rule." - } - paragraph - "Customer identity is a separate concern. Auth0 provides the shared customer-facing tenant, branded login experience, and custom authentication domain. Cloudflare Access answers “who can reach this administrative service?”; Auth0 answers “who is the customer using this product?” Keeping those roles distinct prevents edge administration policy from leaking into product authentication." - heading "data" "Data, storage, and secrets" - p { - text "The transactional data layer is a private " + text "The durable transactional store is private " link "https://cloud.google.com/sql/docs/postgres" "Cloud SQL for PostgreSQL" text - " instance. It has no public IPv4 address, requires encrypted connections, and exposes its private address only inside the VPC. A platform bootstrap job creates logical databases and restricted application roles so products do not share one superuser credential." - } - p { - text - "Automated backups, point-in-time recovery, and deletion protection cover the most important failure paths. " - - link "https://cloud.google.com/sql/docs/postgres/backup-recovery/pitr" "Point-in-time recovery" - - text - " is particularly useful because many database incidents are logical mistakes rather than disk failures. Protection also means destructive infrastructure changes must be staged deliberately instead of disappearing in the same update that removes a resource from code." - } - p { - text "A private " - link "https://cloud.google.com/memorystore/docs/redis/redis-overview" "Memorystore for Redis" - - text - " instance supports caching and short-lived application state. It uses the BASIC tier rather than a replicated high-availability tier. Redis is treated as recoverable infrastructure; PostgreSQL and object storage remain the durable systems of record." + ". A bootstrap job creates logical databases and restricted roles rather than distributing one superuser credential. Automated backups, point-in-time recovery, encrypted connections, and deletion protection cover durable state. Private Memorystore provides recoverable cache and short-lived state." } paragraph - "Cloud Storage serves two different purposes. Private buckets hold platform data that should be reachable only by designated service accounts. The public assets bucket serves immutable website assets through a custom domain. Prefix-scoped IAM lets a publisher manage one site's files without gaining write access to every object in the bucket." - p { - text - "Secret Manager holds runtime credentials and integration secrets. Pulumi creates the secret containers and IAM policies, while values are populated separately so plaintext never appears in the infrastructure source. " - - link "https://www.pulumi.com/docs/esc/" "Pulumi ESC" - - text - " retrieves the versions at environment-open time and passes them to the stack as secret Pulumi configuration or process environment values." - } + "Secret Manager holds runtime and integration secrets. Pulumi owns the secret containers and IAM policy, while values are populated separately. Cloud Storage provides private platform buckets and a public asset bucket whose prefix-scoped IAM lets each publisher manage only its own immutable files." heading "observability" "Observability and analytics" p { strong { text "Seq" } text - " is the shared destination for structured application logs and traces. Applications receive the internal ingestion endpoint through their environment and send machine-readable events rather than unstructured log lines. The Seq interface is routed through the platform tunnel and protected with Cloudflare Access, while ingestion uses a scoped API key." - } - p { - text - "Centralized events make it possible to follow a request across services, search by structured properties, and inspect production errors without opening a shell in a pod. Kubernetes logs are still useful for low-level diagnosis, but " - - link "https://docs.datalust.co/docs" "Seq" - text " is the normal starting point because it preserves the application context attached to each event." + " is the shared destination for structured logs and traces. Applications receive its internal ingestion endpoint through their environment, while the interface is routed through Cloudflare Access. Structured properties make Seq the normal starting point for production diagnosis; Kubernetes pod logs remain available for lower-level failures." } p { strong { text "Snowplow" } text - " provides the behavioral analytics pipeline. Collectors in GKE receive website events and publish good and bad records to Pub/Sub. An enrichment workload adds campaign attribution and referrer context, then a loader writes validated events to BigQuery in the data project. Failed records follow separate topics instead of silently disappearing." + " provides behavioral analytics. Collectors in GKE publish good and bad events to Pub/Sub, an enrichment workload adds campaign and referrer context, and the BigQuery loader writes validated events to the data project. Separate workload identities limit each component to the Pub/Sub or BigQuery operations it needs, and failed events follow explicit topics instead of disappearing." } + heading "environments" "Environments and delivery" p { - text "This follows Snowplow's " - - link - "https://docs.snowplow.io/docs/api-reference/loaders-storage-targets/bigquery-loader/" - "BigQuery loading architecture" + text "Pulumi ESC is the configuration boundary between shared infrastructure and an application. The " + link "https://www.pulumi.com/docs/esc/providers/pulumi-stacks/" "pulumi-stacks provider" text - ": collection and validation happen as a stream, while BigQuery becomes the durable analytical store. Separate Kubernetes service accounts give the collector, enricher, and loader only the Pub/Sub or BigQuery access each component requires." + " opens outputs at runtime, the GCP login provider exchanges OIDC identity for a short-lived token, and the environment maps only the required values into files, environment variables, and Pulumi configuration. An abridged application environment shows the complete flow:" } - heading "environments" "Pulumi ESC as the configuration layer" - paragraph - "Infrastructure outputs are useful only when downstream stacks can consume them safely. The environments repository defines Pulumi ESC environments as infrastructure code and composes the platform into product-specific views. Shared fragments provide Cloudflare and platform values; product environments add their own identity, secrets, namespace, and application configuration." - paragraph - "An environment can open outputs from the identity and infrastructure stacks, exchange its OIDC identity for a short-lived Google token, retrieve selected Secret Manager values, and construct files such as a kubeconfig. It then exposes only the Pulumi configuration and environment variables needed by the target stack." + codeBlock "yaml" escExample paragraph - "This removes a large class of repository secrets and copied configuration. A product pipeline does not need to know the cluster endpoint, registry location, database address, Cloudflare account identifiers, or runtime secret values in advance. It opens its environment and receives a coherent snapshot assembled from the stacks that own those values. Secret values remain marked secret as they move through ESC and Pulumi." + "The application pipeline does not need a copied registry address, cluster endpoint, kubeconfig, namespace, or Seq endpoint. It opens the environment and receives a coherent snapshot from the stacks that own those values. Secret Manager values use the same pattern and remain secret as they pass through ESC and Pulumi." paragraph - "The environment graph also documents dependency order. Identity outputs feed the platform environment; platform outputs feed product environments; product stacks consume those environments. When a shared output changes, previews show the effect where it will be used rather than relying on a person to update several independent configuration files." - heading "delivery" "Application delivery" - paragraph - "Application repositories own their final deployment layer at a high level. A typical stack builds a container, pushes it to Artifact Registry, deploys it to the assigned namespace, creates a ClusterIP service, and connects the appropriate Cloudflare hostname. Applications can add product-specific storage, customer identity clients, WAF rules, or scheduled workloads without placing those resources in the shared platform project." - paragraph - "The platform supplies boundaries and capabilities rather than one universal application chart. That keeps deployment code close to the application version it runs. It also means a product change can update its image and Kubernetes resources without previewing unrelated shared databases, IAM grants, or cluster services." - paragraph - "Pull requests run application tests and a Pulumi preview. After merge, GitHub Actions authenticates to Pulumi, opens the stack's ESC environment, builds the reviewed source, and performs the update. Health probes gate the Kubernetes rollout, and applications can run browser tests or API checks against the deployed service before the workflow is considered complete." - p { - text "I normally do not run " - inlineCode "pulumi up" - - text - " from my workstation. Local checks and previews are useful, but the main-branch workflow is the consistent deployment path. It creates an audit trail linking source, preview, review, update, and post-deployment evidence." - } - heading "operations" "Operating the platform" - paragraph - "Most routine operation is deliberately uneventful. GKE and the managed data services handle infrastructure health, Kubernetes restarts unhealthy containers, Cloudflare maintains edge connectivity, and deployment workflows reconcile code with the live resources. My work is usually reviewing a preview, inspecting Seq, checking a rollout, or tracing a failed event through Pub/Sub and BigQuery." - paragraph - "Changes to shared resources move in dependency order. Identity changes land before infrastructure that consumes a new principal. Infrastructure outputs land before environments reference them. Environment changes land before an application expects the new configuration. Pull request previews make that sequence visible and keep a single large update from hiding several independent assumptions." - paragraph - "Protected resources require extra care. For example, removing a protected database or secret is intentionally a multi-step process: first change the protection setting and deploy that state, then remove the resource in a later reviewed update. The inconvenience is useful because it prevents a routine refactor from becoming an immediate destructive operation." - paragraph - "The source of truth is the deployed TypeScript and ESC configuration plus the CI workflows that apply it. Architecture articles and READMEs are explanations, not executable truth, so they need to be kept current as the platform changes." + "Pull requests run tests and a Pulumi preview. After merge, GitHub Actions authenticates to Pulumi, opens the ESC environment, builds the reviewed image, and performs the update. Kubernetes readiness gates the rollout, and product repositories can run browser or API checks against the deployed service. I use local previews for review, but the main-branch workflow—not a workstation running pulumi up—is the normal production path." heading "tradeoffs" "Intentional tradeoffs" paragraph - "This platform optimizes for a solo operator running several real services, not for zero downtime under every regional failure. A zonal GKE cluster and Cloud SQL instance can both be unavailable during a zone-level incident. BASIC Redis has no replica to promote. A shared cluster and database instance also create more shared blast radius than fully independent product platforms." - paragraph - "I accept those risks because regional clusters, highly available Redis, and separate database instances for every small product would materially increase the monthly baseline and operational surface. Durable data receives backups, point-in-time recovery, private networking, and deletion protection. Recoverable services are recreated from Pulumi. Applications declare health checks and resource bounds. That is the reliability level the current workloads justify." - paragraph - "The architecture also depends heavily on Google Cloud, Cloudflare, Pulumi, and Kubernetes. That is intentional. Portability is less valuable to me than having one coherent system with managed operations, explicit identity, private networking, and repeatable delivery. The source code describes how the pieces fit together, but I am not trying to make every service interchangeable." + "This platform optimizes for one operator running several real services, not for zero downtime through every regional failure. A shared zonal cluster and database instance have more common blast radius than independent regional platforms. Cloudflare, Google Cloud, Pulumi, and Kubernetes are also deliberate dependencies rather than interchangeable abstractions." paragraph - "The measure of success is straightforward: I can add an application by defining its identity and namespace, composing an environment, and deploying a product-owned stack. It receives secure configuration, private data access, logs, analytics, and an edge route without rebuilding the platform. That is enough infrastructure to support the work while remaining small enough for one person to understand." ] + "I accept those constraints because the alternative would materially increase baseline cost and operational work. Durable data receives stronger protection; recoverable services are recreated from code. The result is enough infrastructure to add an application with identity, private data access, logs, analytics, and an edge route, while remaining small enough for one person to understand." + script { _src (Asset.fingerprinted "/scripts/mermaid.11.16.0.min.js") } + script { + js + "window.renderMermaid=async function(el){const nodes=el?.matches?.('.mermaid')?[el]:Array.from(el?.querySelectorAll?.('.mermaid')??[]);if(!window.mermaid||nodes.length===0)return;for(const node of nodes){node.dataset.mermaidSource=node.dataset.mermaidSource||node.textContent.trim();node.textContent=node.dataset.mermaidSource;node.removeAttribute('data-processed')}window.mermaid.initialize({startOnLoad:false,theme:document.documentElement.classList.contains('dark')?'dark':'neutral',securityLevel:'strict'});await window.mermaid.run({nodes})};void window.renderMermaid(document)" + } ] let article = Article.create metadata (ArticlePage.primary metadata content) diff --git a/app/src/App/src/Common/View.fs b/app/src/App/src/Common/View.fs index 0b12b8a..f46ecad 100644 --- a/app/src/App/src/Common/View.fs +++ b/app/src/App/src/Common/View.fs @@ -359,6 +359,6 @@ type Document = } } } - script { js "function getInitialTheme(){return localStorage.getItem('theme')||'system'};function applyTheme(t){var d=document.documentElement,isDark=t==='dark'||(t==='system'&&window.matchMedia('(prefers-color-scheme: dark)').matches);d.classList.toggle('dark',isDark)};function setTheme(t){localStorage.setItem('theme',t);applyTheme(t)}" } + script { js "function getInitialTheme(){return localStorage.getItem('theme')||'system'};function applyTheme(t){var d=document.documentElement,isDark=t==='dark'||(t==='system'&&window.matchMedia('(prefers-color-scheme: dark)').matches);d.classList.toggle('dark',isDark)};function setTheme(t){localStorage.setItem('theme',t);applyTheme(t);void window.renderMermaid?.(document)}" } } } diff --git a/app/src/App/wwwroot/scripts/mermaid.11.16.0.min.js b/app/src/App/wwwroot/scripts/mermaid.11.16.0.min.js new file mode 100644 index 0000000..055db5c --- /dev/null +++ b/app/src/App/wwwroot/scripts/mermaid.11.16.0.min.js @@ -0,0 +1,3587 @@ +"use strict";var __esbuild_esm_mermaid_nm;(__esbuild_esm_mermaid_nm||={}).mermaid=(()=>{var ize=Object.create;var Ox=Object.defineProperty;var aze=Object.getOwnPropertyDescriptor;var sze=Object.getOwnPropertyNames;var oze=Object.getPrototypeOf,lze=Object.prototype.hasOwnProperty;var o=(e,t)=>Ox(e,"name",{value:t,configurable:!0});var F=(e,t)=>()=>(e&&(t=e(e=0)),t);var Io=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ir=(e,t)=>{for(var r in t)Ox(e,r,{get:t[r],enumerable:!0})},BX=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of sze(t))!lze.call(e,i)&&i!==r&&Ox(e,i,{get:()=>t[i],enumerable:!(n=aze(t,i))||n.enumerable});return e};var Xs=(e,t,r)=>(r=e!=null?ize(oze(e)):{},BX(t||!e||!e.__esModule?Ox(r,"default",{value:e,enumerable:!0}):r,e)),cze=e=>BX(Ox({},"__esModule",{value:!0}),e);var uze,z0,ID,$X,gk=F(()=>{"use strict";uze=Object.freeze({left:0,top:0,width:16,height:16}),z0=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),ID=Object.freeze({...uze,...z0}),$X=Object.freeze({...ID,body:"",hidden:!1})});var hze,FX,zX=F(()=>{"use strict";gk();hze=Object.freeze({width:null,height:null}),FX=Object.freeze({...hze,...z0})});var MD,yk,GX=F(()=>{"use strict";MD=o((e,t,r,n="")=>{let i=e.split(":");if(e.slice(0,1)==="@"){if(i.length<2||i.length>3)return null;n=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let l=i.pop(),u=i.pop(),h={provider:i.length>0?i[0]:n,prefix:u,name:l};return t&&!yk(h)?null:h}let a=i[0],s=a.split("-");if(s.length>1){let l={provider:n,prefix:s.shift(),name:s.join("-")};return t&&!yk(l)?null:l}if(r&&n===""){let l={provider:n,prefix:"",name:a};return t&&!yk(l,r)?null:l}return null},"stringToIcon"),yk=o((e,t)=>e?!!((t&&e.prefix===""||e.prefix)&&e.name):!1,"validateIconName")});function VX(e,t){let r={};!e.hFlip!=!t.hFlip&&(r.hFlip=!0),!e.vFlip!=!t.vFlip&&(r.vFlip=!0);let n=((e.rotate||0)+(t.rotate||0))%4;return n&&(r.rotate=n),r}var WX=F(()=>{"use strict";o(VX,"mergeIconTransformations")});function ND(e,t){let r=VX(e,t);for(let n in $X)n in z0?n in e&&!(n in r)&&(r[n]=z0[n]):n in t?r[n]=t[n]:n in e&&(r[n]=e[n]);return r}var qX=F(()=>{"use strict";gk();WX();o(ND,"mergeIconData")});function HX(e,t){let r=e.icons,n=e.aliases||Object.create(null),i=Object.create(null);function a(s){if(r[s])return i[s]=[];if(!(s in i)){i[s]=null;let l=n[s]&&n[s].parent,u=l&&a(l);u&&(i[s]=[l].concat(u))}return i[s]}return o(a,"resolve"),(t||Object.keys(r).concat(Object.keys(n))).forEach(a),i}var UX=F(()=>{"use strict";o(HX,"getIconsTree")});function YX(e,t,r){let n=e.icons,i=e.aliases||Object.create(null),a={};function s(l){a=ND(n[l]||i[l],a)}return o(s,"parse"),s(t),r.forEach(s),ND(e,a)}function PD(e,t){if(e.icons[t])return YX(e,t,[]);let r=HX(e,[t])[t];return r?YX(e,t,r):null}var jX=F(()=>{"use strict";qX();UX();o(YX,"internalGetIconData");o(PD,"getIconData")});function OD(e,t,r){if(t===1)return e;if(r=r||100,typeof e=="number")return Math.ceil(e*t*r)/r;if(typeof e!="string")return e;let n=e.split(dze);if(n===null||!n.length)return e;let i=[],a=n.shift(),s=fze.test(a);for(;;){if(s){let l=parseFloat(a);isNaN(l)?i.push(a):i.push(Math.ceil(l*t*r)/r)}else i.push(a);if(a=n.shift(),a===void 0)return i.join("");s=!s}}var dze,fze,XX=F(()=>{"use strict";dze=/(-?[0-9.]*[0-9]+[0-9.]*)/g,fze=/^-?[0-9.]*[0-9]+[0-9.]*$/g;o(OD,"calculateSize")});function pze(e,t="defs"){let r="",n=e.indexOf("<"+t);for(;n>=0;){let i=e.indexOf(">",n),a=e.indexOf("",a);if(s===-1)break;r+=e.slice(i+1,a).trim(),e=e.slice(0,n).trim()+e.slice(s+1)}return{defs:r,content:e}}function mze(e,t){return e?""+e+""+t:t}function KX(e,t,r){let n=pze(e);return mze(n.defs,t+n.content+r)}var ZX=F(()=>{"use strict";o(pze,"splitSVGDefs");o(mze,"mergeDefsAndContent");o(KX,"wrapSVGContent")});function BD(e,t){let r={...ID,...e},n={...FX,...t},i={left:r.left,top:r.top,width:r.width,height:r.height},a=r.body;[r,n].forEach(y=>{let v=[],x=y.hFlip,b=y.vFlip,T=y.rotate;x?b?T+=2:(v.push("translate("+(i.width+i.left).toString()+" "+(0-i.top).toString()+")"),v.push("scale(-1 1)"),i.top=i.left=0):b&&(v.push("translate("+(0-i.left).toString()+" "+(i.height+i.top).toString()+")"),v.push("scale(1 -1)"),i.top=i.left=0);let k;switch(T<0&&(T-=Math.floor(T/4)*4),T=T%4,T){case 1:k=i.height/2+i.top,v.unshift("rotate(90 "+k.toString()+" "+k.toString()+")");break;case 2:v.unshift("rotate(180 "+(i.width/2+i.left).toString()+" "+(i.height/2+i.top).toString()+")");break;case 3:k=i.width/2+i.left,v.unshift("rotate(-90 "+k.toString()+" "+k.toString()+")");break}T%2===1&&(i.left!==i.top&&(k=i.left,i.left=i.top,i.top=k),i.width!==i.height&&(k=i.width,i.width=i.height,i.height=k)),v.length&&(a=KX(a,'',""))});let s=n.width,l=n.height,u=i.width,h=i.height,d,f;s===null?(f=l===null?"1em":l==="auto"?h:l,d=OD(f,u/h)):(d=s==="auto"?u:s,f=l===null?OD(d,h/u):l==="auto"?h:l);let p={},m=o((y,v)=>{gze(v)||(p[y]=v.toString())},"setAttr");m("width",d),m("height",f);let g=[i.left,i.top,u,h];return p.viewBox=g.join(" "),{attributes:p,viewBox:g,body:a}}var gze,QX=F(()=>{"use strict";gk();zX();XX();ZX();gze=o(e=>e==="unset"||e==="undefined"||e==="none","isUnsetKeyword");o(BD,"iconToSVG")});function $D(e,t=vze){let r=[],n;for(;n=yze.exec(e);)r.push(n[1]);if(!r.length)return e;let i="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(a=>{let s=typeof t=="function"?t(a):t+(xze++).toString(),l=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e=e.replace(new RegExp('([#;"])('+l+')([")]|\\.[a-z])',"g"),"$1"+s+i+"$3")}),e=e.replace(new RegExp(i,"g"),""),e}var yze,vze,xze,JX=F(()=>{"use strict";yze=/\sid="(\S+)"/g,vze="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),xze=0;o($D,"replaceIDs")});function FD(e,t){let r=e.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let n in t)r+=" "+n+'="'+t[n]+'"';return'"+e+""}var eK=F(()=>{"use strict";o(FD,"iconToHTML")});var tK=F(()=>{"use strict";GX();jX();QX();JX();eK()});var zD,Yn,G0=F(()=>{"use strict";zD=o((e,t,{depth:r=2,clobber:n=!1}={})=>{let i={depth:r,clobber:n};return Array.isArray(t)&&!Array.isArray(e)?(t.forEach(a=>zD(e,a,i)),e):Array.isArray(t)&&Array.isArray(e)?(t.forEach(a=>{e.includes(a)||e.push(a)}),e):e===void 0||r<=0?e!=null&&typeof e=="object"&&typeof t=="object"?Object.assign(e,t):t:(t!==void 0&&typeof e=="object"&&typeof t=="object"&&Object.keys(t).forEach(a=>{typeof t[a]=="object"&&t[a]!==null&&(e[a]===void 0||typeof e[a]=="object")?(e[a]===void 0&&(e[a]=Array.isArray(t[a])?[]:{}),e[a]=zD(e[a],t[a],{depth:r-1,clobber:n})):(n||typeof e[a]!="object"&&typeof t[a]!="object")&&(e[a]=t[a])}),e)},"assignWithDepth"),Yn=zD});var vk=Io((GD,VD)=>{"use strict";(function(e,t){typeof GD=="object"&&typeof VD<"u"?VD.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(GD,(function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",i="second",a="minute",s="hour",l="day",u="week",h="month",d="quarter",f="year",p="date",m="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:o(function(_){var A=["th","st","nd","rd"],M=_%100;return"["+_+(A[(M-20)%10]||A[M]||A[0])+"]"},"ordinal")},x=o(function(_,A,M){var D=String(_);return!D||D.length>=A?_:""+Array(A+1-D.length).join(M)+_},"m"),b={s:x,z:o(function(_){var A=-_.utcOffset(),M=Math.abs(A),D=Math.floor(M/60),P=M%60;return(A<=0?"+":"-")+x(D,2,"0")+":"+x(P,2,"0")},"z"),m:o(function _(A,M){if(A.date()1)return _(O[0])}else{var $=A.name;k[$]=A,P=$}return!D&&P&&(T=P),P||!D&&T},"t"),R=o(function(_,A){if(w(_))return _.clone();var M=typeof A=="object"?A:{};return M.date=_,M.args=arguments,new N(M)},"O"),L=b;L.l=S,L.i=w,L.w=function(_,A){return R(_,{locale:A.$L,utc:A.$u,x:A.$x,$offset:A.$offset})};var N=(function(){function _(M){this.$L=S(M.locale,null,!0),this.parse(M),this.$x=this.$x||M.x||{},this[C]=!0}o(_,"M");var A=_.prototype;return A.parse=function(M){this.$d=(function(D){var P=D.date,B=D.utc;if(P===null)return new Date(NaN);if(L.u(P))return new Date;if(P instanceof Date)return new Date(P);if(typeof P=="string"&&!/Z$/i.test(P)){var O=P.match(g);if(O){var $=O[2]-1||0,V=(O[7]||"0").substring(0,3);return B?new Date(Date.UTC(O[1],$,O[3]||1,O[4]||0,O[5]||0,O[6]||0,V)):new Date(O[1],$,O[3]||1,O[4]||0,O[5]||0,O[6]||0,V)}}return new Date(P)})(M),this.init()},A.init=function(){var M=this.$d;this.$y=M.getFullYear(),this.$M=M.getMonth(),this.$D=M.getDate(),this.$W=M.getDay(),this.$H=M.getHours(),this.$m=M.getMinutes(),this.$s=M.getSeconds(),this.$ms=M.getMilliseconds()},A.$utils=function(){return L},A.isValid=function(){return this.$d.toString()!==m},A.isSame=function(M,D){var P=R(M);return this.startOf(D)<=P&&P<=this.endOf(D)},A.isAfter=function(M,D){return R(M){"use strict";rK=Xs(vk(),1),Zu={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},Z={trace:o((...e)=>{},"trace"),debug:o((...e)=>{},"debug"),info:o((...e)=>{},"info"),warn:o((...e)=>{},"warn"),error:o((...e)=>{},"error"),fatal:o((...e)=>{},"fatal")},Bx=o(function(e="fatal"){let t=Zu.fatal;typeof e=="string"?e.toLowerCase()in Zu&&(t=Zu[e]):typeof e=="number"&&(t=e),Z.trace=()=>{},Z.debug=()=>{},Z.info=()=>{},Z.warn=()=>{},Z.error=()=>{},Z.fatal=()=>{},t<=Zu.fatal&&(Z.fatal=console.error?console.error.bind(console,il("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",il("FATAL"))),t<=Zu.error&&(Z.error=console.error?console.error.bind(console,il("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",il("ERROR"))),t<=Zu.warn&&(Z.warn=console.warn?console.warn.bind(console,il("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",il("WARN"))),t<=Zu.info&&(Z.info=console.info?console.info.bind(console,il("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",il("INFO"))),t<=Zu.debug&&(Z.debug=console.debug?console.debug.bind(console,il("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",il("DEBUG"))),t<=Zu.trace&&(Z.trace=console.debug?console.debug.bind(console,il("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",il("TRACE")))},"setLogLevel"),il=o(e=>`%c${(0,rK.default)().format("ss.SSS")} : ${e} : `,"format")});var xk,nK,iK=F(()=>{"use strict";xk={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:o(e=>e>=255?255:e<0?0:e,"r"),g:o(e=>e>=255?255:e<0?0:e,"g"),b:o(e=>e>=255?255:e<0?0:e,"b"),h:o(e=>e%360,"h"),s:o(e=>e>=100?100:e<0?0:e,"s"),l:o(e=>e>=100?100:e<0?0:e,"l"),a:o(e=>e>=1?1:e<0?0:e,"a")},toLinear:o(e=>{let t=e/255;return e>.03928?Math.pow((t+.055)/1.055,2.4):t/12.92},"toLinear"),hue2rgb:o((e,t,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<.16666666666666666?e+(t-e)*6*r:r<.5?t:r<.6666666666666666?e+(t-e)*(.6666666666666666-r)*6:e),"hue2rgb"),hsl2rgb:o(({h:e,s:t,l:r},n)=>{if(!t)return r*2.55;e/=360,t/=100,r/=100;let i=r<.5?r*(1+t):r+t-r*t,a=2*r-i;switch(n){case"r":return xk.hue2rgb(a,i,e+.3333333333333333)*255;case"g":return xk.hue2rgb(a,i,e)*255;case"b":return xk.hue2rgb(a,i,e-.3333333333333333)*255}},"hsl2rgb"),rgb2hsl:o(({r:e,g:t,b:r},n)=>{e/=255,t/=255,r/=255;let i=Math.max(e,t,r),a=Math.min(e,t,r),s=(i+a)/2;if(n==="l")return s*100;if(i===a)return 0;let l=i-a,u=s>.5?l/(2-i-a):l/(i+a);if(n==="s")return u*100;switch(i){case e:return((t-r)/l+(t{"use strict";bze={clamp:o((e,t,r)=>t>r?Math.min(t,Math.max(r,e)):Math.min(r,Math.max(t,e)),"clamp"),round:o(e=>Math.round(e*1e10)/1e10,"round")},aK=bze});var Tze,oK,lK=F(()=>{"use strict";Tze={dec2hex:o(e=>{let t=Math.round(e).toString(16);return t.length>1?t:`0${t}`},"dec2hex")},oK=Tze});var Cze,lr,Nc=F(()=>{"use strict";iK();sK();lK();Cze={channel:nK,lang:aK,unit:oK},lr=Cze});var Qu,ta,$x=F(()=>{"use strict";Nc();Qu={};for(let e=0;e<=255;e++)Qu[e]=lr.unit.dec2hex(e);ta={ALL:0,RGB:1,HSL:2}});var WD,cK,uK=F(()=>{"use strict";$x();WD=class{static{o(this,"Type")}constructor(){this.type=ta.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=ta.ALL}is(t){return this.type===t}},cK=WD});var qD,hK,dK=F(()=>{"use strict";Nc();uK();$x();qD=class{static{o(this,"Channels")}constructor(t,r){this.color=r,this.changed=!1,this.data=t,this.type=new cK}set(t,r){return this.color=r,this.changed=!1,this.data=t,this.type.type=ta.ALL,this}_ensureHSL(){let t=this.data,{h:r,s:n,l:i}=t;r===void 0&&(t.h=lr.channel.rgb2hsl(t,"h")),n===void 0&&(t.s=lr.channel.rgb2hsl(t,"s")),i===void 0&&(t.l=lr.channel.rgb2hsl(t,"l"))}_ensureRGB(){let t=this.data,{r,g:n,b:i}=t;r===void 0&&(t.r=lr.channel.hsl2rgb(t,"r")),n===void 0&&(t.g=lr.channel.hsl2rgb(t,"g")),i===void 0&&(t.b=lr.channel.hsl2rgb(t,"b"))}get r(){let t=this.data,r=t.r;return!this.type.is(ta.HSL)&&r!==void 0?r:(this._ensureHSL(),lr.channel.hsl2rgb(t,"r"))}get g(){let t=this.data,r=t.g;return!this.type.is(ta.HSL)&&r!==void 0?r:(this._ensureHSL(),lr.channel.hsl2rgb(t,"g"))}get b(){let t=this.data,r=t.b;return!this.type.is(ta.HSL)&&r!==void 0?r:(this._ensureHSL(),lr.channel.hsl2rgb(t,"b"))}get h(){let t=this.data,r=t.h;return!this.type.is(ta.RGB)&&r!==void 0?r:(this._ensureRGB(),lr.channel.rgb2hsl(t,"h"))}get s(){let t=this.data,r=t.s;return!this.type.is(ta.RGB)&&r!==void 0?r:(this._ensureRGB(),lr.channel.rgb2hsl(t,"s"))}get l(){let t=this.data,r=t.l;return!this.type.is(ta.RGB)&&r!==void 0?r:(this._ensureRGB(),lr.channel.rgb2hsl(t,"l"))}get a(){return this.data.a}set r(t){this.type.set(ta.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(ta.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(ta.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(ta.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(ta.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(ta.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}},hK=qD});var wze,Td,Fx=F(()=>{"use strict";dK();wze=new hK({r:0,g:0,b:0,a:0},"transparent"),Td=wze});var fK,Bp,HD=F(()=>{"use strict";Fx();$x();fK={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:o(e=>{if(e.charCodeAt(0)!==35)return;let t=e.match(fK.re);if(!t)return;let r=t[1],n=parseInt(r,16),i=r.length,a=i%4===0,s=i>4,l=s?1:17,u=s?8:4,h=a?0:-1,d=s?255:15;return Td.set({r:(n>>u*(h+3)&d)*l,g:(n>>u*(h+2)&d)*l,b:(n>>u*(h+1)&d)*l,a:a?(n&d)*l/255:1},e)},"parse"),stringify:o(e=>{let{r:t,g:r,b:n,a:i}=e;return i<1?`#${Qu[Math.round(t)]}${Qu[Math.round(r)]}${Qu[Math.round(n)]}${Qu[Math.round(i*255)]}`:`#${Qu[Math.round(t)]}${Qu[Math.round(r)]}${Qu[Math.round(n)]}`},"stringify")},Bp=fK});var bk,zx,pK=F(()=>{"use strict";Nc();Fx();bk={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:o(e=>{let t=e.match(bk.hueRe);if(t){let[,r,n]=t;switch(n){case"grad":return lr.channel.clamp.h(parseFloat(r)*.9);case"rad":return lr.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return lr.channel.clamp.h(parseFloat(r)*360)}}return lr.channel.clamp.h(parseFloat(e))},"_hue2deg"),parse:o(e=>{let t=e.charCodeAt(0);if(t!==104&&t!==72)return;let r=e.match(bk.re);if(!r)return;let[,n,i,a,s,l]=r;return Td.set({h:bk._hue2deg(n),s:lr.channel.clamp.s(parseFloat(i)),l:lr.channel.clamp.l(parseFloat(a)),a:s?lr.channel.clamp.a(l?parseFloat(s)/100:parseFloat(s)):1},e)},"parse"),stringify:o(e=>{let{h:t,s:r,l:n,a:i}=e;return i<1?`hsla(${lr.lang.round(t)}, ${lr.lang.round(r)}%, ${lr.lang.round(n)}%, ${i})`:`hsl(${lr.lang.round(t)}, ${lr.lang.round(r)}%, ${lr.lang.round(n)}%)`},"stringify")},zx=bk});var Tk,UD,mK=F(()=>{"use strict";HD();Tk={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:o(e=>{e=e.toLowerCase();let t=Tk.colors[e];if(t)return Bp.parse(t)},"parse"),stringify:o(e=>{let t=Bp.stringify(e);for(let r in Tk.colors)if(Tk.colors[r]===t)return r},"stringify")},UD=Tk});var gK,Gx,yK=F(()=>{"use strict";Nc();Fx();gK={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:o(e=>{let t=e.charCodeAt(0);if(t!==114&&t!==82)return;let r=e.match(gK.re);if(!r)return;let[,n,i,a,s,l,u,h,d]=r;return Td.set({r:lr.channel.clamp.r(i?parseFloat(n)*2.55:parseFloat(n)),g:lr.channel.clamp.g(s?parseFloat(a)*2.55:parseFloat(a)),b:lr.channel.clamp.b(u?parseFloat(l)*2.55:parseFloat(l)),a:h?lr.channel.clamp.a(d?parseFloat(h)/100:parseFloat(h)):1},e)},"parse"),stringify:o(e=>{let{r:t,g:r,b:n,a:i}=e;return i<1?`rgba(${lr.lang.round(t)}, ${lr.lang.round(r)}, ${lr.lang.round(n)}, ${lr.lang.round(i)})`:`rgb(${lr.lang.round(t)}, ${lr.lang.round(r)}, ${lr.lang.round(n)})`},"stringify")},Gx=gK});var kze,ra,Ju=F(()=>{"use strict";HD();pK();mK();yK();$x();kze={format:{keyword:UD,hex:Bp,rgb:Gx,rgba:Gx,hsl:zx,hsla:zx},parse:o(e=>{if(typeof e!="string")return e;let t=Bp.parse(e)||Gx.parse(e)||zx.parse(e)||UD.parse(e);if(t)return t;throw new Error(`Unsupported color format: "${e}"`)},"parse"),stringify:o(e=>!e.changed&&e.color?e.color:e.type.is(ta.HSL)||e.data.r===void 0?zx.stringify(e):e.a<1||!Number.isInteger(e.r)||!Number.isInteger(e.g)||!Number.isInteger(e.b)?Gx.stringify(e):Bp.stringify(e),"stringify")},ra=kze});var Sze,Ck,YD=F(()=>{"use strict";Nc();Ju();Sze=o((e,t)=>{let r=ra.parse(e);for(let n in t)r[n]=lr.channel.clamp[n](t[n]);return ra.stringify(r)},"change"),Ck=Sze});var Eze,Oi,jD=F(()=>{"use strict";Nc();Fx();Ju();YD();Eze=o((e,t,r=0,n=1)=>{if(typeof e!="number")return Ck(e,{a:t});let i=Td.set({r:lr.channel.clamp.r(e),g:lr.channel.clamp.g(t),b:lr.channel.clamp.b(r),a:lr.channel.clamp.a(n)});return ra.stringify(i)},"rgba"),Oi=Eze});var Aze,$p,vK=F(()=>{"use strict";Nc();Ju();Aze=o((e,t)=>lr.lang.round(ra.parse(e)[t]),"channel"),$p=Aze});var Rze,xK,bK=F(()=>{"use strict";Nc();Ju();Rze=o(e=>{let{r:t,g:r,b:n}=ra.parse(e),i=.2126*lr.channel.toLinear(t)+.7152*lr.channel.toLinear(r)+.0722*lr.channel.toLinear(n);return lr.lang.round(i)},"luminance"),xK=Rze});var _ze,TK,CK=F(()=>{"use strict";bK();_ze=o(e=>xK(e)>=.5,"isLight"),TK=_ze});var Lze,Tn,wK=F(()=>{"use strict";CK();Lze=o(e=>!TK(e),"isDark"),Tn=Lze});var Dze,V0,wk=F(()=>{"use strict";Nc();Ju();Dze=o((e,t,r)=>{let n=ra.parse(e),i=n[t],a=lr.channel.clamp[t](i+r);return i!==a&&(n[t]=a),ra.stringify(n)},"adjustChannel"),V0=Dze});var Ize,Qe,kK=F(()=>{"use strict";wk();Ize=o((e,t)=>V0(e,"l",t),"lighten"),Qe=Ize});var Mze,Je,SK=F(()=>{"use strict";wk();Mze=o((e,t)=>V0(e,"l",-t),"darken"),Je=Mze});var Nze,kk,EK=F(()=>{"use strict";wk();Nze=o((e,t)=>V0(e,"a",-t),"transparentize"),kk=Nze});var Pze,de,AK=F(()=>{"use strict";Ju();YD();Pze=o((e,t)=>{let r=ra.parse(e),n={};for(let i in t)t[i]&&(n[i]=r[i]+t[i]);return Ck(e,n)},"adjust"),de=Pze});var Oze,RK,_K=F(()=>{"use strict";Ju();jD();Oze=o((e,t,r=50)=>{let{r:n,g:i,b:a,a:s}=ra.parse(e),{r:l,g:u,b:h,a:d}=ra.parse(t),f=r/100,p=f*2-1,m=s-d,y=((p*m===-1?p:(p+m)/(1+p*m))+1)/2,v=1-y,x=n*y+l*v,b=i*y+u*v,T=a*y+h*v,k=s*f+d*(1-f);return Oi(x,b,T,k)},"mix"),RK=Oze});var Bze,Ye,LK=F(()=>{"use strict";Ju();_K();Bze=o((e,t=100)=>{let r=ra.parse(e);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,RK(r,e,t)},"invert"),Ye=Bze});var DK=F(()=>{"use strict";jD();vK();wK();kK();SK();EK();AK();LK()});var zi=F(()=>{"use strict";DK()});var Gi,Vi,Fl=F(()=>{"use strict";Gi="#ffffff",Vi="#f2f2f2"});var ar,al=F(()=>{"use strict";zi();ar=o((e,t)=>t?de(e,{s:-40,l:10}):de(e,{s:-40,l:-10}),"mkBorder")});var KD,IK,MK=F(()=>{"use strict";zi();Fl();al();KD=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.useGradient=!0,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||Je(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Je(this.mainBkg,10)):(this.rowOdd=this.rowOdd||Qe(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||Qe(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},IK=o(e=>{let t=new KD;return t.calculate(e),t},"getThemeVariables")});var ZD,NK,PK=F(()=>{"use strict";zi();al();ZD=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qe(this.primaryColor,16),this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=Ye(this.background),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.lineColor=Ye(this.background),this.textColor=Ye(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qe(Ye("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=Oi(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.clusterBkg="#302F3D",this.sectionBkgColor=Je("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Je(this.sectionBkgColor,10),this.taskBorderColor=Oi(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Oi(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||Qe(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||Je(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal"}updateColors(){this.secondBkg=Qe(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=Qe(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.background,this.taskBkgColor=Qe(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=Ye(this.doneTaskBkgColor),this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=de(this.primaryColor,{h:64}),this.fillType3=de(this.secondaryColor,{h:64}),this.fillType4=de(this.primaryColor,{h:-64}),this.fillType5=de(this.secondaryColor,{h:-64}),this.fillType6=de(this.primaryColor,{h:128}),this.fillType7=de(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330});for(let t=0;t{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},NK=o(e=>{let t=new ZD;return t.calculate(e),t},"getThemeVariables")});var QD,ma,Pc=F(()=>{"use strict";zi();al();Fl();QD=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=de(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.lineColor=Ye(this.background),this.textColor=Ye(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.clusterBkg="#FBFBFF",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=Oi(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.noteFontWeight=this.noteFontWeight||"normal",this.fontWeight=this.fontWeight||"normal",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!1,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow(1px 2px 2px rgba(185, 185, 185, 1))",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Je(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Je(this.tertiaryColor,40);for(let t=0;t{this[n]==="calculated"&&(this[n]=void 0)}),typeof t!="object"){this.updateColors();return}let r=Object.keys(t);r.forEach(n=>{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},ma=o(e=>{let t=new QD;return t.calculate(e),t},"getThemeVariables")});var JD,OK,BK=F(()=>{"use strict";zi();Fl();al();JD=class{static{o(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=Qe("#cde498",10),this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.primaryColor),this.lineColor=Ye(this.background),this.textColor=Ye(this.background),this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,0.5))"}updateColors(){this.actorBorder=Je(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Je(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Je(this.tertiaryColor,40);for(let t=0;t{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},OK=o(e=>{let t=new JD;return t.calculate(e),t},"getThemeVariables")});var e7,$K,FK=F(()=>{"use strict";zi();al();Fl();e7=class{static{o(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Qe(this.contrast,55),this.background="#ffffff",this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.lineColor=Ye(this.background),this.textColor=Ye(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.radius=5,this.strokeWidth=1,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal",this.rowOdd=this.rowOdd||Qe(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.useGradient=!0,this.gradientStart=this.primaryBorderColor,this.gradientStop=this.secondaryBorderColor,this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,1))"}updateColors(){this.secondBkg=Qe(this.contrast,55),this.border2=this.contrast,this.actorBorder=Qe(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},$K=o(e=>{let t=new e7;return t.calculate(e),t},"getThemeVariables")});var t7,zK,GK=F(()=>{"use strict";zi();al();Fl();t7=class{static{o(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=2,this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.fontFamily="arial, sans-serif",this.fontSize="14px",this.nodeBorder="#000000",this.stateBorder="#000000",this.useGradient=!0,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="drop-shadow( 0px 1px 2px rgba(0, 0, 0, 0.25));",this.tertiaryColor="#ffffff",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor;let t="#ECECFE",r="#E9E9F1",n=de(t,{h:180,l:5});if(this.sectionBkgColor=this.sectionBkgColor||n,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||r,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||t,this.cScale1=this.cScale1||r,this.cScale2=this.cScale2||n,this.cScale3=this.cScale3||de(t,{h:30}),this.cScale4=this.cScale4||de(t,{h:60}),this.cScale5=this.cScale5||de(t,{h:90}),this.cScale6=this.cScale6||de(t,{h:120}),this.cScale7=this.cScale7||de(t,{h:150}),this.cScale8=this.cScale8||de(t,{h:210,l:150}),this.cScale9=this.cScale9||de(t,{h:270}),this.cScale10=this.cScale10||de(t,{h:300}),this.cScale11=this.cScale11||de(t,{h:330}),this.darkMode)for(let a=0;a{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},zK=o(e=>{let t=new t7;return t.calculate(e),t},"getThemeVariables")});var r7,VK,WK=F(()=>{"use strict";zi();al();Fl();r7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qe(this.primaryColor,16),this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=Ye(this.background),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.mainBkg="#2a2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qe(Ye("#323D47"),10),this.border1="#ccc",this.border2=Oi(255,255,255,.25),this.arrowheadColor=Ye(this.background),this.fontFamily="arial, sans-serif",this.fontSize="14px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=3,this.strokeWidth=1,this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily="arial, sans-serif",this.fontSize="14px",this.useGradient=!0,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="drop-shadow( 1px 2px 2px rgba(185,185,185,0.2))",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.noteFontWeight="normal",this.fontWeight="normal"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},VK=o(e=>{let t=new r7;return t.calculate(e),t},"getThemeVariables")});var n7,qK,HK=F(()=>{"use strict";zi();al();Fl();n7=class{static{o(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#28253D",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=ar("#28253D",this.darkMode),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#28253D",this.stateBorder="#28253D",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.tertiaryColor="#ffffff",this.clusterBkg="#F9F9FB",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.actorBorder="#28253D",this.filterColor="#000000"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#28253D"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#FEF9C3",this.noteTextColor=this.noteTextColor||"#28253D",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.noteFontWeight=600,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor;let t="#ECECFE",r="#E9E9F1",n=de(t,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||n,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||r,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.compositeTitleBackground="#F9F9FB",this.altBackground="#F9F9FB",this.stateEdgeLabelBackground="#FFFFFF",this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor;for(let a=0;a{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},qK=o(e=>{let t=new n7;return t.calculate(e),t},"getThemeVariables")});var i7,UK,YK=F(()=>{"use strict";zi();al();Fl();i7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qe(this.primaryColor,16),this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=Ye(this.background),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.mainBkg="#111113",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qe(Ye("#323D47"),10),this.border1="#ccc",this.border2=Oi(255,255,255,.25),this.arrowheadColor=Ye(this.background),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.labelBackground="#111113",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??"#FEF9C3",this.noteTextColor=this.noteTextColor??"#28253D",this.THEME_COLOR_LIMIT=12,this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#FFFFFF",this.stateBorder="#FFFFFF",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.clusterBkg="#1E1A2E",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.filterColor="#FFFFFF"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#FFFFFF"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#FFFFFF",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder="#FFFFFF",this.signalColor="#FFFFFF",this.labelBoxBorderColor="#BDBCCC",this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.compositeBackground="#16141F",this.altBackground="#16141F",this.compositeTitleBackground="#16141F",this.stateEdgeLabelBackground="#16141F",this.fontWeight=600,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||de(this.primaryColor,{h:30}),this.cScale4=this.cScale4||de(this.primaryColor,{h:60}),this.cScale5=this.cScale5||de(this.primaryColor,{h:90}),this.cScale6=this.cScale6||de(this.primaryColor,{h:120}),this.cScale7=this.cScale7||de(this.primaryColor,{h:150}),this.cScale8=this.cScale8||de(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||de(this.primaryColor,{h:270}),this.cScale10=this.cScale10||de(this.primaryColor,{h:300}),this.cScale11=this.cScale11||de(this.primaryColor,{h:330}),this.darkMode)for(let r=0;r{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},UK=o(e=>{let t=new i7;return t.calculate(e),t},"getThemeVariables")});var a7,jK,XK=F(()=>{"use strict";zi();al();Fl();a7=class{static{o(this,"Theme")}constructor(){this.background="#ffffff",this.primaryColor="#cccccc",this.mainBkg="#ffffff",this.noteBkgColor="#fff5ad",this.noteTextColor="#28253D",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.primaryBorderColor=ar(this.primaryColor,this.darkMode),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#28253D",this.stateBorder="#28253D",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.tertiaryColor="#ffffff",this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.actorBorder="#28253D",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.borderColorArray=["#E879F9","#2DD4BF","#FB923C","#22D3EE","#4ADE80","#A78BFA","#F87171","#FACC15","#818CF8","#A3E635 ","#38BDF8","#FB7185"],this.bkgColorArray=["#FDF4FF","#F0FDFA","#FFF7ED","#ECFEFF","#F0FDF4","#F5F3FF","#FEF2F2","#FEFCE8","#EEF2FF","#F7FEE7","#F0F9FF","#FFF1F2"],this.filterColor="#000000"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#28253D"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#28253D",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor;let t="#ECECFE",r="#E9E9F1",n=de(t,{h:180,l:5});this.sectionBkgColor=this.sectionBkgColor||n,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||r,this.sectionBkgColor2=this.sectionBkgColor2||t,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||t,this.activeTaskBorderColor=this.activeTaskBorderColor||t,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(t,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||"#f4a8ff",this.cScale1=this.cScale1||"#46ecd5",this.cScale2=this.cScale2||"#ffb86a",this.cScale3=this.cScale3||"#dab2ff",this.cScale4=this.cScale4||"#7bf1a8",this.cScale5=this.cScale5||"#c4b4ff",this.cScale6=this.cScale6||"#ffa2a2",this.cScale7=this.cScale7||"#ffdf20",this.cScale8=this.cScale8||"#a3b3ff",this.cScale9=this.cScale9||"#bbf451",this.cScale10=this.cScale10||"#74d4ff",this.cScale11=this.cScale11||"#ffa1ad";for(let a=0;a{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},jK=o(e=>{let t=new a7;return t.calculate(e),t},"getThemeVariables")});var s7,KK,ZK=F(()=>{"use strict";zi();al();Fl();s7=class{static{o(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Qe(this.primaryColor,16),this.tertiaryColor=de(this.primaryColor,{h:-160}),this.primaryBorderColor=Ye(this.background),this.secondaryBorderColor=ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ar(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ye(this.primaryColor),this.secondaryTextColor=Ye(this.secondaryColor),this.tertiaryTextColor=Ye(this.tertiaryColor),this.mainBkg="#111113",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Qe(Ye("#323D47"),10),this.border1="#ccc",this.border2=Oi(255,255,255,.25),this.arrowheadColor=Ye(this.background),this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.labelBackground="#111113",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.radius=12,this.strokeWidth=2,this.noteBkgColor=this.noteBkgColor??"#FEF9C3",this.noteTextColor=this.noteTextColor??"#28253D",this.THEME_COLOR_LIMIT=12,this.fontFamily='"Recursive Variable", arial, sans-serif',this.fontSize="14px",this.nodeBorder="#FFFFFF",this.stateBorder="#FFFFFF",this.useGradient=!1,this.gradientStart="#0042eb",this.gradientStop="#eb0042",this.dropShadow="url(#drop-shadow)",this.nodeShadow=!0,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.clusterBkg="#1E1A2E",this.clusterBorder="#BDBCCC",this.noteBorderColor="#FACC15",this.noteFontWeight=600,this.borderColorArray=["#E879F9","#2DD4BF","#FB923C","#22D3EE","#4ADE80","#A78BFA","#F87171","#FACC15","#818CF8","#A3E635 ","#38BDF8","#FB7185"],this.bkgColorArray=[],this.filterColor="#FFFFFF"}updateColors(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#FFFFFF"),this.secondaryColor=this.secondaryColor||de(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||de(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ar(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ar(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ar(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ar(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#FFFFFF",this.secondaryTextColor=this.secondaryTextColor||Ye(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ye(this.tertiaryColor),this.lineColor=this.lineColor||Ye(this.background),this.arrowheadColor=this.arrowheadColor||Ye(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.border1,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Je(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder="#FFFFFF",this.signalColor="#FFFFFF",this.labelBoxBorderColor="#BDBCCC",this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Je(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ye(this.lineColor),this.rectBkgColor=this.rectBkgColor||this.tertiaryColor,this.rootLabelColor="#FFFFFF",this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Qe(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.vertLineColor=this.vertLineColor||this.primaryBorderColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#f0f0f0",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||"#f4a8ff",this.cScale1=this.cScale1||"#46ecd5",this.cScale2=this.cScale2||"#ffb86a",this.cScale3=this.cScale3||"#dab2ff",this.cScale4=this.cScale4||"#7bf1a8",this.cScale5=this.cScale5||"#c4b4ff",this.cScale6=this.cScale6||"#ffa2a2",this.cScale7=this.cScale7||"#ffdf20",this.cScale8=this.cScale8||"#a3b3ff",this.cScale9=this.cScale9||"#bbf451",this.cScale10=this.cScale10||"#74d4ff",this.cScale11=this.cScale11||"#ffa1ad";for(let r=0;r{this[n]=t[n]}),this.updateColors(),r.forEach(n=>{this[n]=t[n]})}},KK=o(e=>{let t=new s7;return t.calculate(e),t},"getThemeVariables")});var sl,Sk=F(()=>{"use strict";MK();PK();Pc();BK();FK();GK();WK();HK();YK();XK();ZK();sl={base:{getThemeVariables:IK},dark:{getThemeVariables:NK},default:{getThemeVariables:ma},forest:{getThemeVariables:OK},neutral:{getThemeVariables:$K},neo:{getThemeVariables:zK},"neo-dark":{getThemeVariables:VK},redux:{getThemeVariables:qK},"redux-dark":{getThemeVariables:UK},"redux-color":{getThemeVariables:jK},"redux-dark-color":{getThemeVariables:KK}}});var ga,QK=F(()=>{"use strict";ga={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:null,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},swimlane:{useMaxWidth:!0,lineHops:"arc",ignoreCrossLaneEdges:!0,optimizeRanksByCrossings:!0,automaticLaneOrdering:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75,donutHole:0,legendPosition:"right",highlightSlice:""},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showDataLabelOutsideBar:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2,labelRotation:0},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2,labelRotation:0},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},ishikawa:{useMaxWidth:!0,diagramPadding:20},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:"",nodeWidth:10,nodePadding:12,labelStyle:"legacy"},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},treeView:{useMaxWidth:!0,rowIndent:10,paddingX:5,paddingY:5,lineThickness:1,showIcons:!1,defaultIconPack:"",filenameIcons:{},extensionIcons:{}},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16,randomize:!1,nodeSeparation:75,idealEdgeLengthMultiplier:1.5,edgeElasticity:.45,numIter:2500,seed:1},eventmodeling:{useMaxWidth:!0,padding:30,rowHeight:32},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},venn:{useMaxWidth:!0,width:800,height:450,padding:8,useDebugLayout:!1},cynefin:{useMaxWidth:!0,width:800,height:600,padding:40,showDomainDescriptions:!0,boundaryAmplitude:8,seed:0},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1}});var JK,eZ,tZ,cr,Wi=F(()=>{"use strict";Sk();QK();JK={...ga,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:sl.default.getThemeVariables(),sequence:{...ga.sequence,messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:o(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:o(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1,hierarchicalNamespaces:!0},gantt:{...ga.gantt,tickInterval:void 0,useWidth:void 0},c4:{...ga.c4,useWidth:void 0,personFont:o(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),flowchart:{...ga.flowchart,inheritDir:!1},external_personFont:o(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:o(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:o(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:o(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:o(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:o(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:o(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:o(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:o(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:o(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:o(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:o(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:o(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:o(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:o(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:o(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:o(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:o(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:o(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:o(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:o(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...ga.pie,useWidth:984},xyChart:{...ga.xyChart,useWidth:void 0},requirement:{...ga.requirement,useWidth:void 0},packet:{...ga.packet},eventmodeling:{...ga.eventmodeling},treeView:{...ga.treeView,useWidth:void 0},radar:{...ga.radar},railroad:{...ga.railroad,fontSize:void 0,fontFamily:void 0,terminalFill:void 0,terminalStroke:void 0,terminalTextColor:void 0,nonTerminalFill:void 0,nonTerminalStroke:void 0,nonTerminalTextColor:void 0,lineColor:void 0,markerFill:void 0,commentFill:void 0,commentStroke:void 0,commentTextColor:void 0,specialFill:void 0,specialStroke:void 0,ruleNameColor:void 0},ishikawa:{...ga.ishikawa},sankey:{...ga.sankey,nodeColors:void 0},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","},venn:{...ga.venn},cynefin:{...ga.cynefin}},eZ=o((e,t="")=>Object.keys(e).reduce((r,n)=>Array.isArray(e[n])?r:typeof e[n]=="object"&&e[n]!==null?[...r,t+n,...eZ(e[n],"")]:[...r,t+n],[]),"keyify"),tZ=new Set(eZ(JK,"")),cr=JK});var $ze,Fze,W0,o7,Ek=F(()=>{"use strict";Wi();vt();$ze={nodeColors:/^#[\da-f]{3,8}$|^rgb\([\d\s%,.]+\)$|^hsl\([\d\s%,.]+\)$|^[a-z]+$/i,filenameIcons:/^[\w-]+(?::[\w-]+)?$/,extensionIcons:/^[\w-]+(?::[\w-]+)?$/},Fze=o((e,t)=>{for(let r of Object.keys(e)){let n=e[r];(r.startsWith("__")||r.includes("proto")||r.includes("constr")||typeof n!="string"||!t.test(n))&&(Z.debug("sanitize deleting dictionary entry:",r,n),delete e[r])}},"sanitizeDictionaryConfig"),W0=o(e=>{if(Z.debug("sanitizeDirective called with",e),!(typeof e!="object"||e==null)){if(Array.isArray(e)){e.forEach(t=>W0(t));return}for(let t of Object.keys(e)){if(Z.debug("Checking key",t),t.startsWith("__")||t.includes("proto")||t.includes("constr")||!tZ.has(t)||e[t]==null){Z.debug("sanitize deleting key: ",t),delete e[t];continue}if(typeof e[t]=="object"){let n=$ze[t];n?Fze(e[t],n):(Z.debug("sanitizing object",t),W0(e[t]));continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let n of r)t.includes(n)&&(Z.debug("sanitizing css option",t),e[t]=o7(e[t]))}if(e.themeVariables)for(let t of Object.keys(e.themeVariables)){let r=e.themeVariables[t];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(e.themeVariables[t]="")}Z.debug("After sanitization",e)}},"sanitizeDirective"),o7=o(e=>{let t=0,r=0;for(let n of e){if(t{"use strict";G0();vt();Sk();Wi();Ek();Cd=Object.freeze(cr),ya=o(e=>!(e===!1||["false","null","0"].includes(String(e).trim().toLowerCase())),"evaluate"),Ks=Yn({},Cd),Fp=[],Vx=Yn({},Cd),Rk=o((e,t)=>{let r=Yn({},e),n={};for(let i of t)aZ(i),n=Yn(n,i);if(r=Yn(r,n),n.theme&&n.theme in sl){let i=Yn({},Ak),a=Yn(i.themeVariables||{},n.themeVariables);r.theme&&r.theme in sl&&(r.themeVariables=sl[r.theme].getThemeVariables(a))}return Vx=r,lZ(Vx),Vx},"updateCurrentConfig"),l7=o(e=>(Ks=Yn({},Cd),Ks=Yn(Ks,e),e.theme&&sl[e.theme]&&(Ks.themeVariables=sl[e.theme].getThemeVariables(e.themeVariables)),Rk(Ks,Fp),Ks),"setSiteConfig"),nZ=o(e=>{Ak=Yn({},e)},"saveConfigFromInitialize"),iZ=o(e=>(Ks=Yn(Ks,e),Rk(Ks,Fp),Ks),"updateSiteConfig"),c7=o(()=>Yn({},Ks),"getSiteConfig"),_k=o(e=>(lZ(e),Yn(Vx,e),_t()),"setConfig"),_t=o(()=>Yn({},Vx),"getConfig"),aZ=o(e=>{e&&(["secure",...Ks.secure??[]].forEach(t=>{Object.hasOwn(e,t)&&(Z.debug(`Denied attempt to modify a secure key ${t}`,e[t]),delete e[t])}),Object.keys(e).forEach(t=>{t.startsWith("__")&&delete e[t]}),Object.keys(e).forEach(t=>{typeof e[t]=="string"&&(e[t].includes("<")||e[t].includes(">")||e[t].includes("url(data:"))&&delete e[t],typeof e[t]=="object"&&aZ(e[t])}))},"sanitize"),sZ=o(e=>{W0(e),e.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables={...e.themeVariables,fontFamily:e.fontFamily}),Fp.push(e),Rk(Ks,Fp)},"addDirective"),Wx=o((e=Ks)=>{Fp=[],Rk(e,Fp)},"reset"),zze={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead.",FLOWCHART_HTML_LABELS_DEPRECATED:"flowchart.htmlLabels is deprecated. Please use global htmlLabels instead."},rZ={},oZ=o(e=>{rZ[e]||(Z.warn(zze[e]),rZ[e]=!0)},"issueWarning"),lZ=o(e=>{e&&(e.lazyLoadedDiagrams||e.loadExternalDiagramsAtStartup)&&oZ("LAZY_LOAD_DEPRECATED")},"checkConfig"),Lk=o(()=>{let e={};Ak&&(e=Yn(e,Ak));for(let t of Fp)e=Yn(e,t);return e},"getUserDefinedConfig"),Gr=o(e=>(e.flowchart?.htmlLabels!=null&&oZ("FLOWCHART_HTML_LABELS_DEPRECATED"),ya(e.htmlLabels??e.flowchart?.htmlLabels??!0)),"getEffectiveHtmlLabels")});function bs(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i2&&arguments[2]!==void 0?arguments[2]:Ik;cZ&&cZ(e,null);let n=t.length;for(;n--;){let i=t[n];if(typeof i=="string"){let a=r(i);a!==i&&(Gze(t)||(t[n]=a),i=a)}e[i]=!0}return e}function Xze(e){for(let t=0;t0&&arguments[0]!==void 0?arguments[0]:sGe(),t=o(Tt=>bZ(Tt),"DOMPurify");if(t.version="3.4.0",t.removed=[],!e||!e.document||e.document.nodeType!==jx.document||!e.Element)return t.isSupported=!1,t;let{document:r}=e,n=r,i=n.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:h,NamedNodeMap:d=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:f,DOMParser:p,trustedTypes:m}=e,g=u.prototype,y=Yx(g,"cloneNode"),v=Yx(g,"remove"),x=Yx(g,"nextSibling"),b=Yx(g,"childNodes"),T=Yx(g,"parentNode");if(typeof s=="function"){let Tt=r.createElement("template");Tt.content&&Tt.content.ownerDocument&&(r=Tt.content.ownerDocument)}let k,C="",{implementation:w,createNodeIterator:S,createDocumentFragment:R,getElementsByTagName:L}=r,{importNode:N}=n,I=gZ();t.isSupported=typeof yZ=="function"&&typeof T=="function"&&w&&w.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:_,ERB_EXPR:A,TMPLIT_EXPR:M,DATA_ATTR:D,ARIA_ATTR:P,IS_SCRIPT_OR_DATA:B,ATTR_WHITESPACE:O,CUSTOM_ELEMENT:$}=mZ,{IS_ALLOWED_URI:V}=mZ,G=null,z=Zr({},[...hZ,...d7,...f7,...p7,...dZ]),W=null,H=Zr({},[...fZ,...m7,...pZ,...Dk]),j=Object.seal(Xx(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Q=null,U=null,oe=Object.seal(Xx(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),te=!0,le=!0,ie=!1,ae=!0,Re=!1,be=!0,Pe=!1,Ge=!1,Oe=!1,ue=!1,ye=!1,ke=!1,ce=!0,re=!1,J="user-content-",se=!0,ge=!1,Te={},we=null,Me=Zr({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),ve=null,ne=Zr({},["audio","video","img","source","image","track"]),q=null,he=Zr({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),X="http://www.w3.org/1998/Math/MathML",fe="http://www.w3.org/2000/svg",K="http://www.w3.org/1999/xhtml",qe=K,_e=!1,Be=null,Ne=Zr({},[X,fe,K],u7),He=Zr({},["mi","mo","mn","ms","mtext"]),$e=Zr({},["annotation-xml"]),Xe=Zr({},["title","style","font","a","script"]),Fe=null,Ke=["application/xhtml+xml","text/html"],xe="text/html",mt=null,Le=null,ft=r.createElement("form"),wt=o(function(De){return De instanceof RegExp||De instanceof Function},"isRegexOrFunction"),zt=o(function(){let De=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Le&&Le===De)){if((!De||typeof De!="object")&&(De={}),De=Oc(De),Fe=Ke.indexOf(De.PARSER_MEDIA_TYPE)===-1?xe:De.PARSER_MEDIA_TYPE,mt=Fe==="application/xhtml+xml"?u7:Ik,G=zl(De,"ALLOWED_TAGS")?Zr({},De.ALLOWED_TAGS,mt):z,W=zl(De,"ALLOWED_ATTR")?Zr({},De.ALLOWED_ATTR,mt):H,Be=zl(De,"ALLOWED_NAMESPACES")?Zr({},De.ALLOWED_NAMESPACES,u7):Ne,q=zl(De,"ADD_URI_SAFE_ATTR")?Zr(Oc(he),De.ADD_URI_SAFE_ATTR,mt):he,ve=zl(De,"ADD_DATA_URI_TAGS")?Zr(Oc(ne),De.ADD_DATA_URI_TAGS,mt):ne,we=zl(De,"FORBID_CONTENTS")?Zr({},De.FORBID_CONTENTS,mt):Me,Q=zl(De,"FORBID_TAGS")?Zr({},De.FORBID_TAGS,mt):Oc({}),U=zl(De,"FORBID_ATTR")?Zr({},De.FORBID_ATTR,mt):Oc({}),Te=zl(De,"USE_PROFILES")?De.USE_PROFILES:!1,te=De.ALLOW_ARIA_ATTR!==!1,le=De.ALLOW_DATA_ATTR!==!1,ie=De.ALLOW_UNKNOWN_PROTOCOLS||!1,ae=De.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Re=De.SAFE_FOR_TEMPLATES||!1,be=De.SAFE_FOR_XML!==!1,Pe=De.WHOLE_DOCUMENT||!1,ue=De.RETURN_DOM||!1,ye=De.RETURN_DOM_FRAGMENT||!1,ke=De.RETURN_TRUSTED_TYPE||!1,Oe=De.FORCE_BODY||!1,ce=De.SANITIZE_DOM!==!1,re=De.SANITIZE_NAMED_PROPS||!1,se=De.KEEP_CONTENT!==!1,ge=De.IN_PLACE||!1,V=De.ALLOWED_URI_REGEXP||vZ,qe=De.NAMESPACE||K,He=De.MATHML_TEXT_INTEGRATION_POINTS||He,$e=De.HTML_INTEGRATION_POINTS||$e,j=De.CUSTOM_ELEMENT_HANDLING||Xx(null),De.CUSTOM_ELEMENT_HANDLING&&wt(De.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(j.tagNameCheck=De.CUSTOM_ELEMENT_HANDLING.tagNameCheck),De.CUSTOM_ELEMENT_HANDLING&&wt(De.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(j.attributeNameCheck=De.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),De.CUSTOM_ELEMENT_HANDLING&&typeof De.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(j.allowCustomizedBuiltInElements=De.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Re&&(le=!1),ye&&(ue=!0),Te&&(G=Zr({},dZ),W=Xx(null),Te.html===!0&&(Zr(G,hZ),Zr(W,fZ)),Te.svg===!0&&(Zr(G,d7),Zr(W,m7),Zr(W,Dk)),Te.svgFilters===!0&&(Zr(G,f7),Zr(W,m7),Zr(W,Dk)),Te.mathMl===!0&&(Zr(G,p7),Zr(W,pZ),Zr(W,Dk))),oe.tagCheck=null,oe.attributeCheck=null,De.ADD_TAGS&&(typeof De.ADD_TAGS=="function"?oe.tagCheck=De.ADD_TAGS:(G===z&&(G=Oc(G)),Zr(G,De.ADD_TAGS,mt))),De.ADD_ATTR&&(typeof De.ADD_ATTR=="function"?oe.attributeCheck=De.ADD_ATTR:(W===H&&(W=Oc(W)),Zr(W,De.ADD_ATTR,mt))),De.ADD_URI_SAFE_ATTR&&Zr(q,De.ADD_URI_SAFE_ATTR,mt),De.FORBID_CONTENTS&&(we===Me&&(we=Oc(we)),Zr(we,De.FORBID_CONTENTS,mt)),De.ADD_FORBID_CONTENTS&&(we===Me&&(we=Oc(we)),Zr(we,De.ADD_FORBID_CONTENTS,mt)),se&&(G["#text"]=!0),Pe&&Zr(G,["html","head","body"]),G.table&&(Zr(G,["tbody"]),delete Q.tbody),De.TRUSTED_TYPES_POLICY){if(typeof De.TRUSTED_TYPES_POLICY.createHTML!="function")throw Ux('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof De.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Ux('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');k=De.TRUSTED_TYPES_POLICY,C=k.createHTML("")}else k===void 0&&(k=oGe(m,i)),k!==null&&typeof C=="string"&&(C=k.createHTML(""));xs&&xs(De),Le=De}},"_parseConfig"),St=Zr({},[...d7,...f7,...Kze]),At=Zr({},[...p7,...Zze]),bt=o(function(De){let it=T(De);(!it||!it.tagName)&&(it={namespaceURI:qe,tagName:"template"});let We=Ik(De.tagName),rt=Ik(it.tagName);return Be[De.namespaceURI]?De.namespaceURI===fe?it.namespaceURI===K?We==="svg":it.namespaceURI===X?We==="svg"&&(rt==="annotation-xml"||He[rt]):!!St[We]:De.namespaceURI===X?it.namespaceURI===K?We==="math":it.namespaceURI===fe?We==="math"&&$e[rt]:!!At[We]:De.namespaceURI===K?it.namespaceURI===fe&&!$e[rt]||it.namespaceURI===X&&!He[rt]?!1:!At[We]&&(Xe[We]||!St[We]):!!(Fe==="application/xhtml+xml"&&Be[De.namespaceURI]):!1},"_checkValidNamespace"),me=o(function(De){Hx(t.removed,{element:De});try{T(De).removeChild(De)}catch{v(De)}},"_forceRemove"),lt=o(function(De,it){try{Hx(t.removed,{attribute:it.getAttributeNode(De),from:it})}catch{Hx(t.removed,{attribute:null,from:it})}if(it.removeAttribute(De),De==="is")if(ue||ye)try{me(it)}catch{}else try{it.setAttribute(De,"")}catch{}},"_removeAttribute"),gt=o(function(De){let it=null,We=null;if(Oe)De=""+De;else{let Yt=h7(De,/^[\r\n\t ]+/);We=Yt&&Yt[0]}Fe==="application/xhtml+xml"&&qe===K&&(De=''+De+"");let rt=k?k.createHTML(De):De;if(qe===K)try{it=new p().parseFromString(rt,Fe)}catch{}if(!it||!it.documentElement){it=w.createDocument(qe,"template",null);try{it.documentElement.innerHTML=_e?C:rt}catch{}}let yt=it.body||it.documentElement;return De&&We&&yt.insertBefore(r.createTextNode(We),yt.childNodes[0]||null),qe===K?L.call(it,Pe?"html":"body")[0]:Pe?it.documentElement:yt},"_initDocument"),Ze=o(function(De){return S.call(De.ownerDocument||De,De,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT|h.SHOW_PROCESSING_INSTRUCTION|h.SHOW_CDATA_SECTION,null)},"_createNodeIterator"),Ee=o(function(De){return De instanceof f&&(typeof De.nodeName!="string"||typeof De.textContent!="string"||typeof De.removeChild!="function"||!(De.attributes instanceof d)||typeof De.removeAttribute!="function"||typeof De.setAttribute!="function"||typeof De.namespaceURI!="string"||typeof De.insertBefore!="function"||typeof De.hasChildNodes!="function")},"_isClobbered"),tt=o(function(De){return typeof l=="function"&&De instanceof l},"_isNode");function at(Tt,De,it){qx(Tt,We=>{We.call(t,De,it,Le)})}o(at,"_executeHooks");let ot=o(function(De){let it=null;if(at(I.beforeSanitizeElements,De,null),Ee(De))return me(De),!0;let We=mt(De.nodeName);if(at(I.uponSanitizeElement,De,{tagName:We,allowedTags:G}),be&&De.hasChildNodes()&&!tt(De.firstElementChild)&&vs(/<[/\w!]/g,De.innerHTML)&&vs(/<[/\w!]/g,De.textContent)||be&&De.namespaceURI===K&&We==="style"&&tt(De.firstElementChild)||De.nodeType===jx.progressingInstruction||be&&De.nodeType===jx.comment&&vs(/<[/\w]/g,De.data))return me(De),!0;if(Q[We]||!(oe.tagCheck instanceof Function&&oe.tagCheck(We))&&!G[We]){if(!Q[We]&&Bt(We)&&(j.tagNameCheck instanceof RegExp&&vs(j.tagNameCheck,We)||j.tagNameCheck instanceof Function&&j.tagNameCheck(We)))return!1;if(se&&!we[We]){let rt=T(De)||De.parentNode,yt=b(De)||De.childNodes;if(yt&&rt){let Yt=yt.length;for(let Ht=Yt-1;Ht>=0;--Ht){let pr=y(yt[Ht],!0);pr.__removalCount=(De.__removalCount||0)+1,rt.insertBefore(pr,x(De))}}}return me(De),!0}return De instanceof u&&!bt(De)||(We==="noscript"||We==="noembed"||We==="noframes")&&vs(/<\/no(script|embed|frames)/i,De.innerHTML)?(me(De),!0):(Re&&De.nodeType===jx.text&&(it=De.textContent,qx([_,A,M],rt=>{it=q0(it,rt," ")}),De.textContent!==it&&(Hx(t.removed,{element:De.cloneNode()}),De.textContent=it)),at(I.afterSanitizeElements,De,null),!1)},"_sanitizeElements"),Wt=o(function(De,it,We){if(U[it]||ce&&(it==="id"||it==="name")&&(We in r||We in ft))return!1;if(!(le&&!U[it]&&vs(D,it))){if(!(te&&vs(P,it))){if(!(oe.attributeCheck instanceof Function&&oe.attributeCheck(it,De))){if(!W[it]||U[it]){if(!(Bt(De)&&(j.tagNameCheck instanceof RegExp&&vs(j.tagNameCheck,De)||j.tagNameCheck instanceof Function&&j.tagNameCheck(De))&&(j.attributeNameCheck instanceof RegExp&&vs(j.attributeNameCheck,it)||j.attributeNameCheck instanceof Function&&j.attributeNameCheck(it,De))||it==="is"&&j.allowCustomizedBuiltInElements&&(j.tagNameCheck instanceof RegExp&&vs(j.tagNameCheck,We)||j.tagNameCheck instanceof Function&&j.tagNameCheck(We))))return!1}else if(!q[it]){if(!vs(V,q0(We,O,""))){if(!((it==="src"||it==="xlink:href"||it==="href")&&De!=="script"&&Uze(We,"data:")===0&&ve[De])){if(!(ie&&!vs(B,q0(We,O,"")))){if(We)return!1}}}}}}}return!0},"_isValidAttribute"),Bt=o(function(De){return De!=="annotation-xml"&&h7(De,$)},"_isBasicCustomElement"),qt=o(function(De){at(I.beforeSanitizeAttributes,De,null);let{attributes:it}=De;if(!it||Ee(De))return;let We={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:W,forceKeepAttr:void 0},rt=it.length;for(;rt--;){let yt=it[rt],{name:Yt,namespaceURI:Ht,value:pr}=yt,Hr=mt(Yt),Er=pr,kt=Yt==="value"?Er:Yze(Er);if(We.attrName=Hr,We.attrValue=kt,We.keepAttr=!0,We.forceKeepAttr=void 0,at(I.uponSanitizeAttribute,De,We),kt=We.attrValue,re&&(Hr==="id"||Hr==="name")&&(lt(Yt,De),kt=J+kt),be&&vs(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,kt)){lt(Yt,De);continue}if(Hr==="attributename"&&h7(kt,"href")){lt(Yt,De);continue}if(We.forceKeepAttr)continue;if(!We.keepAttr){lt(Yt,De);continue}if(!ae&&vs(/\/>/i,kt)){lt(Yt,De);continue}Re&&qx([_,A,M],Ot=>{kt=q0(kt,Ot," ")});let Ct=mt(De.nodeName);if(!Wt(Ct,Hr,kt)){lt(Yt,De);continue}if(k&&typeof m=="object"&&typeof m.getAttributeType=="function"&&!Ht)switch(m.getAttributeType(Ct,Hr)){case"TrustedHTML":{kt=k.createHTML(kt);break}case"TrustedScriptURL":{kt=k.createScriptURL(kt);break}}if(kt!==Er)try{Ht?De.setAttributeNS(Ht,Yt,kt):De.setAttribute(Yt,kt),Ee(De)?me(De):uZ(t.removed)}catch{lt(Yt,De)}}at(I.afterSanitizeAttributes,De,null)},"_sanitizeAttributes"),vr=o(function(De){let it=null,We=Ze(De);for(at(I.beforeSanitizeShadowDOM,De,null);it=We.nextNode();)at(I.uponSanitizeShadowNode,it,null),ot(it),qt(it),it.content instanceof a&&vr(it.content);at(I.afterSanitizeShadowDOM,De,null)},"_sanitizeShadowDOM");return t.sanitize=function(Tt){let De=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},it=null,We=null,rt=null,yt=null;if(_e=!Tt,_e&&(Tt=""),typeof Tt!="string"&&!tt(Tt))if(typeof Tt.toString=="function"){if(Tt=Tt.toString(),typeof Tt!="string")throw Ux("dirty is not a string, aborting")}else throw Ux("toString is not a function");if(!t.isSupported)return Tt;if(Ge||zt(De),t.removed=[],typeof Tt=="string"&&(ge=!1),ge){if(Tt.nodeName){let pr=mt(Tt.nodeName);if(!G[pr]||Q[pr])throw Ux("root node is forbidden and cannot be sanitized in-place")}}else if(Tt instanceof l)it=gt(""),We=it.ownerDocument.importNode(Tt,!0),We.nodeType===jx.element&&We.nodeName==="BODY"||We.nodeName==="HTML"?it=We:it.appendChild(We);else{if(!ue&&!Re&&!Pe&&Tt.indexOf("<")===-1)return k&&ke?k.createHTML(Tt):Tt;if(it=gt(Tt),!it)return ue?null:ke?C:""}it&&Oe&&me(it.firstChild);let Yt=Ze(ge?Tt:it);for(;rt=Yt.nextNode();)ot(rt),qt(rt),rt.content instanceof a&&vr(rt.content);if(ge)return Tt;if(ue){if(Re){it.normalize();let pr=it.innerHTML;qx([_,A,M],Hr=>{pr=q0(pr,Hr," ")}),it.innerHTML=pr}if(ye)for(yt=R.call(it.ownerDocument);it.firstChild;)yt.appendChild(it.firstChild);else yt=it;return(W.shadowroot||W.shadowrootmode)&&(yt=N.call(n,yt,!0)),yt}let Ht=Pe?it.outerHTML:it.innerHTML;return Pe&&G["!doctype"]&&it.ownerDocument&&it.ownerDocument.doctype&&it.ownerDocument.doctype.name&&vs(xZ,it.ownerDocument.doctype.name)&&(Ht=" +`+Ht),Re&&qx([_,A,M],pr=>{Ht=q0(Ht,pr," ")}),k&&ke?k.createHTML(Ht):Ht},t.setConfig=function(){let Tt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};zt(Tt),Ge=!0},t.clearConfig=function(){Le=null,Ge=!1},t.isValidAttribute=function(Tt,De,it){Le||zt({});let We=mt(Tt),rt=mt(De);return Wt(We,rt,it)},t.addHook=function(Tt,De){typeof De=="function"&&Hx(I[Tt],De)},t.removeHook=function(Tt,De){if(De!==void 0){let it=qze(I[Tt],De);return it===-1?void 0:Hze(I[Tt],it,1)[0]}return uZ(I[Tt])},t.removeHooks=function(Tt){I[Tt]=[]},t.removeAllHooks=function(){I=gZ()},t}var yZ,cZ,Gze,Vze,Wze,xs,ol,Xx,g7,y7,qx,qze,uZ,Hx,Hze,Ik,u7,h7,q0,Uze,Yze,zl,vs,Ux,hZ,d7,f7,Kze,p7,Zze,dZ,fZ,m7,pZ,Dk,Qze,Jze,eGe,tGe,rGe,vZ,nGe,iGe,xZ,aGe,mZ,jx,sGe,oGe,gZ,Zs,H0=F(()=>{"use strict";({entries:yZ,setPrototypeOf:cZ,isFrozen:Gze,getPrototypeOf:Vze,getOwnPropertyDescriptor:Wze}=Object),{freeze:xs,seal:ol,create:Xx}=Object,{apply:g7,construct:y7}=typeof Reflect<"u"&&Reflect;xs||(xs=o(function(t){return t},"freeze"));ol||(ol=o(function(t){return t},"seal"));g7||(g7=o(function(t,r){for(var n=arguments.length,i=new Array(n>2?n-2:0),a=2;a1?r-1:0),i=1;i/gm),eGe=ol(/\$\{[\w\W]*/gm),tGe=ol(/^data-[\-\w.\u00B7-\uFFFF]+$/),rGe=ol(/^aria-[\-\w]+$/),vZ=ol(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),nGe=ol(/^(?:\w+script|data):/i),iGe=ol(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),xZ=ol(/^html$/i),aGe=ol(/^[a-z][.\w]*(-[.\w]+)+$/i),mZ=Object.freeze({__proto__:null,ARIA_ATTR:rGe,ATTR_WHITESPACE:iGe,CUSTOM_ELEMENT:aGe,DATA_ATTR:tGe,DOCTYPE_NAME:xZ,ERB_EXPR:Jze,IS_ALLOWED_URI:vZ,IS_SCRIPT_OR_DATA:nGe,MUSTACHE_EXPR:Qze,TMPLIT_EXPR:eGe}),jx={element:1,text:3,progressingInstruction:7,comment:8,document:9},sGe=o(function(){return typeof window>"u"?null:window},"getGlobal"),oGe=o(function(t,r){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let n=null,i="data-tt-policy-suffix";r&&r.hasAttribute(i)&&(n=r.getAttribute(i));let a="dompurify"+(n?"#"+n:"");try{return t.createPolicy(a,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}},"_createTrustedTypesPolicy"),gZ=o(function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},"_createHooksMap");o(bZ,"createDOMPurify");Zs=bZ()});var KQ={};ir(KQ,{ParseError:()=>Pt,SETTINGS_SCHEMA:()=>Uk,__defineFunction:()=>Ut,__defineMacro:()=>Ce,__defineSymbol:()=>Y,__domTree:()=>XQ,__parse:()=>HQ,__renderToDomTree:()=>fS,__renderToHTMLTree:()=>YQ,__setFontMetrics:()=>tQ,default:()=>GVe,render:()=>o8,renderToString:()=>qQ,version:()=>jQ});function fGe(e){if("default"in e)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}function bGe(e){for(var t=0;t=i[0]&&e<=i[1])return r.name}return null}function KZ(e){for(var t=0;t=Hk[t]&&e<=Hk[t+1])return!0;return!1}function NGe(e){if(e instanceof ws)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}function PGe(e){if(e instanceof Ad)return e;throw new Error("Expected span but got "+String(e)+".")}function tQ(e,t){Fc[e]=t}function X7(e,t,r){if(!Fc[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),i=Fc[t][n];if(!i&&e[0]in CZ&&(n=CZ[e[0]].charCodeAt(0),i=Fc[t][n]),!i&&r==="text"&&KZ(n)&&(i=Fc[t][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}function BGe(e){var t;if(e>=5?t=0:e>=3?t=1:t=2,!v7[t]){var r=v7[t]={cssEmPerMu:Mk.quad[t]/18};for(var n in Mk)Mk.hasOwnProperty(n)&&(r[n]=Mk[n][t])}return v7[t]}function Y(e,t,r,n,i,a){ui[e][i]={font:t,group:r,replace:n},a&&n&&(ui[e][n]=ui[e][i])}function Ut(e){for(var{type:t,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=e,l={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},u=0;u0&&(a.push(zk(s,t)),s=[]),a.push(n[l]));s.length>0&&a.push(zk(s,t));var h;r?(h=zk(ia(r,t,!0),t),h.classes=["tag"],a.push(h)):i&&a.push(i);var d=Mt(["katex-html"],a);if(d.setAttribute("aria-hidden","true"),h){var f=h.children[0];f.style.height=$t(d.height+d.depth),d.depth&&(f.style.verticalAlign=$t(-d.depth))}return d}function cQ(e){return new Sd(e)}function T7(e){if(!e)return!1;if(e.type==="mi"&&e.children.length===1){var t=e.children[0];return t instanceof Ei&&t.text==="."}else if(e.type==="mo"&&e.children.length===1&&e.getAttribute("separator")==="true"&&e.getAttribute("lspace")==="0em"&&e.getAttribute("rspace")==="0em"){var r=e.children[0];return r instanceof Ei&&r.text===","}else return!1}function EZ(e,t,r,n,i){var a=Po(e,r),s;a.length===1&&a[0]instanceof Nt&&QGe.has(a[0].type)?s=a[0]:s=new Nt("mrow",a);var l=new Nt("annotation",[new Ei(t)]);l.setAttribute("encoding","application/x-tex");var u=new Nt("semantics",[s,l]),h=new Nt("math",[u]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&h.setAttribute("display","block");var d=i?"katex":"katex-mathml";return Mt([d],[h])}function Ur(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function sS(e){var t=oS(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function oS(e){return e&&(e.type==="atom"||FGe.hasOwnProperty(e.type))?e:null}function pQ(e,t){var r=ia(e.body,t,!0);return Mt([e.mclass],r,t)}function mQ(e,t){var r,n=Po(e.body,t);return e.mclass==="minner"?r=new Nt("mpadded",n):e.mclass==="mord"?e.isCharacterBox?(r=n[0],r.type="mi"):r=new Nt("mi",n):(e.isCharacterBox?(r=n[0],r.type="mo"):r=new Nt("mo",n),e.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):e.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):e.mclass==="mopen"||e.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):e.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}function cVe(e,t,r){var n=oVe[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[t[0]],[]),a={type:"atom",text:n,mode:"math",family:"rel"},s=r.callFunction("\\Big",[a],[]),l=r.callFunction("\\\\cdright",[t[1]],[]),u={type:"ordgroup",mode:"math",body:[i,s,l]};return r.callFunction("\\\\cdparent",[u],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var h={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[h],[])}default:return{type:"textord",text:" ",mode:"math"}}}function uVe(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if(r==="&"||r==="\\\\")e.consume();else if(r==="\\end"){t[t.length-1].length===0&&t.pop();break}else throw new Pt("Expected \\\\ or \\cr or \\end",e.nextToken)}for(var n=[],i=[n],a=0;aAV".includes(h))for(var f=0;f<2;f++){for(var p=!0,m=u+1;mAV=|." after @',s[u]);var g=cVe(h,d,e),y={type:"styling",body:[g],mode:"math",style:"display"};n.push(y),l=_Z()}a%2===0?n.push(l):n.shift(),n=[],i.push(n)}e.gullet.endGroup(),e.gullet.endGroup();var v=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:v,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}function cS(e,t){var r=oS(e);if(r&&TVe.has(r.text))return r;throw r?new Pt("Invalid delimiter '"+r.text+"' after '"+t.funcName+"'",e):new Pt("Invalid delimiter type '"+e.type+"'",e)}function IZ(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}function Gc(e){for(var{type:t,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=e,l={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},u=0;u1||!d)&&y.pop(),x.length{"use strict";Pt=class e extends Error{static{o(this,"ParseError")}constructor(t,r){var n="KaTeX parse error: "+t,i,a,s=r&&r.loc;if(s&&s.start<=s.end){var l=s.lexer.input;i=s.start,a=s.end,i===l.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var u=l.slice(i,a).replace(/[^]/g,"$&\u0332"),h;i>15?h="\u2026"+l.slice(i-15,i):h=l.slice(0,i);var d;a+15e.replace(lGe,"-$1").toLowerCase(),"hyphenate"),cGe={"&":"&",">":">","<":"<",'"':""","'":"'"},uGe=/[&><"']/g,es=o(e=>String(e).replace(uGe,t=>cGe[t]),"escape"),qk=o(e=>e.type==="ordgroup"||e.type==="color"?e.body.length===1?qk(e.body[0]):e:e.type==="font"?qk(e.body):e,"getBaseElem"),hGe=new Set(["mathord","textord","atom"]),ih=o(e=>hGe.has(qk(e).type),"isCharacterBox"),dGe=o(e=>{var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},"protocolFromUrl"),Uk={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:o(e=>"#"+e,"cliProcessor")},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:o((e,t)=>(t.push(e),t),"cliProcessor")},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:o(e=>Math.max(0,e),"processor"),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:o(e=>Math.max(0,e),"processor"),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:o(e=>Math.max(0,e),"processor"),cli:"-e, --max-expand ",cliProcessor:o(e=>e==="Infinity"?1/0:parseInt(e),"cliProcessor")},globalGroup:{type:"boolean",cli:!1}};o(fGe,"getDefaultValue");eb=class{static{o(this,"Settings")}constructor(t){t===void 0&&(t={}),t=t||{};for(var r of Object.keys(Uk)){var n=Uk[r],i=t[r];this[r]=i!==void 0?n.processor?n.processor(i):i:fGe(n)}}reportNonstrict(t,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(t,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new Pt("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+t+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+t+"]"))}}useStrictBehavior(t,r,n){var i=this.strict;if(typeof i=="function")try{i=i(t,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+t+"]")),!1)}isTrusted(t){if("url"in t&&t.url&&!t.protocol){var r=dGe(t.url);if(r==null)return!1;t.protocol=r}var n=typeof this.trust=="function"?this.trust(t):this.trust;return!!n}},Bc=class{static{o(this,"Style")}constructor(t,r,n){this.id=t,this.size=r,this.cramped=n}sup(){return $c[pGe[this.id]]}sub(){return $c[mGe[this.id]]}fracNum(){return $c[gGe[this.id]]}fracDen(){return $c[yGe[this.id]]}cramp(){return $c[vGe[this.id]]}text(){return $c[xGe[this.id]]}isTight(){return this.size>=2}},j7=0,Yk=1,Y0=2,nh=3,tb=4,ll=5,j0=6,Cs=7,$c=[new Bc(j7,0,!1),new Bc(Yk,0,!0),new Bc(Y0,1,!1),new Bc(nh,1,!0),new Bc(tb,2,!1),new Bc(ll,2,!0),new Bc(j0,3,!1),new Bc(Cs,3,!0)],pGe=[tb,ll,tb,ll,j0,Cs,j0,Cs],mGe=[ll,ll,ll,ll,Cs,Cs,Cs,Cs],gGe=[Y0,nh,tb,ll,j0,Cs,j0,Cs],yGe=[nh,nh,ll,ll,Cs,Cs,Cs,Cs],vGe=[Yk,Yk,nh,nh,ll,ll,Cs,Cs],xGe=[j7,Yk,Y0,nh,Y0,nh,Y0,nh],Fr={DISPLAY:$c[j7],TEXT:$c[Y0],SCRIPT:$c[tb],SCRIPTSCRIPT:$c[j0]},I7=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];o(bGe,"scriptFromCodepoint");Hk=[];I7.forEach(e=>e.blocks.forEach(t=>Hk.push(...t)));o(KZ,"supportedCodepoint");na=o(e=>e+" "+e,"doubleBrushStroke"),U0=80,TGe=o(function(t,r){return"M95,"+(622+t+r)+` +c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 +c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 +c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 +s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 +c69,-144,104.5,-217.7,106.5,-221 +l`+t/2.075+" -"+t+` +c5.3,-9.3,12,-14,20,-14 +H400000v`+(40+t)+`H845.2724 +s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 +c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z +M`+(834+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},"sqrtMain"),CGe=o(function(t,r){return"M263,"+(601+t+r)+`c0.7,0,18,39.7,52,119 +c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 +c340,-704.7,510.7,-1060.3,512,-1067 +l`+t/2.084+" -"+t+` +c4.7,-7.3,11,-11,19,-11 +H40000v`+(40+t)+`H1012.3 +s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 +c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 +s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 +c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z +M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},"sqrtSize1"),wGe=o(function(t,r){return"M983 "+(10+t+r)+` +l`+t/3.13+" -"+t+` +c4,-6.7,10,-10,18,-10 H400000v`+(40+t)+` +H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 +s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 +c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 +c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 +c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 +c53.7,-170.3,84.5,-266.8,92.5,-289.5z +M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},"sqrtSize2"),kGe=o(function(t,r){return"M424,"+(2398+t+r)+` +c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 +c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 +s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 +s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 +l`+t/4.223+" -"+t+`c4,-6.7,10,-10,18,-10 H400000 +v`+(40+t)+`H1014.6 +s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 +c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2z M`+(1001+t)+" "+r+` +h400000v`+(40+t)+"h-400000z"},"sqrtSize3"),SGe=o(function(t,r){return"M473,"+(2713+t+r)+` +c339.3,-1799.3,509.3,-2700,510,-2702 l`+t/5.298+" -"+t+` +c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+t)+`H1017.7 +s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 +c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 +s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, +606zM`+(1001+t)+" "+r+"h400000v"+(40+t)+"H1017.7z"},"sqrtSize4"),EGe=o(function(t){var r=t/2;return"M400000 "+t+" H0 L"+r+" 0 l65 45 L145 "+(t-80)+" H400000z"},"phasePath"),AGe=o(function(t,r,n){var i=n-54-r-t;return"M702 "+(t+r)+"H400000"+(40+t)+` +H742v`+i+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 +h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 +c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 +219 661 l218 661zM702 `+r+"H400000v"+(40+t)+"H742z"},"sqrtTall"),RGe=o(function(t,r,n){r=1e3*r;var i="";switch(t){case"sqrtMain":i=TGe(r,U0);break;case"sqrtSize1":i=CGe(r,U0);break;case"sqrtSize2":i=wGe(r,U0);break;case"sqrtSize3":i=kGe(r,U0);break;case"sqrtSize4":i=SGe(r,U0);break;case"sqrtTall":i=AGe(r,U0,n)}return i},"sqrtPath"),_Ge=o(function(t,r){switch(t){case"\u239C":return na("M291 0 H417 V"+r+" H291z");case"\u2223":return na("M145 0 H188 V"+r+" H145z");case"\u2225":return na("M145 0 H188 V"+r+" H145z")+na("M367 0 H410 V"+r+" H367z");case"\u239F":return na("M457 0 H583 V"+r+" H457z");case"\u23A2":return na("M319 0 H403 V"+r+" H319z");case"\u23A5":return na("M263 0 H347 V"+r+" H263z");case"\u23AA":return na("M384 0 H504 V"+r+" H384z");case"\u23D0":return na("M312 0 H355 V"+r+" H312z");case"\u2016":return na("M257 0 H300 V"+r+" H257z")+na("M478 0 H521 V"+r+" H478z");default:return""}},"innerPath"),TZ={doubleleftarrow:`M262 157 +l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 + 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 + 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 +c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 + 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l +-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 + 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 +-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 +-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 + 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 +-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 +c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 + 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 + 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 + l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 + 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 +H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 + 435 0h399565z`,leftgroupunder:`M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 +-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 +-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 + 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 +-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 +-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 + 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 +-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 + 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:na("M40 281 V428 H0 V94 H40 V241 H400000 v40z"),leftbracketunder:na("M0 0 h120 V290 H399995 v120 H0z"),leftbracketover:na("M0 440 h120 V150 H399995 v-120 H0z"),leftmapsto:na("M40 281 V448H0V74H40V241H400000v40z"),leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 +-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 +c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:na("M0 50 h400000 v40H0z m0 194h40000v40H0z"),midbrace:`M200428 334 +c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 +c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 +-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 +60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 +-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 + 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 + 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 +-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 + 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l +-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 + 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 + 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 +-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 +-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 + 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 +-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 + 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z +m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 + 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 +-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 +-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 + 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 + 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 + 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 +-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 + 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:na("M399960 241 V94 h40 V428 h-40 V281 H0 v-40z"),rightbracketunder:na("M399995 0 h-120 V290 H0 v120 H400000z"),rightbracketover:na("M399995 440 h-120 V150 H0 v-120 H399995z"),rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 + 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 +c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 + 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 +-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 + 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 + 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, +-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 +s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 +121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 +s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 +-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 +13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 +-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 +-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, +1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},LGe=o(function(t,r){switch(t){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v`+r+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z +M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z +MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z +MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z +M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z +M347 1759 V0 h-84 V1759 v`+r+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 +c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, +-36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, +949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 +c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, +-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 +l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, +-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, +63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 +c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` +c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 +c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 +c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 +c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 +l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}},"tallDelim"),Sd=class{static{o(this,"DocumentFragment")}constructor(t){this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(t){return this.classes.includes(t)}toNode(){for(var t=document.createDocumentFragment(),r=0;rr.toText(),"toText");return this.children.map(t).join("")}},M7={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},DGe={ex:!0,em:!0,mu:!0},ZZ=o(function(t){return typeof t!="string"&&(t=t.unit),t in M7||t in DGe||t==="ex"},"validUnit"),xi=o(function(t,r){var n;if(t.unit in M7)n=M7[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(t.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,t.unit==="ex")n=i.fontMetrics().xHeight;else if(t.unit==="em")n=i.fontMetrics().quad;else throw new Pt("Invalid unit: '"+t.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(t.number*n,r.maxSize)},"calculateSize"),$t=o(function(t){return+t.toFixed(4)+"em"},"makeEm"),Ed=o(function(t){return t.filter(r=>r).join(" ")},"createClass"),QZ=o(function(t,r,n){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},"initNode"),JZ=o(function(t){var r=document.createElement(t);r.className=Ed(this.classes);for(var n of Object.keys(this.style))r.style[n]=this.style[n];for(var i of Object.keys(this.attributes))r.setAttribute(i,this.attributes[i]);for(var a=0;a/=\x00-\x1f]/,eQ=o(function(t){var r="<"+t;this.classes.length&&(r+=' class="'+es(Ed(this.classes))+'"');var n="";for(var i of Object.keys(this.style))n+=Y7(i)+":"+this.style[i]+";";n&&(r+=' style="'+es(n)+'"');for(var a of Object.keys(this.attributes)){if(IGe.test(a))throw new Pt("Invalid attribute name '"+a+"'");r+=" "+a+'="'+es(this.attributes[a])+'"'}r+=">";for(var s=0;s",r},"toMarkup"),Ad=class{static{o(this,"Span")}constructor(t,r,n,i){QZ.call(this,t,n,i),this.children=r||[]}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return JZ.call(this,"span")}toMarkup(){return eQ.call(this,"span")}},X0=class{static{o(this,"Anchor")}constructor(t,r,n,i){QZ.call(this,r,i),this.children=n||[],this.setAttribute("href",t)}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return JZ.call(this,"a")}toMarkup(){return eQ.call(this,"a")}},N7=class{static{o(this,"Img")}constructor(t,r,n){this.alt=r,this.src=t,this.classes=["mord"],this.height=0,this.depth=0,this.maxFontSize=0,this.style=n}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createElement("img");t.src=this.src,t.alt=this.alt,t.className="mord";for(var r of Object.keys(this.style))t.style[r]=this.style[r];return t}toMarkup(){var t=''+es(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=$t(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=Ed(this.classes));for(var n of Object.keys(this.style))r=r||document.createElement("span"),r.style[n]=this.style[n];return r?(r.appendChild(t),r):t}toMarkup(){var t=!1,r="0&&(n+="margin-right:"+$t(this.italic)+";");for(var i of Object.keys(this.style))n+=Y7(i)+":"+this.style[i]+";";n&&(t=!0,r+=' style="'+es(n)+'"');var a=es(this.text);return t?(r+=">",r+=a,r+="",r):a}},Gl=class{static{o(this,"SvgNode")}constructor(t,r){this.children=t||[],this.attributes=r||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);for(var i=0;i':''}},rb=class{static{o(this,"LineNode")}constructor(t){this.attributes=t||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"line");for(var n of Object.keys(this.attributes))r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var t="e instanceof Ad||e instanceof X0||e instanceof Sd,"hasHtmlDomChildren"),Fc={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Mk={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},CZ={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};o(tQ,"setFontMetrics");o(X7,"getCharacterMetrics");v7={};o(BGe,"getGlobalMetrics");$Ge={bin:1,close:1,inner:1,open:1,punct:1,rel:1},FGe={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},ui={math:{},text:{}};o(Y,"defineSymbol");ee="math",Lt="text",pe="main",ze="ams",hi="accent-token",jt="bin",ks="close",Q0="inner",xr="mathord",Hi="op-token",No="open",ib="punct",Ve="rel",ah="spacing",Ue="textord";Y(ee,pe,Ve,"\u2261","\\equiv",!0);Y(ee,pe,Ve,"\u227A","\\prec",!0);Y(ee,pe,Ve,"\u227B","\\succ",!0);Y(ee,pe,Ve,"\u223C","\\sim",!0);Y(ee,pe,Ve,"\u22A5","\\perp");Y(ee,pe,Ve,"\u2AAF","\\preceq",!0);Y(ee,pe,Ve,"\u2AB0","\\succeq",!0);Y(ee,pe,Ve,"\u2243","\\simeq",!0);Y(ee,pe,Ve,"\u2223","\\mid",!0);Y(ee,pe,Ve,"\u226A","\\ll",!0);Y(ee,pe,Ve,"\u226B","\\gg",!0);Y(ee,pe,Ve,"\u224D","\\asymp",!0);Y(ee,pe,Ve,"\u2225","\\parallel");Y(ee,pe,Ve,"\u22C8","\\bowtie",!0);Y(ee,pe,Ve,"\u2323","\\smile",!0);Y(ee,pe,Ve,"\u2291","\\sqsubseteq",!0);Y(ee,pe,Ve,"\u2292","\\sqsupseteq",!0);Y(ee,pe,Ve,"\u2250","\\doteq",!0);Y(ee,pe,Ve,"\u2322","\\frown",!0);Y(ee,pe,Ve,"\u220B","\\ni",!0);Y(ee,pe,Ve,"\u221D","\\propto",!0);Y(ee,pe,Ve,"\u22A2","\\vdash",!0);Y(ee,pe,Ve,"\u22A3","\\dashv",!0);Y(ee,pe,Ve,"\u220B","\\owns");Y(ee,pe,ib,".","\\ldotp");Y(ee,pe,ib,"\u22C5","\\cdotp");Y(ee,pe,ib,"\u22C5","\xB7");Y(Lt,pe,Ue,"\u22C5","\xB7");Y(ee,pe,Ue,"#","\\#");Y(Lt,pe,Ue,"#","\\#");Y(ee,pe,Ue,"&","\\&");Y(Lt,pe,Ue,"&","\\&");Y(ee,pe,Ue,"\u2135","\\aleph",!0);Y(ee,pe,Ue,"\u2200","\\forall",!0);Y(ee,pe,Ue,"\u210F","\\hbar",!0);Y(ee,pe,Ue,"\u2203","\\exists",!0);Y(ee,pe,Ue,"\u2207","\\nabla",!0);Y(ee,pe,Ue,"\u266D","\\flat",!0);Y(ee,pe,Ue,"\u2113","\\ell",!0);Y(ee,pe,Ue,"\u266E","\\natural",!0);Y(ee,pe,Ue,"\u2663","\\clubsuit",!0);Y(ee,pe,Ue,"\u2118","\\wp",!0);Y(ee,pe,Ue,"\u266F","\\sharp",!0);Y(ee,pe,Ue,"\u2662","\\diamondsuit",!0);Y(ee,pe,Ue,"\u211C","\\Re",!0);Y(ee,pe,Ue,"\u2661","\\heartsuit",!0);Y(ee,pe,Ue,"\u2111","\\Im",!0);Y(ee,pe,Ue,"\u2660","\\spadesuit",!0);Y(ee,pe,Ue,"\xA7","\\S",!0);Y(Lt,pe,Ue,"\xA7","\\S");Y(ee,pe,Ue,"\xB6","\\P",!0);Y(Lt,pe,Ue,"\xB6","\\P");Y(ee,pe,Ue,"\u2020","\\dag");Y(Lt,pe,Ue,"\u2020","\\dag");Y(Lt,pe,Ue,"\u2020","\\textdagger");Y(ee,pe,Ue,"\u2021","\\ddag");Y(Lt,pe,Ue,"\u2021","\\ddag");Y(Lt,pe,Ue,"\u2021","\\textdaggerdbl");Y(ee,pe,ks,"\u23B1","\\rmoustache",!0);Y(ee,pe,No,"\u23B0","\\lmoustache",!0);Y(ee,pe,ks,"\u27EF","\\rgroup",!0);Y(ee,pe,No,"\u27EE","\\lgroup",!0);Y(ee,pe,jt,"\u2213","\\mp",!0);Y(ee,pe,jt,"\u2296","\\ominus",!0);Y(ee,pe,jt,"\u228E","\\uplus",!0);Y(ee,pe,jt,"\u2293","\\sqcap",!0);Y(ee,pe,jt,"\u2217","\\ast");Y(ee,pe,jt,"\u2294","\\sqcup",!0);Y(ee,pe,jt,"\u25EF","\\bigcirc",!0);Y(ee,pe,jt,"\u2219","\\bullet",!0);Y(ee,pe,jt,"\u2021","\\ddagger");Y(ee,pe,jt,"\u2240","\\wr",!0);Y(ee,pe,jt,"\u2A3F","\\amalg");Y(ee,pe,jt,"&","\\And");Y(ee,pe,Ve,"\u27F5","\\longleftarrow",!0);Y(ee,pe,Ve,"\u21D0","\\Leftarrow",!0);Y(ee,pe,Ve,"\u27F8","\\Longleftarrow",!0);Y(ee,pe,Ve,"\u27F6","\\longrightarrow",!0);Y(ee,pe,Ve,"\u21D2","\\Rightarrow",!0);Y(ee,pe,Ve,"\u27F9","\\Longrightarrow",!0);Y(ee,pe,Ve,"\u2194","\\leftrightarrow",!0);Y(ee,pe,Ve,"\u27F7","\\longleftrightarrow",!0);Y(ee,pe,Ve,"\u21D4","\\Leftrightarrow",!0);Y(ee,pe,Ve,"\u27FA","\\Longleftrightarrow",!0);Y(ee,pe,Ve,"\u21A6","\\mapsto",!0);Y(ee,pe,Ve,"\u27FC","\\longmapsto",!0);Y(ee,pe,Ve,"\u2197","\\nearrow",!0);Y(ee,pe,Ve,"\u21A9","\\hookleftarrow",!0);Y(ee,pe,Ve,"\u21AA","\\hookrightarrow",!0);Y(ee,pe,Ve,"\u2198","\\searrow",!0);Y(ee,pe,Ve,"\u21BC","\\leftharpoonup",!0);Y(ee,pe,Ve,"\u21C0","\\rightharpoonup",!0);Y(ee,pe,Ve,"\u2199","\\swarrow",!0);Y(ee,pe,Ve,"\u21BD","\\leftharpoondown",!0);Y(ee,pe,Ve,"\u21C1","\\rightharpoondown",!0);Y(ee,pe,Ve,"\u2196","\\nwarrow",!0);Y(ee,pe,Ve,"\u21CC","\\rightleftharpoons",!0);Y(ee,ze,Ve,"\u226E","\\nless",!0);Y(ee,ze,Ve,"\uE010","\\@nleqslant");Y(ee,ze,Ve,"\uE011","\\@nleqq");Y(ee,ze,Ve,"\u2A87","\\lneq",!0);Y(ee,ze,Ve,"\u2268","\\lneqq",!0);Y(ee,ze,Ve,"\uE00C","\\@lvertneqq");Y(ee,ze,Ve,"\u22E6","\\lnsim",!0);Y(ee,ze,Ve,"\u2A89","\\lnapprox",!0);Y(ee,ze,Ve,"\u2280","\\nprec",!0);Y(ee,ze,Ve,"\u22E0","\\npreceq",!0);Y(ee,ze,Ve,"\u22E8","\\precnsim",!0);Y(ee,ze,Ve,"\u2AB9","\\precnapprox",!0);Y(ee,ze,Ve,"\u2241","\\nsim",!0);Y(ee,ze,Ve,"\uE006","\\@nshortmid");Y(ee,ze,Ve,"\u2224","\\nmid",!0);Y(ee,ze,Ve,"\u22AC","\\nvdash",!0);Y(ee,ze,Ve,"\u22AD","\\nvDash",!0);Y(ee,ze,Ve,"\u22EA","\\ntriangleleft");Y(ee,ze,Ve,"\u22EC","\\ntrianglelefteq",!0);Y(ee,ze,Ve,"\u228A","\\subsetneq",!0);Y(ee,ze,Ve,"\uE01A","\\@varsubsetneq");Y(ee,ze,Ve,"\u2ACB","\\subsetneqq",!0);Y(ee,ze,Ve,"\uE017","\\@varsubsetneqq");Y(ee,ze,Ve,"\u226F","\\ngtr",!0);Y(ee,ze,Ve,"\uE00F","\\@ngeqslant");Y(ee,ze,Ve,"\uE00E","\\@ngeqq");Y(ee,ze,Ve,"\u2A88","\\gneq",!0);Y(ee,ze,Ve,"\u2269","\\gneqq",!0);Y(ee,ze,Ve,"\uE00D","\\@gvertneqq");Y(ee,ze,Ve,"\u22E7","\\gnsim",!0);Y(ee,ze,Ve,"\u2A8A","\\gnapprox",!0);Y(ee,ze,Ve,"\u2281","\\nsucc",!0);Y(ee,ze,Ve,"\u22E1","\\nsucceq",!0);Y(ee,ze,Ve,"\u22E9","\\succnsim",!0);Y(ee,ze,Ve,"\u2ABA","\\succnapprox",!0);Y(ee,ze,Ve,"\u2246","\\ncong",!0);Y(ee,ze,Ve,"\uE007","\\@nshortparallel");Y(ee,ze,Ve,"\u2226","\\nparallel",!0);Y(ee,ze,Ve,"\u22AF","\\nVDash",!0);Y(ee,ze,Ve,"\u22EB","\\ntriangleright");Y(ee,ze,Ve,"\u22ED","\\ntrianglerighteq",!0);Y(ee,ze,Ve,"\uE018","\\@nsupseteqq");Y(ee,ze,Ve,"\u228B","\\supsetneq",!0);Y(ee,ze,Ve,"\uE01B","\\@varsupsetneq");Y(ee,ze,Ve,"\u2ACC","\\supsetneqq",!0);Y(ee,ze,Ve,"\uE019","\\@varsupsetneqq");Y(ee,ze,Ve,"\u22AE","\\nVdash",!0);Y(ee,ze,Ve,"\u2AB5","\\precneqq",!0);Y(ee,ze,Ve,"\u2AB6","\\succneqq",!0);Y(ee,ze,Ve,"\uE016","\\@nsubseteqq");Y(ee,ze,jt,"\u22B4","\\unlhd");Y(ee,ze,jt,"\u22B5","\\unrhd");Y(ee,ze,Ve,"\u219A","\\nleftarrow",!0);Y(ee,ze,Ve,"\u219B","\\nrightarrow",!0);Y(ee,ze,Ve,"\u21CD","\\nLeftarrow",!0);Y(ee,ze,Ve,"\u21CF","\\nRightarrow",!0);Y(ee,ze,Ve,"\u21AE","\\nleftrightarrow",!0);Y(ee,ze,Ve,"\u21CE","\\nLeftrightarrow",!0);Y(ee,ze,Ve,"\u25B3","\\vartriangle");Y(ee,ze,Ue,"\u210F","\\hslash");Y(ee,ze,Ue,"\u25BD","\\triangledown");Y(ee,ze,Ue,"\u25CA","\\lozenge");Y(ee,ze,Ue,"\u24C8","\\circledS");Y(ee,ze,Ue,"\xAE","\\circledR");Y(Lt,ze,Ue,"\xAE","\\circledR");Y(ee,ze,Ue,"\u2221","\\measuredangle",!0);Y(ee,ze,Ue,"\u2204","\\nexists");Y(ee,ze,Ue,"\u2127","\\mho");Y(ee,ze,Ue,"\u2132","\\Finv",!0);Y(ee,ze,Ue,"\u2141","\\Game",!0);Y(ee,ze,Ue,"\u2035","\\backprime");Y(ee,ze,Ue,"\u25B2","\\blacktriangle");Y(ee,ze,Ue,"\u25BC","\\blacktriangledown");Y(ee,ze,Ue,"\u25A0","\\blacksquare");Y(ee,ze,Ue,"\u29EB","\\blacklozenge");Y(ee,ze,Ue,"\u2605","\\bigstar");Y(ee,ze,Ue,"\u2222","\\sphericalangle",!0);Y(ee,ze,Ue,"\u2201","\\complement",!0);Y(ee,ze,Ue,"\xF0","\\eth",!0);Y(Lt,pe,Ue,"\xF0","\xF0");Y(ee,ze,Ue,"\u2571","\\diagup");Y(ee,ze,Ue,"\u2572","\\diagdown");Y(ee,ze,Ue,"\u25A1","\\square");Y(ee,ze,Ue,"\u25A1","\\Box");Y(ee,ze,Ue,"\u25CA","\\Diamond");Y(ee,ze,Ue,"\xA5","\\yen",!0);Y(Lt,ze,Ue,"\xA5","\\yen",!0);Y(ee,ze,Ue,"\u2713","\\checkmark",!0);Y(Lt,ze,Ue,"\u2713","\\checkmark");Y(ee,ze,Ue,"\u2136","\\beth",!0);Y(ee,ze,Ue,"\u2138","\\daleth",!0);Y(ee,ze,Ue,"\u2137","\\gimel",!0);Y(ee,ze,Ue,"\u03DD","\\digamma",!0);Y(ee,ze,Ue,"\u03F0","\\varkappa");Y(ee,ze,No,"\u250C","\\@ulcorner",!0);Y(ee,ze,ks,"\u2510","\\@urcorner",!0);Y(ee,ze,No,"\u2514","\\@llcorner",!0);Y(ee,ze,ks,"\u2518","\\@lrcorner",!0);Y(ee,ze,Ve,"\u2266","\\leqq",!0);Y(ee,ze,Ve,"\u2A7D","\\leqslant",!0);Y(ee,ze,Ve,"\u2A95","\\eqslantless",!0);Y(ee,ze,Ve,"\u2272","\\lesssim",!0);Y(ee,ze,Ve,"\u2A85","\\lessapprox",!0);Y(ee,ze,Ve,"\u224A","\\approxeq",!0);Y(ee,ze,jt,"\u22D6","\\lessdot");Y(ee,ze,Ve,"\u22D8","\\lll",!0);Y(ee,ze,Ve,"\u2276","\\lessgtr",!0);Y(ee,ze,Ve,"\u22DA","\\lesseqgtr",!0);Y(ee,ze,Ve,"\u2A8B","\\lesseqqgtr",!0);Y(ee,ze,Ve,"\u2251","\\doteqdot");Y(ee,ze,Ve,"\u2253","\\risingdotseq",!0);Y(ee,ze,Ve,"\u2252","\\fallingdotseq",!0);Y(ee,ze,Ve,"\u223D","\\backsim",!0);Y(ee,ze,Ve,"\u22CD","\\backsimeq",!0);Y(ee,ze,Ve,"\u2AC5","\\subseteqq",!0);Y(ee,ze,Ve,"\u22D0","\\Subset",!0);Y(ee,ze,Ve,"\u228F","\\sqsubset",!0);Y(ee,ze,Ve,"\u227C","\\preccurlyeq",!0);Y(ee,ze,Ve,"\u22DE","\\curlyeqprec",!0);Y(ee,ze,Ve,"\u227E","\\precsim",!0);Y(ee,ze,Ve,"\u2AB7","\\precapprox",!0);Y(ee,ze,Ve,"\u22B2","\\vartriangleleft");Y(ee,ze,Ve,"\u22B4","\\trianglelefteq");Y(ee,ze,Ve,"\u22A8","\\vDash",!0);Y(ee,ze,Ve,"\u22AA","\\Vvdash",!0);Y(ee,ze,Ve,"\u2323","\\smallsmile");Y(ee,ze,Ve,"\u2322","\\smallfrown");Y(ee,ze,Ve,"\u224F","\\bumpeq",!0);Y(ee,ze,Ve,"\u224E","\\Bumpeq",!0);Y(ee,ze,Ve,"\u2267","\\geqq",!0);Y(ee,ze,Ve,"\u2A7E","\\geqslant",!0);Y(ee,ze,Ve,"\u2A96","\\eqslantgtr",!0);Y(ee,ze,Ve,"\u2273","\\gtrsim",!0);Y(ee,ze,Ve,"\u2A86","\\gtrapprox",!0);Y(ee,ze,jt,"\u22D7","\\gtrdot");Y(ee,ze,Ve,"\u22D9","\\ggg",!0);Y(ee,ze,Ve,"\u2277","\\gtrless",!0);Y(ee,ze,Ve,"\u22DB","\\gtreqless",!0);Y(ee,ze,Ve,"\u2A8C","\\gtreqqless",!0);Y(ee,ze,Ve,"\u2256","\\eqcirc",!0);Y(ee,ze,Ve,"\u2257","\\circeq",!0);Y(ee,ze,Ve,"\u225C","\\triangleq",!0);Y(ee,ze,Ve,"\u223C","\\thicksim");Y(ee,ze,Ve,"\u2248","\\thickapprox");Y(ee,ze,Ve,"\u2AC6","\\supseteqq",!0);Y(ee,ze,Ve,"\u22D1","\\Supset",!0);Y(ee,ze,Ve,"\u2290","\\sqsupset",!0);Y(ee,ze,Ve,"\u227D","\\succcurlyeq",!0);Y(ee,ze,Ve,"\u22DF","\\curlyeqsucc",!0);Y(ee,ze,Ve,"\u227F","\\succsim",!0);Y(ee,ze,Ve,"\u2AB8","\\succapprox",!0);Y(ee,ze,Ve,"\u22B3","\\vartriangleright");Y(ee,ze,Ve,"\u22B5","\\trianglerighteq");Y(ee,ze,Ve,"\u22A9","\\Vdash",!0);Y(ee,ze,Ve,"\u2223","\\shortmid");Y(ee,ze,Ve,"\u2225","\\shortparallel");Y(ee,ze,Ve,"\u226C","\\between",!0);Y(ee,ze,Ve,"\u22D4","\\pitchfork",!0);Y(ee,ze,Ve,"\u221D","\\varpropto");Y(ee,ze,Ve,"\u25C0","\\blacktriangleleft");Y(ee,ze,Ve,"\u2234","\\therefore",!0);Y(ee,ze,Ve,"\u220D","\\backepsilon");Y(ee,ze,Ve,"\u25B6","\\blacktriangleright");Y(ee,ze,Ve,"\u2235","\\because",!0);Y(ee,ze,Ve,"\u22D8","\\llless");Y(ee,ze,Ve,"\u22D9","\\gggtr");Y(ee,ze,jt,"\u22B2","\\lhd");Y(ee,ze,jt,"\u22B3","\\rhd");Y(ee,ze,Ve,"\u2242","\\eqsim",!0);Y(ee,pe,Ve,"\u22C8","\\Join");Y(ee,ze,Ve,"\u2251","\\Doteq",!0);Y(ee,ze,jt,"\u2214","\\dotplus",!0);Y(ee,ze,jt,"\u2216","\\smallsetminus");Y(ee,ze,jt,"\u22D2","\\Cap",!0);Y(ee,ze,jt,"\u22D3","\\Cup",!0);Y(ee,ze,jt,"\u2A5E","\\doublebarwedge",!0);Y(ee,ze,jt,"\u229F","\\boxminus",!0);Y(ee,ze,jt,"\u229E","\\boxplus",!0);Y(ee,ze,jt,"\u22C7","\\divideontimes",!0);Y(ee,ze,jt,"\u22C9","\\ltimes",!0);Y(ee,ze,jt,"\u22CA","\\rtimes",!0);Y(ee,ze,jt,"\u22CB","\\leftthreetimes",!0);Y(ee,ze,jt,"\u22CC","\\rightthreetimes",!0);Y(ee,ze,jt,"\u22CF","\\curlywedge",!0);Y(ee,ze,jt,"\u22CE","\\curlyvee",!0);Y(ee,ze,jt,"\u229D","\\circleddash",!0);Y(ee,ze,jt,"\u229B","\\circledast",!0);Y(ee,ze,jt,"\u22C5","\\centerdot");Y(ee,ze,jt,"\u22BA","\\intercal",!0);Y(ee,ze,jt,"\u22D2","\\doublecap");Y(ee,ze,jt,"\u22D3","\\doublecup");Y(ee,ze,jt,"\u22A0","\\boxtimes",!0);Y(ee,ze,Ve,"\u21E2","\\dashrightarrow",!0);Y(ee,ze,Ve,"\u21E0","\\dashleftarrow",!0);Y(ee,ze,Ve,"\u21C7","\\leftleftarrows",!0);Y(ee,ze,Ve,"\u21C6","\\leftrightarrows",!0);Y(ee,ze,Ve,"\u21DA","\\Lleftarrow",!0);Y(ee,ze,Ve,"\u219E","\\twoheadleftarrow",!0);Y(ee,ze,Ve,"\u21A2","\\leftarrowtail",!0);Y(ee,ze,Ve,"\u21AB","\\looparrowleft",!0);Y(ee,ze,Ve,"\u21CB","\\leftrightharpoons",!0);Y(ee,ze,Ve,"\u21B6","\\curvearrowleft",!0);Y(ee,ze,Ve,"\u21BA","\\circlearrowleft",!0);Y(ee,ze,Ve,"\u21B0","\\Lsh",!0);Y(ee,ze,Ve,"\u21C8","\\upuparrows",!0);Y(ee,ze,Ve,"\u21BF","\\upharpoonleft",!0);Y(ee,ze,Ve,"\u21C3","\\downharpoonleft",!0);Y(ee,pe,Ve,"\u22B6","\\origof",!0);Y(ee,pe,Ve,"\u22B7","\\imageof",!0);Y(ee,ze,Ve,"\u22B8","\\multimap",!0);Y(ee,ze,Ve,"\u21AD","\\leftrightsquigarrow",!0);Y(ee,ze,Ve,"\u21C9","\\rightrightarrows",!0);Y(ee,ze,Ve,"\u21C4","\\rightleftarrows",!0);Y(ee,ze,Ve,"\u21A0","\\twoheadrightarrow",!0);Y(ee,ze,Ve,"\u21A3","\\rightarrowtail",!0);Y(ee,ze,Ve,"\u21AC","\\looparrowright",!0);Y(ee,ze,Ve,"\u21B7","\\curvearrowright",!0);Y(ee,ze,Ve,"\u21BB","\\circlearrowright",!0);Y(ee,ze,Ve,"\u21B1","\\Rsh",!0);Y(ee,ze,Ve,"\u21CA","\\downdownarrows",!0);Y(ee,ze,Ve,"\u21BE","\\upharpoonright",!0);Y(ee,ze,Ve,"\u21C2","\\downharpoonright",!0);Y(ee,ze,Ve,"\u21DD","\\rightsquigarrow",!0);Y(ee,ze,Ve,"\u21DD","\\leadsto");Y(ee,ze,Ve,"\u21DB","\\Rrightarrow",!0);Y(ee,ze,Ve,"\u21BE","\\restriction");Y(ee,pe,Ue,"\u2018","`");Y(ee,pe,Ue,"$","\\$");Y(Lt,pe,Ue,"$","\\$");Y(Lt,pe,Ue,"$","\\textdollar");Y(ee,pe,Ue,"%","\\%");Y(Lt,pe,Ue,"%","\\%");Y(ee,pe,Ue,"_","\\_");Y(Lt,pe,Ue,"_","\\_");Y(Lt,pe,Ue,"_","\\textunderscore");Y(ee,pe,Ue,"\u2220","\\angle",!0);Y(ee,pe,Ue,"\u221E","\\infty",!0);Y(ee,pe,Ue,"\u2032","\\prime");Y(ee,pe,Ue,"\u25B3","\\triangle");Y(ee,pe,Ue,"\u0393","\\Gamma",!0);Y(ee,pe,Ue,"\u0394","\\Delta",!0);Y(ee,pe,Ue,"\u0398","\\Theta",!0);Y(ee,pe,Ue,"\u039B","\\Lambda",!0);Y(ee,pe,Ue,"\u039E","\\Xi",!0);Y(ee,pe,Ue,"\u03A0","\\Pi",!0);Y(ee,pe,Ue,"\u03A3","\\Sigma",!0);Y(ee,pe,Ue,"\u03A5","\\Upsilon",!0);Y(ee,pe,Ue,"\u03A6","\\Phi",!0);Y(ee,pe,Ue,"\u03A8","\\Psi",!0);Y(ee,pe,Ue,"\u03A9","\\Omega",!0);Y(ee,pe,Ue,"A","\u0391");Y(ee,pe,Ue,"B","\u0392");Y(ee,pe,Ue,"E","\u0395");Y(ee,pe,Ue,"Z","\u0396");Y(ee,pe,Ue,"H","\u0397");Y(ee,pe,Ue,"I","\u0399");Y(ee,pe,Ue,"K","\u039A");Y(ee,pe,Ue,"M","\u039C");Y(ee,pe,Ue,"N","\u039D");Y(ee,pe,Ue,"O","\u039F");Y(ee,pe,Ue,"P","\u03A1");Y(ee,pe,Ue,"T","\u03A4");Y(ee,pe,Ue,"X","\u03A7");Y(ee,pe,Ue,"\xAC","\\neg",!0);Y(ee,pe,Ue,"\xAC","\\lnot");Y(ee,pe,Ue,"\u22A4","\\top");Y(ee,pe,Ue,"\u22A5","\\bot");Y(ee,pe,Ue,"\u2205","\\emptyset");Y(ee,ze,Ue,"\u2205","\\varnothing");Y(ee,pe,xr,"\u03B1","\\alpha",!0);Y(ee,pe,xr,"\u03B2","\\beta",!0);Y(ee,pe,xr,"\u03B3","\\gamma",!0);Y(ee,pe,xr,"\u03B4","\\delta",!0);Y(ee,pe,xr,"\u03F5","\\epsilon",!0);Y(ee,pe,xr,"\u03B6","\\zeta",!0);Y(ee,pe,xr,"\u03B7","\\eta",!0);Y(ee,pe,xr,"\u03B8","\\theta",!0);Y(ee,pe,xr,"\u03B9","\\iota",!0);Y(ee,pe,xr,"\u03BA","\\kappa",!0);Y(ee,pe,xr,"\u03BB","\\lambda",!0);Y(ee,pe,xr,"\u03BC","\\mu",!0);Y(ee,pe,xr,"\u03BD","\\nu",!0);Y(ee,pe,xr,"\u03BE","\\xi",!0);Y(ee,pe,xr,"\u03BF","\\omicron",!0);Y(ee,pe,xr,"\u03C0","\\pi",!0);Y(ee,pe,xr,"\u03C1","\\rho",!0);Y(ee,pe,xr,"\u03C3","\\sigma",!0);Y(ee,pe,xr,"\u03C4","\\tau",!0);Y(ee,pe,xr,"\u03C5","\\upsilon",!0);Y(ee,pe,xr,"\u03D5","\\phi",!0);Y(ee,pe,xr,"\u03C7","\\chi",!0);Y(ee,pe,xr,"\u03C8","\\psi",!0);Y(ee,pe,xr,"\u03C9","\\omega",!0);Y(ee,pe,xr,"\u03B5","\\varepsilon",!0);Y(ee,pe,xr,"\u03D1","\\vartheta",!0);Y(ee,pe,xr,"\u03D6","\\varpi",!0);Y(ee,pe,xr,"\u03F1","\\varrho",!0);Y(ee,pe,xr,"\u03C2","\\varsigma",!0);Y(ee,pe,xr,"\u03C6","\\varphi",!0);Y(ee,pe,jt,"\u2217","*",!0);Y(ee,pe,jt,"+","+");Y(ee,pe,jt,"\u2212","-",!0);Y(ee,pe,jt,"\u22C5","\\cdot",!0);Y(ee,pe,jt,"\u2218","\\circ",!0);Y(ee,pe,jt,"\xF7","\\div",!0);Y(ee,pe,jt,"\xB1","\\pm",!0);Y(ee,pe,jt,"\xD7","\\times",!0);Y(ee,pe,jt,"\u2229","\\cap",!0);Y(ee,pe,jt,"\u222A","\\cup",!0);Y(ee,pe,jt,"\u2216","\\setminus",!0);Y(ee,pe,jt,"\u2227","\\land");Y(ee,pe,jt,"\u2228","\\lor");Y(ee,pe,jt,"\u2227","\\wedge",!0);Y(ee,pe,jt,"\u2228","\\vee",!0);Y(ee,pe,Ue,"\u221A","\\surd");Y(ee,pe,No,"\u27E8","\\langle",!0);Y(ee,pe,No,"\u2223","\\lvert");Y(ee,pe,No,"\u2225","\\lVert");Y(ee,pe,ks,"?","?");Y(ee,pe,ks,"!","!");Y(ee,pe,ks,"\u27E9","\\rangle",!0);Y(ee,pe,ks,"\u2223","\\rvert");Y(ee,pe,ks,"\u2225","\\rVert");Y(ee,pe,Ve,"=","=");Y(ee,pe,Ve,":",":");Y(ee,pe,Ve,"\u2248","\\approx",!0);Y(ee,pe,Ve,"\u2245","\\cong",!0);Y(ee,pe,Ve,"\u2265","\\ge");Y(ee,pe,Ve,"\u2265","\\geq",!0);Y(ee,pe,Ve,"\u2190","\\gets");Y(ee,pe,Ve,">","\\gt",!0);Y(ee,pe,Ve,"\u2208","\\in",!0);Y(ee,pe,Ve,"\uE020","\\@not");Y(ee,pe,Ve,"\u2282","\\subset",!0);Y(ee,pe,Ve,"\u2283","\\supset",!0);Y(ee,pe,Ve,"\u2286","\\subseteq",!0);Y(ee,pe,Ve,"\u2287","\\supseteq",!0);Y(ee,ze,Ve,"\u2288","\\nsubseteq",!0);Y(ee,ze,Ve,"\u2289","\\nsupseteq",!0);Y(ee,pe,Ve,"\u22A8","\\models");Y(ee,pe,Ve,"\u2190","\\leftarrow",!0);Y(ee,pe,Ve,"\u2264","\\le");Y(ee,pe,Ve,"\u2264","\\leq",!0);Y(ee,pe,Ve,"<","\\lt",!0);Y(ee,pe,Ve,"\u2192","\\rightarrow",!0);Y(ee,pe,Ve,"\u2192","\\to");Y(ee,ze,Ve,"\u2271","\\ngeq",!0);Y(ee,ze,Ve,"\u2270","\\nleq",!0);Y(ee,pe,ah,"\xA0","\\ ");Y(ee,pe,ah,"\xA0","\\space");Y(ee,pe,ah,"\xA0","\\nobreakspace");Y(Lt,pe,ah,"\xA0","\\ ");Y(Lt,pe,ah,"\xA0"," ");Y(Lt,pe,ah,"\xA0","\\space");Y(Lt,pe,ah,"\xA0","\\nobreakspace");Y(ee,pe,ah,null,"\\nobreak");Y(ee,pe,ah,null,"\\allowbreak");Y(ee,pe,ib,",",",");Y(ee,pe,ib,";",";");Y(ee,ze,jt,"\u22BC","\\barwedge",!0);Y(ee,ze,jt,"\u22BB","\\veebar",!0);Y(ee,pe,jt,"\u2299","\\odot",!0);Y(ee,pe,jt,"\u2295","\\oplus",!0);Y(ee,pe,jt,"\u2297","\\otimes",!0);Y(ee,pe,Ue,"\u2202","\\partial",!0);Y(ee,pe,jt,"\u2298","\\oslash",!0);Y(ee,ze,jt,"\u229A","\\circledcirc",!0);Y(ee,ze,jt,"\u22A1","\\boxdot",!0);Y(ee,pe,jt,"\u25B3","\\bigtriangleup");Y(ee,pe,jt,"\u25BD","\\bigtriangledown");Y(ee,pe,jt,"\u2020","\\dagger");Y(ee,pe,jt,"\u22C4","\\diamond");Y(ee,pe,jt,"\u22C6","\\star");Y(ee,pe,jt,"\u25C3","\\triangleleft");Y(ee,pe,jt,"\u25B9","\\triangleright");Y(ee,pe,No,"{","\\{");Y(Lt,pe,Ue,"{","\\{");Y(Lt,pe,Ue,"{","\\textbraceleft");Y(ee,pe,ks,"}","\\}");Y(Lt,pe,Ue,"}","\\}");Y(Lt,pe,Ue,"}","\\textbraceright");Y(ee,pe,No,"{","\\lbrace");Y(ee,pe,ks,"}","\\rbrace");Y(ee,pe,No,"[","\\lbrack",!0);Y(Lt,pe,Ue,"[","\\lbrack",!0);Y(ee,pe,ks,"]","\\rbrack",!0);Y(Lt,pe,Ue,"]","\\rbrack",!0);Y(ee,pe,No,"(","\\lparen",!0);Y(ee,pe,ks,")","\\rparen",!0);Y(Lt,pe,Ue,"<","\\textless",!0);Y(Lt,pe,Ue,">","\\textgreater",!0);Y(ee,pe,No,"\u230A","\\lfloor",!0);Y(ee,pe,ks,"\u230B","\\rfloor",!0);Y(ee,pe,No,"\u2308","\\lceil",!0);Y(ee,pe,ks,"\u2309","\\rceil",!0);Y(ee,pe,Ue,"\\","\\backslash");Y(ee,pe,Ue,"\u2223","|");Y(ee,pe,Ue,"\u2223","\\vert");Y(Lt,pe,Ue,"|","\\textbar",!0);Y(ee,pe,Ue,"\u2225","\\|");Y(ee,pe,Ue,"\u2225","\\Vert");Y(Lt,pe,Ue,"\u2225","\\textbardbl");Y(Lt,pe,Ue,"~","\\textasciitilde");Y(Lt,pe,Ue,"\\","\\textbackslash");Y(Lt,pe,Ue,"^","\\textasciicircum");Y(ee,pe,Ve,"\u2191","\\uparrow",!0);Y(ee,pe,Ve,"\u21D1","\\Uparrow",!0);Y(ee,pe,Ve,"\u2193","\\downarrow",!0);Y(ee,pe,Ve,"\u21D3","\\Downarrow",!0);Y(ee,pe,Ve,"\u2195","\\updownarrow",!0);Y(ee,pe,Ve,"\u21D5","\\Updownarrow",!0);Y(ee,pe,Hi,"\u2210","\\coprod");Y(ee,pe,Hi,"\u22C1","\\bigvee");Y(ee,pe,Hi,"\u22C0","\\bigwedge");Y(ee,pe,Hi,"\u2A04","\\biguplus");Y(ee,pe,Hi,"\u22C2","\\bigcap");Y(ee,pe,Hi,"\u22C3","\\bigcup");Y(ee,pe,Hi,"\u222B","\\int");Y(ee,pe,Hi,"\u222B","\\intop");Y(ee,pe,Hi,"\u222C","\\iint");Y(ee,pe,Hi,"\u222D","\\iiint");Y(ee,pe,Hi,"\u220F","\\prod");Y(ee,pe,Hi,"\u2211","\\sum");Y(ee,pe,Hi,"\u2A02","\\bigotimes");Y(ee,pe,Hi,"\u2A01","\\bigoplus");Y(ee,pe,Hi,"\u2A00","\\bigodot");Y(ee,pe,Hi,"\u222E","\\oint");Y(ee,pe,Hi,"\u222F","\\oiint");Y(ee,pe,Hi,"\u2230","\\oiiint");Y(ee,pe,Hi,"\u2A06","\\bigsqcup");Y(ee,pe,Hi,"\u222B","\\smallint");Y(Lt,pe,Q0,"\u2026","\\textellipsis");Y(ee,pe,Q0,"\u2026","\\mathellipsis");Y(Lt,pe,Q0,"\u2026","\\ldots",!0);Y(ee,pe,Q0,"\u2026","\\ldots",!0);Y(ee,pe,Q0,"\u22EF","\\@cdots",!0);Y(ee,pe,Q0,"\u22F1","\\ddots",!0);Y(ee,pe,Ue,"\u22EE","\\varvdots");Y(Lt,pe,Ue,"\u22EE","\\varvdots");Y(ee,pe,hi,"\u02CA","\\acute");Y(ee,pe,hi,"\u02CB","\\grave");Y(ee,pe,hi,"\xA8","\\ddot");Y(ee,pe,hi,"~","\\tilde");Y(ee,pe,hi,"\u02C9","\\bar");Y(ee,pe,hi,"\u02D8","\\breve");Y(ee,pe,hi,"\u02C7","\\check");Y(ee,pe,hi,"^","\\hat");Y(ee,pe,hi,"\u20D7","\\vec");Y(ee,pe,hi,"\u02D9","\\dot");Y(ee,pe,hi,"\u02DA","\\mathring");Y(ee,pe,xr,"\uE131","\\@imath");Y(ee,pe,xr,"\uE237","\\@jmath");Y(ee,pe,Ue,"\u0131","\u0131");Y(ee,pe,Ue,"\u0237","\u0237");Y(Lt,pe,Ue,"\u0131","\\i",!0);Y(Lt,pe,Ue,"\u0237","\\j",!0);Y(Lt,pe,Ue,"\xDF","\\ss",!0);Y(Lt,pe,Ue,"\xE6","\\ae",!0);Y(Lt,pe,Ue,"\u0153","\\oe",!0);Y(Lt,pe,Ue,"\xF8","\\o",!0);Y(Lt,pe,Ue,"\xC6","\\AE",!0);Y(Lt,pe,Ue,"\u0152","\\OE",!0);Y(Lt,pe,Ue,"\xD8","\\O",!0);Y(Lt,pe,hi,"\u02CA","\\'");Y(Lt,pe,hi,"\u02CB","\\`");Y(Lt,pe,hi,"\u02C6","\\^");Y(Lt,pe,hi,"\u02DC","\\~");Y(Lt,pe,hi,"\u02C9","\\=");Y(Lt,pe,hi,"\u02D8","\\u");Y(Lt,pe,hi,"\u02D9","\\.");Y(Lt,pe,hi,"\xB8","\\c");Y(Lt,pe,hi,"\u02DA","\\r");Y(Lt,pe,hi,"\u02C7","\\v");Y(Lt,pe,hi,"\xA8",'\\"');Y(Lt,pe,hi,"\u02DD","\\H");Y(Lt,pe,hi,"\u25EF","\\textcircled");rQ={"--":!0,"---":!0,"``":!0,"''":!0};Y(Lt,pe,Ue,"\u2013","--",!0);Y(Lt,pe,Ue,"\u2013","\\textendash");Y(Lt,pe,Ue,"\u2014","---",!0);Y(Lt,pe,Ue,"\u2014","\\textemdash");Y(Lt,pe,Ue,"\u2018","`",!0);Y(Lt,pe,Ue,"\u2018","\\textquoteleft");Y(Lt,pe,Ue,"\u2019","'",!0);Y(Lt,pe,Ue,"\u2019","\\textquoteright");Y(Lt,pe,Ue,"\u201C","``",!0);Y(Lt,pe,Ue,"\u201C","\\textquotedblleft");Y(Lt,pe,Ue,"\u201D","''",!0);Y(Lt,pe,Ue,"\u201D","\\textquotedblright");Y(ee,pe,Ue,"\xB0","\\degree",!0);Y(Lt,pe,Ue,"\xB0","\\degree");Y(Lt,pe,Ue,"\xB0","\\textdegree",!0);Y(ee,pe,Ue,"\xA3","\\pounds");Y(ee,pe,Ue,"\xA3","\\mathsterling",!0);Y(Lt,pe,Ue,"\xA3","\\pounds");Y(Lt,pe,Ue,"\xA3","\\textsterling",!0);Y(ee,ze,Ue,"\u2720","\\maltese");Y(Lt,ze,Ue,"\u2720","\\maltese");wZ='0123456789/@."';for(Nk=0;Nk{var r=e.charCodeAt(0),n=e.charCodeAt(1),i=(r-55296)*1024+(n-56320)+65536,a=t==="math"?0:1;if(119808<=i&&i<120484){var s=Math.floor((i-119808)/26);return[$k[s][2],$k[s][a]]}else if(120782<=i&&i<=120831){var l=Math.floor((i-120782)/10);return[SZ[l][2],SZ[l][a]]}else{if(i===120485||i===120486)return[$k[0][2],$k[0][a]];if(1204860)return Ts(a,h,i,r,s.concat(d));if(u){var f,p;if(u==="boldsymbol"){var m=GGe(a,i,r,s,n);f=m.fontName,p=[m.fontClass]}else l?(f=O7[u].fontName,p=[u]):(f=Fk(u,r.fontWeight,r.fontShape),p=[u,r.fontWeight,r.fontShape]);if(rS(a,f,i).metrics)return Ts(a,f,i,r,s.concat(p));if(rQ.hasOwnProperty(a)&&f.slice(0,10)==="Typewriter"){for(var g=[],y=0;y{if(Ed(e.classes)!==Ed(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize||e.italic!==0&&e.hasClass("mathnormal"))return!1;if(e.classes.length===1){var r=e.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n of Object.keys(e.style))if(e.style[n]!==t.style[n])return!1;for(var i of Object.keys(t.style))if(e.style[i]!==t.style[i])return!1;return!0},"canCombine"),nQ=o(e=>{for(var t=0;tr&&(r=s.height),s.depth>n&&(n=s.depth),s.maxFontSize>i&&(i=s.maxFontSize)}t.height=r,t.depth=n,t.maxFontSize=i},"sizeElementFromChildren"),Mt=o(function(t,r,n,i){var a=new Ad(t,r,n,i);return Z7(a),a},"makeSpan"),Rd=o((e,t,r,n)=>new Ad(e,t,r,n),"makeSvgSpan"),K0=o(function(t,r,n){var i=Mt([t],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=$t(i.height),i.maxFontSize=1,i},"makeLineSpan"),WGe=o(function(t,r,n,i){var a=new X0(t,r,n,i);return Z7(a),a},"makeAnchor"),sh=o(function(t){var r=new Sd(t);return Z7(r),r},"makeFragment"),Z0=o(function(t,r){return t instanceof Sd?Mt([],[t],r):t},"wrapFragment"),qGe=o(function(t){if(t.positionType==="individualShift"){for(var r=t.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,a=i,s=1;s{var r=Mt(["mspace"],[],t),n=xi(e,t);return r.style.marginRight=$t(n),r},"makeGlue"),Fk=o(function(t,r,n){var i="";switch(t){case"amsrm":i="AMS";break;case"textrm":i="Main";break;case"textsf":i="SansSerif";break;case"texttt":i="Typewriter";break;default:i=t}var a;return r==="textbf"&&n==="textit"?a="BoldItalic":r==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",i+"-"+a},"retrieveTextFontName"),O7={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},aQ={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},sQ=o(function(t,r){var[n,i,a]=aQ[t],s=new zc(n),l=new Gl([s],{width:$t(i),height:$t(a),style:"width:"+$t(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),u=Rd(["overlay"],[l],r);return u.height=a,u.style.height=$t(a),u.style.width=$t(i),u},"staticSvg"),yi={number:3,unit:"mu"},zp={number:4,unit:"mu"},rh={number:5,unit:"mu"},HGe={mord:{mop:yi,mbin:zp,mrel:rh,minner:yi},mop:{mord:yi,mop:yi,mrel:rh,minner:yi},mbin:{mord:zp,mop:zp,mopen:zp,minner:zp},mrel:{mord:rh,mop:rh,mopen:rh,minner:rh},mopen:{},mclose:{mop:yi,mbin:zp,mrel:rh,minner:yi},mpunct:{mord:yi,mop:yi,mrel:rh,mopen:yi,mclose:yi,mpunct:yi,minner:yi},minner:{mord:yi,mop:yi,mbin:zp,mrel:rh,mopen:yi,mpunct:yi,minner:yi}},UGe={mord:{mop:yi},mop:{mord:yi,mop:yi},mbin:{},mrel:{},mopen:{},mclose:{mop:yi},mpunct:{},minner:{mop:yi}},oQ={},Xk={},Kk={};o(Ut,"defineFunction");o(Gp,"defineFunctionBuilders");Zk=o(function(t){return t.type==="ordgroup"&&t.body.length===1?t.body[0]:t},"normalizeArgument"),qi=o(function(t){return t.type==="ordgroup"?t.body:[t]},"ordargument"),YGe=new Set(["leftmost","mbin","mopen","mrel","mop","mpunct"]),jGe=new Set(["rightmost","mrel","mclose","mpunct"]),XGe={display:Fr.DISPLAY,text:Fr.TEXT,script:Fr.SCRIPT,scriptscript:Fr.SCRIPTSCRIPT},KGe={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},ia=o(function(t,r,n,i){i===void 0&&(i=[null,null]);for(var a=[],s=0;s{var v=y.classes[0],x=g.classes[0];v==="mbin"&&jGe.has(x)?y.classes[0]="mord":x==="mbin"&&YGe.has(v)&&(g.classes[0]="mord")},{node:f},p,m),B7(a,(g,y)=>{var v,x,b=F7(y),T=F7(g),k=b&&T?g.hasClass("mtight")?(v=UGe[b])==null?void 0:v[T]:(x=HGe[b])==null?void 0:x[T]:null;if(k)return iQ(k,h)},{node:f},p,m),a},"buildExpression"),B7=o(function(t,r,n,i,a){i&&t.push(i);for(var s=0;sp=>{t.splice(f+1,0,p),s++})(s)}i&&t.pop()},"traverseNonSpaceNodes"),lQ=o(function(t){return t instanceof Sd||t instanceof X0||t instanceof Ad&&t.hasClass("enclosing")?t:null},"checkPartialGroup"),$7=o(function(t,r){var n=lQ(t);if(n){var i=n.children;if(i.length){if(r==="right")return $7(i[i.length-1],"right");if(r==="left")return $7(i[0],"left")}}return t},"getOutermostNode"),F7=o(function(t,r){if(!t)return null;r&&(t=$7(t,r));var n=t.classes[0];return KGe[n]||null},"getTypeOfDomTree"),nb=o(function(t,r){var n=["nulldelimiter"].concat(t.baseSizingClasses());return Mt(r.concat(n))},"makeNullDelimiter"),wn=o(function(t,r,n){if(!t)return Mt();if(Xk[t.type]){var i=Xk[t.type](t,r);if(n&&r.size!==n.size){i=Mt(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new Pt("Got group of unknown type: '"+t.type+"'")},"buildGroup");o(zk,"buildHTMLUnbreakable");o(z7,"buildHTML");o(cQ,"newDocumentFragment");Nt=class{static{o(this,"MathNode")}constructor(t,r,n){this.type=t,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(t,r){this.attributes[t]=r}getAttribute(t){return this.attributes[t]}toNode(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&t.setAttribute(r,this.attributes[r]);this.classes.length>0&&(t.className=Ed(this.classes));for(var n=0;n0&&(t+=' class ="'+es(Ed(this.classes))+'"'),t+=">";for(var n=0;n",t}toText(){return this.children.map(t=>t.toText()).join("")}},Ei=class{static{o(this,"TextNode")}constructor(t){this.text=t}toNode(){return document.createTextNode(this.text)}toMarkup(){return es(this.toText())}toText(){return this.text}},Qk=class{static{o(this,"SpaceNode")}constructor(t){this.width=t,t>=.05555&&t<=.05556?this.character="\u200A":t>=.1666&&t<=.1667?this.character="\u2009":t>=.2222&&t<=.2223?this.character="\u2005":t>=.2777&&t<=.2778?this.character="\u2005\u200A":t>=-.05556&&t<=-.05555?this.character="\u200A\u2063":t>=-.1667&&t<=-.1666?this.character="\u2009\u2063":t>=-.2223&&t<=-.2222?this.character="\u205F\u2063":t>=-.2778&&t<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",$t(this.width)),t}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},ZGe=new Set(["\\imath","\\jmath"]),QGe=new Set(["mrow","mtable"]),cl=o(function(t,r,n){return ui[r][t]&&ui[r][t].replace&&t.charCodeAt(0)!==55349&&!(rQ.hasOwnProperty(t)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(t=ui[r][t].replace),new Ei(t)},"makeText"),Q7=o(function(t){return t.length===1?t[0]:new Nt("mrow",t)},"makeRow"),J7=o(function(t,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var i=t.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return t.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathsfit")return"sans-serif-italic";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var a=t.text;if(ZGe.has(a))return null;if(ui[i][a]){var s=ui[i][a].replace;s&&(a=s)}var l=O7[n].fontName;return X7(a,l,i)?O7[n].variant:null},"getVariant");o(T7,"isNumberPunctuation");Po=o(function(t,r,n){if(t.length===1){var i=Wn(t[0],r);return n&&i instanceof Nt&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],s,l=0;l=1&&(s.type==="mn"||T7(s))){var h=u.children[0];h instanceof Nt&&h.type==="mn"&&(h.children=[...s.children,...h.children],a.pop())}else if(s.type==="mi"&&s.children.length===1){var d=s.children[0];if(d instanceof Ei&&d.text==="\u0338"&&(u.type==="mo"||u.type==="mi"||u.type==="mn")){var f=u.children[0];f instanceof Ei&&f.text.length>0&&(f.text=f.text.slice(0,1)+"\u0338"+f.text.slice(1),a.pop())}}}a.push(u),s=u}return a},"buildExpression"),_d=o(function(t,r,n){return Q7(Po(t,r,n))},"buildExpressionRow"),Wn=o(function(t,r){if(!t)return new Nt("mrow");if(Kk[t.type]){var n=Kk[t.type](t,r);return n}else throw new Pt("Got group of unknown type: '"+t.type+"'")},"buildGroup");o(EZ,"buildMathML");JGe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],AZ=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],RZ=o(function(t,r){return r.size<2?t:JGe[t-1][r.size-1]},"sizeAtStyle"),Jk=class e{static{o(this,"Options")}constructor(t){this.style=t.style,this.color=t.color,this.size=t.size||e.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=AZ[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};return Object.assign(r,t),new e(r)}havingStyle(t){return this.style===t?this:this.extend({style:t,size:RZ(this.textSize,t)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:AZ[t-1]})}havingBaseStyle(t){t=t||this.style.text();var r=RZ(e.BASESIZE,t);return this.size===r&&this.textSize===e.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})}havingBaseSizing(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})}withColor(t){return this.extend({color:t})}withPhantom(){return this.extend({phantom:!0})}withFont(t){return this.extend({font:t})}withTextFontFamily(t){return this.extend({fontFamily:t,font:""})}withTextFontWeight(t){return this.extend({fontWeight:t,font:""})}withTextFontShape(t){return this.extend({fontShape:t,font:""})}sizingClasses(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==e.BASESIZE?["sizing","reset-size"+this.size,"size"+e.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=BGe(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};Jk.BASESIZE=6;uQ=o(function(t){return new Jk({style:t.displayMode?Fr.DISPLAY:Fr.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},"optionsFromSettings"),hQ=o(function(t,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),t=Mt(n,[t])}return t},"displayWrap"),eVe=o(function(t,r,n){var i=uQ(n),a;if(n.output==="mathml")return EZ(t,r,i,n.displayMode,!0);if(n.output==="html"){var s=z7(t,i);a=Mt(["katex"],[s])}else{var l=EZ(t,r,i,n.displayMode,!1),u=z7(t,i);a=Mt(["katex"],[l,u])}return hQ(a,n)},"buildTree"),tVe=o(function(t,r,n){var i=uQ(n),a=z7(t,i),s=Mt(["katex"],[a]);return hQ(s,n)},"buildHTMLTree"),rVe={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",underbracket:"\u23B5",overbracket:"\u23B4",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},iS=o(function(t){var r=new Nt("mo",[new Ei(rVe[t.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},"stretchyMathML"),nVe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overbracket:[["leftbracketover","rightbracketover"],1.6,440],underbracket:[["leftbracketunder","rightbracketunder"],1.6,410],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},iVe=new Set(["widehat","widecheck","widetilde","utilde"]),aS=o(function(t,r){function n(){var l=4e5,u=t.label.slice(1);if(iVe.has(u)){var h=t,d=h.base.type==="ordgroup"?h.base.body.length:1,f,p,m;if(d>5)u==="widehat"||u==="widecheck"?(f=420,l=2364,m=.42,p=u+"4"):(f=312,l=2340,m=.34,p="tilde4");else{var g=[1,1,2,2,3,3][d];u==="widehat"||u==="widecheck"?(l=[0,1062,2364,2364,2364][g],f=[0,239,300,360,420][g],m=[0,.24,.3,.3,.36,.42][g],p=u+g):(l=[0,600,1033,2339,2340][g],f=[0,260,286,306,312][g],m=[0,.26,.286,.3,.306,.34][g],p="tilde"+g)}var y=new zc(p),v=new Gl([y],{width:"100%",height:$t(m),viewBox:"0 0 "+l+" "+f,preserveAspectRatio:"none"});return{span:Rd([],[v],r),minWidth:0,height:m}}else{var x=[],b=nVe[u],[T,k,C]=b,w=C/1e3,S=T.length,R,L;if(S===1){var N=b[3];R=["hide-tail"],L=[N]}else if(S===2)R=["halfarrow-left","halfarrow-right"],L=["xMinYMin","xMaxYMin"];else if(S===3)R=["brace-left","brace-center","brace-right"],L=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+S+" children.");for(var I=0;I0&&(i.style.minWidth=$t(a)),i},"stretchySvg"),aVe=o(function(t,r,n,i,a){var s,l=t.height+t.depth+n+i;if(/fbox|color|angl/.test(r)){if(s=Mt(["stretchy",r],[],a),r==="fbox"){var u=a.color&&a.getColor();u&&(s.style.borderColor=u)}}else{var h=[];/^[bx]cancel$/.test(r)&&h.push(new rb({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&h.push(new rb({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var d=new Gl(h,{width:"100%",height:$t(l)});s=Rd([],[d],a)}return s.height=l,s.style.height=$t(l),s},"stretchyEnclose");o(Ur,"assertNodeType");o(sS,"assertSymbolNodeType");o(oS,"checkSymbolNodeType");dQ=o(e=>{if(e instanceof ws)return e;if(OGe(e)&&e.children.length===1)return dQ(e.children[0])},"getBaseSymbol"),e8=o((e,t)=>{var r,n,i;e&&e.type==="supsub"?(n=Ur(e.base,"accent"),r=n.base,e.base=r,i=PGe(wn(e,t)),e.base=n):(n=Ur(e,"accent"),r=n.base);var a=wn(r,t.havingCrampedStyle()),s=n.isShifty&&ih(r),l=0;if(s){var u,h;l=(u=(h=dQ(a))==null?void 0:h.skew)!=null?u:0}var d=n.label==="\\c",f=d?a.height+a.depth:Math.min(a.height,t.fontMetrics().xHeight),p;if(n.isStretchy)p=aS(n,t),p=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:p,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+$t(2*l)+")",marginLeft:$t(2*l)}:void 0}]});else{var m,g;n.label==="\\vec"?(m=sQ("vec",t),g=aQ.vec[1]):(m=nS({type:"textord",mode:n.mode,text:n.label},t,"textord"),m=NGe(m),m.italic=0,g=m.width,d&&(f+=m.depth)),p=Mt(["accent-body"],[m]);var y=n.label==="\\textcircled";y&&(p.classes.push("accent-full"),f=a.height);var v=l;y||(v-=g/2),p.style.left=$t(v),n.label==="\\textcircled"&&(p.style.top=".2em"),p=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-f},{type:"elem",elem:p}]})}var x=Mt(["mord","accent"],[p],t);return i?(i.children[0]=x,i.height=Math.max(x.height,i.height),i.classes[0]="mord",i):x},"htmlBuilder$a"),fQ=o((e,t)=>{var r=e.isStretchy?iS(e.label):new Nt("mo",[cl(e.label,e.mode)]),n=new Nt("mover",[Wn(e.base,t),r]);return n.setAttribute("accent","true"),n},"mathmlBuilder$9"),sVe=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));Ut({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:o((e,t)=>{var r=Zk(t[0]),n=!sVe.test(e.funcName),i=!n||e.funcName==="\\widehat"||e.funcName==="\\widetilde"||e.funcName==="\\widecheck";return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:i,base:r}},"handler"),htmlBuilder:e8,mathmlBuilder:fQ});Ut({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:o((e,t)=>{var r=t[0],n=e.parser.mode;return n==="math"&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},"handler"),htmlBuilder:e8,mathmlBuilder:fQ});Ut({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},"handler"),htmlBuilder:o((e,t)=>{var r=wn(e.base,t),n=aS(e,t),i=e.label==="\\utilde"?.12:0,a=Cn({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]});return Mt(["mord","accentunder"],[a],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=iS(e.label),n=new Nt("munder",[Wn(e.base,t),r]);return n.setAttribute("accentunder","true"),n},"mathmlBuilder")});Gk=o(e=>{var t=new Nt("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t},"paddedNode");Ut({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n,funcName:i}=e;return{type:"xArrow",mode:n.mode,label:i,body:t[0],below:r[0]}},htmlBuilder(e,t){var r=t.style,n=t.havingStyle(r.sup()),i=Z0(wn(e.body,n,t),t),a=e.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(a+"-arrow-pad");var s;e.below&&(n=t.havingStyle(r.sub()),s=Z0(wn(e.below,n,t),t),s.classes.push(a+"-arrow-pad"));var l=aS(e,t),u=-t.fontMetrics().axisHeight+.5*l.height,h=-t.fontMetrics().axisHeight-.5*l.height-.111;(i.depth>.25||e.label==="\\xleftequilibrium")&&(h-=i.depth);var d;if(s){var f=-t.fontMetrics().axisHeight+s.height+.5*l.height+.111;d=Cn({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u},{type:"elem",elem:s,shift:f}]})}else d=Cn({positionType:"individualShift",children:[{type:"elem",elem:i,shift:h},{type:"elem",elem:l,shift:u}]});return d.children[0].children[0].children[1].classes.push("svg-align"),Mt(["mrel","x-arrow"],[d],t)},mathmlBuilder(e,t){var r=iS(e.label);r.setAttribute("minsize",e.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(e.body){var i=Gk(Wn(e.body,t));if(e.below){var a=Gk(Wn(e.below,t));n=new Nt("munderover",[r,a,i])}else n=new Nt("mover",[r,i])}else if(e.below){var s=Gk(Wn(e.below,t));n=new Nt("munder",[r,s])}else n=Gk(),n=new Nt("mover",[r,n]);return n}});o(pQ,"htmlBuilder$9");o(mQ,"mathmlBuilder$8");Ut({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:qi(i),isCharacterBox:ih(i)}},htmlBuilder:pQ,mathmlBuilder:mQ});lS=o(e=>{var t=e.type==="ordgroup"&&e.body.length?e.body[0]:e;return t.type==="atom"&&(t.family==="bin"||t.family==="rel")?"m"+t.family:"mord"},"binrelClass");Ut({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:lS(t[0]),body:qi(t[1]),isCharacterBox:ih(t[1])}}});Ut({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var{parser:r,funcName:n}=e,i=t[1],a=t[0],s;n!=="\\stackrel"?s=lS(i):s="mrel";var l={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:qi(i)},u={type:"supsub",mode:a.mode,base:l,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:s,body:[u],isCharacterBox:ih(u)}},htmlBuilder:pQ,mathmlBuilder:mQ});Ut({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:lS(t[0]),body:qi(t[0])}},htmlBuilder(e,t){var r=ia(e.body,t,!0),n=Mt([e.mclass],r,t);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(e,t){var r=Po(e.body,t),n=new Nt("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});oVe={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},_Z=o(()=>({type:"styling",body:[],mode:"math",style:"display"}),"newCell"),LZ=o(e=>e.type==="textord"&&e.text==="@","isStartOfArrow"),lVe=o((e,t)=>(e.type==="mathord"||e.type==="atom")&&e.text===t,"isLabelEnd");o(cVe,"cdArrow");o(uVe,"parseCD");Ut({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),n=Z0(wn(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=$t(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(e,t){var r=new Nt("mrow",[Wn(e.label,t)]);return r=new Nt("mpadded",[r]),r.setAttribute("width","0"),e.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new Nt("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});Ut({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Z0(wn(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(e,t){return new Nt("mrow",[Wn(e.fragment,t)])}});Ut({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,n=Ur(t[0],"ordgroup"),i=n.body,a="",s=0;s=1114111)throw new Pt("\\@char with invalid code point "+a);return u<=65535?h=String.fromCharCode(u):(u-=65536,h=String.fromCharCode((u>>10)+55296,(u&1023)+56320)),{type:"textord",mode:r.mode,text:h}}});gQ=o((e,t)=>{var r=ia(e.body,t.withColor(e.color),!1);return sh(r)},"htmlBuilder$8"),yQ=o((e,t)=>{var r=Po(e.body,t.withColor(e.color)),n=new Nt("mstyle",r);return n.setAttribute("mathcolor",e.color),n},"mathmlBuilder$7");Ut({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,n=Ur(t[0],"color-token").color,i=t[1];return{type:"color",mode:r.mode,color:n,body:qi(i)}},htmlBuilder:gQ,mathmlBuilder:yQ});Ut({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:n}=e,i=Ur(t[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var a=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:a}},htmlBuilder:gQ,mathmlBuilder:yQ});Ut({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:n}=e,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,a=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:a,size:i&&Ur(i,"size").value}},htmlBuilder(e,t){var r=Mt(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=$t(xi(e.size,t)))),r},mathmlBuilder(e,t){var r=new Nt("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",$t(xi(e.size,t)))),r}});G7={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},vQ=o(e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new Pt("Expected a control sequence",e);return t},"checkControlSequence"),hVe=o(e=>{var t=e.gullet.popToken();return t.text==="="&&(t=e.gullet.popToken(),t.text===" "&&(t=e.gullet.popToken())),t},"getRHS"),xQ=o((e,t,r,n)=>{var i=e.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,i,n)},"letCommand");Ut({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var n=t.fetch();if(G7[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=G7[n.text]),Ur(t.parseFunction(),"internal");throw new Pt("Invalid token after macro prefix",n)}});Ut({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=t.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new Pt("Expected a control sequence",n);for(var a=0,s,l=[[]];t.gullet.future().text!=="{";)if(n=t.gullet.popToken(),n.text==="#"){if(t.gullet.future().text==="{"){s=t.gullet.future(),l[a].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new Pt('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new Pt('Argument number "'+n.text+'" out of order');a++,l.push([])}else{if(n.text==="EOF")throw new Pt("Expected a macro definition");l[a].push(n.text)}var{tokens:u}=t.gullet.consumeArg();return s&&u.unshift(s),(r==="\\edef"||r==="\\xdef")&&(u=t.gullet.expandTokens(u),u.reverse()),t.gullet.macros.set(i,{tokens:u,numArgs:a,delimiters:l},r===G7[r]),{type:"internal",mode:t.mode}}});Ut({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=vQ(t.gullet.popToken());t.gullet.consumeSpaces();var i=hVe(t);return xQ(t,n,i,r==="\\\\globallet"),{type:"internal",mode:t.mode}}});Ut({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=vQ(t.gullet.popToken()),i=t.gullet.popToken(),a=t.gullet.popToken();return xQ(t,n,a,r==="\\\\globalfuture"),t.gullet.pushToken(a),t.gullet.pushToken(i),{type:"internal",mode:t.mode}}});Qx=o(function(t,r,n){var i=ui.math[t]&&ui.math[t].replace,a=X7(i||t,r,n);if(!a)throw new Error("Unsupported symbol "+t+" and font size "+r+".");return a},"getMetrics"),t8=o(function(t,r,n,i){var a=n.havingBaseStyle(r),s=Mt(i.concat(a.sizingClasses(n)),[t],n),l=a.sizeMultiplier/n.sizeMultiplier;return s.height*=l,s.depth*=l,s.maxFontSize=a.sizeMultiplier,s},"styleWrap"),bQ=o(function(t,r,n){var i=r.havingBaseStyle(n),a=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=$t(a),t.height-=a,t.depth+=a},"centerSpan"),dVe=o(function(t,r,n,i,a,s){var l=Ts(t,"Main-Regular",a,i),u=t8(l,r,i,s);return n&&bQ(u,i,r),u},"makeSmallDelim"),fVe=o(function(t,r,n,i){return Ts(t,"Size"+r+"-Regular",n,i)},"mathrmSize"),TQ=o(function(t,r,n,i,a,s){var l=fVe(t,r,a,i),u=t8(Mt(["delimsizing","size"+r],[l],i),Fr.TEXT,i,s);return n&&bQ(u,i,Fr.TEXT),u},"makeLargeDelim"),C7=o(function(t,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=Mt(["delimsizinginner",i],[Mt([],[Ts(t,r,n)])]);return{type:"elem",elem:a}},"makeGlyphSpan"),w7=o(function(t,r,n){var i=Fc["Size4-Regular"][t.charCodeAt(0)]?Fc["Size4-Regular"][t.charCodeAt(0)][4]:Fc["Size1-Regular"][t.charCodeAt(0)][4],a=new zc("inner",_Ge(t,Math.round(1e3*r))),s=new Gl([a],{width:$t(i),height:$t(r),style:"width:"+$t(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),l=Rd([],[s],n);return l.height=r,l.style.height=$t(r),l.style.width=$t(i),{type:"elem",elem:l}},"makeInner"),V7=.008,Vk={type:"kern",size:-1*V7},pVe=new Set(["|","\\lvert","\\rvert","\\vert"]),mVe=new Set(["\\|","\\lVert","\\rVert","\\Vert"]),CQ=o(function(t,r,n,i,a,s){var l,u,h,d,f="",p=0;l=h=d=t,u=null;var m="Size1-Regular";t==="\\uparrow"?h=d="\u23D0":t==="\\Uparrow"?h=d="\u2016":t==="\\downarrow"?l=h="\u23D0":t==="\\Downarrow"?l=h="\u2016":t==="\\updownarrow"?(l="\\uparrow",h="\u23D0",d="\\downarrow"):t==="\\Updownarrow"?(l="\\Uparrow",h="\u2016",d="\\Downarrow"):pVe.has(t)?(h="\u2223",f="vert",p=333):mVe.has(t)?(h="\u2225",f="doublevert",p=556):t==="["||t==="\\lbrack"?(l="\u23A1",h="\u23A2",d="\u23A3",m="Size4-Regular",f="lbrack",p=667):t==="]"||t==="\\rbrack"?(l="\u23A4",h="\u23A5",d="\u23A6",m="Size4-Regular",f="rbrack",p=667):t==="\\lfloor"||t==="\u230A"?(h=l="\u23A2",d="\u23A3",m="Size4-Regular",f="lfloor",p=667):t==="\\lceil"||t==="\u2308"?(l="\u23A1",h=d="\u23A2",m="Size4-Regular",f="lceil",p=667):t==="\\rfloor"||t==="\u230B"?(h=l="\u23A5",d="\u23A6",m="Size4-Regular",f="rfloor",p=667):t==="\\rceil"||t==="\u2309"?(l="\u23A4",h=d="\u23A5",m="Size4-Regular",f="rceil",p=667):t==="("||t==="\\lparen"?(l="\u239B",h="\u239C",d="\u239D",m="Size4-Regular",f="lparen",p=875):t===")"||t==="\\rparen"?(l="\u239E",h="\u239F",d="\u23A0",m="Size4-Regular",f="rparen",p=875):t==="\\{"||t==="\\lbrace"?(l="\u23A7",u="\u23A8",d="\u23A9",h="\u23AA",m="Size4-Regular"):t==="\\}"||t==="\\rbrace"?(l="\u23AB",u="\u23AC",d="\u23AD",h="\u23AA",m="Size4-Regular"):t==="\\lgroup"||t==="\u27EE"?(l="\u23A7",d="\u23A9",h="\u23AA",m="Size4-Regular"):t==="\\rgroup"||t==="\u27EF"?(l="\u23AB",d="\u23AD",h="\u23AA",m="Size4-Regular"):t==="\\lmoustache"||t==="\u23B0"?(l="\u23A7",d="\u23AD",h="\u23AA",m="Size4-Regular"):(t==="\\rmoustache"||t==="\u23B1")&&(l="\u23AB",d="\u23A9",h="\u23AA",m="Size4-Regular");var g=Qx(l,m,a),y=g.height+g.depth,v=Qx(h,m,a),x=v.height+v.depth,b=Qx(d,m,a),T=b.height+b.depth,k=0,C=1;if(u!==null){var w=Qx(u,m,a);k=w.height+w.depth,C=2}var S=y+T+k,R=Math.max(0,Math.ceil((r-S)/(C*x))),L=S+R*C*x,N=i.fontMetrics().axisHeight;n&&(N*=i.sizeMultiplier);var I=L/2-N,_=[];if(f.length>0){var A=L-y-T,M=Math.round(L*1e3),D=LGe(f,Math.round(A*1e3)),P=new zc(f,D),B=$t(p/1e3),O=$t(M/1e3),$=new Gl([P],{width:B,height:O,viewBox:"0 0 "+p+" "+M}),V=Rd([],[$],i);V.height=M/1e3,V.style.width=B,V.style.height=O,_.push({type:"elem",elem:V})}else{if(_.push(C7(d,m,a)),_.push(Vk),u===null){var G=L-y-T+2*V7;_.push(w7(h,G,i))}else{var z=(L-y-T-k)/2+2*V7;_.push(w7(h,z,i)),_.push(Vk),_.push(C7(u,m,a)),_.push(Vk),_.push(w7(h,z,i))}_.push(Vk),_.push(C7(l,m,a))}var W=i.havingBaseStyle(Fr.TEXT),H=Cn({positionType:"bottom",positionData:I,children:_});return t8(Mt(["delimsizing","mult"],[H],W),Fr.TEXT,i,s)},"makeStackedDelim"),k7=80,S7=.08,E7=o(function(t,r,n,i,a){var s=RGe(t,i,n),l=new zc(t,s),u=new Gl([l],{width:"400em",height:$t(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Rd(["hide-tail"],[u],a)},"sqrtSvg"),gVe=o(function(t,r){var n=r.havingBaseSizing(),i=AQ("\\surd",t*n.sizeMultiplier,EQ,n),a=n.sizeMultiplier,s=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),l,u=0,h=0,d=0,f;return i.type==="small"?(d=1e3+1e3*s+k7,t<1?a=1:t<1.4&&(a=.7),u=(1+s+S7)/a,h=(1+s)/a,l=E7("sqrtMain",u,d,s,r),l.style.minWidth="0.853em",f=.833/a):i.type==="large"?(d=(1e3+k7)*Jx[i.size],h=(Jx[i.size]+s)/a,u=(Jx[i.size]+s+S7)/a,l=E7("sqrtSize"+i.size,u,d,s,r),l.style.minWidth="1.02em",f=1/a):(u=t+s+S7,h=t+s,d=Math.floor(1e3*t+s)+k7,l=E7("sqrtTall",u,d,s,r),l.style.minWidth="0.742em",f=1.056),l.height=h,l.style.height=$t(u),{span:l,advanceWidth:f,ruleWidth:(r.fontMetrics().sqrtRuleThickness+s)*a}},"makeSqrtImage"),wQ=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"]),yVe=new Set(["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"]),kQ=new Set(["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"]),Jx=[0,1.2,1.8,2.4,3],SQ=o(function(t,r,n,i,a){if(t==="<"||t==="\\lt"||t==="\u27E8"?t="\\langle":(t===">"||t==="\\gt"||t==="\u27E9")&&(t="\\rangle"),wQ.has(t)||kQ.has(t))return TQ(t,r,!1,n,i,a);if(yVe.has(t))return CQ(t,Jx[r],!1,n,i,a);throw new Pt("Illegal delimiter: '"+t+"'")},"makeSizedDelim"),vVe=[{type:"small",style:Fr.SCRIPTSCRIPT},{type:"small",style:Fr.SCRIPT},{type:"small",style:Fr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],xVe=[{type:"small",style:Fr.SCRIPTSCRIPT},{type:"small",style:Fr.SCRIPT},{type:"small",style:Fr.TEXT},{type:"stack"}],EQ=[{type:"small",style:Fr.SCRIPTSCRIPT},{type:"small",style:Fr.SCRIPT},{type:"small",style:Fr.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],bVe=o(function(t){if(t.type==="small")return"Main-Regular";if(t.type==="large")return"Size"+t.size+"-Regular";if(t.type==="stack")return"Size4-Regular";var r=t.type;throw new Error("Add support for delim type '"+r+"' here.")},"delimTypeToFont"),AQ=o(function(t,r,n,i){for(var a=Math.min(2,3-i.style.size),s=a;sr)return l}return n[n.length-1]},"traverseSequence"),W7=o(function(t,r,n,i,a,s){t==="<"||t==="\\lt"||t==="\u27E8"?t="\\langle":(t===">"||t==="\\gt"||t==="\u27E9")&&(t="\\rangle");var l;kQ.has(t)?l=vVe:wQ.has(t)?l=EQ:l=xVe;var u=AQ(t,r,l,i);return u.type==="small"?dVe(t,u.style,n,i,a,s):u.type==="large"?TQ(t,u.size,n,i,a,s):CQ(t,r,n,i,a,s)},"makeCustomSizedDelim"),A7=o(function(t,r,n,i,a,s){var l=i.fontMetrics().axisHeight*i.sizeMultiplier,u=901,h=5/i.fontMetrics().ptPerEm,d=Math.max(r-l,n+l),f=Math.max(d/500*u,2*d-h);return W7(t,f,!0,i,a,s)},"makeLeftRightDelim"),DZ={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},TVe=new Set(["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."]);o(cS,"checkDelimiter");Ut({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:o((e,t)=>{var r=cS(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:DZ[e.funcName].size,mclass:DZ[e.funcName].mclass,delim:r.text}},"handler"),htmlBuilder:o((e,t)=>e.delim==="."?Mt([e.mclass]):SQ(e.delim,e.size,t,e.mode,[e.mclass]),"htmlBuilder"),mathmlBuilder:o(e=>{var t=[];e.delim!=="."&&t.push(cl(e.delim,e.mode));var r=new Nt("mo",t);e.mclass==="mopen"||e.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=$t(Jx[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r},"mathmlBuilder")});o(IZ,"assertParsed");Ut({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new Pt("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:cS(t[0],e).text,color:r}},"handler")});Ut({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var r=cS(t[0],e),n=e.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=Ur(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},"handler"),htmlBuilder:o((e,t)=>{IZ(e);for(var r=ia(e.body,t,!0,["mopen","mclose"]),n=0,i=0,a=!1,s=0;s{IZ(e);var r=Po(e.body,t);if(e.left!=="."){var n=new Nt("mo",[cl(e.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(e.right!=="."){var i=new Nt("mo",[cl(e.right,e.mode)]);i.setAttribute("fence","true"),e.rightColor&&i.setAttribute("mathcolor",e.rightColor),r.push(i)}return Q7(r)},"mathmlBuilder")});Ut({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var r=cS(t[0],e);if(!e.parser.leftrightDepth)throw new Pt("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},"handler"),htmlBuilder:o((e,t)=>{var r;if(e.delim===".")r=nb(t,[]);else{r=SQ(e.delim,1,t,e.mode,[]);var n={delim:e.delim,options:t};r.isMiddle=n}return r},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=e.delim==="\\vert"||e.delim==="|"?cl("|","text"):cl(e.delim,e.mode),n=new Nt("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n},"mathmlBuilder")});uS=o((e,t)=>{var r=Z0(wn(e.body,t),t),n=e.label.slice(1),i=t.sizeMultiplier,a,s=0,l=ih(e.body);if(n==="sout")a=Mt(["stretchy","sout"]),a.height=t.fontMetrics().defaultRuleThickness/i,s=-.5*t.fontMetrics().xHeight;else if(n==="phase"){var u=xi({number:.6,unit:"pt"},t),h=xi({number:.35,unit:"ex"},t),d=t.havingBaseSizing();i=i/d.sizeMultiplier;var f=r.height+r.depth+u+h;r.style.paddingLeft=$t(f/2+u);var p=Math.floor(1e3*f*i),m=EGe(p),g=new Gl([new zc("phase",m)],{width:"400em",height:$t(p/1e3),viewBox:"0 0 400000 "+p,preserveAspectRatio:"xMinYMin slice"});a=Rd(["hide-tail"],[g],t),a.style.height=$t(f),s=r.depth+u+h}else{/cancel/.test(n)?l||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var y=0,v=0,x=0;/box/.test(n)?(x=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),y=t.fontMetrics().fboxsep+(n==="colorbox"?0:x),v=y):n==="angl"?(x=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),y=4*x,v=Math.max(0,.25-r.depth)):(y=l?.2:0,v=y),a=aVe(r,n,y,v,t),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=$t(x)):n==="angl"&&x!==.049&&(a.style.borderTopWidth=$t(x),a.style.borderRightWidth=$t(x)),s=r.depth+v,e.backgroundColor&&(a.style.backgroundColor=e.backgroundColor,e.borderColor&&(a.style.borderColor=e.borderColor))}var b;if(e.backgroundColor)b=Cn({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:r,shift:0}]});else{var T=/cancel|phase/.test(n)?["svg-align"]:[];b=Cn({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:s,wrapperClasses:T}]})}return/cancel/.test(n)&&(b.height=r.height,b.depth=r.depth),/cancel/.test(n)&&!l?Mt(["mord","cancel-lap"],[b],t):Mt(["mord"],[b],t)},"htmlBuilder$7"),hS=o((e,t)=>{var r=0,n=new Nt(e.label.includes("colorbox")?"mpadded":"menclose",[Wn(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),e.label==="\\fcolorbox"){var i=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+$t(i)+" solid "+e.borderColor)}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n},"mathmlBuilder$6");Ut({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(e,t,r){var{parser:n,funcName:i}=e,a=Ur(t[0],"color-token").color,s=t[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:s}},htmlBuilder:uS,mathmlBuilder:hS});Ut({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(e,t,r){var{parser:n,funcName:i}=e,a=Ur(t[0],"color-token").color,s=Ur(t[1],"color-token").color,l=t[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:s,borderColor:a,body:l}},htmlBuilder:uS,mathmlBuilder:hS});Ut({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}});Ut({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:uS,mathmlBuilder:hS});Ut({type:"enclose",names:["\\sout"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e;r.mode==="math"&&r.settings.reportNonstrict("mathVsSout","LaTeX's \\sout works only in text mode");var i=t[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:uS,mathmlBuilder:hS});Ut({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});RQ={};o(Gc,"defineEnvironment");_Q={};o(Ce,"defineMacro");Qs=class e{static{o(this,"SourceLocation")}constructor(t,r,n){this.lexer=t,this.start=r,this.end=n}static range(t,r){return r?!t||!t.loc||!r.loc||t.loc.lexer!==r.loc.lexer?null:new e(t.loc.lexer,t.loc.start,r.loc.end):t&&t.loc}},Mo=class e{static{o(this,"Token")}constructor(t,r){this.text=t,this.loc=r}range(t,r){return new e(r,Qs.range(this,t))}};o(MZ,"getHLines");dS=o(e=>{var t=e.parser.settings;if(!t.displayMode)throw new Pt("{"+e.envName+"} can be used only in display mode.")},"validateAmsEnvironmentContext"),CVe=new Set(["gather","gather*"]);o(r8,"getAutoTag");o(Ld,"parseArray");o(n8,"dCellStyle");Vc=o(function(t,r){var n,i,a=t.body.length,s=t.hLinesBeforeRow,l=0,u=new Array(a),h=[],d=Math.max(r.fontMetrics().arrayRuleWidth,r.minRuleThickness),f=1/r.fontMetrics().ptPerEm,p=5*f;if(t.colSeparationType&&t.colSeparationType==="small"){var m=r.havingStyle(Fr.SCRIPT).sizeMultiplier;p=.2778*(m/r.sizeMultiplier)}var g=t.colSeparationType==="CD"?xi({number:3,unit:"ex"},r):12*f,y=3*f,v=t.arraystretch*g,x=.7*v,b=.3*v,T=0;function k(Me){for(var ve=0;ve0&&(T+=.25),h.push({pos:T,isDashed:Me[ve]})}for(o(k,"setHLinePos"),k(s[0]),n=0;n0&&(I+=b,SMe))for(n=0;n=l)){var te=void 0;if(i>0||t.hskipBeforeAndAfter){var le,ie;te=(le=(ie=W)==null?void 0:ie.pregap)!=null?le:p,te!==0&&(D=Mt(["arraycolsep"],[]),D.style.width=$t(te),M.push(D))}var ae=[];for(n=0;n0){for(var ce=K0("hline",r,d),re=K0("hdashline",r,d),J=[{type:"elem",elem:ke,shift:0}];h.length>0;){var se=h.pop(),ge=se.pos-_;se.isDashed?J.push({type:"elem",elem:re,shift:ge}):J.push({type:"elem",elem:ce,shift:ge})}ke=Cn({positionType:"individualShift",children:J})}if(B.length===0)return Mt(["mord"],[ke],r);var Te=Cn({positionType:"individualShift",children:B}),we=Mt(["tag"],[Te],r);return sh([ke,we])},"htmlBuilder"),wVe={c:"center ",l:"left ",r:"right "},Wc=o(function(t,r){for(var n=[],i=new Nt("mtd",[],["mtr-glue"]),a=new Nt("mtd",[],["mml-eqn-num"]),s=0;s0){var g=t.cols,y="",v=!1,x=0,b=g.length;g[0].type==="separator"&&(p+="top ",x=1),g[g.length-1].type==="separator"&&(p+="bottom ",b-=1);for(var T=x;T0?"left ":"",p+=L[L.length-1].length>0?"right ":"";for(var N=1;N0&&m&&(v=1),n[g]={type:"align",align:y,pregap:v,postgap:0}}return s.colSeparationType=m?"align":"alignat",s},"alignedHandler");Gc({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=oS(t[0]),n=r?[t[0]]:Ur(t[0],"ordgroup").body,i=n.map(function(s){var l=sS(s),u=l.text;if("lcr".includes(u))return{type:"align",align:u};if(u==="|")return{type:"separator",separator:"|"};if(u===":")return{type:"separator",separator:":"};throw new Pt("Unknown column alignment: "+u,s)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return Ld(e.parser,a,n8(e.envName))},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(e.envName.charAt(e.envName.length-1)==="*"){var i=e.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,!"lcr".includes(r))throw new Pt("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=Ld(e.parser,n,n8(e.envName)),s=Math.max(0,...a.body.map(l=>l.length));return a.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[a],left:t[0],right:t[1],rightColor:void 0}:a},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t={arraystretch:.5},r=Ld(e.parser,t,"script");return r.colSeparationType="small",r},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=oS(t[0]),n=r?[t[0]]:Ur(t[0],"ordgroup").body,i=n.map(function(l){var u=sS(l),h=u.text;if("lc".includes(h))return{type:"align",align:h};throw new Pt("Unknown column alignment: "+h,l)});if(i.length>1)throw new Pt("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5},s=Ld(e.parser,a,"script");if(s.body.length>0&&s.body[0].length>1)throw new Pt("{subarray} can contain only one column");return s},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=Ld(e.parser,t,n8(e.envName));return{type:"leftright",mode:e.mode,body:[r],left:e.envName.includes("r")?".":"\\{",right:e.envName.includes("r")?"\\}":".",rightColor:void 0}},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:LQ,htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){CVe.has(e.envName)&&dS(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:r8(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return Ld(e.parser,t,"display")},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:LQ,htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){dS(e);var t={autoTag:r8(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return Ld(e.parser,t,"display")},htmlBuilder:Vc,mathmlBuilder:Wc});Gc({type:"array",names:["CD"],props:{numArgs:0},handler(e){return dS(e),uVe(e.parser)},htmlBuilder:Vc,mathmlBuilder:Wc});Ce("\\nonumber","\\gdef\\@eqnsw{0}");Ce("\\notag","\\nonumber");Ut({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new Pt(e.funcName+" valid only within array environment")}});NZ=RQ;Ut({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];if(i.type!=="ordgroup")throw new Pt("Invalid environment name",i);for(var a="",s=0;s{var r=e.font,n=t.withFont(r);return wn(e.body,n)},"htmlBuilder$5"),IQ=o((e,t)=>{var r=e.font,n=t.withFont(r);return Wn(e.body,n)},"mathmlBuilder$4"),PZ={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};Ut({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=Zk(t[0]),a=n;return a in PZ&&(a=PZ[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},"handler"),htmlBuilder:DQ,mathmlBuilder:IQ});Ut({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:o((e,t)=>{var{parser:r}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:lS(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:ih(n)}},"handler")});Ut({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:o((e,t)=>{var{parser:r,funcName:n,breakOnTokenText:i}=e,{mode:a}=r,s=r.parseExpression(!0,i),l="math"+n.slice(1);return{type:"font",mode:a,font:l,body:{type:"ordgroup",mode:r.mode,body:s}}},"handler"),htmlBuilder:DQ,mathmlBuilder:IQ});kVe=o((e,t)=>{var r=t.style,n=r.fracNum(),i=r.fracDen(),a;a=t.havingStyle(n);var s=wn(e.numer,a,t);if(e.continued){var l=8.5/t.fontMetrics().ptPerEm,u=3.5/t.fontMetrics().ptPerEm;s.height=s.height0?g=3*p:g=7*p,y=t.fontMetrics().denom1):(f>0?(m=t.fontMetrics().num2,g=p):(m=t.fontMetrics().num3,g=3*p),y=t.fontMetrics().denom2);var v;if(d){var b=t.fontMetrics().axisHeight;m-s.depth-(b+.5*f){var r=new Nt("mfrac",[Wn(e.numer,t),Wn(e.denom,t)]);if(!e.hasBarLine)r.setAttribute("linethickness","0px");else if(e.barSize){var n=xi(e.barSize,t);r.setAttribute("linethickness",$t(n))}if(e.leftDelim!=null||e.rightDelim!=null){var i=[];if(e.leftDelim!=null){var a=new Nt("mo",[new Ei(e.leftDelim.replace("\\",""))]);a.setAttribute("fence","true"),i.push(a)}if(i.push(r),e.rightDelim!=null){var s=new Nt("mo",[new Ei(e.rightDelim.replace("\\",""))]);s.setAttribute("fence","true"),i.push(s)}return Q7(i)}return r},"mathmlBuilder$3"),MQ=o((e,t)=>{if(!t)return e;var r={type:"styling",mode:e.mode,style:t,body:[e]};return r},"wrapWithStyle");Ut({type:"genfrac",names:["\\cfrac","\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0],a=t[1],s,l=null,u=null;switch(n){case"\\cfrac":case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,l="(",u=")";break;case"\\\\bracefrac":s=!1,l="\\{",u="\\}";break;case"\\\\brackfrac":s=!1,l="[",u="]";break;default:throw new Error("Unrecognized genfrac command")}var h=n==="\\cfrac",d=null;return h||n.startsWith("\\d")?d="display":n.startsWith("\\t")&&(d="text"),MQ({type:"genfrac",mode:r.mode,numer:i,denom:a,continued:h,hasBarLine:s,leftDelim:l,rightDelim:u,barSize:null},d)},"handler"),htmlBuilder:kVe,mathmlBuilder:SVe});Ut({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var{parser:t,funcName:r,token:n}=e,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:t.mode,replaceWith:i,token:n}}});OZ=["display","text","script","scriptscript"],BZ=o(function(t){var r=null;return t.length>0&&(r=t,r=r==="."?null:r),r},"delimFromValue");Ut({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var{parser:r}=e,n=t[4],i=t[5],a=Zk(t[0]),s=a.type==="atom"&&a.family==="open"?BZ(a.text):null,l=Zk(t[1]),u=l.type==="atom"&&l.family==="close"?BZ(l.text):null,h=Ur(t[2],"size"),d,f=null;h.isBlank?d=!0:(f=h.value,d=f.number>0);var p=null,m=t[3];if(m.type==="ordgroup"){if(m.body.length>0){var g=Ur(m.body[0],"textord");p=OZ[Number(g.text)]}}else m=Ur(m,"textord"),p=OZ[Number(m.text)];return MQ({type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:d,barSize:f,leftDelim:s,rightDelim:u},p)}});Ut({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:n,token:i}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ur(t[0],"size").value,token:i}}});Ut({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0],a=Ur(t[1],"infix").size;if(!a)throw new Error("\\\\abovefrac expected size, but got "+String(a));var s=t[2],l=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:s,continued:!1,hasBarLine:l,barSize:a,leftDelim:null,rightDelim:null}},"handler")});NQ=o((e,t)=>{var r=t.style,n,i;e.type==="supsub"?(n=e.sup?wn(e.sup,t.havingStyle(r.sup()),t):wn(e.sub,t.havingStyle(r.sub()),t),i=Ur(e.base,"horizBrace")):i=Ur(e,"horizBrace");var a=wn(i.base,t.havingBaseStyle(Fr.DISPLAY)),s=aS(i,t),l;if(i.isOver?(l=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]}),l.children[0].children[0].children[1].classes.push("svg-align")):(l=Cn({positionType:"bottom",positionData:a.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]}),l.children[0].children[0].children[0].classes.push("svg-align")),n){var u=Mt(["minner",i.isOver?"mover":"munder"],[l],t);i.isOver?l=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:u},{type:"kern",size:.2},{type:"elem",elem:n}]}):l=Cn({positionType:"bottom",positionData:u.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:u}]})}return Mt(["minner",i.isOver?"mover":"munder"],[l],t)},"htmlBuilder$3"),EVe=o((e,t)=>{var r=iS(e.label);return new Nt(e.isOver?"mover":"munder",[Wn(e.base,t),r])},"mathmlBuilder$2");Ut({type:"horizBrace",names:["\\overbrace","\\underbrace","\\overbracket","\\underbracket"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"horizBrace",mode:r.mode,label:n,isOver:n.includes("\\over"),base:t[0]}},htmlBuilder:NQ,mathmlBuilder:EVe});Ut({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,n=t[1],i=Ur(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:qi(n)}:r.formatUnsupportedCmd("\\href")},"handler"),htmlBuilder:o((e,t)=>{var r=ia(e.body,t,!1);return WGe(e.href,[],r,t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=_d(e.body,t);return r instanceof Nt||(r=new Nt("mrow",[r])),r.setAttribute("href",e.href),r},"mathmlBuilder")});Ut({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,n=Ur(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],a=0;a{var{parser:r,funcName:n,token:i}=e,a=Ur(t[0],"raw").string,s=t[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,u={};switch(n){case"\\htmlClass":u.class=a,l={command:"\\htmlClass",class:a};break;case"\\htmlId":u.id=a,l={command:"\\htmlId",id:a};break;case"\\htmlStyle":u.style=a,l={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var h=a.split(","),d=0;d{var r=ia(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/));var i=Mt(n,r,t);for(var a in e.attributes)a!=="class"&&e.attributes.hasOwnProperty(a)&&i.setAttribute(a,e.attributes[a]);return i},"htmlBuilder"),mathmlBuilder:o((e,t)=>_d(e.body,t),"mathmlBuilder")});Ut({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInArgument:!0,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:qi(t[0]),mathml:qi(t[1])}},"handler"),htmlBuilder:o((e,t)=>{var r=ia(e.html,t,!1);return sh(r)},"htmlBuilder"),mathmlBuilder:o((e,t)=>_d(e.mathml,t),"mathmlBuilder")});R7=o(function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new Pt("Invalid size: '"+t+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!ZZ(n))throw new Pt("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n},"sizeData");Ut({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:o((e,t,r)=>{var{parser:n}=e,i={number:0,unit:"em"},a={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var u=Ur(r[0],"raw").string,h=u.split(","),d=0;d{var r=xi(e.height,t),n=0;e.totalheight.number>0&&(n=xi(e.totalheight,t)-r);var i=0;e.width.number>0&&(i=xi(e.width,t));var a={height:$t(r+n)};i>0&&(a.width=$t(i)),n>0&&(a.verticalAlign=$t(-n));var s=new N7(e.src,e.alt,a);return s.height=r,s.depth=n,s},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=new Nt("mglyph",[]);r.setAttribute("alt",e.alt);var n=xi(e.height,t),i=0;if(e.totalheight.number>0&&(i=xi(e.totalheight,t)-n,r.setAttribute("valign",$t(-i))),r.setAttribute("height",$t(n+i)),e.width.number>0){var a=xi(e.width,t);r.setAttribute("width",$t(a))}return r.setAttribute("src",e.src),r},"mathmlBuilder")});Ut({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,i=Ur(t[0],"size");if(r.settings.strict){var a=n[1]==="m",s=i.value.unit==="mu";a?(s||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):s&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(e,t){return iQ(e.dimension,t)},mathmlBuilder(e,t){var r=xi(e.dimension,t);return new Qk(r)}});Ut({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},"handler"),htmlBuilder:o((e,t)=>{var r;e.alignment==="clap"?(r=Mt([],[wn(e.body,t)]),r=Mt(["inner"],[r],t)):r=Mt(["inner"],[wn(e.body,t)]);var n=Mt(["fix"],[]),i=Mt([e.alignment],[r,n],t),a=Mt(["strut"]);return a.style.height=$t(i.height+i.depth),i.depth&&(a.style.verticalAlign=$t(-i.depth)),i.children.unshift(a),i=Mt(["thinbox"],[i],t),Mt(["mord","vbox"],[i],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=new Nt("mpadded",[Wn(e.body,t)]);if(e.alignment!=="rlap"){var n=e.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r},"mathmlBuilder")});Ut({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:n}=e,i=n.mode;n.switchMode("math");var a=r==="\\("?"\\)":"$",s=n.parseExpression(!1,a);return n.expect(a),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",body:s}}});Ut({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new Pt("Mismatched "+e.funcName)}});$Z=o((e,t)=>{switch(t.style.size){case Fr.DISPLAY.size:return e.display;case Fr.TEXT.size:return e.text;case Fr.SCRIPT.size:return e.script;case Fr.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}},"chooseMathStyle");Ut({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:o((e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:qi(t[0]),text:qi(t[1]),script:qi(t[2]),scriptscript:qi(t[3])}},"handler"),htmlBuilder:o((e,t)=>{var r=$Z(e,t),n=ia(r,t,!1);return sh(n)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=$Z(e,t);return _d(r,t)},"mathmlBuilder")});PQ=o((e,t,r,n,i,a,s)=>{e=Mt([],[e]);var l=r&&ih(r),u,h;if(t){var d=wn(t,n.havingStyle(i.sup()),n);h={elem:d,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-d.depth)}}if(r){var f=wn(r,n.havingStyle(i.sub()),n);u={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-f.height)}}var p;if(h&&u){var m=n.fontMetrics().bigOpSpacing5+u.elem.height+u.elem.depth+u.kern+e.depth+s;p=Cn({positionType:"bottom",positionData:m,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:$t(-a)},{type:"kern",size:u.kern},{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:$t(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else if(u){var g=e.height-s;p=Cn({positionType:"top",positionData:g,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:u.elem,marginLeft:$t(-a)},{type:"kern",size:u.kern},{type:"elem",elem:e}]})}else if(h){var y=e.depth+s;p=Cn({positionType:"bottom",positionData:y,children:[{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:$t(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]})}else return e;var v=[p];if(u&&a!==0&&!l){var x=Mt(["mspace"],[],n);x.style.marginRight=$t(a),v.unshift(x)}return Mt(["mop","op-limits"],v,n)},"assembleSupSub"),OQ=new Set(["\\smallint"]),J0=o((e,t)=>{var r,n,i=!1,a;e.type==="supsub"?(r=e.sup,n=e.sub,a=Ur(e.base,"op"),i=!0):a=Ur(e,"op");var s=t.style,l=!1;s.size===Fr.DISPLAY.size&&a.symbol&&!OQ.has(a.name)&&(l=!0);var u;if(a.symbol){var h=l?"Size2-Regular":"Size1-Regular",d="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(d=a.name.slice(1),a.name=d==="oiint"?"\\iint":"\\iiint"),u=Ts(a.name,h,"math",t,["mop","op-symbol",l?"large-op":"small-op"]),d.length>0){var f=u.italic,p=sQ(d+"Size"+(l?"2":"1"),t);u=Cn({positionType:"individualShift",children:[{type:"elem",elem:u,shift:0},{type:"elem",elem:p,shift:l?.08:0}]}),a.name="\\"+d,u.classes.unshift("mop"),u.italic=f}}else if(a.body){var m=ia(a.body,t,!0);m.length===1&&m[0]instanceof ws?(u=m[0],u.classes[0]="mop"):u=Mt(["mop"],m,t)}else{for(var g=[],y=1;y{var r;if(e.symbol)r=new Nt("mo",[cl(e.name,e.mode)]),OQ.has(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new Nt("mo",Po(e.body,t));else{r=new Nt("mi",[new Ei(e.name.slice(1))]);var n=new Nt("mo",[cl("\u2061","text")]);e.parentIsSupSub?r=new Nt("mrow",[r,n]):r=cQ([r,n])}return r},"mathmlBuilder$1"),AVe={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};Ut({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=n;return i.length===1&&(i=AVe[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},"handler"),htmlBuilder:J0,mathmlBuilder:ab});Ut({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:o((e,t)=>{var{parser:r}=e,n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:qi(n)}},"handler"),htmlBuilder:J0,mathmlBuilder:ab});RVe={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};Ut({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:J0,mathmlBuilder:ab});Ut({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:J0,mathmlBuilder:ab});Ut({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0,allowedInArgument:!0},handler(e){var{parser:t,funcName:r}=e,n=r;return n.length===1&&(n=RVe[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:J0,mathmlBuilder:ab});BQ=o((e,t)=>{var r,n,i=!1,a;e.type==="supsub"?(r=e.sup,n=e.sub,a=Ur(e.base,"operatorname"),i=!0):a=Ur(e,"operatorname");var s;if(a.body.length>0){for(var l=a.body.map(f=>{var p="text"in f?f.text:void 0;return typeof p=="string"?{type:"textord",mode:f.mode,text:p}:f}),u=ia(l,t.withFont("mathrm"),!0),h=0;h{for(var r=Po(e.body,t.withFont("mathrm")),n=!0,i=0;id.toText()).join("");r=[new Ei(l)]}var u=new Nt("mi",r);u.setAttribute("mathvariant","normal");var h=new Nt("mo",[cl("\u2061","text")]);return e.parentIsSupSub?new Nt("mrow",[u,h]):cQ([u,h])},"mathmlBuilder");Ut({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:o((e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"operatorname",mode:r.mode,body:qi(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},"handler"),htmlBuilder:BQ,mathmlBuilder:_Ve});Ce("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Gp({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?sh(ia(e.body,t,!1)):Mt(["mord"],ia(e.body,t,!0),t)},mathmlBuilder(e,t){return _d(e.body,t,!0)}});Ut({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(e,t){var r=wn(e.body,t.havingCrampedStyle()),n=K0("overline-line",t),i=t.fontMetrics().defaultRuleThickness,a=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]});return Mt(["mord","overline"],[a],t)},mathmlBuilder(e,t){var r=new Nt("mo",[new Ei("\u203E")]);r.setAttribute("stretchy","true");var n=new Nt("mover",[Wn(e.body,t),r]);return n.setAttribute("accent","true"),n}});Ut({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,n=t[0];return{type:"phantom",mode:r.mode,body:qi(n)}},"handler"),htmlBuilder:o((e,t)=>{var r=ia(e.body,t.withPhantom(),!1);return sh(r)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=Po(e.body,t);return new Nt("mphantom",r)},"mathmlBuilder")});Ce("\\hphantom","\\smash{\\phantom{#1}}");Ut({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:o((e,t)=>{var{parser:r}=e,n=t[0];return{type:"vphantom",mode:r.mode,body:n}},"handler"),htmlBuilder:o((e,t)=>{var r=Mt(["inner"],[wn(e.body,t.withPhantom())]),n=Mt(["fix"],[]);return Mt(["mord","rlap"],[r,n],t)},"htmlBuilder"),mathmlBuilder:o((e,t)=>{var r=Po(qi(e.body),t),n=new Nt("mphantom",r),i=new Nt("mpadded",[n]);return i.setAttribute("width","0px"),i},"mathmlBuilder")});Ut({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,n=Ur(t[0],"size").value,i=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(e,t){var r=wn(e.body,t),n=xi(e.dy,t);return Cn({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new Nt("mpadded",[Wn(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}});Ut({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}});Ut({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:n}=e,i=r[0],a=Ur(t[0],"size"),s=Ur(t[1],"size");return{type:"rule",mode:n.mode,shift:i&&Ur(i,"size").value,width:a.value,height:s.value}},htmlBuilder(e,t){var r=Mt(["mord","rule"],[],t),n=xi(e.width,t),i=xi(e.height,t),a=e.shift?xi(e.shift,t):0;return r.style.borderRightWidth=$t(n),r.style.borderTopWidth=$t(i),r.style.bottom=$t(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=xi(e.width,t),n=xi(e.height,t),i=e.shift?xi(e.shift,t):0,a=t.color&&t.getColor()||"black",s=new Nt("mspace");s.setAttribute("mathbackground",a),s.setAttribute("width",$t(r)),s.setAttribute("height",$t(n));var l=new Nt("mpadded",[s]);return i>=0?l.setAttribute("height",$t(i)):(l.setAttribute("height",$t(i)),l.setAttribute("depth",$t(-i))),l.setAttribute("voffset",$t(i)),l}});o($Q,"sizingGroup");FZ=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],LVe=o((e,t)=>{var r=t.havingSize(e.size);return $Q(e.body,r,t)},"htmlBuilder");Ut({type:"sizing",names:FZ,props:{numArgs:0,allowedInText:!0},handler:o((e,t)=>{var{breakOnTokenText:r,funcName:n,parser:i}=e,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:FZ.indexOf(n)+1,body:a}},"handler"),htmlBuilder:LVe,mathmlBuilder:o((e,t)=>{var r=t.havingSize(e.size),n=Po(e.body,r),i=new Nt("mstyle",n);return i.setAttribute("mathsize",$t(r.sizeMultiplier)),i},"mathmlBuilder")});Ut({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:o((e,t,r)=>{var{parser:n}=e,i=!1,a=!1,s=r[0]&&Ur(r[0],"ordgroup");if(s)for(var l="",u=0;u{var r=Mt([],[wn(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0),e.smashDepth&&(r.depth=0),e.smashHeight&&e.smashDepth)return Mt(["mord","smash"],[r],t);if(r.children)for(var n=0;n{var r=new Nt("mpadded",[Wn(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r},"mathmlBuilder")});Ut({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n}=e,i=r[0],a=t[0];return{type:"sqrt",mode:n.mode,body:a,index:i}},htmlBuilder(e,t){var r=wn(e.body,t.havingCrampedStyle());r.height===0&&(r.height=t.fontMetrics().xHeight),r=Z0(r,t);var n=t.fontMetrics(),i=n.defaultRuleThickness,a=i;t.style.idr.height+r.depth+s&&(s=(s+f-r.height-r.depth)/2);var p=u.height-r.height-s-h;r.style.paddingLeft=$t(d);var m=Cn({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+p)},{type:"elem",elem:u},{type:"kern",size:h}]});if(e.index){var g=t.havingStyle(Fr.SCRIPTSCRIPT),y=wn(e.index,g,t),v=.6*(m.height-m.depth),x=Cn({positionType:"shift",positionData:-v,children:[{type:"elem",elem:y}]}),b=Mt(["root"],[x]);return Mt(["mord","sqrt"],[b,m],t)}else return Mt(["mord","sqrt"],[m],t)},mathmlBuilder(e,t){var{body:r,index:n}=e;return n?new Nt("mroot",[Wn(r,t),Wn(n,t)]):new Nt("msqrt",[Wn(r,t)])}});zZ={display:Fr.DISPLAY,text:Fr.TEXT,script:Fr.SCRIPT,scriptscript:Fr.SCRIPTSCRIPT};Ut({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:n,parser:i}=e,a=i.parseExpression(!0,r),s=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:s,body:a}},htmlBuilder(e,t){var r=zZ[e.style],n=t.havingStyle(r).withFont("");return $Q(e.body,n,t)},mathmlBuilder(e,t){var r=zZ[e.style],n=t.havingStyle(r),i=Po(e.body,n),a=new Nt("mstyle",i),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=s[e.style];return a.setAttribute("scriptlevel",l[0]),a.setAttribute("displaystyle",l[1]),a}});DVe=o(function(t,r){var n=t.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===Fr.DISPLAY.size||n.alwaysHandleSupSub);return i?J0:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===Fr.DISPLAY.size||n.limits);return a?BQ:null}else{if(n.type==="accent")return ih(n.base)?e8:null;if(n.type==="horizBrace"){var s=!t.sub;return s===n.isOver?NQ:null}else return null}else return null},"htmlBuilderDelegate");Gp({type:"supsub",htmlBuilder(e,t){var r=DVe(e,t);if(r)return r(e,t);var{base:n,sup:i,sub:a}=e,s=wn(n,t),l,u,h=t.fontMetrics(),d=0,f=0,p=n&&ih(n);if(i){var m=t.havingStyle(t.style.sup());l=wn(i,m,t),p||(d=s.height-m.fontMetrics().supDrop*m.sizeMultiplier/t.sizeMultiplier)}if(a){var g=t.havingStyle(t.style.sub());u=wn(a,g,t),p||(f=s.depth+g.fontMetrics().subDrop*g.sizeMultiplier/t.sizeMultiplier)}var y;t.style===Fr.DISPLAY?y=h.sup1:t.style.cramped?y=h.sup3:y=h.sup2;var v=t.sizeMultiplier,x=$t(.5/h.ptPerEm/v),b=null;if(u){var T=e.base&&e.base.type==="op"&&e.base.name&&(e.base.name==="\\oiint"||e.base.name==="\\oiiint");(s instanceof ws||T)&&(b=$t(-s.italic))}var k;if(l&&u){d=Math.max(d,y,l.depth+.25*h.xHeight),f=Math.max(f,h.sub2);var C=h.defaultRuleThickness,w=4*C;if(d-l.depth-(u.height-f)0&&(d+=S,f-=S)}var R=[{type:"elem",elem:u,shift:f,marginRight:x,marginLeft:b},{type:"elem",elem:l,shift:-d,marginRight:x}];k=Cn({positionType:"individualShift",children:R})}else if(u){f=Math.max(f,h.sub1,u.height-.8*h.xHeight);var L=[{type:"elem",elem:u,marginLeft:b,marginRight:x}];k=Cn({positionType:"shift",positionData:f,children:L})}else if(l)d=Math.max(d,y,l.depth+.25*h.xHeight),k=Cn({positionType:"shift",positionData:-d,children:[{type:"elem",elem:l,marginRight:x}]});else throw new Error("supsub must have either sup or sub.");var N=F7(s,"right")||"mord";return Mt([N],[s,Mt(["msupsub"],[k])],t)},mathmlBuilder(e,t){var r=!1,n,i;e.base&&e.base.type==="horizBrace"&&(i=!!e.sup,i===e.base.isOver&&(r=!0,n=e.base.isOver)),e.base&&(e.base.type==="op"||e.base.type==="operatorname")&&(e.base.parentIsSupSub=!0);var a=[Wn(e.base,t)];e.sub&&a.push(Wn(e.sub,t)),e.sup&&a.push(Wn(e.sup,t));var s;if(r)s=n?"mover":"munder";else if(e.sub)if(e.sup){var h=e.base;h&&h.type==="op"&&h.limits&&t.style===Fr.DISPLAY||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(t.style===Fr.DISPLAY||h.limits)?s="munderover":s="msubsup"}else{var u=e.base;u&&u.type==="op"&&u.limits&&(t.style===Fr.DISPLAY||u.alwaysHandleSupSub)||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(u.limits||t.style===Fr.DISPLAY)?s="munder":s="msub"}else{var l=e.base;l&&l.type==="op"&&l.limits&&(t.style===Fr.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||t.style===Fr.DISPLAY)?s="mover":s="msup"}return new Nt(s,a)}});Gp({type:"atom",htmlBuilder(e,t){return K7(e.text,e.mode,t,["m"+e.family])},mathmlBuilder(e,t){var r=new Nt("mo",[cl(e.text,e.mode)]);if(e.family==="bin"){var n=J7(e,t);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else e.family==="punct"?r.setAttribute("separator","true"):(e.family==="open"||e.family==="close")&&r.setAttribute("stretchy","false");return r}});FQ={mi:"italic",mn:"normal",mtext:"normal"};Gp({type:"mathord",htmlBuilder(e,t){return nS(e,t,"mathord")},mathmlBuilder(e,t){var r=new Nt("mi",[cl(e.text,e.mode,t)]),n=J7(e,t)||"italic";return n!==FQ[r.type]&&r.setAttribute("mathvariant",n),r}});Gp({type:"textord",htmlBuilder(e,t){return nS(e,t,"textord")},mathmlBuilder(e,t){var r=cl(e.text,e.mode,t),n=J7(e,t)||"normal",i;return e.mode==="text"?i=new Nt("mtext",[r]):/[0-9]/.test(e.text)?i=new Nt("mn",[r]):e.text==="\\prime"?i=new Nt("mo",[r]):i=new Nt("mi",[r]),n!==FQ[i.type]&&i.setAttribute("mathvariant",n),i}});_7={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},L7={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Gp({type:"spacing",htmlBuilder(e,t){if(L7.hasOwnProperty(e.text)){var r=L7[e.text].className||"";if(e.mode==="text"){var n=nS(e,t,"textord");return n.classes.push(r),n}else return Mt(["mspace",r],[K7(e.text,e.mode,t)],t)}else{if(_7.hasOwnProperty(e.text))return Mt(["mspace",_7[e.text]],[],t);throw new Pt('Unknown type of space "'+e.text+'"')}},mathmlBuilder(e,t){var r;if(L7.hasOwnProperty(e.text))r=new Nt("mtext",[new Ei("\xA0")]);else{if(_7.hasOwnProperty(e.text))return new Nt("mspace");throw new Pt('Unknown type of space "'+e.text+'"')}return r}});GZ=o(()=>{var e=new Nt("mtd",[]);return e.setAttribute("width","50%"),e},"pad");Gp({type:"tag",mathmlBuilder(e,t){var r=new Nt("mtable",[new Nt("mtr",[GZ(),new Nt("mtd",[_d(e.body,t)]),GZ(),new Nt("mtd",[_d(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});VZ={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},WZ={"\\textbf":"textbf","\\textmd":"textmd"},IVe={"\\textit":"textit","\\textup":"textup"},qZ=o((e,t)=>{var r=e.font;if(r){if(VZ[r])return t.withTextFontFamily(VZ[r]);if(WZ[r])return t.withTextFontWeight(WZ[r]);if(r==="\\emph")return t.fontShape==="textit"?t.withTextFontShape("textup"):t.withTextFontShape("textit")}else return t;return t.withTextFontShape(IVe[r])},"optionsWithFont");Ut({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"text",mode:r.mode,body:qi(i),font:n}},htmlBuilder(e,t){var r=qZ(e,t),n=ia(e.body,r,!0);return Mt(["mord","text"],n,r)},mathmlBuilder(e,t){var r=qZ(e,t);return _d(e.body,r)}});Ut({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=wn(e.body,t),n=K0("underline-line",t),i=t.fontMetrics().defaultRuleThickness,a=Cn({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]});return Mt(["mord","underline"],[a],t)},mathmlBuilder(e,t){var r=new Nt("mo",[new Ei("\u203E")]);r.setAttribute("stretchy","true");var n=new Nt("munder",[Wn(e.body,t),r]);return n.setAttribute("accentunder","true"),n}});Ut({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=wn(e.body,t),n=t.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return Cn({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]})},mathmlBuilder(e,t){var r=new Nt("mpadded",[Wn(e.body,t)],["vcenter"]);return new Nt("mrow",[r])}});Ut({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new Pt("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=HZ(e),n=[],i=t.havingStyle(t.style.text()),a=0;ae.body.replace(/ /g,e.star?"\u2423":"\xA0"),"makeVerb"),kd=oQ,zQ=`[ \r + ]`,MVe="\\\\[a-zA-Z@]+",NVe="\\\\[^\uD800-\uDFFF]",PVe="("+MVe+")"+zQ+"*",OVe=`\\\\( +|[ \r ]+ +?)[ \r ]*`,q7="[\u0300-\u036F]",BVe=new RegExp(q7+"+$"),$Ve="("+zQ+"+)|"+(OVe+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(q7+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(q7+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+PVe)+("|"+NVe+")"),eS=class{static{o(this,"Lexer")}constructor(t,r){this.input=t,this.settings=r,this.tokenRegex=new RegExp($Ve,"g"),this.catcodes={"%":14,"~":13}}setCatcode(t,r){this.catcodes[t]=r}lex(){var t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new Mo("EOF",new Qs(this,r,r));var n=this.tokenRegex.exec(t);if(n===null||n.index!==r)throw new Pt("Unexpected character: '"+t[r]+"'",new Mo(t[r],new Qs(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var a=t.indexOf(` +`,this.tokenRegex.lastIndex);return a===-1?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=a+1,this.lex()}return new Mo(i,new Qs(this,r,this.tokenRegex.lastIndex))}},H7=class{static{o(this,"Namespace")}constructor(t,r){t===void 0&&(t={}),r===void 0&&(r={}),this.current=r,this.builtins=t,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new Pt("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var r in t)t.hasOwnProperty(r)&&(t[r]==null?delete this.current[r]:this.current[r]=t[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)}get(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]}set(t,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i0&&(this.undefStack[this.undefStack.length-1][t]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(t)&&(a[t]=this.current[t])}r==null?delete this.current[t]:this.current[t]=r}},FVe=_Q;Ce("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}});Ce("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}});Ce("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});Ce("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});Ce("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return t[0].length===1&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}});Ce("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");Ce("\\TextOrMath",function(e){var t=e.consumeArgs(2);return e.mode==="text"?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});UZ={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Ce("\\char",function(e){var t=e.popToken(),r,n=0;if(t.text==="'")r=8,t=e.popToken();else if(t.text==='"')r=16,t=e.popToken();else if(t.text==="`")if(t=e.popToken(),t.text[0]==="\\")n=t.text.charCodeAt(1);else{if(t.text==="EOF")throw new Pt("\\char` missing argument");n=t.text.charCodeAt(0)}else r=10;if(r){if(n=UZ[t.text],n==null||n>=r)throw new Pt("Invalid base-"+r+" digit "+t.text);for(var i;(i=UZ[e.future().text])!=null&&i{var i=e.consumeArg().tokens;if(i.length!==1)throw new Pt("\\newcommand's first argument must be a macro name");var a=i[0].text,s=e.isDefined(a);if(s&&!t)throw new Pt("\\newcommand{"+a+"} attempting to redefine "+(a+"; use \\renewcommand"));if(!s&&!r)throw new Pt("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var l=0;if(i=e.consumeArg().tokens,i.length===1&&i[0].text==="["){for(var u="",h=e.expandNextToken();h.text!=="]"&&h.text!=="EOF";)u+=h.text,h=e.expandNextToken();if(!u.match(/^\s*[0-9]+\s*$/))throw new Pt("Invalid number of arguments: "+u);l=parseInt(u),i=e.consumeArg().tokens}return s&&n||e.macros.set(a,{tokens:i,numArgs:l}),""},"newcommand");Ce("\\newcommand",e=>i8(e,!1,!0,!1));Ce("\\renewcommand",e=>i8(e,!0,!1,!1));Ce("\\providecommand",e=>i8(e,!0,!0,!0));Ce("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(r=>r.text).join("")),""});Ce("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(r=>r.text).join("")),""});Ce("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),kd[r],ui.math[r],ui.text[r]),""});Ce("\\bgroup","{");Ce("\\egroup","}");Ce("~","\\nobreakspace");Ce("\\lq","`");Ce("\\rq","'");Ce("\\aa","\\r a");Ce("\\AA","\\r A");Ce("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");Ce("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");Ce("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");Ce("\u212C","\\mathscr{B}");Ce("\u2130","\\mathscr{E}");Ce("\u2131","\\mathscr{F}");Ce("\u210B","\\mathscr{H}");Ce("\u2110","\\mathscr{I}");Ce("\u2112","\\mathscr{L}");Ce("\u2133","\\mathscr{M}");Ce("\u211B","\\mathscr{R}");Ce("\u212D","\\mathfrak{C}");Ce("\u210C","\\mathfrak{H}");Ce("\u2128","\\mathfrak{Z}");Ce("\\Bbbk","\\Bbb{k}");Ce("\\llap","\\mathllap{\\textrm{#1}}");Ce("\\rlap","\\mathrlap{\\textrm{#1}}");Ce("\\clap","\\mathclap{\\textrm{#1}}");Ce("\\mathstrut","\\vphantom{(}");Ce("\\underbar","\\underline{\\text{#1}}");Ce("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}\\nobreak}{\\char"338}');Ce("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");Ce("\\ne","\\neq");Ce("\u2260","\\neq");Ce("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");Ce("\u2209","\\notin");Ce("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");Ce("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");Ce("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");Ce("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");Ce("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");Ce("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");Ce("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");Ce("\u27C2","\\perp");Ce("\u203C","\\mathclose{!\\mkern-0.8mu!}");Ce("\u220C","\\notni");Ce("\u231C","\\ulcorner");Ce("\u231D","\\urcorner");Ce("\u231E","\\llcorner");Ce("\u231F","\\lrcorner");Ce("\xA9","\\copyright");Ce("\xAE","\\textregistered");Ce("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');Ce("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');Ce("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');Ce("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');Ce("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");Ce("\u22EE","\\vdots");Ce("\\varGamma","\\mathit{\\Gamma}");Ce("\\varDelta","\\mathit{\\Delta}");Ce("\\varTheta","\\mathit{\\Theta}");Ce("\\varLambda","\\mathit{\\Lambda}");Ce("\\varXi","\\mathit{\\Xi}");Ce("\\varPi","\\mathit{\\Pi}");Ce("\\varSigma","\\mathit{\\Sigma}");Ce("\\varUpsilon","\\mathit{\\Upsilon}");Ce("\\varPhi","\\mathit{\\Phi}");Ce("\\varPsi","\\mathit{\\Psi}");Ce("\\varOmega","\\mathit{\\Omega}");Ce("\\substack","\\begin{subarray}{c}#1\\end{subarray}");Ce("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");Ce("\\boxed","\\fbox{$\\displaystyle{#1}$}");Ce("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");Ce("\\implies","\\DOTSB\\;\\Longrightarrow\\;");Ce("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");Ce("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");Ce("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");YZ={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"},zVe=new Set(["bin","rel"]);Ce("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in YZ?t=YZ[r]:(r.slice(0,4)==="\\not"||r in ui.math&&zVe.has(ui.math[r].group))&&(t="\\dotsb"),t});a8={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Ce("\\dotso",function(e){var t=e.future().text;return t in a8?"\\ldots\\,":"\\ldots"});Ce("\\dotsc",function(e){var t=e.future().text;return t in a8&&t!==","?"\\ldots\\,":"\\ldots"});Ce("\\cdots",function(e){var t=e.future().text;return t in a8?"\\@cdots\\,":"\\@cdots"});Ce("\\dotsb","\\cdots");Ce("\\dotsm","\\cdots");Ce("\\dotsi","\\!\\cdots");Ce("\\dotsx","\\ldots\\,");Ce("\\DOTSI","\\relax");Ce("\\DOTSB","\\relax");Ce("\\DOTSX","\\relax");Ce("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");Ce("\\,","\\tmspace+{3mu}{.1667em}");Ce("\\thinspace","\\,");Ce("\\>","\\mskip{4mu}");Ce("\\:","\\tmspace+{4mu}{.2222em}");Ce("\\medspace","\\:");Ce("\\;","\\tmspace+{5mu}{.2777em}");Ce("\\thickspace","\\;");Ce("\\!","\\tmspace-{3mu}{.1667em}");Ce("\\negthinspace","\\!");Ce("\\negmedspace","\\tmspace-{4mu}{.2222em}");Ce("\\negthickspace","\\tmspace-{5mu}{.277em}");Ce("\\enspace","\\kern.5em ");Ce("\\enskip","\\hskip.5em\\relax");Ce("\\quad","\\hskip1em\\relax");Ce("\\qquad","\\hskip2em\\relax");Ce("\\tag","\\@ifstar\\tag@literal\\tag@paren");Ce("\\tag@paren","\\tag@literal{({#1})}");Ce("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new Pt("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});Ce("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");Ce("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");Ce("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");Ce("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");Ce("\\newline","\\\\\\relax");Ce("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");GQ=$t(Fc["Main-Regular"][84][1]-.7*Fc["Main-Regular"][65][1]);Ce("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+GQ+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");Ce("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+GQ+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");Ce("\\hspace","\\@ifstar\\@hspacer\\@hspace");Ce("\\@hspace","\\hskip #1\\relax");Ce("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");Ce("\\ordinarycolon",":");Ce("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");Ce("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');Ce("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');Ce("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');Ce("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');Ce("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');Ce("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');Ce("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');Ce("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');Ce("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');Ce("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');Ce("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');Ce("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');Ce("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');Ce("\u2237","\\dblcolon");Ce("\u2239","\\eqcolon");Ce("\u2254","\\coloneqq");Ce("\u2255","\\eqqcolon");Ce("\u2A74","\\Coloneqq");Ce("\\ratio","\\vcentcolon");Ce("\\coloncolon","\\dblcolon");Ce("\\colonequals","\\coloneqq");Ce("\\coloncolonequals","\\Coloneqq");Ce("\\equalscolon","\\eqqcolon");Ce("\\equalscoloncolon","\\Eqqcolon");Ce("\\colonminus","\\coloneq");Ce("\\coloncolonminus","\\Coloneq");Ce("\\minuscolon","\\eqcolon");Ce("\\minuscoloncolon","\\Eqcolon");Ce("\\coloncolonapprox","\\Colonapprox");Ce("\\coloncolonsim","\\Colonsim");Ce("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Ce("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");Ce("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Ce("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");Ce("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");Ce("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");Ce("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");Ce("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");Ce("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");Ce("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");Ce("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");Ce("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");Ce("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");Ce("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");Ce("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");Ce("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");Ce("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");Ce("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");Ce("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");Ce("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");Ce("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");Ce("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");Ce("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");Ce("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");Ce("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");Ce("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");Ce("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");Ce("\\imath","\\html@mathml{\\@imath}{\u0131}");Ce("\\jmath","\\html@mathml{\\@jmath}{\u0237}");Ce("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");Ce("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");Ce("\u27E6","\\llbracket");Ce("\u27E7","\\rrbracket");Ce("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");Ce("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");Ce("\u2983","\\lBrace");Ce("\u2984","\\rBrace");Ce("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");Ce("\u29B5","\\minuso");Ce("\\darr","\\downarrow");Ce("\\dArr","\\Downarrow");Ce("\\Darr","\\Downarrow");Ce("\\lang","\\langle");Ce("\\rang","\\rangle");Ce("\\uarr","\\uparrow");Ce("\\uArr","\\Uparrow");Ce("\\Uarr","\\Uparrow");Ce("\\N","\\mathbb{N}");Ce("\\R","\\mathbb{R}");Ce("\\Z","\\mathbb{Z}");Ce("\\alef","\\aleph");Ce("\\alefsym","\\aleph");Ce("\\Alpha","\\mathrm{A}");Ce("\\Beta","\\mathrm{B}");Ce("\\bull","\\bullet");Ce("\\Chi","\\mathrm{X}");Ce("\\clubs","\\clubsuit");Ce("\\cnums","\\mathbb{C}");Ce("\\Complex","\\mathbb{C}");Ce("\\Dagger","\\ddagger");Ce("\\diamonds","\\diamondsuit");Ce("\\empty","\\emptyset");Ce("\\Epsilon","\\mathrm{E}");Ce("\\Eta","\\mathrm{H}");Ce("\\exist","\\exists");Ce("\\harr","\\leftrightarrow");Ce("\\hArr","\\Leftrightarrow");Ce("\\Harr","\\Leftrightarrow");Ce("\\hearts","\\heartsuit");Ce("\\image","\\Im");Ce("\\infin","\\infty");Ce("\\Iota","\\mathrm{I}");Ce("\\isin","\\in");Ce("\\Kappa","\\mathrm{K}");Ce("\\larr","\\leftarrow");Ce("\\lArr","\\Leftarrow");Ce("\\Larr","\\Leftarrow");Ce("\\lrarr","\\leftrightarrow");Ce("\\lrArr","\\Leftrightarrow");Ce("\\Lrarr","\\Leftrightarrow");Ce("\\Mu","\\mathrm{M}");Ce("\\natnums","\\mathbb{N}");Ce("\\Nu","\\mathrm{N}");Ce("\\Omicron","\\mathrm{O}");Ce("\\plusmn","\\pm");Ce("\\rarr","\\rightarrow");Ce("\\rArr","\\Rightarrow");Ce("\\Rarr","\\Rightarrow");Ce("\\real","\\Re");Ce("\\reals","\\mathbb{R}");Ce("\\Reals","\\mathbb{R}");Ce("\\Rho","\\mathrm{P}");Ce("\\sdot","\\cdot");Ce("\\sect","\\S");Ce("\\spades","\\spadesuit");Ce("\\sub","\\subset");Ce("\\sube","\\subseteq");Ce("\\supe","\\supseteq");Ce("\\Tau","\\mathrm{T}");Ce("\\thetasym","\\vartheta");Ce("\\weierp","\\wp");Ce("\\Zeta","\\mathrm{Z}");Ce("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");Ce("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");Ce("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");Ce("\\bra","\\mathinner{\\langle{#1}|}");Ce("\\ket","\\mathinner{|{#1}\\rangle}");Ce("\\braket","\\mathinner{\\langle{#1}\\rangle}");Ce("\\Bra","\\left\\langle#1\\right|");Ce("\\Ket","\\left|#1\\right\\rangle");VQ=o(e=>t=>{var r=t.consumeArg().tokens,n=t.consumeArg().tokens,i=t.consumeArg().tokens,a=t.consumeArg().tokens,s=t.macros.get("|"),l=t.macros.get("\\|");t.macros.beginGroup();var u=o(f=>p=>{e&&(p.macros.set("|",s),i.length&&p.macros.set("\\|",l));var m=f;if(!f&&i.length){var g=p.future();g.text==="|"&&(p.popToken(),m=!0)}return{tokens:m?i:n,numArgs:0}},"midMacro");t.macros.set("|",u(!1)),i.length&&t.macros.set("\\|",u(!0));var h=t.consumeArg().tokens,d=t.expandTokens([...a,...h,...r]);return t.macros.endGroup(),{tokens:d.reverse(),numArgs:0}},"braketHelper");Ce("\\bra@ket",VQ(!1));Ce("\\bra@set",VQ(!0));Ce("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");Ce("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");Ce("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");Ce("\\angln","{\\angl n}");Ce("\\blue","\\textcolor{##6495ed}{#1}");Ce("\\orange","\\textcolor{##ffa500}{#1}");Ce("\\pink","\\textcolor{##ff00af}{#1}");Ce("\\red","\\textcolor{##df0030}{#1}");Ce("\\green","\\textcolor{##28ae7b}{#1}");Ce("\\gray","\\textcolor{gray}{#1}");Ce("\\purple","\\textcolor{##9d38bd}{#1}");Ce("\\blueA","\\textcolor{##ccfaff}{#1}");Ce("\\blueB","\\textcolor{##80f6ff}{#1}");Ce("\\blueC","\\textcolor{##63d9ea}{#1}");Ce("\\blueD","\\textcolor{##11accd}{#1}");Ce("\\blueE","\\textcolor{##0c7f99}{#1}");Ce("\\tealA","\\textcolor{##94fff5}{#1}");Ce("\\tealB","\\textcolor{##26edd5}{#1}");Ce("\\tealC","\\textcolor{##01d1c1}{#1}");Ce("\\tealD","\\textcolor{##01a995}{#1}");Ce("\\tealE","\\textcolor{##208170}{#1}");Ce("\\greenA","\\textcolor{##b6ffb0}{#1}");Ce("\\greenB","\\textcolor{##8af281}{#1}");Ce("\\greenC","\\textcolor{##74cf70}{#1}");Ce("\\greenD","\\textcolor{##1fab54}{#1}");Ce("\\greenE","\\textcolor{##0d923f}{#1}");Ce("\\goldA","\\textcolor{##ffd0a9}{#1}");Ce("\\goldB","\\textcolor{##ffbb71}{#1}");Ce("\\goldC","\\textcolor{##ff9c39}{#1}");Ce("\\goldD","\\textcolor{##e07d10}{#1}");Ce("\\goldE","\\textcolor{##a75a05}{#1}");Ce("\\redA","\\textcolor{##fca9a9}{#1}");Ce("\\redB","\\textcolor{##ff8482}{#1}");Ce("\\redC","\\textcolor{##f9685d}{#1}");Ce("\\redD","\\textcolor{##e84d39}{#1}");Ce("\\redE","\\textcolor{##bc2612}{#1}");Ce("\\maroonA","\\textcolor{##ffbde0}{#1}");Ce("\\maroonB","\\textcolor{##ff92c6}{#1}");Ce("\\maroonC","\\textcolor{##ed5fa6}{#1}");Ce("\\maroonD","\\textcolor{##ca337c}{#1}");Ce("\\maroonE","\\textcolor{##9e034e}{#1}");Ce("\\purpleA","\\textcolor{##ddd7ff}{#1}");Ce("\\purpleB","\\textcolor{##c6b9fc}{#1}");Ce("\\purpleC","\\textcolor{##aa87ff}{#1}");Ce("\\purpleD","\\textcolor{##7854ab}{#1}");Ce("\\purpleE","\\textcolor{##543b78}{#1}");Ce("\\mintA","\\textcolor{##f5f9e8}{#1}");Ce("\\mintB","\\textcolor{##edf2df}{#1}");Ce("\\mintC","\\textcolor{##e0e5cc}{#1}");Ce("\\grayA","\\textcolor{##f6f7f7}{#1}");Ce("\\grayB","\\textcolor{##f0f1f2}{#1}");Ce("\\grayC","\\textcolor{##e3e5e6}{#1}");Ce("\\grayD","\\textcolor{##d6d8da}{#1}");Ce("\\grayE","\\textcolor{##babec2}{#1}");Ce("\\grayF","\\textcolor{##888d93}{#1}");Ce("\\grayG","\\textcolor{##626569}{#1}");Ce("\\grayH","\\textcolor{##3b3e40}{#1}");Ce("\\grayI","\\textcolor{##21242c}{#1}");Ce("\\kaBlue","\\textcolor{##314453}{#1}");Ce("\\kaGreen","\\textcolor{##71B307}{#1}");WQ={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},U7=class{static{o(this,"MacroExpander")}constructor(t,r,n){this.settings=r,this.expansionCount=0,this.feed(t),this.macros=new H7(FVe,r.macros),this.mode=n,this.stack=[]}feed(t){this.lexer=new eS(t,this.settings)}switchMode(t){this.mode=t}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(t){this.stack.push(t)}pushTokens(t){this.stack.push(...t)}scanArgument(t){var r,n,i;if(t){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new Mo("EOF",n.loc)),this.pushTokens(i),new Mo("",Qs.range(r,n))}consumeSpaces(){for(;;){var t=this.future();if(t.text===" ")this.stack.pop();else break}}consumeArg(t){var r=[],n=t&&t.length>0;n||this.consumeSpaces();var i=this.future(),a,s=0,l=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++s;else if(a.text==="}"){if(--s,s===-1)throw new Pt("Extra }",a)}else if(a.text==="EOF")throw new Pt("Unexpected end of input in a macro argument, expected '"+(t&&n?t[l]:"}")+"'",a);if(t&&n)if((s===0||s===1&&t[l]==="{")&&a.text===t[l]){if(++l,l===t.length){r.splice(-l,l);break}}else l=0}while(s!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:a}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new Pt("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new Pt("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(t){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||t&&i.unexpandable){if(t&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new Pt("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var a=i.tokens,s=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){a=a.slice();for(var l=a.length-1;l>=0;--l){var u=a[l];if(u.text==="#"){if(l===0)throw new Pt("Incomplete placeholder at end of macro body",u);if(u=a[--l],u.text==="#")a.splice(l+1,1);else if(/^[1-9]$/.test(u.text))a.splice(l,2,...s[+u.text-1]);else throw new Pt("Not a valid argument number",u)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var t=this.stack.pop();return t.treatAsRelax&&(t.text="\\relax"),t}}expandMacro(t){return this.macros.has(t)?this.expandTokens([new Mo(t)]):void 0}expandTokens(t){var r=[],n=this.stack.length;for(this.pushTokens(t);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(t){var r=this.expandMacro(t);return r&&r.map(n=>n.text).join("")}_getExpansion(t){var r=this.macros.get(t);if(r==null)return r;if(t.length===1){var n=this.lexer.catcodes[t];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var a=0;if(i.includes("#"))for(var s=i.replace(/##/g,"");s.includes("#"+(a+1));)++a;for(var l=new eS(i,this.settings),u=[],h=l.lex();h.text!=="EOF";)u.push(h),h=l.lex();u.reverse();var d={tokens:u,numArgs:a};return d}return i}isDefined(t){return this.macros.has(t)||kd.hasOwnProperty(t)||ui.math.hasOwnProperty(t)||ui.text.hasOwnProperty(t)||WQ.hasOwnProperty(t)}isExpandable(t){var r=this.macros.get(t);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:kd.hasOwnProperty(t)&&!kd[t].primitive}},jZ=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Wk=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),D7={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},XZ={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},tS=class e{static{o(this,"Parser")}constructor(t,r){this.mode="math",this.gullet=new U7(t,r,this.mode),this.settings=r,this.leftrightDepth=0,this.nextToken=null}expect(t,r){if(r===void 0&&(r=!0),this.fetch().text!==t)throw new Pt("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(t){this.mode=t,this.gullet.switchMode(t)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var t=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),t}finally{this.gullet.endGroups()}}subparse(t){var r=this.nextToken;this.consume(),this.gullet.pushToken(new Mo("}")),this.gullet.pushTokens(t);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(t,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(e.endOfExpression.has(i.text)||r&&i.text===r||t&&kd[i.text]&&kd[i.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;n.push(a)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){for(var r=-1,n,i=0;i=128)this.settings.strict&&(KZ(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),t)),s={type:"textord",mode:"text",loc:Qs.range(t),text:r};else return null;if(this.consume(),a)for(var f=0;f{t.tagName==="A"&&t.hasAttribute("target")&&t.setAttribute(e,t.getAttribute("target")??"")}),Zs.addHook("afterSanitizeAttributes",t=>{t.tagName==="A"&&t.hasAttribute(e)&&(t.setAttribute("target",t.getAttribute(e)??""),t.removeAttribute(e),t.getAttribute("target")==="_blank"&&t.setAttribute("rel","noopener"))})}var Vp,VVe,WVe,eJ,QQ,mr,HVe,UVe,YVe,jVe,tJ,Wp,XVe,KVe,qc,l8,ZVe,QVe,JQ,pS,ni,qp,JVe,ey,xt,Vr=F(()=>{"use strict";H0();ur();Vp=//gi,VVe=o(e=>e?tJ(e).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),WVe=(()=>{let e=!1;return()=>{e||(qVe(),e=!0)}})();o(qVe,"setupDompurifyHooks");eJ=o(e=>(WVe(),Zs.sanitize(e)),"removeScript"),QQ=o((e,t)=>{if(Gr(t)){let r=t.securityLevel;r==="antiscript"||r==="strict"||r==="sandbox"?e=eJ(e):r!=="loose"&&(e=tJ(e),e=e.replace(//g,">"),e=e.replace(/=/g,"="),e=jVe(e))}return e},"sanitizeMore"),mr=o((e,t)=>e&&(t.dompurifyConfig?e=Zs.sanitize(QQ(e,t),t.dompurifyConfig).toString():e=Zs.sanitize(QQ(e,t),{FORBID_TAGS:["style"]}).toString(),e),"sanitizeText"),HVe=o((e,t)=>typeof e=="string"?mr(e,t):e.flat().map(r=>mr(r,t)),"sanitizeTextOrArray"),UVe=o(e=>Vp.test(e),"hasBreaks"),YVe=o(e=>e.split(Vp),"splitBreaks"),jVe=o(e=>e.replace(/#br#/g,"
"),"placeholderToBreak"),tJ=o(e=>e.replace(Vp,"#br#"),"breakToPlaceholder"),Wp=o(e=>{let t="";return e&&(t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,t=CSS.escape(t)),t},"getUrl"),XVe=o(function(...e){let t=e.filter(r=>!isNaN(r));return Math.max(...t)},"getMax"),KVe=o(function(...e){let t=e.filter(r=>!isNaN(r));return Math.min(...t)},"getMin"),qc=o(function(e){let t=e.split(/(,)/),r=[];for(let n=0;n0&&n+1Math.max(0,e.split(t).length-1),"countOccurrence"),ZVe=o((e,t)=>{let r=l8(e,"~"),n=l8(t,"~");return r===1&&n===1},"shouldCombineSets"),QVe=o(e=>{let t=l8(e,"~"),r=!1;if(t<=1)return e;t%2!==0&&e.startsWith("~")&&(e=e.substring(1),r=!0);let n=[...e],i=n.indexOf("~"),a=n.lastIndexOf("~");for(;i!==-1&&a!==-1&&i!==a;)n[i]="<",n[a]=">",i=n.indexOf("~"),a=n.lastIndexOf("~");return r&&n.unshift("~"),n.join("")},"processSet"),JQ=o(()=>window.MathMLElement!==void 0,"isMathMLSupported"),pS=/\$\$(.*?)\$\$/g,ni=o(e=>(e.match(pS)?.length??0)>0,"hasKatex"),qp=o(async(e,t)=>{let r=document.createElement("div");r.innerHTML=await ey(e,t),r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",r);let i={width:r.clientWidth,height:r.clientHeight};return r.remove(),i},"calculateMathMLDimensions"),JVe=o(async(e,t)=>{if(!ni(e))return e;if(!(JQ()||t.legacyMathML||t.forceLegacyMathML))return e.replace(pS,"MathML is unsupported in this environment.");{let{default:r}=await Promise.resolve().then(()=>(ZQ(),KQ)),n=t.forceLegacyMathML||!JQ()&&t.legacyMathML?"htmlAndMathml":"mathml";return e.split(Vp).map(i=>ni(i)?`
${i}
`:`
${i}
`).join("").replace(pS,(i,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))}return e.replace(pS,"Katex is not supported in @mermaid-js/tiny. Please use the full mermaid library.")},"renderKatexUnsanitized"),ey=o(async(e,t)=>mr(await JVe(e,t),t),"renderKatexSanitized"),xt={getRows:VVe,sanitizeText:mr,sanitizeTextOrArray:HVe,hasBreaks:UVe,splitBreaks:YVe,lineBreakRegex:Vp,removeScript:eJ,getUrl:Wp,evaluate:ya,getMax:XVe,getMin:KVe}});var u8,c8,rJ,ty,nJ,iJ,ts,Vl=F(()=>{"use strict";tK();ur();Vr();vt();u8={body:'?',height:80,width:80},c8=new Map,rJ=new Map,ty=o(e=>{for(let t of e){if(!t.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(Z.debug("Registering icon pack:",t.name),"loader"in t)rJ.set(t.name,t.loader);else if("icons"in t)c8.set(t.name,t.icons);else throw Z.error("Invalid icon loader:",t),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),nJ=o(async(e,t)=>{let r=MD(e,!0,t!==void 0);if(!r)throw new Error(`Invalid icon name: ${e}`);let n=r.prefix||t;if(!n)throw new Error(`Icon name must contain a prefix: ${e}`);let i=c8.get(n);if(!i){let s=rJ.get(n);if(!s)throw new Error(`Icon set not found: ${r.prefix}`);try{i={...await s(),prefix:n},c8.set(n,i)}catch(l){throw Z.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}let a=PD(i,r.name);if(!a)throw new Error(`Icon not found: ${e}`);return a},"getRegisteredIconData"),iJ=o(async e=>{try{return await nJ(e),!0}catch{return!1}},"isIconAvailable"),ts=o(async(e,t,r)=>{let n;try{n=await nJ(e,t?.fallbackPrefix)}catch(s){Z.error(s),n=u8}let i=BD(n,t),a=FD($D(i.body),{...i.attributes,...r});return mr(a,_t())},"getIconSVG")});function mS(e){for(var t=[],r=1;r{"use strict";o(mS,"dedent")});var gS,Hp,aJ,yS=F(()=>{"use strict";gS=/^([^\S\n\r]*)-{3}\s*[\n\r](.*?)[\n\r]\1-{3}\s*[\n\r]+/s,Hp=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,aJ=/\s*%%.*\n/gm});var ry,d8=F(()=>{"use strict";ry=class extends Error{static{o(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}}});var oh,ny,sb,f8,sJ,Up=F(()=>{"use strict";vt();yS();d8();oh={},ny=o(function(e,t){e=e.replace(gS,"").replace(Hp,"").replace(aJ,` +`);for(let[r,{detector:n}]of Object.entries(oh))if(n(e,t))return r;throw new ry(`No diagram type detected matching given configuration for text: ${e}`)},"detectType"),sb=o((...e)=>{for(let{id:t,detector:r,loader:n}of e)f8(t,r,n)},"registerLazyLoadedDiagrams"),f8=o((e,t,r)=>{oh[e]&&Z.warn(`Detector with key ${e} already exists. Overwriting.`),oh[e]={detector:t,loader:r},Z.debug(`Detector with key ${e} added${r?" with loader":""}`)},"addDetector"),sJ=o(e=>oh[e].loader,"getDiagramLoader")});var ob,oJ,p8=F(()=>{"use strict";ob=(function(){var e=o(function(J,se,ge,Te){for(ge=ge||{},Te=J.length;Te--;ge[J[Te]]=se);return ge},"o"),t=[1,24],r=[1,25],n=[1,26],i=[1,27],a=[1,28],s=[1,63],l=[1,64],u=[1,65],h=[1,66],d=[1,67],f=[1,68],p=[1,69],m=[1,29],g=[1,30],y=[1,31],v=[1,32],x=[1,33],b=[1,34],T=[1,35],k=[1,36],C=[1,37],w=[1,38],S=[1,39],R=[1,40],L=[1,41],N=[1,42],I=[1,43],_=[1,44],A=[1,45],M=[1,46],D=[1,47],P=[1,48],B=[1,50],O=[1,51],$=[1,52],V=[1,53],G=[1,54],z=[1,55],W=[1,56],H=[1,57],j=[1,58],Q=[1,59],U=[1,60],oe=[14,42],te=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],le=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ie=[1,82],ae=[1,83],Re=[1,84],be=[1,85],Pe=[12,14,42],Ge=[12,14,33,42],Oe=[12,14,33,42,76,77,79,80],ue=[12,33],ye=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ke={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:o(function(se,ge,Te,we,Me,ve,ne){var q=ve.length-1;switch(Me){case 3:we.setDirection("TB");break;case 4:we.setDirection("BT");break;case 5:we.setDirection("RL");break;case 6:we.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:we.setC4Type(ve[q-3]);break;case 19:we.setTitle(ve[q].substring(6)),this.$=ve[q].substring(6);break;case 20:we.setAccDescription(ve[q].substring(15)),this.$=ve[q].substring(15);break;case 21:this.$=ve[q].trim(),we.setTitle(this.$);break;case 22:case 23:this.$=ve[q].trim(),we.setAccDescription(this.$);break;case 28:ve[q].splice(2,0,"ENTERPRISE"),we.addPersonOrSystemBoundary(...ve[q]),this.$=ve[q];break;case 29:ve[q].splice(2,0,"SYSTEM"),we.addPersonOrSystemBoundary(...ve[q]),this.$=ve[q];break;case 30:we.addPersonOrSystemBoundary(...ve[q]),this.$=ve[q];break;case 31:ve[q].splice(2,0,"CONTAINER"),we.addContainerBoundary(...ve[q]),this.$=ve[q];break;case 32:we.addDeploymentNode("node",...ve[q]),this.$=ve[q];break;case 33:we.addDeploymentNode("nodeL",...ve[q]),this.$=ve[q];break;case 34:we.addDeploymentNode("nodeR",...ve[q]),this.$=ve[q];break;case 35:we.popBoundaryParseStack();break;case 39:we.addPersonOrSystem("person",...ve[q]),this.$=ve[q];break;case 40:we.addPersonOrSystem("external_person",...ve[q]),this.$=ve[q];break;case 41:we.addPersonOrSystem("system",...ve[q]),this.$=ve[q];break;case 42:we.addPersonOrSystem("system_db",...ve[q]),this.$=ve[q];break;case 43:we.addPersonOrSystem("system_queue",...ve[q]),this.$=ve[q];break;case 44:we.addPersonOrSystem("external_system",...ve[q]),this.$=ve[q];break;case 45:we.addPersonOrSystem("external_system_db",...ve[q]),this.$=ve[q];break;case 46:we.addPersonOrSystem("external_system_queue",...ve[q]),this.$=ve[q];break;case 47:we.addContainer("container",...ve[q]),this.$=ve[q];break;case 48:we.addContainer("container_db",...ve[q]),this.$=ve[q];break;case 49:we.addContainer("container_queue",...ve[q]),this.$=ve[q];break;case 50:we.addContainer("external_container",...ve[q]),this.$=ve[q];break;case 51:we.addContainer("external_container_db",...ve[q]),this.$=ve[q];break;case 52:we.addContainer("external_container_queue",...ve[q]),this.$=ve[q];break;case 53:we.addComponent("component",...ve[q]),this.$=ve[q];break;case 54:we.addComponent("component_db",...ve[q]),this.$=ve[q];break;case 55:we.addComponent("component_queue",...ve[q]),this.$=ve[q];break;case 56:we.addComponent("external_component",...ve[q]),this.$=ve[q];break;case 57:we.addComponent("external_component_db",...ve[q]),this.$=ve[q];break;case 58:we.addComponent("external_component_queue",...ve[q]),this.$=ve[q];break;case 60:we.addRel("rel",...ve[q]),this.$=ve[q];break;case 61:we.addRel("birel",...ve[q]),this.$=ve[q];break;case 62:we.addRel("rel_u",...ve[q]),this.$=ve[q];break;case 63:we.addRel("rel_d",...ve[q]),this.$=ve[q];break;case 64:we.addRel("rel_l",...ve[q]),this.$=ve[q];break;case 65:we.addRel("rel_r",...ve[q]),this.$=ve[q];break;case 66:we.addRel("rel_b",...ve[q]),this.$=ve[q];break;case 67:ve[q].splice(0,1),we.addRel("rel",...ve[q]),this.$=ve[q];break;case 68:we.updateElStyle("update_el_style",...ve[q]),this.$=ve[q];break;case 69:we.updateRelStyle("update_rel_style",...ve[q]),this.$=ve[q];break;case 70:we.updateLayoutConfig("update_layout_config",...ve[q]),this.$=ve[q];break;case 71:this.$=[ve[q]];break;case 72:ve[q].unshift(ve[q-1]),this.$=ve[q];break;case 73:case 75:this.$=ve[q].trim();break;case 74:let he={};he[ve[q-1].trim()]=ve[q].trim(),this.$=he;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{13:70,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{13:71,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{13:72,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{13:73,19:20,20:21,21:22,22:t,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{14:[1,74]},e(oe,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:l,37:u,38:h,39:d,40:f,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U}),e(oe,[2,14]),e(te,[2,16],{12:[1,76]}),e(oe,[2,36],{12:[1,77]}),e(le,[2,19]),e(le,[2,20]),{25:[1,78]},{27:[1,79]},e(le,[2,23]),{35:80,75:81,76:ie,77:ae,79:Re,80:be},{35:86,75:81,76:ie,77:ae,79:Re,80:be},{35:87,75:81,76:ie,77:ae,79:Re,80:be},{35:88,75:81,76:ie,77:ae,79:Re,80:be},{35:89,75:81,76:ie,77:ae,79:Re,80:be},{35:90,75:81,76:ie,77:ae,79:Re,80:be},{35:91,75:81,76:ie,77:ae,79:Re,80:be},{35:92,75:81,76:ie,77:ae,79:Re,80:be},{35:93,75:81,76:ie,77:ae,79:Re,80:be},{35:94,75:81,76:ie,77:ae,79:Re,80:be},{35:95,75:81,76:ie,77:ae,79:Re,80:be},{35:96,75:81,76:ie,77:ae,79:Re,80:be},{35:97,75:81,76:ie,77:ae,79:Re,80:be},{35:98,75:81,76:ie,77:ae,79:Re,80:be},{35:99,75:81,76:ie,77:ae,79:Re,80:be},{35:100,75:81,76:ie,77:ae,79:Re,80:be},{35:101,75:81,76:ie,77:ae,79:Re,80:be},{35:102,75:81,76:ie,77:ae,79:Re,80:be},{35:103,75:81,76:ie,77:ae,79:Re,80:be},{35:104,75:81,76:ie,77:ae,79:Re,80:be},e(Pe,[2,59]),{35:105,75:81,76:ie,77:ae,79:Re,80:be},{35:106,75:81,76:ie,77:ae,79:Re,80:be},{35:107,75:81,76:ie,77:ae,79:Re,80:be},{35:108,75:81,76:ie,77:ae,79:Re,80:be},{35:109,75:81,76:ie,77:ae,79:Re,80:be},{35:110,75:81,76:ie,77:ae,79:Re,80:be},{35:111,75:81,76:ie,77:ae,79:Re,80:be},{35:112,75:81,76:ie,77:ae,79:Re,80:be},{35:113,75:81,76:ie,77:ae,79:Re,80:be},{35:114,75:81,76:ie,77:ae,79:Re,80:be},{35:115,75:81,76:ie,77:ae,79:Re,80:be},{20:116,29:49,30:61,32:62,34:s,36:l,37:u,38:h,39:d,40:f,41:p,43:23,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U},{12:[1,118],33:[1,117]},{35:119,75:81,76:ie,77:ae,79:Re,80:be},{35:120,75:81,76:ie,77:ae,79:Re,80:be},{35:121,75:81,76:ie,77:ae,79:Re,80:be},{35:122,75:81,76:ie,77:ae,79:Re,80:be},{35:123,75:81,76:ie,77:ae,79:Re,80:be},{35:124,75:81,76:ie,77:ae,79:Re,80:be},{35:125,75:81,76:ie,77:ae,79:Re,80:be},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(oe,[2,15]),e(te,[2,17],{21:22,19:130,22:t,23:r,24:n,26:i,28:a}),e(oe,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:r,24:n,26:i,28:a,34:s,36:l,37:u,38:h,39:d,40:f,41:p,44:m,45:g,46:y,47:v,48:x,49:b,50:T,51:k,52:C,53:w,54:S,55:R,56:L,57:N,58:I,59:_,60:A,61:M,62:D,63:P,64:B,65:O,66:$,67:V,68:G,69:z,70:W,71:H,72:j,73:Q,74:U}),e(le,[2,21]),e(le,[2,22]),e(Pe,[2,39]),e(Ge,[2,71],{75:81,35:132,76:ie,77:ae,79:Re,80:be}),e(Oe,[2,73]),{78:[1,133]},e(Oe,[2,75]),e(Oe,[2,76]),e(Pe,[2,40]),e(Pe,[2,41]),e(Pe,[2,42]),e(Pe,[2,43]),e(Pe,[2,44]),e(Pe,[2,45]),e(Pe,[2,46]),e(Pe,[2,47]),e(Pe,[2,48]),e(Pe,[2,49]),e(Pe,[2,50]),e(Pe,[2,51]),e(Pe,[2,52]),e(Pe,[2,53]),e(Pe,[2,54]),e(Pe,[2,55]),e(Pe,[2,56]),e(Pe,[2,57]),e(Pe,[2,58]),e(Pe,[2,60]),e(Pe,[2,61]),e(Pe,[2,62]),e(Pe,[2,63]),e(Pe,[2,64]),e(Pe,[2,65]),e(Pe,[2,66]),e(Pe,[2,67]),e(Pe,[2,68]),e(Pe,[2,69]),e(Pe,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(ue,[2,28]),e(ue,[2,29]),e(ue,[2,30]),e(ue,[2,31]),e(ue,[2,32]),e(ue,[2,33]),e(ue,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(te,[2,18]),e(oe,[2,38]),e(Ge,[2,72]),e(Oe,[2,74]),e(Pe,[2,24]),e(Pe,[2,35]),e(ye,[2,25]),e(ye,[2,26],{12:[1,138]}),e(ye,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:o(function(se,ge){if(ge.recoverable)this.trace(se);else{var Te=new Error(se);throw Te.hash=ge,Te}},"parseError"),parse:o(function(se){var ge=this,Te=[0],we=[],Me=[null],ve=[],ne=this.table,q="",he=0,X=0,fe=0,K=2,qe=1,_e=ve.slice.call(arguments,1),Be=Object.create(this.lexer),Ne={yy:{}};for(var He in this.yy)Object.prototype.hasOwnProperty.call(this.yy,He)&&(Ne.yy[He]=this.yy[He]);Be.setInput(se,Ne.yy),Ne.yy.lexer=Be,Ne.yy.parser=this,typeof Be.yylloc>"u"&&(Be.yylloc={});var $e=Be.yylloc;ve.push($e);var Xe=Be.options&&Be.options.ranges;typeof Ne.yy.parseError=="function"?this.parseError=Ne.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Fe(Ze){Te.length=Te.length-2*Ze,Me.length=Me.length-Ze,ve.length=ve.length-Ze}o(Fe,"popStack");function Ke(){var Ze;return Ze=we.pop()||Be.lex()||qe,typeof Ze!="number"&&(Ze instanceof Array&&(we=Ze,Ze=we.pop()),Ze=ge.symbols_[Ze]||Ze),Ze}o(Ke,"lex");for(var xe,mt,Le,ft,wt,zt,St={},At,bt,me,lt;;){if(Le=Te[Te.length-1],this.defaultActions[Le]?ft=this.defaultActions[Le]:((xe===null||typeof xe>"u")&&(xe=Ke()),ft=ne[Le]&&ne[Le][xe]),typeof ft>"u"||!ft.length||!ft[0]){var gt="";lt=[];for(At in ne[Le])this.terminals_[At]&&At>K&<.push("'"+this.terminals_[At]+"'");Be.showPosition?gt="Parse error on line "+(he+1)+`: +`+Be.showPosition()+` +Expecting `+lt.join(", ")+", got '"+(this.terminals_[xe]||xe)+"'":gt="Parse error on line "+(he+1)+": Unexpected "+(xe==qe?"end of input":"'"+(this.terminals_[xe]||xe)+"'"),this.parseError(gt,{text:Be.match,token:this.terminals_[xe]||xe,line:Be.yylineno,loc:$e,expected:lt})}if(ft[0]instanceof Array&&ft.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Le+", token: "+xe);switch(ft[0]){case 1:Te.push(xe),Me.push(Be.yytext),ve.push(Be.yylloc),Te.push(ft[1]),xe=null,mt?(xe=mt,mt=null):(X=Be.yyleng,q=Be.yytext,he=Be.yylineno,$e=Be.yylloc,fe>0&&fe--);break;case 2:if(bt=this.productions_[ft[1]][1],St.$=Me[Me.length-bt],St._$={first_line:ve[ve.length-(bt||1)].first_line,last_line:ve[ve.length-1].last_line,first_column:ve[ve.length-(bt||1)].first_column,last_column:ve[ve.length-1].last_column},Xe&&(St._$.range=[ve[ve.length-(bt||1)].range[0],ve[ve.length-1].range[1]]),zt=this.performAction.apply(St,[q,X,he,Ne.yy,ft[1],Me,ve].concat(_e)),typeof zt<"u")return zt;bt&&(Te=Te.slice(0,-1*bt*2),Me=Me.slice(0,-1*bt),ve=ve.slice(0,-1*bt)),Te.push(this.productions_[ft[1]][0]),Me.push(St.$),ve.push(St._$),me=ne[Te[Te.length-2]][Te[Te.length-1]],Te.push(me);break;case 3:return!0}}return!0},"parse")},ce=(function(){var J={EOF:1,parseError:o(function(ge,Te){if(this.yy.parser)this.yy.parser.parseError(ge,Te);else throw new Error(ge)},"parseError"),setInput:o(function(se,ge){return this.yy=ge||this.yy||{},this._input=se,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var se=this._input[0];this.yytext+=se,this.yyleng++,this.offset++,this.match+=se,this.matched+=se;var ge=se.match(/(?:\r\n?|\n).*/g);return ge?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),se},"input"),unput:o(function(se){var ge=se.length,Te=se.split(/(?:\r\n?|\n)/g);this._input=se+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ge),this.offset-=ge;var we=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Te.length-1&&(this.yylineno-=Te.length-1);var Me=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Te?(Te.length===we.length?this.yylloc.first_column:0)+we[we.length-Te.length].length-Te[0].length:this.yylloc.first_column-ge},this.options.ranges&&(this.yylloc.range=[Me[0],Me[0]+this.yyleng-ge]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(se){this.unput(this.match.slice(se))},"less"),pastInput:o(function(){var se=this.matched.substr(0,this.matched.length-this.match.length);return(se.length>20?"...":"")+se.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var se=this.match;return se.length<20&&(se+=this._input.substr(0,20-se.length)),(se.substr(0,20)+(se.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var se=this.pastInput(),ge=new Array(se.length+1).join("-");return se+this.upcomingInput()+` +`+ge+"^"},"showPosition"),test_match:o(function(se,ge){var Te,we,Me;if(this.options.backtrack_lexer&&(Me={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Me.yylloc.range=this.yylloc.range.slice(0))),we=se[0].match(/(?:\r\n?|\n).*/g),we&&(this.yylineno+=we.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:we?we[we.length-1].length-we[we.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+se[0].length},this.yytext+=se[0],this.match+=se[0],this.matches=se,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(se[0].length),this.matched+=se[0],Te=this.performAction.call(this,this.yy,this,ge,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Te)return Te;if(this._backtrack){for(var ve in Me)this[ve]=Me[ve];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var se,ge,Te,we;this._more||(this.yytext="",this.match="");for(var Me=this._currentRules(),ve=0;vege[0].length)){if(ge=Te,we=ve,this.options.backtrack_lexer){if(se=this.test_match(Te,Me[ve]),se!==!1)return se;if(this._backtrack){ge=!1;continue}else return!1}else if(!this.options.flex)break}return ge?(se=this.test_match(ge,Me[we]),se!==!1?se:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var ge=this.next();return ge||this.lex()},"lex"),begin:o(function(ge){this.conditionStack.push(ge)},"begin"),popState:o(function(){var ge=this.conditionStack.length-1;return ge>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(ge){return ge=this.conditionStack.length-1-Math.abs(ge||0),ge>=0?this.conditionStack[ge]:"INITIAL"},"topState"),pushState:o(function(ge){this.begin(ge)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(ge,Te,we,Me){var ve=Me;switch(we){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[65,66,67,68],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return J})();ke.lexer=ce;function re(){this.yy={}}return o(re,"Parser"),re.prototype=ke,ke.Parser=re,new re})();ob.parser=ob;oJ=ob});var eWe,tWe,Wr,ul,$n=F(()=>{"use strict";vt();eWe=o(function(e,t){for(let r of t)e.attr(r[0],r[1])},"d3Attrs"),tWe=o(function(e,t,r){let n=new Map;return r?(n.set("width","100%"),n.set("style",`max-width: ${t}px;`)):(n.set("height",e),n.set("width",t)),n},"calculateSvgSizeAttrs"),Wr=o(function(e,t,r,n){let i=tWe(t,r,n);eWe(e,i)},"configureSvgSize"),ul=o(function(e,t,r,n){let i=t.node().getBBox(),a=i.width,s=i.height;Z.info(`SVG bounds: ${a}x${s}`,i);let l=0,u=0;Z.info(`Graph bounds: ${l}x${u}`,e),l=a+r*2,u=s+r*2,Z.info(`Calculated bounds: ${l}x${u}`),Wr(t,u,l,n);let h=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;t.attr("viewBox",h)},"setupGraphViewbox")});function m8(e){return[...e.cssRules].map(t=>t.cssText).join(` +`)}var vS,rWe,lJ,cJ,g8=F(()=>{"use strict";vt();vS={};o(m8,"cssStyleSheetToString");rWe=o((e,t,r,n)=>{let i="";return e in vS&&vS[e]?i=vS[e]({...r,svgId:n}):Z.warn(`No theme found for ${e}`),` & { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + fill: ${r.textColor} + } + @keyframes edge-animation-frame { + from { + stroke-dashoffset: 0; + } + } + @keyframes dash { + to { + stroke-dashoffset: 0; + } + } + & .edge-animation-slow { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 50s linear infinite; + stroke-linecap: round; + } + & .edge-animation-fast { + stroke-dasharray: 9,5 !important; + stroke-dashoffset: 900; + animation: dash 20s linear infinite; + stroke-linecap: round; + } + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${r.errorBkgColor}; + } + & .error-text { + fill: ${r.errorTextColor}; + stroke: ${r.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: ${r.strokeWidth??1}px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + & .edge-thickness-invisible { + stroke-width: 0; + fill: none; + } + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${r.lineColor}; + stroke: ${r.lineColor}; + } + & .marker.cross { + stroke: ${r.lineColor}; + } + + & svg { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + } + & p { + margin: 0 + } + + ${i} + .node .neo-node { + stroke: ${r.nodeBorder}; + } + + [data-look="neo"].node rect, [data-look="neo"].cluster rect, [data-look="neo"].node polygon { + stroke: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder}; + filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"}; + } + [data-look="neo"].swimlane.cluster rect { + filter: none; + } + + + [data-look="neo"].node path { + stroke: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder}; + stroke-width: ${r.strokeWidth??1}px; + } + + [data-look="neo"].node .outer-path { + filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"}; + } + + [data-look="neo"].node .neo-line path { + stroke: ${r.nodeBorder}; + filter: none; + } + + [data-look="neo"].node circle{ + stroke: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder}; + filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"}; + } + + [data-look="neo"].node circle .state-start{ + fill: #000000; + } + + [data-look="neo"].icon-shape .icon { + fill: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder}; + filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"}; + } + + [data-look="neo"].icon-shape .icon-neo path { + stroke: ${r.useGradient?"url("+n+"-gradient)":r.nodeBorder}; + filter: ${r.dropShadow?r.dropShadow.replace("url(#drop-shadow)",`url(${n}-drop-shadow)`):"none"}; + } + + ${t} +`},"getStyles"),lJ=o((e,t)=>{t!==void 0&&(vS[e]=t)},"addStylesForDiagram"),cJ=rWe});var lb={};ir(lb,{clear:()=>yr,getAccDescription:()=>_r,getAccTitle:()=>Ar,getDiagramTitle:()=>Lr,setAccDescription:()=>Rr,setAccTitle:()=>kr,setDiagramTitle:()=>Or});var y8,v8,x8,b8,yr,kr,Ar,Rr,_r,Or,Lr,Nn=F(()=>{"use strict";Vr();ur();y8="",v8="",x8="",b8=o(e=>mr(e,_t()),"sanitizeText"),yr=o(()=>{y8="",x8="",v8=""},"clear"),kr=o(e=>{y8=b8(e).replace(/^\s+/g,"")},"setAccTitle"),Ar=o(()=>y8,"getAccTitle"),Rr=o(e=>{x8=b8(e).replace(/\n\s+/g,` +`)},"setAccDescription"),_r=o(()=>x8,"getAccDescription"),Or=o(e=>{v8=b8(e)},"setDiagramTitle"),Lr=o(()=>v8,"getDiagramTitle")});var uJ,nWe,Ae,cb,bS,ub,hb,iWe,xS,Yp,db,T8,Xt=F(()=>{"use strict";Up();vt();ur();Vr();$n();g8();Nn();uJ=Z,nWe=Bx,Ae=_t,cb=_k,bS=Cd,ub=o(e=>mr(e,Ae()),"sanitizeText"),hb=ul,iWe=o(()=>lb,"getCommonDb"),xS={},Yp=o((e,t,r)=>{xS[e]&&uJ.warn(`Diagram with id ${e} already registered. Overwriting.`),xS[e]=t,r&&f8(e,r),lJ(e,t.styles),t.injectUtils?.(uJ,nWe,Ae,ub,hb,iWe(),()=>{})},"registerDiagram"),db=o(e=>{if(e in xS)return xS[e];throw new T8(e)},"getDiagram"),T8=class extends Error{static{o(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}}});var ql,Dd,Ss,Wl,Hc,fb,C8,w8,TS,CS,hJ,aWe,sWe,oWe,lWe,cWe,uWe,hWe,dWe,fWe,pWe,mWe,gWe,yWe,vWe,xWe,bWe,TWe,dJ,CWe,wWe,fJ,kWe,SWe,EWe,AWe,Id,RWe,_We,LWe,DWe,IWe,pb,k8=F(()=>{"use strict";Xt();Vr();Nn();ql=[],Dd=[""],Ss="global",Wl="",Hc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],fb=[],C8="",w8=!1,TS=4,CS=2,aWe=o(function(){return hJ},"getC4Type"),sWe=o(function(e){hJ=mr(e,Ae())},"setC4Type"),oWe=o(function(e,t,r,n,i,a,s,l,u){if(e==null||t===void 0||t===null||r===void 0||r===null||n===void 0||n===null)return;let h={},d=fb.find(f=>f.from===t&&f.to===r);if(d?h=d:fb.push(h),h.type=e,h.from=t,h.to=r,h.label={text:n},i==null)h.techn={text:""};else if(typeof i=="object"){let[f,p]=Object.entries(i)[0];h[f]={text:p}}else h.techn={text:i};if(a==null)h.descr={text:""};else if(typeof a=="object"){let[f,p]=Object.entries(a)[0];h[f]={text:p}}else h.descr={text:a};if(typeof s=="object"){let[f,p]=Object.entries(s)[0];h[f]=p}else h.sprite=s;if(typeof l=="object"){let[f,p]=Object.entries(l)[0];h[f]=p}else h.tags=l;if(typeof u=="object"){let[f,p]=Object.entries(u)[0];h[f]=p}else h.link=u;h.wrap=Id()},"addRel"),lWe=o(function(e,t,r,n,i,a,s){if(t===null||r===null)return;let l={},u=ql.find(h=>h.alias===t);if(u&&t===u.alias?l=u:(l.alias=t,ql.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.descr={text:""};else if(typeof n=="object"){let[h,d]=Object.entries(n)[0];l[h]={text:d}}else l.descr={text:n};if(typeof i=="object"){let[h,d]=Object.entries(i)[0];l[h]=d}else l.sprite=i;if(typeof a=="object"){let[h,d]=Object.entries(a)[0];l[h]=d}else l.tags=a;if(typeof s=="object"){let[h,d]=Object.entries(s)[0];l[h]=d}else l.link=s;l.typeC4Shape={text:e},l.parentBoundary=Ss,l.wrap=Id()},"addPersonOrSystem"),cWe=o(function(e,t,r,n,i,a,s,l){if(t===null||r===null)return;let u={},h=ql.find(d=>d.alias===t);if(h&&t===h.alias?u=h:(u.alias=t,ql.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[d,f]=Object.entries(n)[0];u[d]={text:f}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[d,f]=Object.entries(i)[0];u[d]={text:f}}else u.descr={text:i};if(typeof a=="object"){let[d,f]=Object.entries(a)[0];u[d]=f}else u.sprite=a;if(typeof s=="object"){let[d,f]=Object.entries(s)[0];u[d]=f}else u.tags=s;if(typeof l=="object"){let[d,f]=Object.entries(l)[0];u[d]=f}else u.link=l;u.wrap=Id(),u.typeC4Shape={text:e},u.parentBoundary=Ss},"addContainer"),uWe=o(function(e,t,r,n,i,a,s,l){if(t===null||r===null)return;let u={},h=ql.find(d=>d.alias===t);if(h&&t===h.alias?u=h:(u.alias=t,ql.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.techn={text:""};else if(typeof n=="object"){let[d,f]=Object.entries(n)[0];u[d]={text:f}}else u.techn={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[d,f]=Object.entries(i)[0];u[d]={text:f}}else u.descr={text:i};if(typeof a=="object"){let[d,f]=Object.entries(a)[0];u[d]=f}else u.sprite=a;if(typeof s=="object"){let[d,f]=Object.entries(s)[0];u[d]=f}else u.tags=s;if(typeof l=="object"){let[d,f]=Object.entries(l)[0];u[d]=f}else u.link=l;u.wrap=Id(),u.typeC4Shape={text:e},u.parentBoundary=Ss},"addComponent"),hWe=o(function(e,t,r,n,i){if(e===null||t===null)return;let a={},s=Hc.find(l=>l.alias===e);if(s&&e===s.alias?a=s:(a.alias=e,Hc.push(a)),t==null?a.label={text:""}:a.label={text:t},r==null)a.type={text:"system"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Ss,a.wrap=Id(),Wl=Ss,Ss=e,Dd.push(Wl)},"addPersonOrSystemBoundary"),dWe=o(function(e,t,r,n,i){if(e===null||t===null)return;let a={},s=Hc.find(l=>l.alias===e);if(s&&e===s.alias?a=s:(a.alias=e,Hc.push(a)),t==null?a.label={text:""}:a.label={text:t},r==null)a.type={text:"container"};else if(typeof r=="object"){let[l,u]=Object.entries(r)[0];a[l]={text:u}}else a.type={text:r};if(typeof n=="object"){let[l,u]=Object.entries(n)[0];a[l]=u}else a.tags=n;if(typeof i=="object"){let[l,u]=Object.entries(i)[0];a[l]=u}else a.link=i;a.parentBoundary=Ss,a.wrap=Id(),Wl=Ss,Ss=e,Dd.push(Wl)},"addContainerBoundary"),fWe=o(function(e,t,r,n,i,a,s,l){if(t===null||r===null)return;let u={},h=Hc.find(d=>d.alias===t);if(h&&t===h.alias?u=h:(u.alias=t,Hc.push(u)),r==null?u.label={text:""}:u.label={text:r},n==null)u.type={text:"node"};else if(typeof n=="object"){let[d,f]=Object.entries(n)[0];u[d]={text:f}}else u.type={text:n};if(i==null)u.descr={text:""};else if(typeof i=="object"){let[d,f]=Object.entries(i)[0];u[d]={text:f}}else u.descr={text:i};if(typeof s=="object"){let[d,f]=Object.entries(s)[0];u[d]=f}else u.tags=s;if(typeof l=="object"){let[d,f]=Object.entries(l)[0];u[d]=f}else u.link=l;u.nodeType=e,u.parentBoundary=Ss,u.wrap=Id(),Wl=Ss,Ss=t,Dd.push(Wl)},"addDeploymentNode"),pWe=o(function(){Ss=Wl,Dd.pop(),Wl=Dd.pop(),Dd.push(Wl)},"popBoundaryParseStack"),mWe=o(function(e,t,r,n,i,a,s,l,u,h,d){let f=ql.find(p=>p.alias===t);if(!(f===void 0&&(f=Hc.find(p=>p.alias===t),f===void 0))){if(r!=null)if(typeof r=="object"){let[p,m]=Object.entries(r)[0];f[p]=m}else f.bgColor=r;if(n!=null)if(typeof n=="object"){let[p,m]=Object.entries(n)[0];f[p]=m}else f.fontColor=n;if(i!=null)if(typeof i=="object"){let[p,m]=Object.entries(i)[0];f[p]=m}else f.borderColor=i;if(a!=null)if(typeof a=="object"){let[p,m]=Object.entries(a)[0];f[p]=m}else f.shadowing=a;if(s!=null)if(typeof s=="object"){let[p,m]=Object.entries(s)[0];f[p]=m}else f.shape=s;if(l!=null)if(typeof l=="object"){let[p,m]=Object.entries(l)[0];f[p]=m}else f.sprite=l;if(u!=null)if(typeof u=="object"){let[p,m]=Object.entries(u)[0];f[p]=m}else f.techn=u;if(h!=null)if(typeof h=="object"){let[p,m]=Object.entries(h)[0];f[p]=m}else f.legendText=h;if(d!=null)if(typeof d=="object"){let[p,m]=Object.entries(d)[0];f[p]=m}else f.legendSprite=d}},"updateElStyle"),gWe=o(function(e,t,r,n,i,a,s){let l=fb.find(u=>u.from===t&&u.to===r);if(l!==void 0){if(n!=null)if(typeof n=="object"){let[u,h]=Object.entries(n)[0];l[u]=h}else l.textColor=n;if(i!=null)if(typeof i=="object"){let[u,h]=Object.entries(i)[0];l[u]=h}else l.lineColor=i;if(a!=null)if(typeof a=="object"){let[u,h]=Object.entries(a)[0];l[u]=parseInt(h)}else l.offsetX=parseInt(a);if(s!=null)if(typeof s=="object"){let[u,h]=Object.entries(s)[0];l[u]=parseInt(h)}else l.offsetY=parseInt(s)}},"updateRelStyle"),yWe=o(function(e,t,r){let n=TS,i=CS;if(typeof t=="object"){let a=Object.values(t)[0];n=parseInt(a)}else n=parseInt(t);if(typeof r=="object"){let a=Object.values(r)[0];i=parseInt(a)}else i=parseInt(r);n>=1&&(TS=n),i>=1&&(CS=i)},"updateLayoutConfig"),vWe=o(function(){return TS},"getC4ShapeInRow"),xWe=o(function(){return CS},"getC4BoundaryInRow"),bWe=o(function(){return Ss},"getCurrentBoundaryParse"),TWe=o(function(){return Wl},"getParentBoundaryParse"),dJ=o(function(e){return e==null?ql:ql.filter(t=>t.parentBoundary===e)},"getC4ShapeArray"),CWe=o(function(e){return ql.find(t=>t.alias===e)},"getC4Shape"),wWe=o(function(e){return Object.keys(dJ(e))},"getC4ShapeKeys"),fJ=o(function(e){return e==null?Hc:Hc.filter(t=>t.parentBoundary===e)},"getBoundaries"),kWe=fJ,SWe=o(function(){return fb},"getRels"),EWe=o(function(){return C8},"getTitle"),AWe=o(function(e){w8=e},"setWrap"),Id=o(function(){return w8},"autoWrap"),RWe=o(function(){ql=[],Hc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Wl="",Ss="global",Dd=[""],fb=[],Dd=[""],C8="",w8=!1,TS=4,CS=2},"clear"),_We={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},LWe={FILLED:0,OPEN:1},DWe={LEFTOF:0,RIGHTOF:1,OVER:2},IWe=o(function(e){C8=mr(e,Ae())},"setTitle"),pb={addPersonOrSystem:lWe,addPersonOrSystemBoundary:hWe,addContainer:cWe,addContainerBoundary:dWe,addComponent:uWe,addDeploymentNode:fWe,popBoundaryParseStack:pWe,addRel:oWe,updateElStyle:mWe,updateRelStyle:gWe,updateLayoutConfig:yWe,autoWrap:Id,setWrap:AWe,getC4ShapeArray:dJ,getC4Shape:CWe,getC4ShapeKeys:wWe,getBoundaries:fJ,getBoundarys:kWe,getCurrentBoundaryParse:bWe,getParentBoundaryParse:TWe,getRels:SWe,getTitle:EWe,getC4Type:aWe,getC4ShapeInRow:vWe,getC4BoundaryInRow:xWe,setAccTitle:kr,getAccTitle:Ar,getAccDescription:_r,setAccDescription:Rr,getConfig:o(()=>Ae().c4,"getConfig"),clear:RWe,LINETYPE:_We,ARROWTYPE:LWe,PLACEMENT:DWe,setTitle:IWe,setC4Type:sWe}});function jp(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}var S8=F(()=>{"use strict";o(jp,"ascending")});function E8(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}var pJ=F(()=>{"use strict";o(E8,"descending")});function Xp(e){let t,r,n;e.length!==2?(t=jp,r=o((l,u)=>jp(e(l),u),"compare2"),n=o((l,u)=>e(l)-u,"delta")):(t=e===jp||e===E8?e:MWe,r=e,n=e);function i(l,u,h=0,d=l.length){if(h>>1;r(l[f],u)<0?h=f+1:d=f}while(h>>1;r(l[f],u)<=0?h=f+1:d=f}while(hh&&n(l[f-1],u)>-n(l[f],u)?f-1:f}return o(s,"center"),{left:i,center:s,right:a}}function MWe(){return 0}var A8=F(()=>{"use strict";S8();pJ();o(Xp,"bisector");o(MWe,"zero")});function R8(e){return e===null?NaN:+e}var mJ=F(()=>{"use strict";o(R8,"number")});var gJ,yJ,NWe,PWe,_8,vJ=F(()=>{"use strict";S8();A8();mJ();gJ=Xp(jp),yJ=gJ.right,NWe=gJ.left,PWe=Xp(R8).center,_8=yJ});function xJ({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):r}function OWe({_intern:e,_key:t},r){let n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function BWe({_intern:e,_key:t},r){let n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function $We(e){return e!==null&&typeof e=="object"?e.valueOf():e}var iy,bJ=F(()=>{"use strict";iy=class extends Map{static{o(this,"InternMap")}constructor(t,r=$We){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(let[n,i]of t)this.set(n,i)}get(t){return super.get(xJ(this,t))}has(t){return super.has(xJ(this,t))}set(t,r){return super.set(OWe(this,t),r)}delete(t){return super.delete(BWe(this,t))}};o(xJ,"intern_get");o(OWe,"intern_set");o(BWe,"intern_delete");o($We,"keyof")});function wS(e,t,r){let n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=a>=FWe?10:a>=zWe?5:a>=GWe?2:1,l,u,h;return i<0?(h=Math.pow(10,-i)/s,l=Math.round(e*h),u=Math.round(t*h),l/ht&&--u,h=-h):(h=Math.pow(10,i)*s,l=Math.round(e/h),u=Math.round(t/h),l*ht&&--u),u0))return[];if(e===t)return[e];let n=t=i))return[];let l=a-i+1,u=new Array(l);if(n)if(s<0)for(let h=0;h{"use strict";FWe=Math.sqrt(50),zWe=Math.sqrt(10),GWe=Math.sqrt(2);o(wS,"tickSpec");o(kS,"ticks");o(mb,"tickIncrement");o(ay,"tickStep")});function SS(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r=i)&&(r=i)}return r}var CJ=F(()=>{"use strict";o(SS,"max")});function ES(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var wJ=F(()=>{"use strict";o(ES,"min")});function AS(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((t-e)/r))|0,a=new Array(i);++n{"use strict";o(AS,"range")});var Md=F(()=>{"use strict";vJ();A8();CJ();wJ();kJ();TJ();bJ()});function L8(e){return e}var SJ=F(()=>{"use strict";o(L8,"default")});function VWe(e){return"translate("+e+",0)"}function WWe(e){return"translate(0,"+e+")"}function qWe(e){return t=>+e(t)}function HWe(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function UWe(){return!this.__axis}function AJ(e,t){var r=[],n=null,i=null,a=6,s=6,l=3,u=typeof window<"u"&&window.devicePixelRatio>1?0:.5,h=e===_S||e===RS?-1:1,d=e===RS||e===D8?"x":"y",f=e===_S||e===I8?VWe:WWe;function p(m){var g=n??(t.ticks?t.ticks.apply(t,r):t.domain()),y=i??(t.tickFormat?t.tickFormat.apply(t,r):L8),v=Math.max(a,0)+l,x=t.range(),b=+x[0]+u,T=+x[x.length-1]+u,k=(t.bandwidth?HWe:qWe)(t.copy(),u),C=m.selection?m.selection():m,w=C.selectAll(".domain").data([null]),S=C.selectAll(".tick").data(g,t).order(),R=S.exit(),L=S.enter().append("g").attr("class","tick"),N=S.select("line"),I=S.select("text");w=w.merge(w.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),S=S.merge(L),N=N.merge(L.append("line").attr("stroke","currentColor").attr(d+"2",h*a)),I=I.merge(L.append("text").attr("fill","currentColor").attr(d,h*v).attr("dy",e===_S?"0em":e===I8?"0.71em":"0.32em")),m!==C&&(w=w.transition(m),S=S.transition(m),N=N.transition(m),I=I.transition(m),R=R.transition(m).attr("opacity",EJ).attr("transform",function(_){return isFinite(_=k(_))?f(_+u):this.getAttribute("transform")}),L.attr("opacity",EJ).attr("transform",function(_){var A=this.parentNode.__axis;return f((A&&isFinite(A=A(_))?A:k(_))+u)})),R.remove(),w.attr("d",e===RS||e===D8?s?"M"+h*s+","+b+"H"+u+"V"+T+"H"+h*s:"M"+u+","+b+"V"+T:s?"M"+b+","+h*s+"V"+u+"H"+T+"V"+h*s:"M"+b+","+u+"H"+T),S.attr("opacity",1).attr("transform",function(_){return f(k(_)+u)}),N.attr(d+"2",h*a),I.attr(d,h*v).text(y),C.filter(UWe).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===D8?"start":e===RS?"end":"middle"),C.each(function(){this.__axis=k})}return o(p,"axis"),p.scale=function(m){return arguments.length?(t=m,p):t},p.ticks=function(){return r=Array.from(arguments),p},p.tickArguments=function(m){return arguments.length?(r=m==null?[]:Array.from(m),p):r.slice()},p.tickValues=function(m){return arguments.length?(n=m==null?null:Array.from(m),p):n&&n.slice()},p.tickFormat=function(m){return arguments.length?(i=m,p):i},p.tickSize=function(m){return arguments.length?(a=s=+m,p):a},p.tickSizeInner=function(m){return arguments.length?(a=+m,p):a},p.tickSizeOuter=function(m){return arguments.length?(s=+m,p):s},p.tickPadding=function(m){return arguments.length?(l=+m,p):l},p.offset=function(m){return arguments.length?(u=+m,p):u},p}function M8(e){return AJ(_S,e)}function N8(e){return AJ(I8,e)}var _S,D8,I8,RS,EJ,RJ=F(()=>{"use strict";SJ();_S=1,D8=2,I8=3,RS=4,EJ=1e-6;o(VWe,"translateX");o(WWe,"translateY");o(qWe,"number");o(HWe,"center");o(UWe,"entering");o(AJ,"axis");o(M8,"axisTop");o(N8,"axisBottom")});var _J=F(()=>{"use strict";RJ()});function DJ(){for(var e=0,t=arguments.length,r={},n;e=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}function XWe(e,t){for(var r=0,n=e.length,i;r{"use strict";YWe={value:o(()=>{},"value")};o(DJ,"dispatch");o(LS,"Dispatch");o(jWe,"parseTypenames");LS.prototype=DJ.prototype={constructor:LS,on:o(function(e,t){var r=this._,n=jWe(e+"",r),i,a=-1,s=n.length;if(arguments.length<2){for(;++a0)for(var r=new Array(i),n=0,i,a;n{"use strict";IJ()});var DS,B8,$8=F(()=>{"use strict";DS="http://www.w3.org/1999/xhtml",B8={svg:"http://www.w3.org/2000/svg",xhtml:DS,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function Uc(e){var t=e+="",r=t.indexOf(":");return r>=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),B8.hasOwnProperty(t)?{space:B8[t],local:e}:e}var IS=F(()=>{"use strict";$8();o(Uc,"default")});function KWe(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===DS&&t.documentElement.namespaceURI===DS?t.createElement(e):t.createElementNS(r,e)}}function ZWe(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function gb(e){var t=Uc(e);return(t.local?ZWe:KWe)(t)}var F8=F(()=>{"use strict";IS();$8();o(KWe,"creatorInherit");o(ZWe,"creatorFixed");o(gb,"default")});function QWe(){}function Nd(e){return e==null?QWe:function(){return this.querySelector(e)}}var MS=F(()=>{"use strict";o(QWe,"none");o(Nd,"default")});function z8(e){typeof e!="function"&&(e=Nd(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i{"use strict";Hl();MS();o(z8,"default")});function G8(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}var NJ=F(()=>{"use strict";o(G8,"array")});function JWe(){return[]}function sy(e){return e==null?JWe:function(){return this.querySelectorAll(e)}}var V8=F(()=>{"use strict";o(JWe,"empty");o(sy,"default")});function eqe(e){return function(){return G8(e.apply(this,arguments))}}function W8(e){typeof e=="function"?e=eqe(e):e=sy(e);for(var t=this._groups,r=t.length,n=[],i=[],a=0;a{"use strict";Hl();NJ();V8();o(eqe,"arrayAll");o(W8,"default")});function oy(e){return function(){return this.matches(e)}}function NS(e){return function(t){return t.matches(e)}}var yb=F(()=>{"use strict";o(oy,"default");o(NS,"childMatcher")});function rqe(e){return function(){return tqe.call(this.children,e)}}function nqe(){return this.firstElementChild}function q8(e){return this.select(e==null?nqe:rqe(typeof e=="function"?e:NS(e)))}var tqe,OJ=F(()=>{"use strict";yb();tqe=Array.prototype.find;o(rqe,"childFind");o(nqe,"childFirst");o(q8,"default")});function aqe(){return Array.from(this.children)}function sqe(e){return function(){return iqe.call(this.children,e)}}function H8(e){return this.selectAll(e==null?aqe:sqe(typeof e=="function"?e:NS(e)))}var iqe,BJ=F(()=>{"use strict";yb();iqe=Array.prototype.filter;o(aqe,"children");o(sqe,"childrenFilter");o(H8,"default")});function U8(e){typeof e!="function"&&(e=oy(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i{"use strict";Hl();yb();o(U8,"default")});function vb(e){return new Array(e.length)}var Y8=F(()=>{"use strict";o(vb,"default")});function j8(){return new Ai(this._enter||this._groups.map(vb),this._parents)}function xb(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}var X8=F(()=>{"use strict";Y8();Hl();o(j8,"default");o(xb,"EnterNode");xb.prototype={constructor:xb,appendChild:o(function(e){return this._parent.insertBefore(e,this._next)},"appendChild"),insertBefore:o(function(e,t){return this._parent.insertBefore(e,t)},"insertBefore"),querySelector:o(function(e){return this._parent.querySelector(e)},"querySelector"),querySelectorAll:o(function(e){return this._parent.querySelectorAll(e)},"querySelectorAll")}});function K8(e){return function(){return e}}var FJ=F(()=>{"use strict";o(K8,"default")});function oqe(e,t,r,n,i,a){for(var s=0,l,u=t.length,h=a.length;s=T&&(T=b+1);!(C=v[T])&&++T{"use strict";Hl();X8();FJ();o(oqe,"bindIndex");o(lqe,"bindKey");o(cqe,"datum");o(Z8,"default");o(uqe,"arraylike")});function Q8(){return new Ai(this._exit||this._groups.map(vb),this._parents)}var GJ=F(()=>{"use strict";Y8();Hl();o(Q8,"default")});function J8(e,t,r){var n=this.enter(),i=this,a=this.exit();return typeof e=="function"?(n=e(n),n&&(n=n.selection())):n=n.append(e+""),t!=null&&(i=t(i),i&&(i=i.selection())),r==null?a.remove():r(a),n&&i?n.merge(i).order():i}var VJ=F(()=>{"use strict";o(J8,"default")});function eI(e){for(var t=e.selection?e.selection():e,r=this._groups,n=t._groups,i=r.length,a=n.length,s=Math.min(i,a),l=new Array(i),u=0;u{"use strict";Hl();o(eI,"default")});function tI(){for(var e=this._groups,t=-1,r=e.length;++t=0;)(s=n[i])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}var qJ=F(()=>{"use strict";o(tI,"default")});function rI(e){e||(e=hqe);function t(f,p){return f&&p?e(f.__data__,p.__data__):!f-!p}o(t,"compareNode");for(var r=this._groups,n=r.length,i=new Array(n),a=0;at?1:e>=t?0:NaN}var HJ=F(()=>{"use strict";Hl();o(rI,"default");o(hqe,"ascending")});function nI(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}var UJ=F(()=>{"use strict";o(nI,"default")});function iI(){return Array.from(this)}var YJ=F(()=>{"use strict";o(iI,"default")});function aI(){for(var e=this._groups,t=0,r=e.length;t{"use strict";o(aI,"default")});function sI(){let e=0;for(let t of this)++e;return e}var XJ=F(()=>{"use strict";o(sI,"default")});function oI(){return!this.node()}var KJ=F(()=>{"use strict";o(oI,"default")});function lI(e){for(var t=this._groups,r=0,n=t.length;r{"use strict";o(lI,"default")});function dqe(e){return function(){this.removeAttribute(e)}}function fqe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function pqe(e,t){return function(){this.setAttribute(e,t)}}function mqe(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function gqe(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttribute(e):this.setAttribute(e,r)}}function yqe(e,t){return function(){var r=t.apply(this,arguments);r==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,r)}}function cI(e,t){var r=Uc(e);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((t==null?r.local?fqe:dqe:typeof t=="function"?r.local?yqe:gqe:r.local?mqe:pqe)(r,t))}var QJ=F(()=>{"use strict";IS();o(dqe,"attrRemove");o(fqe,"attrRemoveNS");o(pqe,"attrConstant");o(mqe,"attrConstantNS");o(gqe,"attrFunction");o(yqe,"attrFunctionNS");o(cI,"default")});function bb(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}var uI=F(()=>{"use strict";o(bb,"default")});function vqe(e){return function(){this.style.removeProperty(e)}}function xqe(e,t,r){return function(){this.style.setProperty(e,t,r)}}function bqe(e,t,r){return function(){var n=t.apply(this,arguments);n==null?this.style.removeProperty(e):this.style.setProperty(e,n,r)}}function hI(e,t,r){return arguments.length>1?this.each((t==null?vqe:typeof t=="function"?bqe:xqe)(e,t,r??"")):Pd(this.node(),e)}function Pd(e,t){return e.style.getPropertyValue(t)||bb(e).getComputedStyle(e,null).getPropertyValue(t)}var dI=F(()=>{"use strict";uI();o(vqe,"styleRemove");o(xqe,"styleConstant");o(bqe,"styleFunction");o(hI,"default");o(Pd,"styleValue")});function Tqe(e){return function(){delete this[e]}}function Cqe(e,t){return function(){this[e]=t}}function wqe(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function fI(e,t){return arguments.length>1?this.each((t==null?Tqe:typeof t=="function"?wqe:Cqe)(e,t)):this.node()[e]}var JJ=F(()=>{"use strict";o(Tqe,"propertyRemove");o(Cqe,"propertyConstant");o(wqe,"propertyFunction");o(fI,"default")});function eee(e){return e.trim().split(/^|\s+/)}function pI(e){return e.classList||new tee(e)}function tee(e){this._node=e,this._names=eee(e.getAttribute("class")||"")}function ree(e,t){for(var r=pI(e),n=-1,i=t.length;++n{"use strict";o(eee,"classArray");o(pI,"classList");o(tee,"ClassList");tee.prototype={add:o(function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},"add"),remove:o(function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},"remove"),contains:o(function(e){return this._names.indexOf(e)>=0},"contains")};o(ree,"classedAdd");o(nee,"classedRemove");o(kqe,"classedTrue");o(Sqe,"classedFalse");o(Eqe,"classedFunction");o(mI,"default")});function Aqe(){this.textContent=""}function Rqe(e){return function(){this.textContent=e}}function _qe(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function gI(e){return arguments.length?this.each(e==null?Aqe:(typeof e=="function"?_qe:Rqe)(e)):this.node().textContent}var aee=F(()=>{"use strict";o(Aqe,"textRemove");o(Rqe,"textConstant");o(_qe,"textFunction");o(gI,"default")});function Lqe(){this.innerHTML=""}function Dqe(e){return function(){this.innerHTML=e}}function Iqe(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function yI(e){return arguments.length?this.each(e==null?Lqe:(typeof e=="function"?Iqe:Dqe)(e)):this.node().innerHTML}var see=F(()=>{"use strict";o(Lqe,"htmlRemove");o(Dqe,"htmlConstant");o(Iqe,"htmlFunction");o(yI,"default")});function Mqe(){this.nextSibling&&this.parentNode.appendChild(this)}function vI(){return this.each(Mqe)}var oee=F(()=>{"use strict";o(Mqe,"raise");o(vI,"default")});function Nqe(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function xI(){return this.each(Nqe)}var lee=F(()=>{"use strict";o(Nqe,"lower");o(xI,"default")});function bI(e){var t=typeof e=="function"?e:gb(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}var cee=F(()=>{"use strict";F8();o(bI,"default")});function Pqe(){return null}function TI(e,t){var r=typeof e=="function"?e:gb(e),n=t==null?Pqe:typeof t=="function"?t:Nd(t);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var uee=F(()=>{"use strict";F8();MS();o(Pqe,"constantNull");o(TI,"default")});function Oqe(){var e=this.parentNode;e&&e.removeChild(this)}function CI(){return this.each(Oqe)}var hee=F(()=>{"use strict";o(Oqe,"remove");o(CI,"default")});function Bqe(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function $qe(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function wI(e){return this.select(e?$qe:Bqe)}var dee=F(()=>{"use strict";o(Bqe,"selection_cloneShallow");o($qe,"selection_cloneDeep");o(wI,"default")});function kI(e){return arguments.length?this.property("__data__",e):this.node().__data__}var fee=F(()=>{"use strict";o(kI,"default")});function Fqe(e){return function(t){e.call(this,t,this.__data__)}}function zqe(e){return e.trim().split(/^|\s+/).map(function(t){var r="",n=t.indexOf(".");return n>=0&&(r=t.slice(n+1),t=t.slice(0,n)),{type:t,name:r}})}function Gqe(e){return function(){var t=this.__on;if(t){for(var r=0,n=-1,i=t.length,a;r{"use strict";o(Fqe,"contextListener");o(zqe,"parseTypenames");o(Gqe,"onRemove");o(Vqe,"onAdd");o(SI,"default")});function mee(e,t,r){var n=bb(e),i=n.CustomEvent;typeof i=="function"?i=new i(t,r):(i=n.document.createEvent("Event"),r?(i.initEvent(t,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(t,!1,!1)),e.dispatchEvent(i)}function Wqe(e,t){return function(){return mee(this,e,t)}}function qqe(e,t){return function(){return mee(this,e,t.apply(this,arguments))}}function EI(e,t){return this.each((typeof t=="function"?qqe:Wqe)(e,t))}var gee=F(()=>{"use strict";uI();o(mee,"dispatchEvent");o(Wqe,"dispatchConstant");o(qqe,"dispatchFunction");o(EI,"default")});function*AI(){for(var e=this._groups,t=0,r=e.length;t{"use strict";o(AI,"default")});function Ai(e,t){this._groups=e,this._parents=t}function vee(){return new Ai([[document.documentElement]],RI)}function Hqe(){return this}var RI,lh,Hl=F(()=>{"use strict";MJ();PJ();OJ();BJ();$J();zJ();X8();GJ();VJ();WJ();qJ();HJ();UJ();YJ();jJ();XJ();KJ();ZJ();QJ();dI();JJ();iee();aee();see();oee();lee();cee();uee();hee();dee();fee();pee();gee();yee();RI=[null];o(Ai,"Selection");o(vee,"selection");o(Hqe,"selection_selection");Ai.prototype=vee.prototype={constructor:Ai,select:z8,selectAll:W8,selectChild:q8,selectChildren:H8,filter:U8,data:Z8,enter:j8,exit:Q8,join:J8,merge:eI,selection:Hqe,order:tI,sort:rI,call:nI,nodes:iI,node:aI,size:sI,empty:oI,each:lI,attr:cI,style:hI,property:fI,classed:mI,text:gI,html:yI,raise:vI,lower:xI,append:bI,insert:TI,remove:CI,clone:wI,datum:kI,on:SI,dispatch:EI,[Symbol.iterator]:AI};lh=vee});function et(e){return typeof e=="string"?new Ai([[document.querySelector(e)]],[document.documentElement]):new Ai([[e]],RI)}var xee=F(()=>{"use strict";Hl();o(et,"default")});var Ul=F(()=>{"use strict";yb();IS();xee();Hl();MS();V8();dI()});var bee=F(()=>{"use strict"});function Od(e,t,r){e.prototype=t.prototype=r,r.constructor=e}function ly(e,t){var r=Object.create(e.prototype);for(var n in t)r[n]=t[n];return r}var _I=F(()=>{"use strict";o(Od,"default");o(ly,"extend")});function Bd(){}function Cee(){return this.rgb().formatHex()}function Jqe(){return this.rgb().formatHex8()}function eHe(){return _ee(this).formatHsl()}function wee(){return this.rgb().formatRgb()}function jl(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=Uqe.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?kee(t):r===3?new Oa(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?PS(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?PS(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Yqe.exec(e))?new Oa(t[1],t[2],t[3],1):(t=jqe.exec(e))?new Oa(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Xqe.exec(e))?PS(t[1],t[2],t[3],t[4]):(t=Kqe.exec(e))?PS(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Zqe.exec(e))?Aee(t[1],t[2]/100,t[3]/100,1):(t=Qqe.exec(e))?Aee(t[1],t[2]/100,t[3]/100,t[4]):Tee.hasOwnProperty(e)?kee(Tee[e]):e==="transparent"?new Oa(NaN,NaN,NaN,0):null}function kee(e){return new Oa(e>>16&255,e>>8&255,e&255,1)}function PS(e,t,r,n){return n<=0&&(e=t=r=NaN),new Oa(e,t,r,n)}function DI(e){return e instanceof Bd||(e=jl(e)),e?(e=e.rgb(),new Oa(e.r,e.g,e.b,e.opacity)):new Oa}function uy(e,t,r,n){return arguments.length===1?DI(e):new Oa(e,t,r,n??1)}function Oa(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function See(){return`#${Kp(this.r)}${Kp(this.g)}${Kp(this.b)}`}function tHe(){return`#${Kp(this.r)}${Kp(this.g)}${Kp(this.b)}${Kp((isNaN(this.opacity)?1:this.opacity)*255)}`}function Eee(){let e=$S(this.opacity);return`${e===1?"rgb(":"rgba("}${Zp(this.r)}, ${Zp(this.g)}, ${Zp(this.b)}${e===1?")":`, ${e})`}`}function $S(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Zp(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Kp(e){return e=Zp(e),(e<16?"0":"")+e.toString(16)}function Aee(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Yl(e,t,r,n)}function _ee(e){if(e instanceof Yl)return new Yl(e.h,e.s,e.l,e.opacity);if(e instanceof Bd||(e=jl(e)),!e)return new Yl;if(e instanceof Yl)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),s=NaN,l=a-i,u=(a+i)/2;return l?(t===a?s=(r-n)/l+(r0&&u<1?0:s,new Yl(s,l,u,e.opacity)}function Lee(e,t,r,n){return arguments.length===1?_ee(e):new Yl(e,t,r,n??1)}function Yl(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function Ree(e){return e=(e||0)%360,e<0?e+360:e}function OS(e){return Math.max(0,Math.min(1,e||0))}function LI(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var Tb,BS,cy,Cb,Yc,Uqe,Yqe,jqe,Xqe,Kqe,Zqe,Qqe,Tee,II=F(()=>{"use strict";_I();o(Bd,"Color");Tb=.7,BS=1/Tb,cy="\\s*([+-]?\\d+)\\s*",Cb="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Yc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Uqe=/^#([0-9a-f]{3,8})$/,Yqe=new RegExp(`^rgb\\(${cy},${cy},${cy}\\)$`),jqe=new RegExp(`^rgb\\(${Yc},${Yc},${Yc}\\)$`),Xqe=new RegExp(`^rgba\\(${cy},${cy},${cy},${Cb}\\)$`),Kqe=new RegExp(`^rgba\\(${Yc},${Yc},${Yc},${Cb}\\)$`),Zqe=new RegExp(`^hsl\\(${Cb},${Yc},${Yc}\\)$`),Qqe=new RegExp(`^hsla\\(${Cb},${Yc},${Yc},${Cb}\\)$`),Tee={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Od(Bd,jl,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Cee,formatHex:Cee,formatHex8:Jqe,formatHsl:eHe,formatRgb:wee,toString:wee});o(Cee,"color_formatHex");o(Jqe,"color_formatHex8");o(eHe,"color_formatHsl");o(wee,"color_formatRgb");o(jl,"color");o(kee,"rgbn");o(PS,"rgba");o(DI,"rgbConvert");o(uy,"rgb");o(Oa,"Rgb");Od(Oa,uy,ly(Bd,{brighter(e){return e=e==null?BS:Math.pow(BS,e),new Oa(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Tb:Math.pow(Tb,e),new Oa(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Oa(Zp(this.r),Zp(this.g),Zp(this.b),$S(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:See,formatHex:See,formatHex8:tHe,formatRgb:Eee,toString:Eee}));o(See,"rgb_formatHex");o(tHe,"rgb_formatHex8");o(Eee,"rgb_formatRgb");o($S,"clampa");o(Zp,"clampi");o(Kp,"hex");o(Aee,"hsla");o(_ee,"hslConvert");o(Lee,"hsl");o(Yl,"Hsl");Od(Yl,Lee,ly(Bd,{brighter(e){return e=e==null?BS:Math.pow(BS,e),new Yl(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Tb:Math.pow(Tb,e),new Yl(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new Oa(LI(e>=240?e-240:e+120,i,n),LI(e,i,n),LI(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Yl(Ree(this.h),OS(this.s),OS(this.l),$S(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(){let e=$S(this.opacity);return`${e===1?"hsl(":"hsla("}${Ree(this.h)}, ${OS(this.s)*100}%, ${OS(this.l)*100}%${e===1?")":`, ${e})`}`}}));o(Ree,"clamph");o(OS,"clampt");o(LI,"hsl2rgb")});var Dee,Iee,Mee=F(()=>{"use strict";Dee=Math.PI/180,Iee=180/Math.PI});function Fee(e){if(e instanceof jc)return new jc(e.l,e.a,e.b,e.opacity);if(e instanceof ch)return zee(e);e instanceof Oa||(e=DI(e));var t=OI(e.r),r=OI(e.g),n=OI(e.b),i=MI((.2225045*t+.7168786*r+.0606169*n)/Pee),a,s;return t===r&&r===n?a=s=i:(a=MI((.4360747*t+.3850649*r+.1430804*n)/Nee),s=MI((.0139322*t+.0971045*r+.7141733*n)/Oee)),new jc(116*i-16,500*(a-i),200*(i-s),e.opacity)}function BI(e,t,r,n){return arguments.length===1?Fee(e):new jc(e,t,r,n??1)}function jc(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function MI(e){return e>rHe?Math.pow(e,1/3):e/$ee+Bee}function NI(e){return e>hy?e*e*e:$ee*(e-Bee)}function PI(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function OI(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function nHe(e){if(e instanceof ch)return new ch(e.h,e.c,e.l,e.opacity);if(e instanceof jc||(e=Fee(e)),e.a===0&&e.b===0)return new ch(NaN,0{"use strict";_I();II();Mee();FS=18,Nee=.96422,Pee=1,Oee=.82521,Bee=4/29,hy=6/29,$ee=3*hy*hy,rHe=hy*hy*hy;o(Fee,"labConvert");o(BI,"lab");o(jc,"Lab");Od(jc,BI,ly(Bd,{brighter(e){return new jc(this.l+FS*(e??1),this.a,this.b,this.opacity)},darker(e){return new jc(this.l-FS*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=Nee*NI(t),e=Pee*NI(e),r=Oee*NI(r),new Oa(PI(3.1338561*t-1.6168667*e-.4906146*r),PI(-.9787684*t+1.9161415*e+.033454*r),PI(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));o(MI,"xyz2lab");o(NI,"lab2xyz");o(PI,"lrgb2rgb");o(OI,"rgb2lrgb");o(nHe,"hclConvert");o(wb,"hcl");o(ch,"Hcl");o(zee,"hcl2lab");Od(ch,wb,ly(Bd,{brighter(e){return new ch(this.h,this.c,this.l+FS*(e??1),this.opacity)},darker(e){return new ch(this.h,this.c,this.l-FS*(e??1),this.opacity)},rgb(){return zee(this).rgb()}}))});var dy=F(()=>{"use strict";II();Gee()});function $I(e,t,r,n,i){var a=e*e,s=a*e;return((1-3*e+3*a-s)*t+(4-6*a+3*s)*r+(1+3*e+3*a-3*s)*n+s*i)/6}function FI(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],a=e[n+1],s=n>0?e[n-1]:2*i-a,l=n{"use strict";o($I,"basis");o(FI,"default")});function GI(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],a=e[n%t],s=e[(n+1)%t],l=e[(n+2)%t];return $I((r-n/t)*t,i,a,s,l)}}var Vee=F(()=>{"use strict";zI();o(GI,"default")});var fy,VI=F(()=>{"use strict";fy=o(e=>()=>e,"default")});function Wee(e,t){return function(r){return e+r*t}}function iHe(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function qee(e,t){var r=t-e;return r?Wee(e,r>180||r<-180?r-360*Math.round(r/360):r):fy(isNaN(e)?t:e)}function Hee(e){return(e=+e)==1?uh:function(t,r){return r-t?iHe(t,r,e):fy(isNaN(t)?r:t)}}function uh(e,t){var r=t-e;return r?Wee(e,r):fy(isNaN(e)?t:e)}var WI=F(()=>{"use strict";VI();o(Wee,"linear");o(iHe,"exponential");o(qee,"hue");o(Hee,"gamma");o(uh,"nogamma")});function Uee(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),a=new Array(r),s,l;for(s=0;s{"use strict";dy();zI();Vee();WI();Qp=o((function e(t){var r=Hee(t);function n(i,a){var s=r((i=uy(i)).r,(a=uy(a)).r),l=r(i.g,a.g),u=r(i.b,a.b),h=uh(i.opacity,a.opacity);return function(d){return i.r=s(d),i.g=l(d),i.b=u(d),i.opacity=h(d),i+""}}return o(n,"rgb"),n.gamma=e,n}),"rgbGamma")(1);o(Uee,"rgbSpline");aHe=Uee(FI),sHe=Uee(GI)});function HI(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;i{"use strict";o(HI,"default");o(Yee,"isNumberArray")});function Xee(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),a=new Array(r),s;for(s=0;s{"use strict";zS();o(Xee,"genericArray")});function UI(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}var Zee=F(()=>{"use strict";o(UI,"default")});function va(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var kb=F(()=>{"use strict";o(va,"default")});function YI(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=$d(e[i],t[i]):n[i]=t[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var Qee=F(()=>{"use strict";zS();o(YI,"default")});function oHe(e){return function(){return e}}function lHe(e){return function(t){return e(t)+""}}function py(e,t){var r=XI.lastIndex=jI.lastIndex=0,n,i,a,s=-1,l=[],u=[];for(e=e+"",t=t+"";(n=XI.exec(e))&&(i=jI.exec(t));)(a=i.index)>r&&(a=t.slice(r,a),l[s]?l[s]+=a:l[++s]=a),(n=n[0])===(i=i[0])?l[s]?l[s]+=i:l[++s]=i:(l[++s]=null,u.push({i:s,x:va(n,i)})),r=jI.lastIndex;return r{"use strict";kb();XI=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,jI=new RegExp(XI.source,"g");o(oHe,"zero");o(lHe,"one");o(py,"default")});function $d(e,t){var r=typeof t,n;return t==null||r==="boolean"?fy(t):(r==="number"?va:r==="string"?(n=jl(t))?(t=n,Qp):py:t instanceof jl?Qp:t instanceof Date?UI:Yee(t)?HI:Array.isArray(t)?Xee:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?YI:va)(e,t)}var zS=F(()=>{"use strict";dy();qI();Kee();Zee();kb();Qee();KI();VI();jee();o($d,"default")});function GS(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var Jee=F(()=>{"use strict";o(GS,"default")});function WS(e,t,r,n,i,a){var s,l,u;return(s=Math.sqrt(e*e+t*t))&&(e/=s,t/=s),(u=e*r+t*n)&&(r-=e*u,n-=t*u),(l=Math.sqrt(r*r+n*n))&&(r/=l,n/=l,u/=l),e*n{"use strict";ete=180/Math.PI,VS={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};o(WS,"default")});function rte(e){let t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?VS:WS(t.a,t.b,t.c,t.d,t.e,t.f)}function nte(e){return e==null?VS:(qS||(qS=document.createElementNS("http://www.w3.org/2000/svg","g")),qS.setAttribute("transform",e),(e=qS.transform.baseVal.consolidate())?(e=e.matrix,WS(e.a,e.b,e.c,e.d,e.e,e.f)):VS)}var qS,ite=F(()=>{"use strict";tte();o(rte,"parseCss");o(nte,"parseSvg")});function ate(e,t,r,n){function i(h){return h.length?h.pop()+" ":""}o(i,"pop");function a(h,d,f,p,m,g){if(h!==f||d!==p){var y=m.push("translate(",null,t,null,r);g.push({i:y-4,x:va(h,f)},{i:y-2,x:va(d,p)})}else(f||p)&&m.push("translate("+f+t+p+r)}o(a,"translate");function s(h,d,f,p){h!==d?(h-d>180?d+=360:d-h>180&&(h+=360),p.push({i:f.push(i(f)+"rotate(",null,n)-2,x:va(h,d)})):d&&f.push(i(f)+"rotate("+d+n)}o(s,"rotate");function l(h,d,f,p){h!==d?p.push({i:f.push(i(f)+"skewX(",null,n)-2,x:va(h,d)}):d&&f.push(i(f)+"skewX("+d+n)}o(l,"skewX");function u(h,d,f,p,m,g){if(h!==f||d!==p){var y=m.push(i(m)+"scale(",null,",",null,")");g.push({i:y-4,x:va(h,f)},{i:y-2,x:va(d,p)})}else(f!==1||p!==1)&&m.push(i(m)+"scale("+f+","+p+")")}return o(u,"scale"),function(h,d){var f=[],p=[];return h=e(h),d=e(d),a(h.translateX,h.translateY,d.translateX,d.translateY,f,p),s(h.rotate,d.rotate,f,p),l(h.skewX,d.skewX,f,p),u(h.scaleX,h.scaleY,d.scaleX,d.scaleY,f,p),h=d=null,function(m){for(var g=-1,y=p.length,v;++g{"use strict";kb();ite();o(ate,"interpolateTransform");ZI=ate(rte,"px, ","px)","deg)"),QI=ate(nte,", ",")",")")});function ote(e){return function(t,r){var n=e((t=wb(t)).h,(r=wb(r)).h),i=uh(t.c,r.c),a=uh(t.l,r.l),s=uh(t.opacity,r.opacity);return function(l){return t.h=n(l),t.c=i(l),t.l=a(l),t.opacity=s(l),t+""}}}var JI,cHe,lte=F(()=>{"use strict";dy();WI();o(ote,"hcl");JI=ote(qee),cHe=ote(uh)});var my=F(()=>{"use strict";zS();kb();Jee();KI();ste();qI();lte()});function Lb(){return Jp||(hte(uHe),Jp=Rb.now()+YS)}function uHe(){Jp=0}function _b(){this._call=this._time=this._next=null}function jS(e,t,r){var n=new _b;return n.restart(e,t,r),n}function dte(){Lb(),++gy;for(var e=HS,t;e;)(t=Jp-e._time)>=0&&e._call.call(void 0,t),e=e._next;--gy}function cte(){Jp=(US=Rb.now())+YS,gy=Eb=0;try{dte()}finally{gy=0,dHe(),Jp=0}}function hHe(){var e=Rb.now(),t=e-US;t>ute&&(YS-=t,US=e)}function dHe(){for(var e,t=HS,r,n=1/0;t;)t._call?(n>t._time&&(n=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:HS=r);Ab=e,eM(n)}function eM(e){if(!gy){Eb&&(Eb=clearTimeout(Eb));var t=e-Jp;t>24?(e<1/0&&(Eb=setTimeout(cte,e-Rb.now()-YS)),Sb&&(Sb=clearInterval(Sb))):(Sb||(US=Rb.now(),Sb=setInterval(hHe,ute)),gy=1,hte(cte))}}var gy,Eb,Sb,ute,HS,Ab,US,Jp,YS,Rb,hte,tM=F(()=>{"use strict";gy=0,Eb=0,Sb=0,ute=1e3,US=0,Jp=0,YS=0,Rb=typeof performance=="object"&&performance.now?performance:Date,hte=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};o(Lb,"now");o(uHe,"clearNow");o(_b,"Timer");_b.prototype=jS.prototype={constructor:_b,restart:o(function(e,t,r){if(typeof e!="function")throw new TypeError("callback is not a function");r=(r==null?Lb():+r)+(t==null?0:+t),!this._next&&Ab!==this&&(Ab?Ab._next=this:HS=this,Ab=this),this._call=e,this._time=r,eM()},"restart"),stop:o(function(){this._call&&(this._call=null,this._time=1/0,eM())},"stop")};o(jS,"timer");o(dte,"timerFlush");o(cte,"wake");o(hHe,"poke");o(dHe,"nap");o(eM,"sleep")});function Db(e,t,r){var n=new _b;return t=t==null?0:+t,n.restart(i=>{n.stop(),e(i+t)},t,r),n}var fte=F(()=>{"use strict";tM();o(Db,"default")});var XS=F(()=>{"use strict";tM();fte()});function hh(e,t,r,n,i,a){var s=e.__transition;if(!s)e.__transition={};else if(r in s)return;mHe(e,r,{name:t,index:n,group:i,on:fHe,tween:pHe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:gte})}function Mb(e,t){var r=aa(e,t);if(r.state>gte)throw new Error("too late; already scheduled");return r}function Ba(e,t){var r=aa(e,t);if(r.state>KS)throw new Error("too late; already running");return r}function aa(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function mHe(e,t,r){var n=e.__transition,i;n[t]=r,r.timer=jS(a,0,r.time);function a(h){r.state=pte,r.timer.restart(s,r.delay,r.time),r.delay<=h&&s(h-r.delay)}o(a,"schedule");function s(h){var d,f,p,m;if(r.state!==pte)return u();for(d in n)if(m=n[d],m.name===r.name){if(m.state===KS)return Db(s);m.state===mte?(m.state=Ib,m.timer.stop(),m.on.call("interrupt",e,e.__data__,m.index,m.group),delete n[d]):+d{"use strict";O8();XS();fHe=P8("start","end","cancel","interrupt"),pHe=[],gte=0,pte=1,ZS=2,KS=3,mte=4,QS=5,Ib=6;o(hh,"default");o(Mb,"init");o(Ba,"set");o(aa,"get");o(mHe,"create")});function Nb(e,t){var r=e.__transition,n,i,a=!0,s;if(r){t=t==null?null:t+"";for(s in r){if((n=r[s]).name!==t){a=!1;continue}i=n.state>ZS&&n.state{"use strict";Js();o(Nb,"default")});function rM(e){return this.each(function(){Nb(this,e)})}var vte=F(()=>{"use strict";yte();o(rM,"default")});function gHe(e,t){var r,n;return function(){var i=Ba(this,e),a=i.tween;if(a!==r){n=r=a;for(var s=0,l=n.length;s{"use strict";Js();o(gHe,"tweenRemove");o(yHe,"tweenFunction");o(nM,"default");o(yy,"tweenValue")});function Ob(e,t){var r;return(typeof t=="number"?va:t instanceof jl?Qp:(r=jl(t))?(t=r,Qp):py)(e,t)}var iM=F(()=>{"use strict";dy();my();o(Ob,"default")});function vHe(e){return function(){this.removeAttribute(e)}}function xHe(e){return function(){this.removeAttributeNS(e.space,e.local)}}function bHe(e,t,r){var n,i=r+"",a;return function(){var s=this.getAttribute(e);return s===i?null:s===n?a:a=t(n=s,r)}}function THe(e,t,r){var n,i=r+"",a;return function(){var s=this.getAttributeNS(e.space,e.local);return s===i?null:s===n?a:a=t(n=s,r)}}function CHe(e,t,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttribute(e):(s=this.getAttribute(e),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=t(n=s,l)))}}function wHe(e,t,r){var n,i,a;return function(){var s,l=r(this),u;return l==null?void this.removeAttributeNS(e.space,e.local):(s=this.getAttributeNS(e.space,e.local),u=l+"",s===u?null:s===n&&u===i?a:(i=u,a=t(n=s,l)))}}function aM(e,t){var r=Uc(e),n=r==="transform"?QI:Ob;return this.attrTween(e,typeof t=="function"?(r.local?wHe:CHe)(r,n,yy(this,"attr."+e,t)):t==null?(r.local?xHe:vHe)(r):(r.local?THe:bHe)(r,n,t))}var xte=F(()=>{"use strict";my();Ul();Pb();iM();o(vHe,"attrRemove");o(xHe,"attrRemoveNS");o(bHe,"attrConstant");o(THe,"attrConstantNS");o(CHe,"attrFunction");o(wHe,"attrFunctionNS");o(aM,"default")});function kHe(e,t){return function(r){this.setAttribute(e,t.call(this,r))}}function SHe(e,t){return function(r){this.setAttributeNS(e.space,e.local,t.call(this,r))}}function EHe(e,t){var r,n;function i(){var a=t.apply(this,arguments);return a!==n&&(r=(n=a)&&SHe(e,a)),r}return o(i,"tween"),i._value=t,i}function AHe(e,t){var r,n;function i(){var a=t.apply(this,arguments);return a!==n&&(r=(n=a)&&kHe(e,a)),r}return o(i,"tween"),i._value=t,i}function sM(e,t){var r="attr."+e;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;var n=Uc(e);return this.tween(r,(n.local?EHe:AHe)(n,t))}var bte=F(()=>{"use strict";Ul();o(kHe,"attrInterpolate");o(SHe,"attrInterpolateNS");o(EHe,"attrTweenNS");o(AHe,"attrTween");o(sM,"default")});function RHe(e,t){return function(){Mb(this,e).delay=+t.apply(this,arguments)}}function _He(e,t){return t=+t,function(){Mb(this,e).delay=t}}function oM(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?RHe:_He)(t,e)):aa(this.node(),t).delay}var Tte=F(()=>{"use strict";Js();o(RHe,"delayFunction");o(_He,"delayConstant");o(oM,"default")});function LHe(e,t){return function(){Ba(this,e).duration=+t.apply(this,arguments)}}function DHe(e,t){return t=+t,function(){Ba(this,e).duration=t}}function lM(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?LHe:DHe)(t,e)):aa(this.node(),t).duration}var Cte=F(()=>{"use strict";Js();o(LHe,"durationFunction");o(DHe,"durationConstant");o(lM,"default")});function IHe(e,t){if(typeof t!="function")throw new Error;return function(){Ba(this,e).ease=t}}function cM(e){var t=this._id;return arguments.length?this.each(IHe(t,e)):aa(this.node(),t).ease}var wte=F(()=>{"use strict";Js();o(IHe,"easeConstant");o(cM,"default")});function MHe(e,t){return function(){var r=t.apply(this,arguments);if(typeof r!="function")throw new Error;Ba(this,e).ease=r}}function uM(e){if(typeof e!="function")throw new Error;return this.each(MHe(this._id,e))}var kte=F(()=>{"use strict";Js();o(MHe,"easeVarying");o(uM,"default")});function hM(e){typeof e!="function"&&(e=oy(e));for(var t=this._groups,r=t.length,n=new Array(r),i=0;i{"use strict";Ul();em();o(hM,"default")});function dM(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,r=e._groups,n=t.length,i=r.length,a=Math.min(n,i),s=new Array(n),l=0;l{"use strict";em();o(dM,"default")});function NHe(e){return(e+"").trim().split(/^|\s+/).every(function(t){var r=t.indexOf(".");return r>=0&&(t=t.slice(0,r)),!t||t==="start"})}function PHe(e,t,r){var n,i,a=NHe(t)?Mb:Ba;return function(){var s=a(this,e),l=s.on;l!==n&&(i=(n=l).copy()).on(t,r),s.on=i}}function fM(e,t){var r=this._id;return arguments.length<2?aa(this.node(),r).on.on(e):this.each(PHe(r,e,t))}var Ate=F(()=>{"use strict";Js();o(NHe,"start");o(PHe,"onFunction");o(fM,"default")});function OHe(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function pM(){return this.on("end.remove",OHe(this._id))}var Rte=F(()=>{"use strict";o(OHe,"removeFunction");o(pM,"default")});function mM(e){var t=this._name,r=this._id;typeof e!="function"&&(e=Nd(e));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s{"use strict";Ul();em();Js();o(mM,"default")});function gM(e){var t=this._name,r=this._id;typeof e!="function"&&(e=sy(e));for(var n=this._groups,i=n.length,a=[],s=[],l=0;l{"use strict";Ul();em();Js();o(gM,"default")});function yM(){return new BHe(this._groups,this._parents)}var BHe,Dte=F(()=>{"use strict";Ul();BHe=lh.prototype.constructor;o(yM,"default")});function $He(e,t){var r,n,i;return function(){var a=Pd(this,e),s=(this.style.removeProperty(e),Pd(this,e));return a===s?null:a===r&&s===n?i:i=t(r=a,n=s)}}function Ite(e){return function(){this.style.removeProperty(e)}}function FHe(e,t,r){var n,i=r+"",a;return function(){var s=Pd(this,e);return s===i?null:s===n?a:a=t(n=s,r)}}function zHe(e,t,r){var n,i,a;return function(){var s=Pd(this,e),l=r(this),u=l+"";return l==null&&(u=l=(this.style.removeProperty(e),Pd(this,e))),s===u?null:s===n&&u===i?a:(i=u,a=t(n=s,l))}}function GHe(e,t){var r,n,i,a="style."+t,s="end."+a,l;return function(){var u=Ba(this,e),h=u.on,d=u.value[a]==null?l||(l=Ite(t)):void 0;(h!==r||i!==d)&&(n=(r=h).copy()).on(s,i=d),u.on=n}}function vM(e,t,r){var n=(e+="")=="transform"?ZI:Ob;return t==null?this.styleTween(e,$He(e,n)).on("end.style."+e,Ite(e)):typeof t=="function"?this.styleTween(e,zHe(e,n,yy(this,"style."+e,t))).each(GHe(this._id,e)):this.styleTween(e,FHe(e,n,t),r).on("end.style."+e,null)}var Mte=F(()=>{"use strict";my();Ul();Js();Pb();iM();o($He,"styleNull");o(Ite,"styleRemove");o(FHe,"styleConstant");o(zHe,"styleFunction");o(GHe,"styleMaybeRemove");o(vM,"default")});function VHe(e,t,r){return function(n){this.style.setProperty(e,t.call(this,n),r)}}function WHe(e,t,r){var n,i;function a(){var s=t.apply(this,arguments);return s!==i&&(n=(i=s)&&VHe(e,s,r)),n}return o(a,"tween"),a._value=t,a}function xM(e,t,r){var n="style."+(e+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;return this.tween(n,WHe(e,t,r??""))}var Nte=F(()=>{"use strict";o(VHe,"styleInterpolate");o(WHe,"styleTween");o(xM,"default")});function qHe(e){return function(){this.textContent=e}}function HHe(e){return function(){var t=e(this);this.textContent=t??""}}function bM(e){return this.tween("text",typeof e=="function"?HHe(yy(this,"text",e)):qHe(e==null?"":e+""))}var Pte=F(()=>{"use strict";Pb();o(qHe,"textConstant");o(HHe,"textFunction");o(bM,"default")});function UHe(e){return function(t){this.textContent=e.call(this,t)}}function YHe(e){var t,r;function n(){var i=e.apply(this,arguments);return i!==r&&(t=(r=i)&&UHe(i)),t}return o(n,"tween"),n._value=e,n}function TM(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,YHe(e))}var Ote=F(()=>{"use strict";o(UHe,"textInterpolate");o(YHe,"textTween");o(TM,"default")});function CM(){for(var e=this._name,t=this._id,r=JS(),n=this._groups,i=n.length,a=0;a{"use strict";em();Js();o(CM,"default")});function wM(){var e,t,r=this,n=r._id,i=r.size();return new Promise(function(a,s){var l={value:s},u={value:o(function(){--i===0&&a()},"value")};r.each(function(){var h=Ba(this,n),d=h.on;d!==e&&(t=(e=d).copy(),t._.cancel.push(l),t._.interrupt.push(l),t._.end.push(u)),h.on=t}),i===0&&a()})}var $te=F(()=>{"use strict";Js();o(wM,"default")});function Es(e,t,r,n){this._groups=e,this._parents=t,this._name=r,this._id=n}function Fte(e){return lh().transition(e)}function JS(){return++jHe}var jHe,dh,em=F(()=>{"use strict";Ul();xte();bte();Tte();Cte();wte();kte();Ste();Ete();Ate();Rte();_te();Lte();Dte();Mte();Nte();Pte();Ote();Bte();Pb();$te();jHe=0;o(Es,"Transition");o(Fte,"transition");o(JS,"newId");dh=lh.prototype;Es.prototype=Fte.prototype={constructor:Es,select:mM,selectAll:gM,selectChild:dh.selectChild,selectChildren:dh.selectChildren,filter:hM,merge:dM,selection:yM,transition:CM,call:dh.call,nodes:dh.nodes,node:dh.node,size:dh.size,empty:dh.empty,each:dh.each,on:fM,attr:aM,attrTween:sM,style:vM,styleTween:xM,text:bM,textTween:TM,remove:pM,tween:nM,delay:oM,duration:lM,ease:cM,easeVarying:uM,end:wM,[Symbol.iterator]:dh[Symbol.iterator]}});function eE(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var zte=F(()=>{"use strict";o(eE,"cubicInOut")});var kM=F(()=>{"use strict";zte()});function KHe(e,t){for(var r;!(r=e.__transition)||!(r=r[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return r}function SM(e){var t,r;e instanceof Es?(t=e._id,e=e._name):(t=JS(),(r=XHe).time=Lb(),e=e==null?null:e+"");for(var n=this._groups,i=n.length,a=0;a{"use strict";em();Js();kM();XS();XHe={time:null,delay:0,duration:250,ease:eE};o(KHe,"inherit");o(SM,"default")});var Vte=F(()=>{"use strict";Ul();vte();Gte();lh.prototype.interrupt=rM;lh.prototype.transition=SM});var tE=F(()=>{"use strict";Vte()});var Wte=F(()=>{"use strict"});var qte=F(()=>{"use strict"});var Hte=F(()=>{"use strict"});function Ute(e){return[+e[0],+e[1]]}function ZHe(e){return[Ute(e[0]),Ute(e[1])]}function EM(e){return{type:e}}var mjt,gjt,yjt,vjt,xjt,bjt,Yte=F(()=>{"use strict";tE();Wte();qte();Hte();({abs:mjt,max:gjt,min:yjt}=Math);o(Ute,"number1");o(ZHe,"number2");vjt={name:"x",handles:["w","e"].map(EM),input:o(function(e,t){return e==null?null:[[+e[0],t[0][1]],[+e[1],t[1][1]]]},"input"),output:o(function(e){return e&&[e[0][0],e[1][0]]},"output")},xjt={name:"y",handles:["n","s"].map(EM),input:o(function(e,t){return e==null?null:[[t[0][0],+e[0]],[t[1][0],+e[1]]]},"input"),output:o(function(e){return e&&[e[0][1],e[1][1]]},"output")},bjt={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(EM),input:o(function(e){return e==null?null:ZHe(e)},"input"),output:o(function(e){return e},"output")};o(EM,"type")});var jte=F(()=>{"use strict";Yte()});function Xte(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Xte;let r=10**t;return function(n){this._+=n[0];for(let i=1,a=n.length;i{"use strict";AM=Math.PI,RM=2*AM,tm=1e-6,QHe=RM-tm;o(Xte,"append");o(JHe,"appendRound");rm=class{static{o(this,"Path")}constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?Xte:JHe(t)}moveTo(t,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,r){this._append`L${this._x1=+t},${this._y1=+r}`}quadraticCurveTo(t,r,n,i){this._append`Q${+t},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(t,r,n,i,a,s){this._append`C${+t},${+r},${+n},${+i},${this._x1=+a},${this._y1=+s}`}arcTo(t,r,n,i,a){if(t=+t,r=+r,n=+n,i=+i,a=+a,a<0)throw new Error(`negative radius: ${a}`);let s=this._x1,l=this._y1,u=n-t,h=i-r,d=s-t,f=l-r,p=d*d+f*f;if(this._x1===null)this._append`M${this._x1=t},${this._y1=r}`;else if(p>tm)if(!(Math.abs(f*u-h*d)>tm)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let m=n-s,g=i-l,y=u*u+h*h,v=m*m+g*g,x=Math.sqrt(y),b=Math.sqrt(p),T=a*Math.tan((AM-Math.acos((y+p-v)/(2*x*b)))/2),k=T/b,C=T/x;Math.abs(k-1)>tm&&this._append`L${t+k*d},${r+k*f}`,this._append`A${a},${a},0,0,${+(f*m>d*g)},${this._x1=t+C*u},${this._y1=r+C*h}`}}arc(t,r,n,i,a,s){if(t=+t,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let l=n*Math.cos(i),u=n*Math.sin(i),h=t+l,d=r+u,f=1^s,p=s?i-a:a-i;this._x1===null?this._append`M${h},${d}`:(Math.abs(this._x1-h)>tm||Math.abs(this._y1-d)>tm)&&this._append`L${h},${d}`,n&&(p<0&&(p=p%RM+RM),p>QHe?this._append`A${n},${n},0,1,${f},${t-l},${r-u}A${n},${n},0,1,${f},${this._x1=h},${this._y1=d}`:p>tm&&this._append`A${n},${n},0,${+(p>=AM)},${f},${this._x1=t+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};o(Kte,"path");Kte.prototype=rm.prototype});var _M=F(()=>{"use strict";Zte()});var Qte=F(()=>{"use strict"});var Jte=F(()=>{"use strict"});var ere=F(()=>{"use strict"});var tre=F(()=>{"use strict"});var rre=F(()=>{"use strict"});var nre=F(()=>{"use strict"});var ire=F(()=>{"use strict"});function LM(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function nm(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}var Bb=F(()=>{"use strict";o(LM,"default");o(nm,"formatDecimalParts")});function Xl(e){return e=nm(Math.abs(e)),e?e[1]:NaN}var $b=F(()=>{"use strict";Bb();o(Xl,"default")});function DM(e,t){return function(r,n){for(var i=r.length,a=[],s=0,l=e[0],u=0;i>0&&l>0&&(u+l+1>n&&(l=Math.max(1,n-u)),a.push(r.substring(i-=l,i+l)),!((u+=l+1)>n));)l=e[s=(s+1)%e.length];return a.reverse().join(t)}}var are=F(()=>{"use strict";o(DM,"default")});function IM(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var sre=F(()=>{"use strict";o(IM,"default")});function Fd(e){if(!(t=eUe.exec(e)))throw new Error("invalid format: "+e);var t;return new rE({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function rE(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}var eUe,MM=F(()=>{"use strict";eUe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;o(Fd,"formatSpecifier");Fd.prototype=rE.prototype;o(rE,"FormatSpecifier");rE.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function NM(e){e:for(var t=e.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(i+1):e}var ore=F(()=>{"use strict";o(NM,"default")});function OM(e,t){var r=nm(e,t);if(!r)return e+"";var n=r[0],i=r[1],a=i-(PM=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+nm(e,Math.max(0,t+a-1))[0]}var PM,BM=F(()=>{"use strict";Bb();o(OM,"default")});function nE(e,t){var r=nm(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var lre=F(()=>{"use strict";Bb();o(nE,"default")});var $M,cre=F(()=>{"use strict";Bb();BM();lre();$M={"%":o((e,t)=>(e*100).toFixed(t),"%"),b:o(e=>Math.round(e).toString(2),"b"),c:o(e=>e+"","c"),d:LM,e:o((e,t)=>e.toExponential(t),"e"),f:o((e,t)=>e.toFixed(t),"f"),g:o((e,t)=>e.toPrecision(t),"g"),o:o(e=>Math.round(e).toString(8),"o"),p:o((e,t)=>nE(e*100,t),"p"),r:nE,s:OM,X:o(e=>Math.round(e).toString(16).toUpperCase(),"X"),x:o(e=>Math.round(e).toString(16),"x")}});function iE(e){return e}var ure=F(()=>{"use strict";o(iE,"default")});function FM(e){var t=e.grouping===void 0||e.thousands===void 0?iE:DM(hre.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?iE:IM(hre.call(e.numerals,String)),s=e.percent===void 0?"%":e.percent+"",l=e.minus===void 0?"\u2212":e.minus+"",u=e.nan===void 0?"NaN":e.nan+"";function h(f){f=Fd(f);var p=f.fill,m=f.align,g=f.sign,y=f.symbol,v=f.zero,x=f.width,b=f.comma,T=f.precision,k=f.trim,C=f.type;C==="n"?(b=!0,C="g"):$M[C]||(T===void 0&&(T=12),k=!0,C="g"),(v||p==="0"&&m==="=")&&(v=!0,p="0",m="=");var w=y==="$"?r:y==="#"&&/[boxX]/.test(C)?"0"+C.toLowerCase():"",S=y==="$"?n:/[%p]/.test(C)?s:"",R=$M[C],L=/[defgprs%]/.test(C);T=T===void 0?6:/[gprs]/.test(C)?Math.max(1,Math.min(21,T)):Math.max(0,Math.min(20,T));function N(I){var _=w,A=S,M,D,P;if(C==="c")A=R(I)+A,I="";else{I=+I;var B=I<0||1/I<0;if(I=isNaN(I)?u:R(Math.abs(I),T),k&&(I=NM(I)),B&&+I==0&&g!=="+"&&(B=!1),_=(B?g==="("?g:l:g==="-"||g==="("?"":g)+_,A=(C==="s"?dre[8+PM/3]:"")+A+(B&&g==="("?")":""),L){for(M=-1,D=I.length;++MP||P>57){A=(P===46?i+I.slice(M+1):I.slice(M))+A,I=I.slice(0,M);break}}}b&&!v&&(I=t(I,1/0));var O=_.length+I.length+A.length,$=O>1)+_+I+A+$.slice(O);break;default:I=$+_+I+A;break}return a(I)}return o(N,"format"),N.toString=function(){return f+""},N}o(h,"newFormat");function d(f,p){var m=h((f=Fd(f),f.type="f",f)),g=Math.max(-8,Math.min(8,Math.floor(Xl(p)/3)))*3,y=Math.pow(10,-g),v=dre[8+g/3];return function(x){return m(y*x)+v}}return o(d,"formatPrefix"),{format:h,formatPrefix:d}}var hre,dre,fre=F(()=>{"use strict";$b();are();sre();MM();ore();cre();BM();ure();hre=Array.prototype.map,dre=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];o(FM,"default")});function zM(e){return aE=FM(e),Xc=aE.format,sE=aE.formatPrefix,aE}var aE,Xc,sE,pre=F(()=>{"use strict";fre();zM({thousands:",",grouping:[3],currency:["$",""]});o(zM,"defaultLocale")});function oE(e){return Math.max(0,-Xl(Math.abs(e)))}var mre=F(()=>{"use strict";$b();o(oE,"default")});function lE(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Xl(t)/3)))*3-Xl(Math.abs(e)))}var gre=F(()=>{"use strict";$b();o(lE,"default")});function cE(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Xl(t)-Xl(e))+1}var yre=F(()=>{"use strict";$b();o(cE,"default")});var GM=F(()=>{"use strict";pre();MM();mre();gre();yre()});var vre=F(()=>{"use strict"});function tUe(e){var t=0,r=e.children,n=r&&r.length;if(!n)t=1;else for(;--n>=0;)t+=r[n].value;e.value=t}function VM(){return this.eachAfter(tUe)}var xre=F(()=>{"use strict";o(tUe,"count");o(VM,"default")});function WM(e,t){let r=-1;for(let n of this)e.call(t,n,++r,this);return this}var bre=F(()=>{"use strict";o(WM,"default")});function qM(e,t){for(var r=this,n=[r],i,a,s=-1;r=n.pop();)if(e.call(t,r,++s,this),i=r.children)for(a=i.length-1;a>=0;--a)n.push(i[a]);return this}var Tre=F(()=>{"use strict";o(qM,"default")});function HM(e,t){for(var r=this,n=[r],i=[],a,s,l,u=-1;r=n.pop();)if(i.push(r),a=r.children)for(s=0,l=a.length;s{"use strict";o(HM,"default")});function UM(e,t){let r=-1;for(let n of this)if(e.call(t,n,++r,this))return n}var wre=F(()=>{"use strict";o(UM,"default")});function YM(e){return this.eachAfter(function(t){for(var r=+e(t.data)||0,n=t.children,i=n&&n.length;--i>=0;)r+=n[i].value;t.value=r})}var kre=F(()=>{"use strict";o(YM,"default")});function jM(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}var Sre=F(()=>{"use strict";o(jM,"default")});function XM(e){for(var t=this,r=rUe(t,e),n=[t];t!==r;)t=t.parent,n.push(t);for(var i=n.length;e!==r;)n.splice(i,0,e),e=e.parent;return n}function rUe(e,t){if(e===t)return e;var r=e.ancestors(),n=t.ancestors(),i=null;for(e=r.pop(),t=n.pop();e===t;)i=e,e=r.pop(),t=n.pop();return i}var Ere=F(()=>{"use strict";o(XM,"default");o(rUe,"leastCommonAncestor")});function KM(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}var Are=F(()=>{"use strict";o(KM,"default")});function ZM(){return Array.from(this)}var Rre=F(()=>{"use strict";o(ZM,"default")});function QM(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}var _re=F(()=>{"use strict";o(QM,"default")});function JM(){var e=this,t=[];return e.each(function(r){r!==e&&t.push({source:r.parent,target:r})}),t}var Lre=F(()=>{"use strict";o(JM,"default")});function*eN(){var e=this,t,r=[e],n,i,a;do for(t=r.reverse(),r=[];e=t.pop();)if(yield e,n=e.children)for(i=0,a=n.length;i{"use strict";o(eN,"default")});function vy(e,t){e instanceof Map?(e=[void 0,e],t===void 0&&(t=aUe)):t===void 0&&(t=iUe);for(var r=new Fb(e),n,i=[r],a,s,l,u;n=i.pop();)if((s=t(n.data))&&(u=(s=Array.from(s)).length))for(n.children=s,l=u-1;l>=0;--l)i.push(a=s[l]=new Fb(s[l])),a.parent=n,a.depth=n.depth+1;return r.eachBefore(oUe)}function nUe(){return vy(this).eachBefore(sUe)}function iUe(e){return e.children}function aUe(e){return Array.isArray(e)?e[1]:null}function sUe(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function oUe(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function Fb(e){this.data=e,this.depth=this.height=0,this.parent=null}var Ire=F(()=>{"use strict";xre();bre();Tre();Cre();wre();kre();Sre();Ere();Are();Rre();_re();Lre();Dre();o(vy,"hierarchy");o(nUe,"node_copy");o(iUe,"objectChildren");o(aUe,"mapChildren");o(sUe,"copyData");o(oUe,"computeHeight");o(Fb,"Node");Fb.prototype=vy.prototype={constructor:Fb,count:VM,each:WM,eachAfter:HM,eachBefore:qM,find:UM,sum:YM,sort:jM,path:XM,ancestors:KM,descendants:ZM,leaves:QM,links:JM,copy:nUe,[Symbol.iterator]:eN}});function Mre(e){if(typeof e!="function")throw new Error;return e}var Nre=F(()=>{"use strict";o(Mre,"required")});function xy(){return 0}function im(e){return function(){return e}}var Pre=F(()=>{"use strict";o(xy,"constantZero");o(im,"default")});function tN(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}var Ore=F(()=>{"use strict";o(tN,"default")});function rN(e,t,r,n,i){for(var a=e.children,s,l=-1,u=a.length,h=e.value&&(n-t)/e.value;++l{"use strict";o(rN,"default")});function nN(e,t,r,n,i){for(var a=e.children,s,l=-1,u=a.length,h=e.value&&(i-r)/e.value;++l{"use strict";o(nN,"default")});function cUe(e,t,r,n,i,a){for(var s=[],l=t.children,u,h,d=0,f=0,p=l.length,m,g,y=t.value,v,x,b,T,k,C,w;db&&(b=h),w=v*v*C,T=Math.max(b/w,w/x),T>k){v-=h;break}k=T}s.push(u={value:v,dice:m{"use strict";Bre();$re();lUe=(1+Math.sqrt(5))/2;o(cUe,"squarifyRatio");Fre=o((function e(t){function r(n,i,a,s,l){cUe(t,n,i,a,s,l)}return o(r,"squarify"),r.ratio=function(n){return e((n=+n)>1?n:1)},r}),"custom")(lUe)});function uE(){var e=Fre,t=!1,r=1,n=1,i=[0],a=xy,s=xy,l=xy,u=xy,h=xy;function d(p){return p.x0=p.y0=0,p.x1=r,p.y1=n,p.eachBefore(f),i=[0],t&&p.eachBefore(tN),p}o(d,"treemap");function f(p){var m=i[p.depth],g=p.x0+m,y=p.y0+m,v=p.x1-m,x=p.y1-m;v{"use strict";Ore();zre();Nre();Pre();o(uE,"default")});var Vre=F(()=>{"use strict";Ire();Gre()});var Wre=F(()=>{"use strict"});var qre=F(()=>{"use strict"});function zd(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}var zb=F(()=>{"use strict";o(zd,"initRange")});function Oo(){var e=new iy,t=[],r=[],n=iN;function i(a){let s=e.get(a);if(s===void 0){if(n!==iN)return n;e.set(a,s=t.push(a)-1)}return r[s%r.length]}return o(i,"scale"),i.domain=function(a){if(!arguments.length)return t.slice();t=[],e=new iy;for(let s of a)e.has(s)||e.set(s,t.push(s)-1);return i},i.range=function(a){return arguments.length?(r=Array.from(a),i):r.slice()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return Oo(t,r).unknown(n)},zd.apply(i,arguments),i}var iN,aN=F(()=>{"use strict";Md();zb();iN=Symbol("implicit");o(Oo,"ordinal")});function by(){var e=Oo().unknown(void 0),t=e.domain,r=e.range,n=0,i=1,a,s,l=!1,u=0,h=0,d=.5;delete e.unknown;function f(){var p=t().length,m=i{"use strict";Md();zb();aN();o(by,"band")});function sN(e){return function(){return e}}var Ure=F(()=>{"use strict";o(sN,"constants")});function oN(e){return+e}var Yre=F(()=>{"use strict";o(oN,"number")});function Ty(e){return e}function lN(e,t){return(t-=e=+e)?function(r){return(r-e)/t}:sN(isNaN(t)?NaN:.5)}function uUe(e,t){var r;return e>t&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function hUe(e,t,r){var n=e[0],i=e[1],a=t[0],s=t[1];return i2?dUe:hUe,u=h=null,f}o(d,"rescale");function f(p){return p==null||isNaN(p=+p)?a:(u||(u=l(e.map(n),t,r)))(n(s(p)))}return o(f,"scale"),f.invert=function(p){return s(i((h||(h=l(t,e.map(n),va)))(p)))},f.domain=function(p){return arguments.length?(e=Array.from(p,oN),d()):e.slice()},f.range=function(p){return arguments.length?(t=Array.from(p),d()):t.slice()},f.rangeRound=function(p){return t=Array.from(p),r=GS,d()},f.clamp=function(p){return arguments.length?(s=p?!0:Ty,d()):s!==Ty},f.interpolate=function(p){return arguments.length?(r=p,d()):r},f.unknown=function(p){return arguments.length?(a=p,f):a},function(p,m){return n=p,i=m,d()}}function Gb(){return fUe()(Ty,Ty)}var jre,cN=F(()=>{"use strict";Md();my();Ure();Yre();jre=[0,1];o(Ty,"identity");o(lN,"normalize");o(uUe,"clamper");o(hUe,"bimap");o(dUe,"polymap");o(hE,"copy");o(fUe,"transformer");o(Gb,"continuous")});function uN(e,t,r,n){var i=ay(e,t,r),a;switch(n=Fd(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=lE(i,s))&&(n.precision=a),sE(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=cE(i,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=oE(i))&&(n.precision=a-(n.type==="%")*2);break}}return Xc(n)}var Xre=F(()=>{"use strict";Md();GM();o(uN,"tickFormat")});function pUe(e){var t=e.domain;return e.ticks=function(r){var n=t();return kS(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var i=t();return uN(i[0],i[i.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),i=0,a=n.length-1,s=n[i],l=n[a],u,h,d=10;for(l0;){if(h=mb(s,l,r),h===u)return n[i]=s,n[a]=l,t(n);if(h>0)s=Math.floor(s/h)*h,l=Math.ceil(l/h)*h;else if(h<0)s=Math.ceil(s*h)/h,l=Math.floor(l*h)/h;else break;u=h}return e},e}function Kl(){var e=Gb();return e.copy=function(){return hE(e,Kl())},zd.apply(e,arguments),pUe(e)}var Kre=F(()=>{"use strict";Md();cN();zb();Xre();o(pUe,"linearish");o(Kl,"linear")});function hN(e,t){e=e.slice();var r=0,n=e.length-1,i=e[r],a=e[n],s;return a{"use strict";o(hN,"nice")});function qn(e,t,r,n){function i(a){return e(a=arguments.length===0?new Date:new Date(+a)),a}return o(i,"interval"),i.floor=a=>(e(a=new Date(+a)),a),i.ceil=a=>(e(a=new Date(a-1)),t(a,1),e(a),a),i.round=a=>{let s=i(a),l=i.ceil(a);return a-s(t(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,l)=>{let u=[];if(a=i.ceil(a),l=l==null?1:Math.floor(l),!(a0))return u;let h;do u.push(h=new Date(+a)),t(a,l),e(a);while(hqn(s=>{if(s>=s)for(;e(s),!a(s);)s.setTime(s-1)},(s,l)=>{if(s>=s)if(l<0)for(;++l<=0;)for(;t(s,-1),!a(s););else for(;--l>=0;)for(;t(s,1),!a(s););}),r&&(i.count=(a,s)=>(dN.setTime(+a),fN.setTime(+s),e(dN),e(fN),Math.floor(r(dN,fN))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?s=>n(s)%a===0:s=>i.count(0,s)%a===0):i)),i}var dN,fN,fh=F(()=>{"use strict";dN=new Date,fN=new Date;o(qn,"timeInterval")});var Kc,Qre,pN=F(()=>{"use strict";fh();Kc=qn(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Kc.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?qn(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Kc);Qre=Kc.range});var Bo,Jre,mN=F(()=>{"use strict";fh();Bo=qn(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*1e3)},(e,t)=>(t-e)/1e3,e=>e.getUTCSeconds()),Jre=Bo.range});var ph,mUe,dE,gUe,gN=F(()=>{"use strict";fh();ph=qn(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getMinutes()),mUe=ph.range,dE=qn(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*6e4)},(e,t)=>(t-e)/6e4,e=>e.getUTCMinutes()),gUe=dE.range});var mh,yUe,fE,vUe,yN=F(()=>{"use strict";fh();mh=qn(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*1e3-e.getMinutes()*6e4)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getHours()),yUe=mh.range,fE=qn(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*36e5)},(e,t)=>(t-e)/36e5,e=>e.getUTCHours()),vUe=fE.range});var hl,xUe,Wb,bUe,pE,TUe,vN=F(()=>{"use strict";fh();hl=qn(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5,e=>e.getDate()-1),xUe=hl.range,Wb=qn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>e.getUTCDate()-1),bUe=Wb.range,pE=qn(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/864e5,e=>Math.floor(e/864e5)),TUe=pE.range});function om(e){return qn(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5)}function lm(e){return qn(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/6048e5)}var Zl,Gd,mE,gE,Qc,yE,vE,tne,CUe,wUe,kUe,SUe,EUe,AUe,cm,Cy,rne,nne,Vd,ine,ane,sne,RUe,_Ue,LUe,DUe,IUe,MUe,xN=F(()=>{"use strict";fh();o(om,"timeWeekday");Zl=om(0),Gd=om(1),mE=om(2),gE=om(3),Qc=om(4),yE=om(5),vE=om(6),tne=Zl.range,CUe=Gd.range,wUe=mE.range,kUe=gE.range,SUe=Qc.range,EUe=yE.range,AUe=vE.range;o(lm,"utcWeekday");cm=lm(0),Cy=lm(1),rne=lm(2),nne=lm(3),Vd=lm(4),ine=lm(5),ane=lm(6),sne=cm.range,RUe=Cy.range,_Ue=rne.range,LUe=nne.range,DUe=Vd.range,IUe=ine.range,MUe=ane.range});var gh,NUe,xE,PUe,bN=F(()=>{"use strict";fh();gh=qn(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth()),NUe=gh.range,xE=qn(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth()),PUe=xE.range});var $o,OUe,Ql,BUe,TN=F(()=>{"use strict";fh();$o=qn(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());$o.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:qn(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});OUe=$o.range,Ql=qn(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Ql.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:qn(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});BUe=Ql.range});function lne(e,t,r,n,i,a){let s=[[Bo,1,1e3],[Bo,5,5*1e3],[Bo,15,15*1e3],[Bo,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[t,1,2592e6],[t,3,3*2592e6],[e,1,31536e6]];function l(h,d,f){let p=dv).right(s,p);if(m===s.length)return e.every(ay(h/31536e6,d/31536e6,f));if(m===0)return Kc.every(Math.max(ay(h,d,f),1));let[g,y]=s[p/s[m-1][2]{"use strict";Md();pN();mN();gN();yN();vN();xN();bN();TN();o(lne,"ticker");[FUe,zUe]=lne(Ql,xE,cm,pE,fE,dE),[CN,wN]=lne($o,gh,Zl,hl,mh,ph)});var bE=F(()=>{"use strict";pN();mN();gN();yN();vN();xN();bN();TN();cne()});function kN(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function SN(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function qb(e,t,r){return{y:e,m:t,d:r,H:0,M:0,S:0,L:0}}function EN(e){var t=e.dateTime,r=e.date,n=e.time,i=e.periods,a=e.days,s=e.shortDays,l=e.months,u=e.shortMonths,h=Hb(i),d=Ub(i),f=Hb(a),p=Ub(a),m=Hb(s),g=Ub(s),y=Hb(l),v=Ub(l),x=Hb(u),b=Ub(u),T={a:B,A:O,b:$,B:V,c:null,d:mne,e:mne,f:cYe,g:xYe,G:TYe,H:sYe,I:oYe,j:lYe,L:bne,m:uYe,M:hYe,p:G,q:z,Q:vne,s:xne,S:dYe,u:fYe,U:pYe,V:mYe,w:gYe,W:yYe,x:null,X:null,y:vYe,Y:bYe,Z:CYe,"%":yne},k={a:W,A:H,b:j,B:Q,c:null,d:gne,e:gne,f:EYe,g:OYe,G:$Ye,H:wYe,I:kYe,j:SYe,L:Cne,m:AYe,M:RYe,p:U,q:oe,Q:vne,s:xne,S:_Ye,u:LYe,U:DYe,V:IYe,w:MYe,W:NYe,x:null,X:null,y:PYe,Y:BYe,Z:FYe,"%":yne},C={a:N,A:I,b:_,B:A,c:M,d:fne,e:fne,f:rYe,g:dne,G:hne,H:pne,I:pne,j:QUe,L:tYe,m:ZUe,M:JUe,p:L,q:KUe,Q:iYe,s:aYe,S:eYe,u:HUe,U:UUe,V:YUe,w:qUe,W:jUe,x:D,X:P,y:dne,Y:hne,Z:XUe,"%":nYe};T.x=w(r,T),T.X=w(n,T),T.c=w(t,T),k.x=w(r,k),k.X=w(n,k),k.c=w(t,k);function w(te,le){return function(ie){var ae=[],Re=-1,be=0,Pe=te.length,Ge,Oe,ue;for(ie instanceof Date||(ie=new Date(+ie));++Re53)return null;"w"in ae||(ae.w=1),"Z"in ae?(be=SN(qb(ae.y,0,1)),Pe=be.getUTCDay(),be=Pe>4||Pe===0?Cy.ceil(be):Cy(be),be=Wb.offset(be,(ae.V-1)*7),ae.y=be.getUTCFullYear(),ae.m=be.getUTCMonth(),ae.d=be.getUTCDate()+(ae.w+6)%7):(be=kN(qb(ae.y,0,1)),Pe=be.getDay(),be=Pe>4||Pe===0?Gd.ceil(be):Gd(be),be=hl.offset(be,(ae.V-1)*7),ae.y=be.getFullYear(),ae.m=be.getMonth(),ae.d=be.getDate()+(ae.w+6)%7)}else("W"in ae||"U"in ae)&&("w"in ae||(ae.w="u"in ae?ae.u%7:"W"in ae?1:0),Pe="Z"in ae?SN(qb(ae.y,0,1)).getUTCDay():kN(qb(ae.y,0,1)).getDay(),ae.m=0,ae.d="W"in ae?(ae.w+6)%7+ae.W*7-(Pe+5)%7:ae.w+ae.U*7-(Pe+6)%7);return"Z"in ae?(ae.H+=ae.Z/100|0,ae.M+=ae.Z%100,SN(ae)):kN(ae)}}o(S,"newParse");function R(te,le,ie,ae){for(var Re=0,be=le.length,Pe=ie.length,Ge,Oe;Re=Pe)return-1;if(Ge=le.charCodeAt(Re++),Ge===37){if(Ge=le.charAt(Re++),Oe=C[Ge in une?le.charAt(Re++):Ge],!Oe||(ae=Oe(te,ie,ae))<0)return-1}else if(Ge!=ie.charCodeAt(ae++))return-1}return ae}o(R,"parseSpecifier");function L(te,le,ie){var ae=h.exec(le.slice(ie));return ae?(te.p=d.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(L,"parsePeriod");function N(te,le,ie){var ae=m.exec(le.slice(ie));return ae?(te.w=g.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(N,"parseShortWeekday");function I(te,le,ie){var ae=f.exec(le.slice(ie));return ae?(te.w=p.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(I,"parseWeekday");function _(te,le,ie){var ae=x.exec(le.slice(ie));return ae?(te.m=b.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(_,"parseShortMonth");function A(te,le,ie){var ae=y.exec(le.slice(ie));return ae?(te.m=v.get(ae[0].toLowerCase()),ie+ae[0].length):-1}o(A,"parseMonth");function M(te,le,ie){return R(te,t,le,ie)}o(M,"parseLocaleDateTime");function D(te,le,ie){return R(te,r,le,ie)}o(D,"parseLocaleDate");function P(te,le,ie){return R(te,n,le,ie)}o(P,"parseLocaleTime");function B(te){return s[te.getDay()]}o(B,"formatShortWeekday");function O(te){return a[te.getDay()]}o(O,"formatWeekday");function $(te){return u[te.getMonth()]}o($,"formatShortMonth");function V(te){return l[te.getMonth()]}o(V,"formatMonth");function G(te){return i[+(te.getHours()>=12)]}o(G,"formatPeriod");function z(te){return 1+~~(te.getMonth()/3)}o(z,"formatQuarter");function W(te){return s[te.getUTCDay()]}o(W,"formatUTCShortWeekday");function H(te){return a[te.getUTCDay()]}o(H,"formatUTCWeekday");function j(te){return u[te.getUTCMonth()]}o(j,"formatUTCShortMonth");function Q(te){return l[te.getUTCMonth()]}o(Q,"formatUTCMonth");function U(te){return i[+(te.getUTCHours()>=12)]}o(U,"formatUTCPeriod");function oe(te){return 1+~~(te.getUTCMonth()/3)}return o(oe,"formatUTCQuarter"),{format:o(function(te){var le=w(te+="",T);return le.toString=function(){return te},le},"format"),parse:o(function(te){var le=S(te+="",!1);return le.toString=function(){return te},le},"parse"),utcFormat:o(function(te){var le=w(te+="",k);return le.toString=function(){return te},le},"utcFormat"),utcParse:o(function(te){var le=S(te+="",!0);return le.toString=function(){return te},le},"utcParse")}}function pn(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",a=i.length;return n+(a[t.toLowerCase(),r]))}function qUe(e,t,r){var n=xa.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function HUe(e,t,r){var n=xa.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function UUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function YUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function jUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function hne(e,t,r){var n=xa.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function dne(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function XUe(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function KUe(e,t,r){var n=xa.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function ZUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function fne(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function QUe(e,t,r){var n=xa.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function pne(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function JUe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function eYe(e,t,r){var n=xa.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function tYe(e,t,r){var n=xa.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function rYe(e,t,r){var n=xa.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function nYe(e,t,r){var n=GUe.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function iYe(e,t,r){var n=xa.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function aYe(e,t,r){var n=xa.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function mne(e,t){return pn(e.getDate(),t,2)}function sYe(e,t){return pn(e.getHours(),t,2)}function oYe(e,t){return pn(e.getHours()%12||12,t,2)}function lYe(e,t){return pn(1+hl.count($o(e),e),t,3)}function bne(e,t){return pn(e.getMilliseconds(),t,3)}function cYe(e,t){return bne(e,t)+"000"}function uYe(e,t){return pn(e.getMonth()+1,t,2)}function hYe(e,t){return pn(e.getMinutes(),t,2)}function dYe(e,t){return pn(e.getSeconds(),t,2)}function fYe(e){var t=e.getDay();return t===0?7:t}function pYe(e,t){return pn(Zl.count($o(e)-1,e),t,2)}function Tne(e){var t=e.getDay();return t>=4||t===0?Qc(e):Qc.ceil(e)}function mYe(e,t){return e=Tne(e),pn(Qc.count($o(e),e)+($o(e).getDay()===4),t,2)}function gYe(e){return e.getDay()}function yYe(e,t){return pn(Gd.count($o(e)-1,e),t,2)}function vYe(e,t){return pn(e.getFullYear()%100,t,2)}function xYe(e,t){return e=Tne(e),pn(e.getFullYear()%100,t,2)}function bYe(e,t){return pn(e.getFullYear()%1e4,t,4)}function TYe(e,t){var r=e.getDay();return e=r>=4||r===0?Qc(e):Qc.ceil(e),pn(e.getFullYear()%1e4,t,4)}function CYe(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+pn(t/60|0,"0",2)+pn(t%60,"0",2)}function gne(e,t){return pn(e.getUTCDate(),t,2)}function wYe(e,t){return pn(e.getUTCHours(),t,2)}function kYe(e,t){return pn(e.getUTCHours()%12||12,t,2)}function SYe(e,t){return pn(1+Wb.count(Ql(e),e),t,3)}function Cne(e,t){return pn(e.getUTCMilliseconds(),t,3)}function EYe(e,t){return Cne(e,t)+"000"}function AYe(e,t){return pn(e.getUTCMonth()+1,t,2)}function RYe(e,t){return pn(e.getUTCMinutes(),t,2)}function _Ye(e,t){return pn(e.getUTCSeconds(),t,2)}function LYe(e){var t=e.getUTCDay();return t===0?7:t}function DYe(e,t){return pn(cm.count(Ql(e)-1,e),t,2)}function wne(e){var t=e.getUTCDay();return t>=4||t===0?Vd(e):Vd.ceil(e)}function IYe(e,t){return e=wne(e),pn(Vd.count(Ql(e),e)+(Ql(e).getUTCDay()===4),t,2)}function MYe(e){return e.getUTCDay()}function NYe(e,t){return pn(Cy.count(Ql(e)-1,e),t,2)}function PYe(e,t){return pn(e.getUTCFullYear()%100,t,2)}function OYe(e,t){return e=wne(e),pn(e.getUTCFullYear()%100,t,2)}function BYe(e,t){return pn(e.getUTCFullYear()%1e4,t,4)}function $Ye(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Vd(e):Vd.ceil(e),pn(e.getUTCFullYear()%1e4,t,4)}function FYe(){return"+0000"}function yne(){return"%"}function vne(e){return+e}function xne(e){return Math.floor(+e/1e3)}var une,xa,GUe,VUe,kne=F(()=>{"use strict";bE();o(kN,"localDate");o(SN,"utcDate");o(qb,"newDate");o(EN,"formatLocale");une={"-":"",_:" ",0:"0"},xa=/^\s*\d+/,GUe=/^%/,VUe=/[\\^$*+?|[\]().{}]/g;o(pn,"pad");o(WUe,"requote");o(Hb,"formatRe");o(Ub,"formatLookup");o(qUe,"parseWeekdayNumberSunday");o(HUe,"parseWeekdayNumberMonday");o(UUe,"parseWeekNumberSunday");o(YUe,"parseWeekNumberISO");o(jUe,"parseWeekNumberMonday");o(hne,"parseFullYear");o(dne,"parseYear");o(XUe,"parseZone");o(KUe,"parseQuarter");o(ZUe,"parseMonthNumber");o(fne,"parseDayOfMonth");o(QUe,"parseDayOfYear");o(pne,"parseHour24");o(JUe,"parseMinutes");o(eYe,"parseSeconds");o(tYe,"parseMilliseconds");o(rYe,"parseMicroseconds");o(nYe,"parseLiteralPercent");o(iYe,"parseUnixTimestamp");o(aYe,"parseUnixTimestampSeconds");o(mne,"formatDayOfMonth");o(sYe,"formatHour24");o(oYe,"formatHour12");o(lYe,"formatDayOfYear");o(bne,"formatMilliseconds");o(cYe,"formatMicroseconds");o(uYe,"formatMonthNumber");o(hYe,"formatMinutes");o(dYe,"formatSeconds");o(fYe,"formatWeekdayNumberMonday");o(pYe,"formatWeekNumberSunday");o(Tne,"dISO");o(mYe,"formatWeekNumberISO");o(gYe,"formatWeekdayNumberSunday");o(yYe,"formatWeekNumberMonday");o(vYe,"formatYear");o(xYe,"formatYearISO");o(bYe,"formatFullYear");o(TYe,"formatFullYearISO");o(CYe,"formatZone");o(gne,"formatUTCDayOfMonth");o(wYe,"formatUTCHour24");o(kYe,"formatUTCHour12");o(SYe,"formatUTCDayOfYear");o(Cne,"formatUTCMilliseconds");o(EYe,"formatUTCMicroseconds");o(AYe,"formatUTCMonthNumber");o(RYe,"formatUTCMinutes");o(_Ye,"formatUTCSeconds");o(LYe,"formatUTCWeekdayNumberMonday");o(DYe,"formatUTCWeekNumberSunday");o(wne,"UTCdISO");o(IYe,"formatUTCWeekNumberISO");o(MYe,"formatUTCWeekdayNumberSunday");o(NYe,"formatUTCWeekNumberMonday");o(PYe,"formatUTCYear");o(OYe,"formatUTCYearISO");o(BYe,"formatUTCFullYear");o($Ye,"formatUTCFullYearISO");o(FYe,"formatUTCZone");o(yne,"formatLiteralPercent");o(vne,"formatUnixTimestamp");o(xne,"formatUnixTimestampSeconds")});function AN(e){return wy=EN(e),um=wy.format,Sne=wy.parse,Ene=wy.utcFormat,Ane=wy.utcParse,wy}var wy,um,Sne,Ene,Ane,Rne=F(()=>{"use strict";kne();AN({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});o(AN,"defaultLocale")});var RN=F(()=>{"use strict";Rne()});function zYe(e){return new Date(e)}function GYe(e){return e instanceof Date?+e:+new Date(+e)}function _ne(e,t,r,n,i,a,s,l,u,h){var d=Gb(),f=d.invert,p=d.domain,m=h(".%L"),g=h(":%S"),y=h("%I:%M"),v=h("%I %p"),x=h("%a %d"),b=h("%b %d"),T=h("%B"),k=h("%Y");function C(w){return(u(w){"use strict";bE();RN();cN();zb();Zre();o(zYe,"date");o(GYe,"number");o(_ne,"calendar");o(TE,"time")});var Dne=F(()=>{"use strict";Hre();Kre();aN();Lne()});function _N(e){for(var t=e.length/6|0,r=new Array(t),n=0;n{"use strict";o(_N,"default")});var LN,Mne=F(()=>{"use strict";Ine();LN=_N("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")});var Nne=F(()=>{"use strict";Mne()});function ii(e){return o(function(){return e},"constant")}var CE=F(()=>{"use strict";o(ii,"default")});function One(e){return e>1?0:e<-1?ky:Math.acos(e)}function IN(e){return e>=1?Yb:e<=-1?-Yb:Math.asin(e)}var DN,$a,Wd,Pne,wE,Jl,hm,ba,ky,Yb,Sy,kE=F(()=>{"use strict";DN=Math.abs,$a=Math.atan2,Wd=Math.cos,Pne=Math.max,wE=Math.min,Jl=Math.sin,hm=Math.sqrt,ba=1e-12,ky=Math.PI,Yb=ky/2,Sy=2*ky;o(One,"acos");o(IN,"asin")});function SE(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new rm(t)}var MN=F(()=>{"use strict";_M();o(SE,"withPath")});function VYe(e){return e.innerRadius}function WYe(e){return e.outerRadius}function qYe(e){return e.startAngle}function HYe(e){return e.endAngle}function UYe(e){return e&&e.padAngle}function YYe(e,t,r,n,i,a,s,l){var u=r-e,h=n-t,d=s-i,f=l-a,p=f*u-d*h;if(!(p*pM*M+D*D&&(R=N,L=I),{cx:R,cy:L,x01:-d,y01:-f,x11:R*(i/C-1),y11:L*(i/C-1)}}function ec(){var e=VYe,t=WYe,r=ii(0),n=null,i=qYe,a=HYe,s=UYe,l=null,u=SE(h);function h(){var d,f,p=+e.apply(this,arguments),m=+t.apply(this,arguments),g=i.apply(this,arguments)-Yb,y=a.apply(this,arguments)-Yb,v=DN(y-g),x=y>g;if(l||(l=d=u()),mba))l.moveTo(0,0);else if(v>Sy-ba)l.moveTo(m*Wd(g),m*Jl(g)),l.arc(0,0,m,g,y,!x),p>ba&&(l.moveTo(p*Wd(y),p*Jl(y)),l.arc(0,0,p,y,g,x));else{var b=g,T=y,k=g,C=y,w=v,S=v,R=s.apply(this,arguments)/2,L=R>ba&&(n?+n.apply(this,arguments):hm(p*p+m*m)),N=wE(DN(m-p)/2,+r.apply(this,arguments)),I=N,_=N,A,M;if(L>ba){var D=IN(L/p*Jl(R)),P=IN(L/m*Jl(R));(w-=D*2)>ba?(D*=x?1:-1,k+=D,C-=D):(w=0,k=C=(g+y)/2),(S-=P*2)>ba?(P*=x?1:-1,b+=P,T-=P):(S=0,b=T=(g+y)/2)}var B=m*Wd(b),O=m*Jl(b),$=p*Wd(C),V=p*Jl(C);if(N>ba){var G=m*Wd(T),z=m*Jl(T),W=p*Wd(k),H=p*Jl(k),j;if(vba?_>ba?(A=EE(W,H,B,O,m,_,x),M=EE(G,z,$,V,m,_,x),l.moveTo(A.cx+A.x01,A.cy+A.y01),_ba)||!(w>ba)?l.lineTo($,V):I>ba?(A=EE($,V,G,z,p,-I,x),M=EE(B,O,W,H,p,-I,x),l.lineTo(A.cx+A.x01,A.cy+A.y01),I{"use strict";CE();kE();MN();o(VYe,"arcInnerRadius");o(WYe,"arcOuterRadius");o(qYe,"arcStartAngle");o(HYe,"arcEndAngle");o(UYe,"arcPadAngle");o(YYe,"intersect");o(EE,"cornerTangents");o(ec,"default")});function jb(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}var iJt,NN=F(()=>{"use strict";iJt=Array.prototype.slice;o(jb,"default")});function $ne(e){this._context=e}function Jc(e){return new $ne(e)}var PN=F(()=>{"use strict";o($ne,"Linear");$ne.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}},"point")};o(Jc,"default")});function Fne(e){return e[0]}function zne(e){return e[1]}var Gne=F(()=>{"use strict";o(Fne,"x");o(zne,"y")});function tc(e,t){var r=ii(!0),n=null,i=Jc,a=null,s=SE(l);e=typeof e=="function"?e:e===void 0?Fne:ii(e),t=typeof t=="function"?t:t===void 0?zne:ii(t);function l(u){var h,d=(u=jb(u)).length,f,p=!1,m;for(n==null&&(a=i(m=s())),h=0;h<=d;++h)!(h{"use strict";NN();CE();PN();MN();Gne();o(tc,"default")});function ON(e,t){return te?1:t>=e?0:NaN}var Wne=F(()=>{"use strict";o(ON,"default")});function BN(e){return e}var qne=F(()=>{"use strict";o(BN,"default")});function AE(){var e=BN,t=ON,r=null,n=ii(0),i=ii(Sy),a=ii(0);function s(l){var u,h=(l=jb(l)).length,d,f,p=0,m=new Array(h),g=new Array(h),y=+n.apply(this,arguments),v=Math.min(Sy,Math.max(-Sy,i.apply(this,arguments)-y)),x,b=Math.min(Math.abs(v)/h,a.apply(this,arguments)),T=b*(v<0?-1:1),k;for(u=0;u0&&(p+=k);for(t!=null?m.sort(function(C,w){return t(g[C],g[w])}):r!=null&&m.sort(function(C,w){return r(l[C],l[w])}),u=0,f=p?(v-h*T)/p:0;u0?k*f:0)+T,g[d]={data:l[d],index:u,value:k,startAngle:y,endAngle:x,padAngle:b};return g}return o(s,"pie"),s.value=function(l){return arguments.length?(e=typeof l=="function"?l:ii(+l),s):e},s.sortValues=function(l){return arguments.length?(t=l,r=null,s):t},s.sort=function(l){return arguments.length?(r=l,t=null,s):r},s.startAngle=function(l){return arguments.length?(n=typeof l=="function"?l:ii(+l),s):n},s.endAngle=function(l){return arguments.length?(i=typeof l=="function"?l:ii(+l),s):i},s.padAngle=function(l){return arguments.length?(a=typeof l=="function"?l:ii(+l),s):a},s}var Hne=F(()=>{"use strict";NN();CE();Wne();qne();kE();o(AE,"default")});function Xb(e){return new RE(e,!0)}function Kb(e){return new RE(e,!1)}var RE,Une=F(()=>{"use strict";RE=class{static{o(this,"Bump")}constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}};o(Xb,"bumpX");o(Kb,"bumpY")});function Fo(){}var Zb=F(()=>{"use strict";o(Fo,"default")});function Ey(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function Qb(e){this._context=e}function rc(e){return new Qb(e)}var Jb=F(()=>{"use strict";o(Ey,"point");o(Qb,"Basis");Qb.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 3:Ey(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ey(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t},"point")};o(rc,"default")});function Yne(e){this._context=e}function _E(e){return new Yne(e)}var jne=F(()=>{"use strict";Zb();Jb();o(Yne,"BasisClosed");Yne.prototype={areaStart:Fo,areaEnd:Fo,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Ey(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t},"point")};o(_E,"default")});function Xne(e){this._context=e}function LE(e){return new Xne(e)}var Kne=F(()=>{"use strict";Jb();o(Xne,"BasisOpen");Xne.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Ey(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t},"point")};o(LE,"default")});function Zne(e,t){this._basis=new Qb(e),this._beta=t}var $N,Qne=F(()=>{"use strict";Jb();o(Zne,"Bundle");Zne.prototype={lineStart:o(function(){this._x=[],this._y=[],this._basis.lineStart()},"lineStart"),lineEnd:o(function(){var e=this._x,t=this._y,r=e.length-1;if(r>0)for(var n=e[0],i=t[0],a=e[r]-n,s=t[r]-i,l=-1,u;++l<=r;)u=l/r,this._basis.point(this._beta*e[l]+(1-this._beta)*(n+u*a),this._beta*t[l]+(1-this._beta)*(i+u*s));this._x=this._y=null,this._basis.lineEnd()},"lineEnd"),point:o(function(e,t){this._x.push(+e),this._y.push(+t)},"point")};$N=o((function e(t){function r(n){return t===1?new Qb(n):new Zne(n,t)}return o(r,"bundle"),r.beta=function(n){return e(+n)},r}),"custom")(.85)});function Ay(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function DE(e,t){this._context=e,this._k=(1-t)/6}var e2,t2=F(()=>{"use strict";o(Ay,"point");o(DE,"Cardinal");DE.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ay(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:Ay(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};e2=o((function e(t){function r(n){return new DE(n,t)}return o(r,"cardinal"),r.tension=function(n){return e(+n)},r}),"custom")(0)});function IE(e,t){this._context=e,this._k=(1-t)/6}var FN,zN=F(()=>{"use strict";Zb();t2();o(IE,"CardinalClosed");IE.prototype={areaStart:Fo,areaEnd:Fo,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Ay(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};FN=o((function e(t){function r(n){return new IE(n,t)}return o(r,"cardinal"),r.tension=function(n){return e(+n)},r}),"custom")(0)});function ME(e,t){this._context=e,this._k=(1-t)/6}var GN,VN=F(()=>{"use strict";t2();o(ME,"CardinalOpen");ME.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,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:Ay(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t},"point")};GN=o((function e(t){function r(n){return new ME(n,t)}return o(r,"cardinal"),r.tension=function(n){return e(+n)},r}),"custom")(0)});function r2(e,t,r){var n=e._x1,i=e._y1,a=e._x2,s=e._y2;if(e._l01_a>ba){var l=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,u=3*e._l01_a*(e._l01_a+e._l12_a);n=(n*l-e._x0*e._l12_2a+e._x2*e._l01_2a)/u,i=(i*l-e._y0*e._l12_2a+e._y2*e._l01_2a)/u}if(e._l23_a>ba){var h=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);a=(a*h+e._x1*e._l23_2a-t*e._l12_2a)/d,s=(s*h+e._y1*e._l23_2a-r*e._l12_2a)/d}e._context.bezierCurveTo(n,i,a,s,e._x2,e._y2)}function Jne(e,t){this._context=e,this._alpha=t}var n2,NE=F(()=>{"use strict";kE();t2();o(r2,"point");o(Jne,"CatmullRom");Jne.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(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},"lineStart"),lineEnd:o(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},"lineEnd"),point:o(function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:r2(this,e,t);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=t},"point")};n2=o((function e(t){function r(n){return t?new Jne(n,t):new DE(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return e(+n)},r}),"custom")(.5)});function eie(e,t){this._context=e,this._alpha=t}var WN,tie=F(()=>{"use strict";zN();Zb();NE();o(eie,"CatmullRomClosed");eie.prototype={areaStart:Fo,areaEnd:Fo,lineStart:o(function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},"lineEnd"),point:o(function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:r2(this,e,t);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=t},"point")};WN=o((function e(t){function r(n){return t?new eie(n,t):new IE(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return e(+n)},r}),"custom")(.5)});function rie(e,t){this._context=e,this._alpha=t}var qN,nie=F(()=>{"use strict";VN();NE();o(rie,"CatmullRomOpen");rie.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(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},"lineStart"),lineEnd:o(function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,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:r2(this,e,t);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=t},"point")};qN=o((function e(t){function r(n){return t?new rie(n,t):new ME(n,0)}return o(r,"catmullRom"),r.alpha=function(n){return e(+n)},r}),"custom")(.5)});function iie(e){this._context=e}function PE(e){return new iie(e)}var aie=F(()=>{"use strict";Zb();o(iie,"LinearClosed");iie.prototype={areaStart:Fo,areaEnd:Fo,lineStart:o(function(){this._point=0},"lineStart"),lineEnd:o(function(){this._point&&this._context.closePath()},"lineEnd"),point:o(function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))},"point")};o(PE,"default")});function sie(e){return e<0?-1:1}function oie(e,t,r){var n=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(n||i<0&&-0),s=(r-e._y1)/(i||n<0&&-0),l=(a*i+s*n)/(n+i);return(sie(a)+sie(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(l))||0}function lie(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function HN(e,t,r){var n=e._x0,i=e._y0,a=e._x1,s=e._y1,l=(a-n)/3;e._context.bezierCurveTo(n+l,i+l*t,a-l,s-l*r,a,s)}function OE(e){this._context=e}function cie(e){this._context=new uie(e)}function uie(e){this._context=e}function i2(e){return new OE(e)}function a2(e){return new cie(e)}var hie=F(()=>{"use strict";o(sie,"sign");o(oie,"slope3");o(lie,"slope2");o(HN,"point");o(OE,"MonotoneX");OE.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},"lineStart"),lineEnd:o(function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:HN(this,this._t0,lie(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},"lineEnd"),point:o(function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,HN(this,lie(this,r=oie(this,e,t)),r);break;default:HN(this,this._t0,r=oie(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}},"point")};o(cie,"MonotoneY");(cie.prototype=Object.create(OE.prototype)).point=function(e,t){OE.prototype.point.call(this,t,e)};o(uie,"ReflectContext");uie.prototype={moveTo:o(function(e,t){this._context.moveTo(t,e)},"moveTo"),closePath:o(function(){this._context.closePath()},"closePath"),lineTo:o(function(e,t){this._context.lineTo(t,e)},"lineTo"),bezierCurveTo:o(function(e,t,r,n,i,a){this._context.bezierCurveTo(t,e,n,r,a,i)},"bezierCurveTo")};o(i2,"monotoneX");o(a2,"monotoneY")});function fie(e){this._context=e}function die(e){var t,r=e.length-1,n,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=e[0]+2*e[1],t=1;t=0;--t)i[t]=(s[t]-i[t+1])/a[t];for(a[r-1]=(e[r]+i[r-1])/2,t=0;t{"use strict";o(fie,"Natural");fie.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=[],this._y=[]},"lineStart"),lineEnd:o(function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=die(e),i=die(t),a=0,s=1;s{"use strict";o(BE,"Step");BE.prototype={areaStart:o(function(){this._line=0},"areaStart"),areaEnd:o(function(){this._line=NaN},"areaEnd"),lineStart:o(function(){this._x=this._y=NaN,this._point=0},"lineStart"),lineEnd:o(function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},"lineEnd"),point:o(function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t},"point")};o(_y,"default");o(s2,"stepBefore");o(o2,"stepAfter")});var gie=F(()=>{"use strict";Bne();Vne();Hne();jne();Kne();Jb();Une();Qne();zN();VN();t2();tie();nie();NE();aie();PN();hie();pie();mie()});var yie=F(()=>{"use strict"});var vie=F(()=>{"use strict"});function qd(e,t,r){this.k=e,this.x=t,this.y=r}function YN(e){for(;!e.__zoom;)if(!(e=e.parentNode))return UN;return e.__zoom}var UN,jN=F(()=>{"use strict";o(qd,"Transform");qd.prototype={constructor:qd,scale:o(function(e){return e===1?this:new qd(this.k*e,this.x,this.y)},"scale"),translate:o(function(e,t){return e===0&t===0?this:new qd(this.k,this.x+this.k*e,this.y+this.k*t)},"translate"),apply:o(function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},"apply"),applyX:o(function(e){return e*this.k+this.x},"applyX"),applyY:o(function(e){return e*this.k+this.y},"applyY"),invert:o(function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},"invert"),invertX:o(function(e){return(e-this.x)/this.k},"invertX"),invertY:o(function(e){return(e-this.y)/this.k},"invertY"),rescaleX:o(function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},"rescaleX"),rescaleY:o(function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},"rescaleY"),toString:o(function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"},"toString")};UN=new qd(1,0,0);YN.prototype=qd.prototype;o(YN,"transform")});var xie=F(()=>{"use strict"});var bie=F(()=>{"use strict";tE();yie();vie();jN();xie()});var Tie=F(()=>{"use strict";bie();jN()});var $r=F(()=>{"use strict";Md();_J();jte();Qte();dy();Jte();ere();O8();bee();tre();kM();rre();ire();GM();vre();Vre();my();_M();Wre();nre();qre();Dne();Nne();Ul();gie();bE();RN();XS();tE();Tie()});var Cie=Io(Ta=>{"use strict";Object.defineProperty(Ta,"__esModule",{value:!0});Ta.BLANK_URL=Ta.relativeFirstCharacters=Ta.whitespaceEscapeCharsRegex=Ta.urlSchemeRegex=Ta.ctrlCharactersRegex=Ta.htmlCtrlEntityRegex=Ta.htmlEntitiesRegex=Ta.invalidProtocolRegex=void 0;Ta.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;Ta.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;Ta.htmlCtrlEntityRegex=/&(newline|tab);/gi;Ta.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;Ta.urlSchemeRegex=/^.+(:|:)/gim;Ta.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;Ta.relativeFirstCharacters=[".","/"];Ta.BLANK_URL="about:blank"});var Ly=Io(XN=>{"use strict";Object.defineProperty(XN,"__esModule",{value:!0});XN.sanitizeUrl=ZYe;var rs=Cie();function jYe(e){return rs.relativeFirstCharacters.indexOf(e[0])>-1}o(jYe,"isRelativeUrlWithoutProtocol");function XYe(e){var t=e.replace(rs.ctrlCharactersRegex,"");return t.replace(rs.htmlEntitiesRegex,function(r,n){return String.fromCharCode(n)})}o(XYe,"decodeHtmlCharacters");function KYe(e){return URL.canParse(e)}o(KYe,"isValidUrl");function wie(e){try{return decodeURIComponent(e)}catch{return e}}o(wie,"decodeURI");function ZYe(e){if(!e)return rs.BLANK_URL;var t,r=wie(e.trim());do r=XYe(r).replace(rs.htmlCtrlEntityRegex,"").replace(rs.ctrlCharactersRegex,"").replace(rs.whitespaceEscapeCharsRegex,"").trim(),r=wie(r),t=r.match(rs.ctrlCharactersRegex)||r.match(rs.htmlEntitiesRegex)||r.match(rs.htmlCtrlEntityRegex)||r.match(rs.whitespaceEscapeCharsRegex);while(t&&t.length>0);var n=r;if(!n)return rs.BLANK_URL;if(jYe(n))return n;var i=n.trimStart(),a=i.match(rs.urlSchemeRegex);if(!a)return n;var s=a[0].toLowerCase().trim();if(rs.invalidProtocolRegex.test(s))return rs.BLANK_URL;var l=i.replace(/\\/g,"/");if(s==="mailto:"||s.includes("://"))return l;if(s==="http:"||s==="https:"){if(!KYe(l))return rs.BLANK_URL;var u=new URL(l);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return l}o(ZYe,"sanitizeUrl")});var KN,dm,$E,kie,FE,zE,Fa,l2,Dy,Hd=F(()=>{"use strict";KN=Xs(Ly(),1);$r();Vr();dm=o((e,t)=>{let r=e.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.name&&r.attr("name",t.name),t.rx&&r.attr("rx",t.rx),t.ry&&r.attr("ry",t.ry),t.attrs!==void 0)for(let n in t.attrs)r.attr(n,t.attrs[n]);return t.class&&r.attr("class",t.class),r},"drawRect"),$E=o((e,t)=>{let r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};dm(e,r).lower()},"drawBackgroundRect"),kie=o((e,t)=>{let r=t.text.replace(Vp," "),n=e.append("text");n.attr("x",t.x),n.attr("y",t.y),n.attr("class","legend"),n.style("text-anchor",t.anchor),t.class&&n.attr("class",t.class);let i=n.append("tspan");return i.attr("x",t.x+t.textMargin*2),i.text(r),n},"drawText"),FE=o((e,t,r,n)=>{let i=e.append("image");i.attr("x",t),i.attr("y",r);let a=(0,KN.sanitizeUrl)(n);i.attr("xlink:href",a)},"drawImage"),zE=o((e,t,r,n)=>{let i=e.append("use");i.attr("x",t),i.attr("y",r);let a=(0,KN.sanitizeUrl)(n);i.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),Fa=o(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),l2=o(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj"),Dy=o(()=>{let e=et(".mermaidTooltip");return e.empty()&&(e=et("body").append("div").attr("class","mermaidTooltip").style("opacity",0).style("position","absolute").style("text-align","center").style("max-width","200px").style("padding","2px").style("font-size","12px").style("background","#ffffde").style("border","1px solid #333").style("border-radius","2px").style("pointer-events","none").style("z-index","100")),e},"createTooltip")});var Sie,ZN,Eie,QYe,JYe,eje,tje,rje,nje,ije,aje,sje,oje,lje,yh,nc,Aie=F(()=>{"use strict";Vr();Hd();Sie=Xs(Ly(),1),ZN=o(function(e,t){return dm(e,t)},"drawRect"),Eie=o(function(e,t,r,n,i,a){let s=e.append("image");s.attr("width",t),s.attr("height",r),s.attr("x",n),s.attr("y",i);let l=a.startsWith("data:image/png;base64")?a:(0,Sie.sanitizeUrl)(a);s.attr("xlink:href",l)},"drawImage"),QYe=o((e,t,r,n)=>{let i=e.append("g"),a=0;for(let s of t){let l=s.textColor?s.textColor:"#444444",u=s.lineColor?s.lineColor:"#444444",h=s.offsetX?parseInt(s.offsetX):0,d=s.offsetY?parseInt(s.offsetY):0,f="";if(a===0){let m=i.append("line");m.attr("x1",s.startPoint.x),m.attr("y1",s.startPoint.y),m.attr("x2",s.endPoint.x),m.attr("y2",s.endPoint.y),m.attr("stroke-width","1"),m.attr("stroke",u),m.style("fill","none"),s.type!=="rel_b"&&m.attr("marker-end","url("+f+"#"+n+"-arrowhead)"),(s.type==="birel"||s.type==="rel_b")&&m.attr("marker-start","url("+f+"#"+n+"-arrowend)"),a=-1}else{let m=i.append("path");m.attr("fill","none").attr("stroke-width","1").attr("stroke",u).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",s.startPoint.x).replaceAll("starty",s.startPoint.y).replaceAll("controlx",s.startPoint.x+(s.endPoint.x-s.startPoint.x)/2-(s.endPoint.x-s.startPoint.x)/4).replaceAll("controly",s.startPoint.y+(s.endPoint.y-s.startPoint.y)/2).replaceAll("stopx",s.endPoint.x).replaceAll("stopy",s.endPoint.y)),s.type!=="rel_b"&&m.attr("marker-end","url("+f+"#"+n+"-arrowhead)"),(s.type==="birel"||s.type==="rel_b")&&m.attr("marker-start","url("+f+"#"+n+"-arrowend)")}let p=r.messageFont();yh(r)(s.label.text,i,Math.min(s.startPoint.x,s.endPoint.x)+Math.abs(s.endPoint.x-s.startPoint.x)/2+h,Math.min(s.startPoint.y,s.endPoint.y)+Math.abs(s.endPoint.y-s.startPoint.y)/2+d,s.label.width,s.label.height,{fill:l},p),s.techn&&s.techn.text!==""&&(p=r.messageFont(),yh(r)("["+s.techn.text+"]",i,Math.min(s.startPoint.x,s.endPoint.x)+Math.abs(s.endPoint.x-s.startPoint.x)/2+h,Math.min(s.startPoint.y,s.endPoint.y)+Math.abs(s.endPoint.y-s.startPoint.y)/2+r.messageFontSize+5+d,Math.max(s.label.width,s.techn.width),s.techn.height,{fill:l,"font-style":"italic"},p))}},"drawRels"),JYe=o(function(e,t,r){let n=e.append("g"),i=t.bgColor?t.bgColor:"none",a=t.borderColor?t.borderColor:"#444444",s=t.fontColor?t.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};t.nodeType&&(l={"stroke-width":1});let u={x:t.x,y:t.y,fill:i,stroke:a,width:t.width,height:t.height,rx:2.5,ry:2.5,attrs:l};ZN(n,u);let h=r.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,yh(r)(t.label.text,n,t.x,t.y+t.label.Y,t.width,t.height,{fill:"#444444"},h),t.type&&t.type.text!==""&&(h=r.boundaryFont(),h.fontColor=s,yh(r)(t.type.text,n,t.x,t.y+t.type.Y,t.width,t.height,{fill:"#444444"},h)),t.descr&&t.descr.text!==""&&(h=r.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,yh(r)(t.descr.text,n,t.x,t.y+t.descr.Y,t.width,t.height,{fill:"#444444"},h))},"drawBoundary"),eje=o(function(e,t,r){let n=t.bgColor?t.bgColor:r[t.typeC4Shape.text+"_bg_color"],i=t.borderColor?t.borderColor:r[t.typeC4Shape.text+"_border_color"],a=t.fontColor?t.fontColor:"#FFFFFF",s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(t.typeC4Shape.text){case"person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let l=e.append("g");l.attr("class","person-man");let u=Fa();switch(t.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":u.x=t.x,u.y=t.y,u.fill=n,u.width=t.width,u.height=t.height,u.stroke=i,u.rx=2.5,u.ry=2.5,u.attrs={"stroke-width":.5},ZN(l,u);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2).replaceAll("height",t.height)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":l.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("width",t.width).replaceAll("half",t.height/2)),l.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",t.x+t.width).replaceAll("starty",t.y).replaceAll("half",t.height/2));break}let h=lje(r,t.typeC4Shape.text);switch(l.append("text").attr("fill",a).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",t.typeC4Shape.width).attr("x",t.x+t.width/2-t.typeC4Shape.width/2).attr("y",t.y+t.typeC4Shape.Y).text("<<"+t.typeC4Shape.text+">>"),t.typeC4Shape.text){case"person":case"external_person":Eie(l,48,48,t.x+t.width/2-24,t.y+t.image.Y,s);break}let d=r[t.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=a,yh(r)(t.label.text,l,t.x,t.y+t.label.Y,t.width,t.height,{fill:a},d),d=r[t.typeC4Shape.text+"Font"](),d.fontColor=a,t.techn&&t.techn?.text!==""?yh(r)(t.techn.text,l,t.x,t.y+t.techn.Y,t.width,t.height,{fill:a,"font-style":"italic"},d):t.type&&t.type.text!==""&&yh(r)(t.type.text,l,t.x,t.y+t.type.Y,t.width,t.height,{fill:a,"font-style":"italic"},d),t.descr&&t.descr.text!==""&&(d=r.personFont(),d.fontColor=a,yh(r)(t.descr.text,l,t.x,t.y+t.descr.Y,t.width,t.height,{fill:a},d)),t.height},"drawC4Shape"),tje=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),rje=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),nje=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),ije=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),aje=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),sje=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),oje=o(function(e,t){let n=e.append("defs").append("marker").attr("id",t+"-crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);n.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),n.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),lje=o((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"getC4ShapeFont"),yh=(function(){function e(i,a,s,l,u,h,d){let f=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("text-anchor","middle").text(i);n(f,d)}o(e,"byText");function t(i,a,s,l,u,h,d,f){let{fontSize:p,fontFamily:m,fontWeight:g}=f,y=i.split(xt.lineBreakRegex);for(let v=0;v=0}var _ie=F(()=>{"use strict";o(Rie,"isLength")});function VE(e){return e!=null&&typeof e!="function"&&Rie(e.length)}var QN=F(()=>{"use strict";_ie();o(VE,"isArrayLike")});function Lie(e){return e==="__proto__"}var Die=F(()=>{"use strict";o(Lie,"isUnsafeProperty")});function Ud(e){return e==null||typeof e!="object"&&typeof e!="function"}var c2=F(()=>{"use strict";o(Ud,"isPrimitive")});function WE(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}var JN=F(()=>{"use strict";o(WE,"getSymbols")});function vh(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var u2=F(()=>{"use strict";o(vh,"getTag")});var h2,Yd,fm,pm,mm,d2,f2,p2,m2,qE,g2,Iy,y2,HE,UE,YE,jE,XE,KE,ZE,QE,JE,e4=F(()=>{"use strict";h2="[object RegExp]",Yd="[object String]",fm="[object Number]",pm="[object Boolean]",mm="[object Arguments]",d2="[object Symbol]",f2="[object Date]",p2="[object Map]",m2="[object Set]",qE="[object Array]",g2="[object ArrayBuffer]",Iy="[object Object]",y2="[object DataView]",HE="[object Uint8Array]",UE="[object Uint8ClampedArray]",YE="[object Uint16Array]",jE="[object Uint32Array]",XE="[object Int8Array]",KE="[object Int16Array]",ZE="[object Int32Array]",QE="[object Float32Array]",JE="[object Float64Array]"});function My(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}var t4=F(()=>{"use strict";o(My,"isTypedArray")});function Iie(e,t){return Ny(e,void 0,e,new Map,t)}function Ny(e,t,r,n=new Map,i=void 0){let a=i?.(e,t,r,n);if(a!==void 0)return a;if(Ud(e))return e;if(n.has(e))return n.get(e);if(Array.isArray(e)){let s=new Array(e.length);n.set(e,s);for(let l=0;l{"use strict";JN();u2();e4();c2();t4();o(Iie,"cloneDeepWith");o(Ny,"cloneDeepWithImpl");o(dl,"copyProperties");o(cje,"isCloneableObject")});function Nie(e,t){return Iie(e,(r,n,i,a)=>{let s=t?.(r,n,i,a);if(s!==void 0)return s;if(typeof e=="object"){if(vh(e)===Iy&&typeof e.constructor!="function"){let l={};return a.set(e,l),dl(l,e,i,a),l}switch(Object.prototype.toString.call(e)){case fm:case Yd:case pm:{let l=new e.constructor(e?.valueOf());return dl(l,e),l}case mm:{let l={};return dl(l,e),l.length=e.length,l[Symbol.iterator]=e[Symbol.iterator],l}default:return}}})}var Pie=F(()=>{"use strict";Mie();u2();e4();o(Nie,"cloneDeepWith")});function eP(e){return Nie(e)}var Oie=F(()=>{"use strict";Pie();o(eP,"cloneDeep")});function v2(e){return e!==null&&typeof e=="object"&&vh(e)==="[object Arguments]"}var tP=F(()=>{"use strict";u2();o(v2,"isArguments")});function x2(e){return typeof e=="object"&&e!==null}var rP=F(()=>{"use strict";o(x2,"isObjectLike")});function Bie(e){return x2(e)&&VE(e)}var $ie=F(()=>{"use strict";QN();rP();o(Bie,"isArrayLikeObject")});function Fie(e){return Array.isArray(e)}var zie=F(()=>{"use strict";o(Fie,"isArray")});function gm(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError("Expected a function");let r=o(function(...i){let a=t?t.apply(this,i):i[0],s=r.cache;if(s.has(a))return s.get(a);let l=e.apply(this,i);return r.cache=s.set(a,l)||s,l},"memoized"),n=gm.Cache||Map;return r.cache=new n,r}var Gie=F(()=>{"use strict";o(gm,"memoize");gm.Cache=Map});function Vie(){}var Wie=F(()=>{"use strict";o(Vie,"noop")});function qie(e){let t=e?.constructor,r=typeof t=="function"?t.prototype:Object.prototype;return e===r}var Hie=F(()=>{"use strict";o(qie,"isPrototype")});function jd(e){return My(e)}var r4=F(()=>{"use strict";t4();o(jd,"isTypedArray")});function iP(e){if(Ud(e))return e;let t=vh(e);if(!uje(e))return{};if(Fie(e)){let n=Array.from(e);return e.length>0&&typeof e[0]=="string"&&Object.hasOwn(e,"index")&&(n.index=e.index,n.input=e.input),n}if(jd(e)){let n=e,i=n.constructor;return new i(n.buffer,n.byteOffset,n.length)}if(t===g2)return new ArrayBuffer(e.byteLength);if(t===y2){let n=e,i=n.buffer,a=n.byteOffset,s=n.byteLength,l=new ArrayBuffer(s),u=new Uint8Array(i,a,s);return new Uint8Array(l).set(u),new DataView(l)}if(t===pm||t===fm||t===Yd){let n=e.constructor,i=new n(e.valueOf());return t===Yd?dje(i,e):nP(i,e),i}if(t===f2)return new Date(Number(e));if(t===h2){let n=e,i=new RegExp(n.source,n.flags);return i.lastIndex=n.lastIndex,i}if(t===d2)return Object(Symbol.prototype.valueOf.call(e));if(t===p2){let n=e,i=new Map;return n.forEach((a,s)=>{i.set(s,a)}),i}if(t===m2){let n=e,i=new Set;return n.forEach(a=>{i.add(a)}),i}if(t===mm){let n=e,i={};return nP(i,n),i.length=n.length,i[Symbol.iterator]=n[Symbol.iterator],i}let r={};return fje(r,e),nP(r,e),hje(r,e),r}function uje(e){switch(vh(e)){case mm:case qE:case g2:case y2:case pm:case f2:case QE:case JE:case XE:case KE:case ZE:case p2:case fm:case Iy:case h2:case m2:case Yd:case d2:case HE:case UE:case YE:case jE:return!0;default:return!1}}function nP(e,t){for(let r in t)Object.hasOwn(t,r)&&(e[r]=t[r])}function hje(e,t){let r=Object.getOwnPropertySymbols(t);for(let n=0;n=r)&&(e[n]=t[n])}function fje(e,t){let r=Object.getPrototypeOf(t);r!==null&&typeof t.constructor=="function"&&Object.setPrototypeOf(e,r)}var Uie=F(()=>{"use strict";c2();u2();e4();zie();r4();o(iP,"clone");o(uje,"isCloneableObject");o(nP,"copyOwnProperties");o(hje,"copySymbolProperties");o(dje,"cloneStringObjectProperties");o(fje,"copyPrototype")});function n4(e){if(typeof e!="object"||e==null)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!=="[object Object]"){let r=e[Symbol.toStringTag];return r==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${r}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}var Yie=F(()=>{"use strict";o(n4,"isPlainObject")});function jie(e){if(Ud(e))return e;if(Array.isArray(e)||My(e)||e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer)return e.slice(0);let t=Object.getPrototypeOf(e);if(t==null)return Object.assign(Object.create(t),e);let r=t.constructor;if(e instanceof Date||e instanceof Map||e instanceof Set)return new r(e);if(e instanceof RegExp){let n=new r(e);return n.lastIndex=e.lastIndex,n}if(e instanceof DataView)return new r(e.buffer.slice(0));if(e instanceof Error){let n;return e instanceof AggregateError?n=new r(e.errors,e.message,{cause:e.cause}):n=new r(e.message,{cause:e.cause}),n.stack=e.stack,Object.assign(n,e),n}if(typeof File<"u"&&e instanceof File)return new r([e],e.name,{type:e.type,lastModified:e.lastModified});if(typeof e=="object"){let n=Object.create(t);return Object.assign(n,e)}return e}var Xie=F(()=>{"use strict";c2();t4();o(jie,"clone")});function Kie(e,...t){let r=t.slice(0,-1),n=t[t.length-1],i=e;for(let a=0;a{"use strict";Oie();Die();Xie();c2();JN();tP();$ie();rP();Yie();r4();o(Kie,"mergeWith");o(i4,"mergeWithDeep")});function aP(e,...t){return Kie(e,...t,Vie)}var Qie=F(()=>{"use strict";Zie();Wie();o(aP,"merge")});function a4(e){if(e==null)return!0;if(VE(e))return typeof e.splice!="function"&&typeof e!="string"&&(typeof Buffer>"u"||!Buffer.isBuffer(e))&&!jd(e)&&!v2(e)?!1:e.length===0;if(typeof e=="object"){if(e instanceof Map||e instanceof Set)return e.size===0;let t=Object.keys(e);return qie(e)?t.filter(r=>r!=="constructor").length===0:t.length===0}return!0}var Jie=F(()=>{"use strict";tP();QN();r4();Hie();o(a4,"isEmpty")});var s4=F(()=>{"use strict";Gie();Uie();Qie();Jie()});function lP(e,t){if(!e)return t;let r=`curve${e.charAt(0).toUpperCase()+e.slice(1)}`;return pje[r]??t}function vje(e,t){let r=e.trim();if(r)return t.securityLevel!=="loose"?(0,rae.sanitizeUrl)(r):r}function aae(e,t){return!e||!t?0:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function bje(e){let t,r=0;e.forEach(i=>{r+=aae(i,t),t=i});let n=r/2;return cP(e,n)}function Tje(e){return e.length===1?e[0]:bje(e)}function wje(e,t,r){let n=structuredClone(r);Z.info("our points",n),t!=="start_left"&&t!=="start_right"&&n.reverse();let i=25+e,a=cP(n,i),s=10+e*.5,l=Math.atan2(n[0].y-a.y,n[0].x-a.x),u={x:0,y:0};return t==="start_left"?(u.x=Math.sin(l+Math.PI)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l+Math.PI)*s+(n[0].y+a.y)/2):t==="end_right"?(u.x=Math.sin(l-Math.PI)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l-Math.PI)*s+(n[0].y+a.y)/2-5):t==="end_left"?(u.x=Math.sin(l)*s+(n[0].x+a.x)/2-5,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2-5):(u.x=Math.sin(l)*s+(n[0].x+a.x)/2,u.y=-Math.cos(l)*s+(n[0].y+a.y)/2),u}function uP(e){let t="",r="";for(let n of e)n!==void 0&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":t=t+n+";");return{style:t,labelStyle:r}}function kje(e){let t="",r="0123456789abcdef",n=r.length;for(let i=0;iMath.round(parseFloat(a)).toString());return i.includes(r.toString())||i.includes(n.toString())}var rae,oP,pje,mje,gje,nae,iae,yje,xje,eae,cP,Cje,tae,hP,dP,Sje,Eje,ym,Aje,b2,sP,o4,Rje,_je,As,Zt,sae,Rs,eu,Qt=F(()=>{"use strict";rae=Xs(Ly(),1);$r();Vr();Ek();vt();Up();G0();s4();yS();oP="\u200B",pje={curveBasis:rc,curveBasisClosed:_E,curveBasisOpen:LE,curveBumpX:Xb,curveBumpY:Kb,curveBundle:$N,curveCardinalClosed:FN,curveCardinalOpen:GN,curveCardinal:e2,curveCatmullRomClosed:WN,curveCatmullRomOpen:qN,curveCatmullRom:n2,curveLinear:Jc,curveLinearClosed:PE,curveMonotoneX:i2,curveMonotoneY:a2,curveNatural:Ry,curveStep:_y,curveStepAfter:o2,curveStepBefore:s2},mje=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,gje=o(function(e,t){let r=nae(e,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(r)){let s=r.map(l=>l.args);W0(s),n=Yn(n,[...s])}else n=r.args;if(!n)return;let i=ny(e,t),a="config";return n[a]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),n[i]=n[a],delete n[a]),n},"detectInit"),nae=o(function(e,t=null){try{let r=new RegExp(`[%]{2}(?![{]${mje.source})(?=[}][%]{2}).* +`,"ig");e=e.trim().replace(r,"").replace(/'/gm,'"'),Z.debug(`Detecting diagram directive${t!==null?" type:"+t:""} based on the text:${e}`);let n,i=[];for(;(n=Hp.exec(e))!==null;)if(n.index===Hp.lastIndex&&Hp.lastIndex++,n&&!t||t&&n[1]?.match(t)||t&&n[2]?.match(t)){let a=n[1]?n[1]:n[2],s=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;i.push({type:a,args:s})}return i.length===0?{type:e,args:null}:i.length===1?i[0]:i}catch(r){return Z.error(`ERROR: ${r.message} - Unable to parse directive type: '${t}' based on the text: '${e}'`),{type:void 0,args:null}}},"detectDirective"),iae=o(function(e){return e.replace(Hp,"")},"removeDirectives"),yje=o(function(e,t){for(let[r,n]of t.entries())if(n.match(e))return r;return-1},"isSubstringInArray");o(lP,"interpolateToCurve");o(vje,"formatUrl");xje=o((e,...t)=>{let r=e.split("."),n=r.length-1,i=r[n],a=window;for(let s=0;s{let r=Math.pow(10,t);return Math.round(e*r)/r},"roundNumber"),cP=o((e,t)=>{let r,n=t;for(let i of e){if(r){let a=aae(i,r);if(a===0)return r;if(a=1)return{x:i.x,y:i.y};if(s>0&&s<1)return{x:eae((1-s)*r.x+s*i.x,5),y:eae((1-s)*r.y+s*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),Cje=o((e,t,r)=>{Z.info(`our points ${JSON.stringify(t)}`),t[0]!==r&&(t=t.reverse());let i=cP(t,25),a=e?10:5,s=Math.atan2(t[0].y-i.y,t[0].x-i.x),l={x:0,y:0};return l.x=Math.sin(s)*a+(t[0].x+i.x)/2,l.y=-Math.cos(s)*a+(t[0].y+i.y)/2,l},"calcCardinalityPosition");o(wje,"calcTerminalLabelPosition");o(uP,"getStylesFromArray");tae=0,hP=o(()=>(tae++,"id-"+Math.random().toString(36).substr(2,12)+"-"+tae),"generateId");o(kje,"makeRandomHex");dP=o(e=>kje(e.length),"random"),Sje=o(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),Eje=o(function(e,t){let r=t.text.replace(xt.lineBreakRegex," "),[,n]=As(t.fontSize),i=e.append("text");i.attr("x",t.x),i.attr("y",t.y),i.style("text-anchor",t.anchor),i.style("font-family",t.fontFamily),i.style("font-size",n),i.style("font-weight",t.fontWeight),i.attr("fill",t.fill),t.class!==void 0&&i.attr("class",t.class);let a=i.append("tspan");return a.attr("x",t.x+t.textMargin*2),a.attr("fill",t.fill),a.text(r),i},"drawSimpleText"),ym=gm((e,t,r)=>{if(!e||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},r),xt.lineBreakRegex.test(e)))return e;let n=e.split(" ").filter(Boolean),i=[],a="";return n.forEach((s,l)=>{let u=Ca(`${s} `,r),h=Ca(a,r);if(u>t){let{hyphenatedStrings:p,remainingWord:m}=Aje(s,t,"-",r);i.push(a,...p),a=m}else h+u>=t?(i.push(a),a=s):a=[a,s].filter(Boolean).join(" ");l+1===n.length&&i.push(a)}),i.filter(s=>s!=="").join(r.joinWith)},(e,t,r)=>`${e}${t}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),Aje=gm((e,t,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...e],a=[],s="";return i.forEach((l,u)=>{let h=`${s}${l}`;if(Ca(h,n)>=t){let f=u+1,p=i.length===f,m=`${h}${r}`;a.push(p?h:m),s=""}else s=h}),{hyphenatedStrings:a,remainingWord:s}},(e,t,r="-",n)=>`${e}${t}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);o(l4,"calculateTextHeight");o(Ca,"calculateTextWidth");b2=gm((e,t)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=t;if(!e)return{width:0,height:0};let[,a]=As(r),s=["sans-serif",n],l=e.split(xt.lineBreakRegex),u=[],h=et("body");if(!h.remove)return{width:0,height:0,lineHeight:0};let d=h.append("svg");for(let p of s){let m=0,g={width:0,height:0,lineHeight:0};for(let y of l){let v=Sje();v.text=y||oP;let x=Eje(d,v).style("font-size",a).style("font-weight",i).style("font-family",p),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),m=Math.round(b.height),g.height+=m,g.lineHeight=Math.round(Math.max(g.lineHeight,m))}u.push(g)}d.remove();let f=isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1;return u[f]},(e,t)=>`${e}${t.fontSize}${t.fontWeight}${t.fontFamily}`),sP=class{constructor(t=!1,r){this.count=0;this.count=r?r.length:0,this.next=t?()=>this.count++:()=>Date.now()}static{o(this,"InitIDGenerator")}},Rje=o(function(e){return o4=o4||document.createElement("div"),e=escape(e).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),o4.innerHTML=e,unescape(o4.textContent)},"entityDecode");o(fP,"isDetailedError");_je=o((e,t,r,n)=>{if(!n)return;let i=e.node()?.getBBox();i&&e.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",t)},"insertTitle"),As=o(e=>{if(typeof e=="number")return[e,e+"px"];let t=parseInt(e??"",10);return Number.isNaN(t)?[void 0,void 0]:e===String(t)?[t,e+"px"]:[t,e]},"parseFontSize");o(qr,"cleanAndMerge");Zt={assignWithDepth:Yn,wrapLabel:ym,calculateTextHeight:l4,calculateTextWidth:Ca,calculateTextDimensions:b2,cleanAndMerge:qr,detectInit:gje,detectDirective:nae,isSubstringInArray:yje,interpolateToCurve:lP,calcLabelPosition:Tje,calcCardinalityPosition:Cje,calcTerminalLabelPosition:wje,formatUrl:vje,getStylesFromArray:uP,generateId:hP,random:dP,runFunc:xje,entityDecode:Rje,insertTitle:_je,isLabelCoordinateInPath:Lje,parseFontSize:As,InitIDGenerator:sP},sae=o(function(e){let t=e;return t=t.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),t},"encodeEntities"),Rs=o(function(e){return e.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),eu=o((e,t,{counter:r=0,prefix:n,suffix:i},a)=>a||`${n?`${n}_`:""}${e}_${t}_${r}${i?`_${i}`:""}`,"getEdgeId");o(kn,"handleUndefinedAttr");o(Lje,"isLabelCoordinateInPath")});function ic(e,t,r,n,i){if(!t[e].width)if(r)t[e].text=ym(t[e].text,i,n),t[e].textLines=t[e].text.split(xt.lineBreakRegex).length,t[e].width=i,t[e].height=l4(t[e].text,n);else{let a=t[e].text.split(xt.lineBreakRegex);t[e].textLines=a.length;let s=0;t[e].height=0,t[e].width=0;for(let l of a)t[e].width=Math.max(Ca(l,n),t[e].width),s=l4(l,n),t[e].height=t[e].height+s}}function hae(e,t,r,n,i){let a=new d4(i);a.data.widthLimit=r.data.widthLimit/Math.min(pP,n.length);for(let[s,l]of n.entries()){let u=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=u,u=l.image.Y+l.image.height);let h=l.wrap&&sr.wrap,d=c4(sr);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",ic("label",l,h,d,a.data.widthLimit),l.label.Y=u+8,u=l.label.Y+l.label.height,l.type&&l.type.text!==""){l.type.text="["+l.type.text+"]";let g=c4(sr);ic("type",l,h,g,a.data.widthLimit),l.type.Y=u+5,u=l.type.Y+l.type.height}if(l.descr&&l.descr.text!==""){let g=c4(sr);g.fontSize=g.fontSize-2,ic("descr",l,h,g,a.data.widthLimit),l.descr.Y=u+20,u=l.descr.Y+l.descr.height}if(s==0||s%pP===0){let g=r.data.startx+sr.diagramMarginX,y=r.data.stopy+sr.diagramMarginY+u;a.setData(g,g,y,y)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+sr.diagramMarginX:a.data.startx,y=a.data.starty;a.setData(g,g,y,y)}a.name=l.alias;let f=i.db.getC4ShapeArray(l.alias),p=i.db.getC4ShapeKeys(l.alias);p.length>0&&uae(a,e,f,p),t=l.alias;let m=i.db.getBoundaries(t);m.length>0&&hae(e,t,a,m,i),l.alias!=="global"&&cae(e,l,a),r.data.stopy=Math.max(a.data.stopy+sr.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+sr.c4ShapeMargin,r.data.stopx),u4=Math.max(u4,r.data.stopx),h4=Math.max(h4,r.data.stopy)}}var u4,h4,lae,pP,sr,d4,mP,T2,c4,Dje,cae,uae,eo,oae,Ije,Mje,Nje,gP,dae=F(()=>{"use strict";$r();Aie();vt();p8();Vr();k8();Xt();G0();Qt();$n();u4=0,h4=0,lae=4,pP=2;ob.yy=pb;sr={},d4=class{static{o(this,"Bounds")}constructor(t){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,mP(t.db.getConfig())}setData(t,r,n,i){this.nextData.startx=this.data.startx=t,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=n,this.nextData.stopy=this.data.stopy=i}updateVal(t,r,n,i){t[r]===void 0?t[r]=n:t[r]=i(n,t[r])}insert(t){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+t.margin:this.nextData.stopx+t.margin*2,n=r+t.width,i=this.nextData.starty+t.margin*2,a=i+t.height;(r>=this.data.widthLimit||n>=this.data.widthLimit||this.nextData.cnt>lae)&&(r=this.nextData.startx+t.margin+sr.nextLinePaddingX,i=this.nextData.stopy+t.margin*2,this.nextData.stopx=n=r+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=i+t.height,this.nextData.cnt=1),t.x=r,t.y=i,this.updateVal(this.data,"startx",r,Math.min),this.updateVal(this.data,"starty",i,Math.min),this.updateVal(this.data,"stopx",n,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",r,Math.min),this.updateVal(this.nextData,"starty",i,Math.min),this.updateVal(this.nextData,"stopx",n,Math.max),this.updateVal(this.nextData,"stopy",a,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},mP(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},mP=o(function(e){Yn(sr,e),e.fontFamily&&(sr.personFontFamily=sr.systemFontFamily=sr.messageFontFamily=e.fontFamily),e.fontSize&&(sr.personFontSize=sr.systemFontSize=sr.messageFontSize=e.fontSize),e.fontWeight&&(sr.personFontWeight=sr.systemFontWeight=sr.messageFontWeight=e.fontWeight)},"setConf"),T2=o((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"c4ShapeFont"),c4=o(e=>({fontFamily:e.boundaryFontFamily,fontSize:e.boundaryFontSize,fontWeight:e.boundaryFontWeight}),"boundaryFont"),Dje=o(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont");o(ic,"calcC4ShapeTextWH");cae=o(function(e,t,r){t.x=r.data.startx,t.y=r.data.starty,t.width=r.data.stopx-r.data.startx,t.height=r.data.stopy-r.data.starty,t.label.y=sr.c4ShapeMargin-35;let n=t.wrap&&sr.wrap,i=c4(sr);i.fontSize=i.fontSize+2,i.fontWeight="bold";let a=Ca(t.label.text,i);ic("label",t,n,i,a),nc.drawBoundary(e,t,sr)},"drawBoundary"),uae=o(function(e,t,r,n){let i=0;for(let a of n){i=0;let s=r[a],l=T2(sr,s.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,s.typeC4Shape.width=Ca("\xAB"+s.typeC4Shape.text+"\xBB",l),s.typeC4Shape.height=l.fontSize+2,s.typeC4Shape.Y=sr.c4ShapePadding,i=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height);let u=s.wrap&&sr.wrap,h=sr.width-sr.c4ShapePadding*2,d=T2(sr,s.typeC4Shape.text);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",ic("label",s,u,d,h),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let m=T2(sr,s.typeC4Shape.text);ic("type",s,u,m,h),s.type.Y=i+5,i=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let m=T2(sr,s.techn.text);ic("techn",s,u,m,h),s.techn.Y=i+5,i=s.techn.Y+s.techn.height}let f=i,p=s.label.width;if(s.descr&&s.descr.text!==""){let m=T2(sr,s.typeC4Shape.text);ic("descr",s,u,m,h),s.descr.Y=i+20,i=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),f=i-s.descr.textLines*5}p=p+sr.c4ShapePadding,s.width=Math.max(s.width||sr.width,p,sr.width),s.height=Math.max(s.height||sr.height,f,sr.height),s.margin=s.margin||sr.c4ShapeMargin,e.insert(s),nc.drawC4Shape(t,s,sr)}e.bumpLastMargin(sr.c4ShapeMargin)},"drawC4ShapeArray"),eo=class{static{o(this,"Point")}constructor(t,r){this.x=t,this.y=r}},oae=o(function(e,t){let r=e.x,n=e.y,i=t.x,a=t.y,s=r+e.width/2,l=n+e.height/2,u=Math.abs(r-i),h=Math.abs(n-a),d=h/u,f=e.height/e.width,p=null;return n==a&&ri?p=new eo(r,l):r==i&&na&&(p=new eo(s,n)),r>i&&n=d?p=new eo(r,l+d*e.width/2):p=new eo(s-u/h*e.height/2,n+e.height):r=d?p=new eo(r+e.width,l+d*e.width/2):p=new eo(s+u/h*e.height/2,n+e.height):ra?f>=d?p=new eo(r+e.width,l-d*e.width/2):p=new eo(s+e.height/2*u/h,n):r>i&&n>a&&(f>=d?p=new eo(r,l-e.width/2*d):p=new eo(s-e.height/2*u/h,n)),p},"getIntersectPoint"),Ije=o(function(e,t){let r={x:0,y:0};r.x=t.x+t.width/2,r.y=t.y+t.height/2;let n=oae(e,r);r.x=e.x+e.width/2,r.y=e.y+e.height/2;let i=oae(t,r);return{startPoint:n,endPoint:i}},"getIntersectPoints"),Mje=o(function(e,t,r,n,i){let a=0;for(let s of t){a=a+1;let l=s.wrap&&sr.wrap,u=Dje(sr);n.db.getC4Type()==="C4Dynamic"&&(s.label.text=a+": "+s.label.text);let d=Ca(s.label.text,u);ic("label",s,l,u,d),s.techn&&s.techn.text!==""&&(d=Ca(s.techn.text,u),ic("techn",s,l,u,d)),s.descr&&s.descr.text!==""&&(d=Ca(s.descr.text,u),ic("descr",s,l,u,d));let f=r(s.from),p=r(s.to),m=Ije(f,p);s.startPoint=m.startPoint,s.endPoint=m.endPoint}nc.drawRels(e,t,sr,i)},"drawRels");o(hae,"drawInsideBoundary");Nje=o(function(e,t,r,n){sr=Ae().c4;let i=Ae().securityLevel,a;i==="sandbox"&&(a=et("#i"+t));let s=i==="sandbox"?et(a.nodes()[0].contentDocument.body):et("body"),l=n.db;n.db.setWrap(sr.wrap),lae=l.getC4ShapeInRow(),pP=l.getC4BoundaryInRow(),Z.debug(`C:${JSON.stringify(sr,null,2)}`);let u=i==="sandbox"?s.select(`[id="${t}"]`):et(`[id="${t}"]`);nc.insertComputerIcon(u,t),nc.insertDatabaseIcon(u,t),nc.insertClockIcon(u,t);let h=new d4(n);h.setData(sr.diagramMarginX,sr.diagramMarginX,sr.diagramMarginY,sr.diagramMarginY),h.data.widthLimit=screen.availWidth,u4=sr.diagramMarginX,h4=sr.diagramMarginY;let d=n.db.getTitle(),f=n.db.getBoundaries("");hae(u,"",h,f,n),nc.insertArrowHead(u,t),nc.insertArrowEnd(u,t),nc.insertArrowCrossHead(u,t),nc.insertArrowFilledHead(u,t),Mje(u,n.db.getRels(),n.db.getC4Shape,n,t),h.data.stopx=u4,h.data.stopy=h4;let p=h.data,g=p.stopy-p.starty+2*sr.diagramMarginY,v=p.stopx-p.startx+2*sr.diagramMarginX;d&&u.append("text").text(d).attr("x",(p.stopx-p.startx)/2-4*sr.diagramMarginX).attr("y",p.starty+sr.diagramMarginY),Wr(u,g,v,sr.useMaxWidth);let x=d?60:0;u.attr("viewBox",p.startx-sr.diagramMarginX+" -"+(sr.diagramMarginY+x)+" "+v+" "+(g+x)),Z.debug("models:",p)},"draw"),gP={drawPersonOrSystemArray:uae,drawBoundary:cae,setConf:mP,draw:Nje}});var Pje,fae,pae=F(()=>{"use strict";Pje=o(e=>`.person { + stroke: ${e.personBorder}; + fill: ${e.personBkg}; + } +`,"getStyles"),fae=Pje});var mae={};ir(mae,{diagram:()=>Oje});var Oje,gae=F(()=>{"use strict";p8();k8();dae();pae();Oje={parser:oJ,db:pb,renderer:gP,styles:fae,init:o(({c4:e,wrap:t})=>{gP.setConf(e),pb.setWrap(t)},"init")}});function Mae(e){return typeof e>"u"||e===null}function zje(e){return typeof e=="object"&&e!==null}function Gje(e){return Array.isArray(e)?e:Mae(e)?[]:[e]}function Vje(e,t){var r,n,i,a;if(t)for(a=Object.keys(t),r=0,n=a.length;rl&&(a=" ... ",t=n-l+a.length),r-n>l&&(s=" ...",r=n+l-s.length),{str:a+e.slice(t,r).replace(/\t/g,"\u2192")+s,pos:n-t+a.length}}function vP(e,t){return sa.repeat(" ",t-e.length)+e}function Zje(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var r=/\r?\n|\r|\0/g,n=[0],i=[],a,s=-1;a=r.exec(e.buffer);)i.push(a.index),n.push(a.index+a[0].length),e.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var l="",u,h,d=Math.min(e.line+t.linesAfter,i.length).toString().length,f=t.maxLength-(t.indent+d+3);for(u=1;u<=t.linesBefore&&!(s-u<0);u++)h=yP(e.buffer,n[s-u],i[s-u],e.position-(n[s]-n[s-u]),f),l=sa.repeat(" ",t.indent)+vP((e.line-u+1).toString(),d)+" | "+h.str+` +`+l;for(h=yP(e.buffer,n[s],i[s],e.position,f),l+=sa.repeat(" ",t.indent)+vP((e.line+1).toString(),d)+" | "+h.str+` +`,l+=sa.repeat("-",t.indent+d+3+h.pos)+`^ +`,u=1;u<=t.linesAfter&&!(s+u>=i.length);u++)h=yP(e.buffer,n[s+u],i[s+u],e.position-(n[s]-n[s+u]),f),l+=sa.repeat(" ",t.indent)+vP((e.line+u+1).toString(),d)+" | "+h.str+` +`;return l.replace(/\n$/,"")}function tXe(e){var t={};return e!==null&&Object.keys(e).forEach(function(r){e[r].forEach(function(n){t[String(n)]=r})}),t}function rXe(e,t){if(t=t||{},Object.keys(t).forEach(function(r){if(Jje.indexOf(r)===-1)throw new to('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(r){return r},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=tXe(t.styleAliases||null),eXe.indexOf(this.kind)===-1)throw new to('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}function vae(e,t){var r=[];return e[t].forEach(function(n){var i=r.length;r.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(i=s)}),r[i]=n}),r}function nXe(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,r;function n(i){i.multi?(e.multi[i.kind].push(i),e.multi.fallback.push(i)):e[i.kind][i.tag]=e.fallback[i.tag]=i}for(o(n,"collectType"),t=0,r=arguments.length;t=0&&(t=t.slice(1)),t===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:r*parseFloat(t,10)}function RXe(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(sa.isNegativeZero(e))return"-0.0";return r=e.toString(10),AXe.test(r)?r.replace("e",".e"):r}function _Xe(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||sa.isNegativeZero(e))}function IXe(e){return e===null?!1:Oae.exec(e)!==null||Bae.exec(e)!==null}function MXe(e){var t,r,n,i,a,s,l,u=0,h=null,d,f,p;if(t=Oae.exec(e),t===null&&(t=Bae.exec(e)),t===null)throw new Error("Date resolve error");if(r=+t[1],n=+t[2]-1,i=+t[3],!t[4])return new Date(Date.UTC(r,n,i));if(a=+t[4],s=+t[5],l=+t[6],t[7]){for(u=t[7].slice(0,3);u.length<3;)u+="0";u=+u}return t[9]&&(d=+t[10],f=+(t[11]||0),h=(d*60+f)*6e4,t[9]==="-"&&(h=-h)),p=new Date(Date.UTC(r,n,i,a,s,l,u)),h&&p.setTime(p.getTime()-h),p}function NXe(e){return e.toISOString()}function OXe(e){return e==="<<"||e===null}function $Xe(e){if(e===null)return!1;var t,r,n=0,i=e.length,a=SP;for(r=0;r64)){if(t<0)return!1;n+=6}return n%8===0}function FXe(e){var t,r,n=e.replace(/[\r\n=]/g,""),i=n.length,a=SP,s=0,l=[];for(t=0;t>16&255),l.push(s>>8&255),l.push(s&255)),s=s<<6|a.indexOf(n.charAt(t));return r=i%4*6,r===0?(l.push(s>>16&255),l.push(s>>8&255),l.push(s&255)):r===18?(l.push(s>>10&255),l.push(s>>2&255)):r===12&&l.push(s>>4&255),new Uint8Array(l)}function zXe(e){var t="",r=0,n,i,a=e.length,s=SP;for(n=0;n>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]),r=(r<<8)+e[n];return i=a%3,i===0?(t+=s[r>>18&63],t+=s[r>>12&63],t+=s[r>>6&63],t+=s[r&63]):i===2?(t+=s[r>>10&63],t+=s[r>>4&63],t+=s[r<<2&63],t+=s[64]):i===1&&(t+=s[r>>2&63],t+=s[r<<4&63],t+=s[64],t+=s[64]),t}function GXe(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}function HXe(e){if(e===null)return!0;var t=[],r,n,i,a,s,l=e;for(r=0,n=l.length;r>10)+55296,(e-65536&1023)+56320)}function Wae(e,t,r){t==="__proto__"?Object.defineProperty(e,t,{configurable:!0,enumerable:!0,writable:!0,value:r}):e[t]=r}function uKe(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||$ae,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Uae(e,t){var r={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return r.snippet=Qje(r),new to(t,r)}function dr(e,t){throw Uae(e,t)}function m4(e,t){e.onWarning&&e.onWarning.call(null,Uae(e,t))}function Xd(e,t,r,n){var i,a,s,l;if(t1&&(e.result+=sa.repeat(` +`,t-1))}function hKe(e,t,r){var n,i,a,s,l,u,h,d,f=e.kind,p=e.result,m;if(m=e.input.charCodeAt(e.position),ro(m)||Oy(m)||m===35||m===38||m===42||m===33||m===124||m===62||m===39||m===34||m===37||m===64||m===96||(m===63||m===45)&&(i=e.input.charCodeAt(e.position+1),ro(i)||r&&Oy(i)))return!1;for(e.kind="scalar",e.result="",a=s=e.position,l=!1;m!==0;){if(m===58){if(i=e.input.charCodeAt(e.position+1),ro(i)||r&&Oy(i))break}else if(m===35){if(n=e.input.charCodeAt(e.position-1),ro(n))break}else{if(e.position===e.lineStart&&v4(e)||r&&Oy(m))break;if(tu(m))if(u=e.line,h=e.lineStart,d=e.lineIndent,Ui(e,!1,-1),e.lineIndent>=t){l=!0,m=e.input.charCodeAt(e.position);continue}else{e.position=s,e.line=u,e.lineStart=h,e.lineIndent=d;break}}l&&(Xd(e,a,s,!1),AP(e,e.line-u),a=s=e.position,l=!1),xm(m)||(s=e.position+1),m=e.input.charCodeAt(++e.position)}return Xd(e,a,s,!1),e.result?!0:(e.kind=f,e.result=p,!1)}function dKe(e,t){var r,n,i;if(r=e.input.charCodeAt(e.position),r!==39)return!1;for(e.kind="scalar",e.result="",e.position++,n=i=e.position;(r=e.input.charCodeAt(e.position))!==0;)if(r===39)if(Xd(e,n,e.position,!0),r=e.input.charCodeAt(++e.position),r===39)n=e.position,e.position++,i=e.position;else return!0;else tu(r)?(Xd(e,n,i,!0),AP(e,Ui(e,!1,t)),n=i=e.position):e.position===e.lineStart&&v4(e)?dr(e,"unexpected end of the document within a single quoted scalar"):(e.position++,i=e.position);dr(e,"unexpected end of the stream within a single quoted scalar")}function fKe(e,t){var r,n,i,a,s,l;if(l=e.input.charCodeAt(e.position),l!==34)return!1;for(e.kind="scalar",e.result="",e.position++,r=n=e.position;(l=e.input.charCodeAt(e.position))!==0;){if(l===34)return Xd(e,r,e.position,!0),e.position++,!0;if(l===92){if(Xd(e,r,e.position,!0),l=e.input.charCodeAt(++e.position),tu(l))Ui(e,!1,t);else if(l<256&&qae[l])e.result+=Hae[l],e.position++;else if((s=oKe(l))>0){for(i=s,a=0;i>0;i--)l=e.input.charCodeAt(++e.position),(s=sKe(l))>=0?a=(a<<4)+s:dr(e,"expected hexadecimal character");e.result+=cKe(a),e.position++}else dr(e,"unknown escape sequence");r=n=e.position}else tu(l)?(Xd(e,r,n,!0),AP(e,Ui(e,!1,t)),r=n=e.position):e.position===e.lineStart&&v4(e)?dr(e,"unexpected end of the document within a double quoted scalar"):(e.position++,n=e.position)}dr(e,"unexpected end of the stream within a double quoted scalar")}function pKe(e,t){var r=!0,n,i,a,s=e.tag,l,u=e.anchor,h,d,f,p,m,g=Object.create(null),y,v,x,b;if(b=e.input.charCodeAt(e.position),b===91)d=93,m=!1,l=[];else if(b===123)d=125,m=!0,l={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=l),b=e.input.charCodeAt(++e.position);b!==0;){if(Ui(e,!0,t),b=e.input.charCodeAt(e.position),b===d)return e.position++,e.tag=s,e.anchor=u,e.kind=m?"mapping":"sequence",e.result=l,!0;r?b===44&&dr(e,"expected the node content, but found ','"):dr(e,"missed comma between flow collection entries"),v=y=x=null,f=p=!1,b===63&&(h=e.input.charCodeAt(e.position+1),ro(h)&&(f=p=!0,e.position++,Ui(e,!0,t))),n=e.line,i=e.lineStart,a=e.position,$y(e,t,f4,!1,!0),v=e.tag,y=e.result,Ui(e,!0,t),b=e.input.charCodeAt(e.position),(p||e.line===n)&&b===58&&(f=!0,b=e.input.charCodeAt(++e.position),Ui(e,!0,t),$y(e,t,f4,!1,!0),x=e.result),m?By(e,l,g,v,y,x,n,i,a):f?l.push(By(e,null,g,v,y,x,n,i,a)):l.push(y),Ui(e,!0,t),b=e.input.charCodeAt(e.position),b===44?(r=!0,b=e.input.charCodeAt(++e.position)):r=!1}dr(e,"unexpected end of the stream within a flow collection")}function mKe(e,t){var r,n,i=xP,a=!1,s=!1,l=t,u=0,h=!1,d,f;if(f=e.input.charCodeAt(e.position),f===124)n=!1;else if(f===62)n=!0;else return!1;for(e.kind="scalar",e.result="";f!==0;)if(f=e.input.charCodeAt(++e.position),f===43||f===45)xP===i?i=f===43?xae:rKe:dr(e,"repeat of a chomping mode identifier");else if((d=lKe(f))>=0)d===0?dr(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?dr(e,"repeat of an indentation width identifier"):(l=t+d-1,s=!0);else break;if(xm(f)){do f=e.input.charCodeAt(++e.position);while(xm(f));if(f===35)do f=e.input.charCodeAt(++e.position);while(!tu(f)&&f!==0)}for(;f!==0;){for(EP(e),e.lineIndent=0,f=e.input.charCodeAt(e.position);(!s||e.lineIndentl&&(l=e.lineIndent),tu(f)){u++;continue}if(e.lineIndentt)&&u!==0)dr(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(v&&(s=e.line,l=e.lineStart,u=e.position),$y(e,t,p4,!0,i)&&(v?g=e.result:y=e.result),v||(By(e,f,p,m,g,y,s,l,u),m=g=y=null),Ui(e,!0,-1),b=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&b!==0)dr(e,"bad indentation of a mapping entry");else if(e.lineIndentt?u=1:e.lineIndent===t?u=0:e.lineIndentt?u=1:e.lineIndent===t?u=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),f=0,p=e.implicitTypes.length;f"),e.result!==null&&g.kind!==e.kind&&dr(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+g.kind+'", not "'+e.kind+'"'),g.resolve(e.result,e.tag)?(e.result=g.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):dr(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||d}function bKe(e){var t=e.position,r,n,i,a=!1,s;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(s=e.input.charCodeAt(e.position))!==0&&(Ui(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||s!==37));){for(a=!0,s=e.input.charCodeAt(++e.position),r=e.position;s!==0&&!ro(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(r,e.position),i=[],n.length<1&&dr(e,"directive name must not be less than one character in length");s!==0;){for(;xm(s);)s=e.input.charCodeAt(++e.position);if(s===35){do s=e.input.charCodeAt(++e.position);while(s!==0&&!tu(s));break}if(tu(s))break;for(r=e.position;s!==0&&!ro(s);)s=e.input.charCodeAt(++e.position);i.push(e.input.slice(r,e.position))}s!==0&&EP(e),Kd.call(Cae,n)?Cae[n](e,n,i):m4(e,'unknown document directive "'+n+'"')}if(Ui(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,Ui(e,!0,-1)):a&&dr(e,"directives end mark is expected"),$y(e,e.lineIndent-1,p4,!1,!0),Ui(e,!0,-1),e.checkLineBreaks&&iKe.test(e.input.slice(t,e.position))&&m4(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&v4(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,Ui(e,!0,-1));return}if(e.position"u"&&(r=t,t=null);var n=Yae(e,r);if(typeof t!="function")return n;for(var i=0,a=n.length;i=55296&&r<=56319&&t+1=56320&&n<=57343)?(r-55296)*1024+n-56320+65536:r}function rse(e){var t=/^\n* /;return t.test(e)}function KKe(e,t,r,n,i,a,s,l){var u,h=0,d=null,f=!1,p=!1,m=n!==-1,g=-1,y=jKe(C2(e,0))&&XKe(C2(e,e.length-1));if(t||s)for(u=0;u=65536?u+=2:u++){if(h=C2(e,u),!E2(h))return Py;y=y&&Aae(h,d,l),d=h}else{for(u=0;u=65536?u+=2:u++){if(h=C2(e,u),h===k2)f=!0,m&&(p=p||u-g-1>n&&e[g+1]!==" ",g=u);else if(!E2(h))return Py;y=y&&Aae(h,d,l),d=h}p=p||m&&u-g-1>n&&e[g+1]!==" "}return!f&&!p?y&&!s&&!i(e)?nse:a===S2?Py:wP:r>9&&rse(e)?Py:s?a===S2?Py:wP:p?ase:ise}function ZKe(e,t,r,n,i){e.dump=(function(){if(t.length===0)return e.quotingType===S2?'""':"''";if(!e.noCompatMode&&(GKe.indexOf(t)!==-1||VKe.test(t)))return e.quotingType===S2?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,r),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),l=n||e.flowLevel>-1&&r>=e.flowLevel;function u(h){return YKe(e,h)}switch(o(u,"testAmbiguity"),KKe(t,l,e.indent,s,u,e.quotingType,e.forceQuotes&&!n,i)){case nse:return t;case wP:return"'"+t.replace(/'/g,"''")+"'";case ise:return"|"+Rae(t,e.indent)+_ae(Sae(t,a));case ase:return">"+Rae(t,e.indent)+_ae(Sae(QKe(t,s),a));case Py:return'"'+JKe(t)+'"';default:throw new to("impossible error: invalid scalar style")}})()}function Rae(e,t){var r=rse(e)?String(t):"",n=e[e.length-1]===` +`,i=n&&(e[e.length-2]===` +`||e===` +`),a=i?"+":n?"":"-";return r+a+` +`}function _ae(e){return e[e.length-1]===` +`?e.slice(0,-1):e}function QKe(e,t){for(var r=/(\n+)([^\n]*)/g,n=(function(){var h=e.indexOf(` +`);return h=h!==-1?h:e.length,r.lastIndex=h,Lae(e.slice(0,h),t)})(),i=e[0]===` +`||e[0]===" ",a,s;s=r.exec(e);){var l=s[1],u=s[2];a=u[0]===" ",n+=l+(!i&&!a&&u!==""?` +`:"")+Lae(u,t),i=a}return n}function Lae(e,t){if(e===""||e[0]===" ")return e;for(var r=/ [^ ]/g,n,i=0,a,s=0,l=0,u="";n=r.exec(e);)l=n.index,l-i>t&&(a=s>i?s:l,u+=` +`+e.slice(i,a),i=a+1),s=l;return u+=` +`,e.length-i>t&&s>i?u+=e.slice(i,s)+` +`+e.slice(s+1):u+=e.slice(i),u.slice(1)}function JKe(e){for(var t="",r=0,n,i=0;i=65536?i+=2:i++)r=C2(e,i),n=is[r],!n&&E2(r)?(t+=e[i],r>=65536&&(t+=e[i+1])):t+=n||qKe(r);return t}function eZe(e,t,r){var n="",i=e.tag,a,s,l;for(a=0,s=r.length;a"u"&&xh(e,t,null,!1,!1))&&(n!==""&&(n+=","+(e.condenseFlow?"":" ")),n+=e.dump);e.tag=i,e.dump="["+n+"]"}function Dae(e,t,r,n){var i="",a=e.tag,s,l,u;for(s=0,l=r.length;s"u"&&xh(e,t+1,null,!0,!0,!1,!0))&&((!n||i!=="")&&(i+=CP(e,t)),e.dump&&k2===e.dump.charCodeAt(0)?i+="-":i+="- ",i+=e.dump);e.tag=a,e.dump=i||"[]"}function tZe(e,t,r){var n="",i=e.tag,a=Object.keys(r),s,l,u,h,d;for(s=0,l=a.length;s1024&&(d+="? "),d+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),xh(e,t,h,!1,!1)&&(d+=e.dump,n+=d));e.tag=i,e.dump="{"+n+"}"}function rZe(e,t,r,n){var i="",a=e.tag,s=Object.keys(r),l,u,h,d,f,p;if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys=="function")s.sort(e.sortKeys);else if(e.sortKeys)throw new to("sortKeys must be a boolean or a function");for(l=0,u=s.length;l1024,f&&(e.dump&&k2===e.dump.charCodeAt(0)?p+="?":p+="? "),p+=e.dump,f&&(p+=CP(e,t)),xh(e,t+1,d,!0,f)&&(e.dump&&k2===e.dump.charCodeAt(0)?p+=":":p+=": ",p+=e.dump,i+=p));e.tag=a,e.dump=i||"{}"}function Iae(e,t,r){var n,i,a,s,l,u;for(i=r?e.explicitTypes:e.implicitTypes,a=0,s=i.length;a tag resolver accepts not "'+u+'" style');e.dump=n}return!0}return!1}function xh(e,t,r,n,i,a,s){e.tag=null,e.dump=r,Iae(e,r,!1)||Iae(e,r,!0);var l=Xae.call(e.dump),u=n,h;n&&(n=e.flowLevel<0||e.flowLevel>t);var d=l==="[object Object]"||l==="[object Array]",f,p;if(d&&(f=e.duplicates.indexOf(r),p=f!==-1),(e.tag!==null&&e.tag!=="?"||p||e.indent!==2&&t>0)&&(i=!1),p&&e.usedDuplicates[f])e.dump="*ref_"+f;else{if(d&&p&&!e.usedDuplicates[f]&&(e.usedDuplicates[f]=!0),l==="[object Object]")n&&Object.keys(e.dump).length!==0?(rZe(e,t,e.dump,i),p&&(e.dump="&ref_"+f+e.dump)):(tZe(e,t,e.dump),p&&(e.dump="&ref_"+f+" "+e.dump));else if(l==="[object Array]")n&&e.dump.length!==0?(e.noArrayIndent&&!s&&t>0?Dae(e,t-1,e.dump,i):Dae(e,t,e.dump,i),p&&(e.dump="&ref_"+f+e.dump)):(eZe(e,t,e.dump),p&&(e.dump="&ref_"+f+" "+e.dump));else if(l==="[object String]")e.tag!=="?"&&ZKe(e,e.dump,t,a,u);else{if(l==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new to("unacceptable kind of an object to dump "+l)}e.tag!==null&&e.tag!=="?"&&(h=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?h="!"+h:h.slice(0,18)==="tag:yaml.org,2002:"?h="!!"+h.slice(18):h="!<"+h+">",e.dump=h+" "+e.dump)}return!0}function nZe(e,t){var r=[],n=[],i,a;for(kP(e,r,n),i=0,a=n.length;i{"use strict";o(Mae,"isNothing");o(zje,"isObject");o(Gje,"toArray");o(Vje,"extend");o(Wje,"repeat");o(qje,"isNegativeZero");Hje=Mae,Uje=zje,Yje=Gje,jje=Wje,Xje=qje,Kje=Vje,sa={isNothing:Hje,isObject:Uje,toArray:Yje,repeat:jje,isNegativeZero:Xje,extend:Kje};o(Nae,"formatError");o(w2,"YAMLException$1");w2.prototype=Object.create(Error.prototype);w2.prototype.constructor=w2;w2.prototype.toString=o(function(t){return this.name+": "+Nae(this,t)},"toString");to=w2;o(yP,"getLine");o(vP,"padStart");o(Zje,"makeSnippet");Qje=Zje,Jje=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],eXe=["scalar","sequence","mapping"];o(tXe,"compileStyleAliases");o(rXe,"Type$1");ns=rXe;o(vae,"compileList");o(nXe,"compileMap");o(bP,"Schema$1");bP.prototype.extend=o(function(t){var r=[],n=[];if(t instanceof ns)n.push(t);else if(Array.isArray(t))n=n.concat(t);else if(t&&(Array.isArray(t.implicit)||Array.isArray(t.explicit)))t.implicit&&(r=r.concat(t.implicit)),t.explicit&&(n=n.concat(t.explicit));else throw new to("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof ns))throw new to("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new to("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new to("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),n.forEach(function(a){if(!(a instanceof ns))throw new to("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(bP.prototype);return i.implicit=(this.implicit||[]).concat(r),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=vae(i,"implicit"),i.compiledExplicit=vae(i,"explicit"),i.compiledTypeMap=nXe(i.compiledImplicit,i.compiledExplicit),i},"extend");iXe=bP,aXe=new ns("tag:yaml.org,2002:str",{kind:"scalar",construct:o(function(e){return e!==null?e:""},"construct")}),sXe=new ns("tag:yaml.org,2002:seq",{kind:"sequence",construct:o(function(e){return e!==null?e:[]},"construct")}),oXe=new ns("tag:yaml.org,2002:map",{kind:"mapping",construct:o(function(e){return e!==null?e:{}},"construct")}),lXe=new iXe({explicit:[aXe,sXe,oXe]});o(cXe,"resolveYamlNull");o(uXe,"constructYamlNull");o(hXe,"isNull");dXe=new ns("tag:yaml.org,2002:null",{kind:"scalar",resolve:cXe,construct:uXe,predicate:hXe,represent:{canonical:o(function(){return"~"},"canonical"),lowercase:o(function(){return"null"},"lowercase"),uppercase:o(function(){return"NULL"},"uppercase"),camelcase:o(function(){return"Null"},"camelcase"),empty:o(function(){return""},"empty")},defaultStyle:"lowercase"});o(fXe,"resolveYamlBoolean");o(pXe,"constructYamlBoolean");o(mXe,"isBoolean");gXe=new ns("tag:yaml.org,2002:bool",{kind:"scalar",resolve:fXe,construct:pXe,predicate:mXe,represent:{lowercase:o(function(e){return e?"true":"false"},"lowercase"),uppercase:o(function(e){return e?"TRUE":"FALSE"},"uppercase"),camelcase:o(function(e){return e?"True":"False"},"camelcase")},defaultStyle:"lowercase"});o(yXe,"isHexCode");o(vXe,"isOctCode");o(xXe,"isDecCode");o(bXe,"resolveYamlInteger");o(TXe,"constructYamlInteger");o(CXe,"isInteger");wXe=new ns("tag:yaml.org,2002:int",{kind:"scalar",resolve:bXe,construct:TXe,predicate:CXe,represent:{binary:o(function(e){return e>=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},"binary"),octal:o(function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},"octal"),decimal:o(function(e){return e.toString(10)},"decimal"),hexadecimal:o(function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),kXe=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");o(SXe,"resolveYamlFloat");o(EXe,"constructYamlFloat");AXe=/^[-+]?[0-9]+e/;o(RXe,"representYamlFloat");o(_Xe,"isFloat");LXe=new ns("tag:yaml.org,2002:float",{kind:"scalar",resolve:SXe,construct:EXe,predicate:_Xe,represent:RXe,defaultStyle:"lowercase"}),Pae=lXe.extend({implicit:[dXe,gXe,wXe,LXe]}),DXe=Pae,Oae=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Bae=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");o(IXe,"resolveYamlTimestamp");o(MXe,"constructYamlTimestamp");o(NXe,"representYamlTimestamp");PXe=new ns("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:IXe,construct:MXe,instanceOf:Date,represent:NXe});o(OXe,"resolveYamlMerge");BXe=new ns("tag:yaml.org,2002:merge",{kind:"scalar",resolve:OXe}),SP=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;o($Xe,"resolveYamlBinary");o(FXe,"constructYamlBinary");o(zXe,"representYamlBinary");o(GXe,"isBinary");VXe=new ns("tag:yaml.org,2002:binary",{kind:"scalar",resolve:$Xe,construct:FXe,predicate:GXe,represent:zXe}),WXe=Object.prototype.hasOwnProperty,qXe=Object.prototype.toString;o(HXe,"resolveYamlOmap");o(UXe,"constructYamlOmap");YXe=new ns("tag:yaml.org,2002:omap",{kind:"sequence",resolve:HXe,construct:UXe}),jXe=Object.prototype.toString;o(XXe,"resolveYamlPairs");o(KXe,"constructYamlPairs");ZXe=new ns("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:XXe,construct:KXe}),QXe=Object.prototype.hasOwnProperty;o(JXe,"resolveYamlSet");o(eKe,"constructYamlSet");tKe=new ns("tag:yaml.org,2002:set",{kind:"mapping",resolve:JXe,construct:eKe}),$ae=DXe.extend({implicit:[PXe,BXe],explicit:[VXe,YXe,ZXe,tKe]}),Kd=Object.prototype.hasOwnProperty,f4=1,Fae=2,zae=3,p4=4,xP=1,rKe=2,xae=3,nKe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,iKe=/[\x85\u2028\u2029]/,aKe=/[,\[\]\{\}]/,Gae=/^(?:!|!!|![a-z\-]+!)$/i,Vae=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;o(bae,"_class");o(tu,"is_EOL");o(xm,"is_WHITE_SPACE");o(ro,"is_WS_OR_EOL");o(Oy,"is_FLOW_INDICATOR");o(sKe,"fromHexCode");o(oKe,"escapedHexLen");o(lKe,"fromDecimalCode");o(Tae,"simpleEscapeSequence");o(cKe,"charFromCodepoint");o(Wae,"setProperty");qae=new Array(256),Hae=new Array(256);for(vm=0;vm<256;vm++)qae[vm]=Tae(vm)?1:0,Hae[vm]=Tae(vm);o(uKe,"State$1");o(Uae,"generateError");o(dr,"throwError");o(m4,"throwWarning");Cae={YAML:o(function(t,r,n){var i,a,s;t.version!==null&&dr(t,"duplication of %YAML directive"),n.length!==1&&dr(t,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),i===null&&dr(t,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),s=parseInt(i[2],10),a!==1&&dr(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=s<2,s!==1&&s!==2&&m4(t,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:o(function(t,r,n){var i,a;n.length!==2&&dr(t,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],Gae.test(i)||dr(t,"ill-formed tag handle (first argument) of the TAG directive"),Kd.call(t.tagMap,i)&&dr(t,'there is a previously declared suffix for "'+i+'" tag handle'),Vae.test(a)||dr(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{dr(t,"tag prefix is malformed: "+a)}t.tagMap[i]=a},"handleTagDirective")};o(Xd,"captureSegment");o(wae,"mergeMappings");o(By,"storeMappingPair");o(EP,"readLineBreak");o(Ui,"skipSeparationSpace");o(v4,"testDocumentSeparator");o(AP,"writeFoldedLines");o(hKe,"readPlainScalar");o(dKe,"readSingleQuotedScalar");o(fKe,"readDoubleQuotedScalar");o(pKe,"readFlowCollection");o(mKe,"readBlockScalar");o(kae,"readBlockSequence");o(gKe,"readBlockMapping");o(yKe,"readTagProperty");o(vKe,"readAnchorProperty");o(xKe,"readAlias");o($y,"composeNode");o(bKe,"readDocument");o(Yae,"loadDocuments");o(TKe,"loadAll$1");o(CKe,"load$1");wKe=TKe,kKe=CKe,jae={loadAll:wKe,load:kKe},Xae=Object.prototype.toString,Kae=Object.prototype.hasOwnProperty,RP=65279,SKe=9,k2=10,EKe=13,AKe=32,RKe=33,_Ke=34,TP=35,LKe=37,DKe=38,IKe=39,MKe=42,Zae=44,NKe=45,g4=58,PKe=61,OKe=62,BKe=63,$Ke=64,Qae=91,Jae=93,FKe=96,ese=123,zKe=124,tse=125,is={};is[0]="\\0";is[7]="\\a";is[8]="\\b";is[9]="\\t";is[10]="\\n";is[11]="\\v";is[12]="\\f";is[13]="\\r";is[27]="\\e";is[34]='\\"';is[92]="\\\\";is[133]="\\N";is[160]="\\_";is[8232]="\\L";is[8233]="\\P";GKe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],VKe=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;o(WKe,"compileStyleMap");o(qKe,"encodeHex");HKe=1,S2=2;o(UKe,"State");o(Sae,"indentString");o(CP,"generateNextLine");o(YKe,"testImplicitResolving");o(y4,"isWhitespace");o(E2,"isPrintable");o(Eae,"isNsCharOrWhitespace");o(Aae,"isPlainSafe");o(jKe,"isPlainSafeFirst");o(XKe,"isPlainSafeLast");o(C2,"codePointAt");o(rse,"needIndentIndicator");nse=1,wP=2,ise=3,ase=4,Py=5;o(KKe,"chooseScalarStyle");o(ZKe,"writeScalar");o(Rae,"blockHeader");o(_ae,"dropEndingNewline");o(QKe,"foldString");o(Lae,"foldLine");o(JKe,"escapeString");o(eZe,"writeFlowSequence");o(Dae,"writeBlockSequence");o(tZe,"writeFlowMapping");o(rZe,"writeBlockMapping");o(Iae,"detectType");o(xh,"writeNode");o(nZe,"getDuplicateReferences");o(kP,"inspectNode");o(iZe,"dump$1");aZe=iZe,sZe={dump:aZe};o(_P,"renamed");Zd=Pae,Qd=jae.load,hir=jae.loadAll,dir=sZe.dump,fir=_P("safeLoad","load"),pir=_P("safeLoadAll","loadAll"),mir=_P("safeDump","dump")});function MP(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function hse(e){Tm=e}function _n(e,t=""){let r=typeof e=="string"?e:e.source,n={replace:o((i,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(_s.caret,"$1"),r=r.replace(i,s),n},"replace"),getRegex:o(()=>new RegExp(r,t),"getRegex")};return n}function ru(e,t){if(t){if(_s.escapeTest.test(e))return e.replace(_s.escapeReplace,ose)}else if(_s.escapeTestNoEncode.test(e))return e.replace(_s.escapeReplaceNoEncode,ose);return e}function lse(e){try{e=encodeURI(e).replace(_s.percentDecode,"%")}catch{return null}return e}function cse(e,t){let r=e.replace(_s.findPipe,(a,s,l)=>{let u=!1,h=s;for(;--h>=0&&l[h]==="\\";)u=!u;return u?"|":" |"}),n=r.split(_s.splitPipe),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length0?-2:-1}function use(e,t,r,n,i){let a=t.href,s=t.title||null,l=e[1].replace(i.other.outputLinkReplace,"$1");n.state.inLink=!0;let u={type:e[0].charAt(0)==="!"?"image":"link",raw:r,href:a,title:s,text:l,tokens:n.inlineTokens(l)};return n.state.inLink=!1,u}function GZe(e,t,r){let n=e.match(r.other.indentCodeCompensation);if(n===null)return t;let i=n[1];return t.split(` +`).map(a=>{let s=a.match(r.other.beginningSpace);if(s===null)return a;let[l]=s;return l.length>=i.length?a.slice(i.length):a}).join(` +`)}function Sn(e,t){return bm.parse(e,t)}var Tm,D2,_s,oZe,lZe,cZe,I2,uZe,NP,dse,fse,hZe,PP,dZe,OP,fZe,pZe,k4,BP,mZe,pse,gZe,$P,sse,yZe,vZe,xZe,bZe,mse,TZe,S4,FP,gse,CZe,yse,wZe,kZe,SZe,vse,EZe,AZe,xse,RZe,_Ze,LZe,DZe,IZe,MZe,NZe,T4,PZe,bse,Tse,OZe,zP,BZe,LP,$Ze,b4,R2,FZe,ose,C4,bh,w4,GP,Th,L2,VZe,bm,yir,vir,xir,bir,Tir,Cir,wir,Cse=F(()=>{"use strict";o(MP,"L");Tm=MP();o(hse,"G");D2={exec:o(()=>null,"exec")};o(_n,"h");_s={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:o(e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),"listItemRegex"),nextBulletRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),"nextBulletRegex"),hrRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),"hrRegex"),fencesBeginRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),"fencesBeginRegex"),headingBeginRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),"headingBeginRegex"),htmlBeginRegex:o(e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i"),"htmlBeginRegex")},oZe=/^(?:[ \t]*(?:\n|$))+/,lZe=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,cZe=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,I2=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,uZe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,NP=/(?:[*+-]|\d{1,9}[.)])/,dse=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,fse=_n(dse).replace(/bull/g,NP).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),hZe=_n(dse).replace(/bull/g,NP).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),PP=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,dZe=/^[^\n]+/,OP=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,fZe=_n(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",OP).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),pZe=_n(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,NP).getRegex(),k4="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",BP=/|$))/,mZe=_n("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",BP).replace("tag",k4).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),pse=_n(PP).replace("hr",I2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",k4).getRegex(),gZe=_n(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",pse).getRegex(),$P={blockquote:gZe,code:lZe,def:fZe,fences:cZe,heading:uZe,hr:I2,html:mZe,lheading:fse,list:pZe,newline:oZe,paragraph:pse,table:D2,text:dZe},sse=_n("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",I2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",k4).getRegex(),yZe={...$P,lheading:hZe,table:sse,paragraph:_n(PP).replace("hr",I2).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",sse).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",k4).getRegex()},vZe={...$P,html:_n(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",BP).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:D2,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:_n(PP).replace("hr",I2).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",fse).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},xZe=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,bZe=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,mse=/^( {2,}|\\)\n(?!\s*$)/,TZe=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,vse=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,EZe=_n(vse,"u").replace(/punct/g,S4).getRegex(),AZe=_n(vse,"u").replace(/punct/g,yse).getRegex(),xse="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",RZe=_n(xse,"gu").replace(/notPunctSpace/g,gse).replace(/punctSpace/g,FP).replace(/punct/g,S4).getRegex(),_Ze=_n(xse,"gu").replace(/notPunctSpace/g,kZe).replace(/punctSpace/g,wZe).replace(/punct/g,yse).getRegex(),LZe=_n("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,gse).replace(/punctSpace/g,FP).replace(/punct/g,S4).getRegex(),DZe=_n(/\\(punct)/,"gu").replace(/punct/g,S4).getRegex(),IZe=_n(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),MZe=_n(BP).replace("(?:-->|$)","-->").getRegex(),NZe=_n("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",MZe).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),T4=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,PZe=_n(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",T4).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),bse=_n(/^!?\[(label)\]\[(ref)\]/).replace("label",T4).replace("ref",OP).getRegex(),Tse=_n(/^!?\[(ref)\](?:\[\])?/).replace("ref",OP).getRegex(),OZe=_n("reflink|nolink(?!\\()","g").replace("reflink",bse).replace("nolink",Tse).getRegex(),zP={_backpedal:D2,anyPunctuation:DZe,autolink:IZe,blockSkip:SZe,br:mse,code:bZe,del:D2,emStrongLDelim:EZe,emStrongRDelimAst:RZe,emStrongRDelimUnd:LZe,escape:xZe,link:PZe,nolink:Tse,punctuation:CZe,reflink:bse,reflinkSearch:OZe,tag:NZe,text:TZe,url:D2},BZe={...zP,link:_n(/^!?\[(label)\]\((.*?)\)/).replace("label",T4).getRegex(),reflink:_n(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",T4).getRegex()},LP={...zP,emStrongRDelimAst:_Ze,emStrongLDelim:AZe,url:_n(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},ose=o(e=>FZe[e],"ke");o(ru,"w");o(lse,"J");o(cse,"V");o(_2,"z");o(zZe,"ge");o(use,"fe");o(GZe,"Je");C4=class{static{o(this,"y")}options;rules;lexer;constructor(e){this.options=e||Tm}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let r=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?r:_2(r,` +`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let r=t[0],n=GZe(r,t[3]||"",this.rules);return{type:"code",raw:r,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let r=t[2].trim();if(this.rules.other.endingHash.test(r)){let n=_2(r,"#");(this.options.pedantic||!n||this.rules.other.endingSpaceChar.test(n))&&(r=n.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:_2(t[0],` +`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let r=_2(t[0],` +`).split(` +`),n="",i="",a=[];for(;r.length>0;){let s=!1,l=[],u;for(u=0;u1,i={type:"list",raw:"",ordered:n,start:n?+r.slice(0,-1):"",loose:!1,items:[]};r=n?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=n?r:"[*+-]");let a=this.rules.other.listItemRegex(r),s=!1;for(;e;){let u=!1,h="",d="";if(!(t=a.exec(e))||this.rules.block.hr.test(e))break;h=t[0],e=e.substring(h.length);let f=t[2].split(` +`,1)[0].replace(this.rules.other.listReplaceTabs,x=>" ".repeat(3*x.length)),p=e.split(` +`,1)[0],m=!f.trim(),g=0;if(this.options.pedantic?(g=2,d=f.trimStart()):m?g=t[1].length+1:(g=t[2].search(this.rules.other.nonSpaceChar),g=g>4?1:g,d=f.slice(g),g+=t[1].length),m&&this.rules.other.blankLine.test(p)&&(h+=p+` +`,e=e.substring(p.length+1),u=!0),!u){let x=this.rules.other.nextBulletRegex(g),b=this.rules.other.hrRegex(g),T=this.rules.other.fencesBeginRegex(g),k=this.rules.other.headingBeginRegex(g),C=this.rules.other.htmlBeginRegex(g);for(;e;){let w=e.split(` +`,1)[0],S;if(p=w,this.options.pedantic?(p=p.replace(this.rules.other.listReplaceNesting," "),S=p):S=p.replace(this.rules.other.tabCharGlobal," "),T.test(p)||k.test(p)||C.test(p)||x.test(p)||b.test(p))break;if(S.search(this.rules.other.nonSpaceChar)>=g||!p.trim())d+=` +`+S.slice(g);else{if(m||f.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||T.test(f)||k.test(f)||b.test(f))break;d+=` +`+p}!m&&!p.trim()&&(m=!0),h+=w+` +`,e=e.substring(w.length+1),f=S.slice(g)}}i.loose||(s?i.loose=!0:this.rules.other.doubleBlankLine.test(h)&&(s=!0));let y=null,v;this.options.gfm&&(y=this.rules.other.listIsTask.exec(d),y&&(v=y[0]!=="[ ] ",d=d.replace(this.rules.other.listReplaceTask,""))),i.items.push({type:"list_item",raw:h,task:!!y,checked:v,loose:!1,text:d,tokens:[]}),i.raw+=h}let l=i.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let u=0;uf.type==="space"),d=h.length>0&&h.some(f=>this.rules.other.anyLine.test(f.raw));i.loose=d}if(i.loose)for(let u=0;u({text:l,tokens:this.lexer.inline(l),header:!1,align:a.align[u]})));return a}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let r=t[1].charAt(t[1].length-1)===` +`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:r,tokens:this.lexer.inline(r)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let r=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let a=_2(r.slice(0,-1),"\\");if((r.length-a.length)%2===0)return}else{let a=zZe(t[2],"()");if(a===-2)return;if(a>-1){let s=(t[0].indexOf("!")===0?5:4)+t[1].length+a;t[2]=t[2].substring(0,a),t[0]=t[0].substring(0,s).trim(),t[3]=""}}let n=t[2],i="";if(this.options.pedantic){let a=this.rules.other.pedanticHrefTitle.exec(n);a&&(n=a[1],i=a[3])}else i=t[3]?t[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?n=n.slice(1):n=n.slice(1,-1)),use(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let r;if((r=this.rules.inline.reflink.exec(e))||(r=this.rules.inline.nolink.exec(e))){let n=(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[n.toLowerCase()];if(!i){let a=r[0].charAt(0);return{type:"text",raw:a,text:a}}return use(r,i,r[0],this.lexer,this.rules)}}emStrong(e,t,r=""){let n=this.rules.inline.emStrongLDelim.exec(e);if(!(!n||n[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!(n[1]||n[2])||!r||this.rules.inline.punctuation.exec(r))){let i=[...n[0]].length-1,a,s,l=i,u=0,h=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(h.lastIndex=0,t=t.slice(-1*e.length+i);(n=h.exec(t))!=null;){if(a=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!a)continue;if(s=[...a].length,n[3]||n[4]){l+=s;continue}else if((n[5]||n[6])&&i%3&&!((i+s)%3)){u+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l+u);let d=[...n[0]][0].length,f=e.slice(0,i+n.index+d+s);if(Math.min(i,s)%2){let m=f.slice(1,-1);return{type:"em",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}let p=f.slice(2,-2);return{type:"strong",raw:f,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let r=t[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(r),i=this.rules.other.startingSpaceChar.test(r)&&this.rules.other.endingSpaceChar.test(r);return n&&i&&(r=r.substring(1,r.length-1)),{type:"codespan",raw:t[0],text:r}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let r,n;return t[2]==="@"?(r=t[1],n="mailto:"+r):(r=t[1],n=r),{type:"link",raw:t[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let r,n;if(t[2]==="@")r=t[0],n="mailto:"+r;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(i!==t[0]);r=t[0],t[1]==="www."?n="http://"+t[0]:n=t[0]}return{type:"link",raw:t[0],text:r,href:n,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let r=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:r}}}},bh=class DP{static{o(this,"l")}tokens;options;state;tokenizer;inlineQueue;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Tm,this.options.tokenizer=this.options.tokenizer||new C4,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let r={other:_s,block:b4.normal,inline:R2.normal};this.options.pedantic?(r.block=b4.pedantic,r.inline=R2.pedantic):this.options.gfm&&(r.block=b4.gfm,this.options.breaks?r.inline=R2.breaks:r.inline=R2.gfm),this.tokenizer.rules=r}static get rules(){return{block:b4,inline:R2}}static lex(t,r){return new DP(r).lex(t)}static lexInline(t,r){return new DP(r).inlineTokens(t)}lex(t){t=t.replace(_s.carriageReturn,` +`),this.blockTokens(t,this.tokens);for(let r=0;r(i=s.call({lexer:this},t,r))?(t=t.substring(i.raw.length),r.push(i),!0):!1))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let s=r.at(-1);i.raw.length===1&&s!==void 0?s.raw+=` +`:r.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(` +`)?"":` +`)+i.raw,s.text+=` +`+i.text,this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(i=this.tokenizer.fences(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.heading(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.hr(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.blockquote(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.list(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.html(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.def(t)){t=t.substring(i.raw.length);let s=r.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(` +`)?"":` +`)+i.raw,s.text+=` +`+i.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},r.push(i));continue}if(i=this.tokenizer.table(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.lheading(t)){t=t.substring(i.raw.length),r.push(i);continue}let a=t;if(this.options.extensions?.startBlock){let s=1/0,l=t.slice(1),u;this.options.extensions.startBlock.forEach(h=>{u=h.call({lexer:this},l),typeof u=="number"&&u>=0&&(s=Math.min(s,u))}),s<1/0&&s>=0&&(a=t.substring(0,s+1))}if(this.state.top&&(i=this.tokenizer.paragraph(a))){let s=r.at(-1);n&&s?.type==="paragraph"?(s.raw+=(s.raw.endsWith(` +`)?"":` +`)+i.raw,s.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i),n=a.length!==t.length,t=t.substring(i.raw.length);continue}if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let s=r.at(-1);s?.type==="text"?(s.raw+=(s.raw.endsWith(` +`)?"":` +`)+i.raw,s.text+=` +`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):r.push(i);continue}if(t){let s="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,r}inline(t,r=[]){return this.inlineQueue.push({src:t,tokens:r}),r}inlineTokens(t,r=[]){let n=t,i=null;if(this.tokens.links){let l=Object.keys(this.tokens.links);if(l.length>0)for(;(i=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)l.includes(i[0].slice(i[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(i=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,i.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(i=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,i.index)+"["+"a".repeat(i[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let a=!1,s="";for(;t;){a||(s=""),a=!1;let l;if(this.options.extensions?.inline?.some(h=>(l=h.call({lexer:this},t,r))?(t=t.substring(l.raw.length),r.push(l),!0):!1))continue;if(l=this.tokenizer.escape(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.tag(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.link(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(l.raw.length);let h=r.at(-1);l.type==="text"&&h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(l=this.tokenizer.emStrong(t,n,s)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.codespan(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.br(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.del(t)){t=t.substring(l.raw.length),r.push(l);continue}if(l=this.tokenizer.autolink(t)){t=t.substring(l.raw.length),r.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(t))){t=t.substring(l.raw.length),r.push(l);continue}let u=t;if(this.options.extensions?.startInline){let h=1/0,d=t.slice(1),f;this.options.extensions.startInline.forEach(p=>{f=p.call({lexer:this},d),typeof f=="number"&&f>=0&&(h=Math.min(h,f))}),h<1/0&&h>=0&&(u=t.substring(0,h+1))}if(l=this.tokenizer.inlineText(u)){t=t.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(s=l.raw.slice(-1)),a=!0;let h=r.at(-1);h?.type==="text"?(h.raw+=l.raw,h.text+=l.text):r.push(l);continue}if(t){let h="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return r}},w4=class{static{o(this,"P")}options;parser;constructor(e){this.options=e||Tm}space(e){return""}code({text:e,lang:t,escaped:r}){let n=(t||"").match(_s.notSpaceStart)?.[0],i=e.replace(_s.endingNewline,"")+` +`;return n?'
'+(r?i:ru(i,!0))+`
+`:"
"+(r?i:ru(i,!0))+`
+`}blockquote({tokens:e}){return`
+${this.parser.parse(e)}
+`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)} +`}hr(e){return`
+`}list(e){let t=e.ordered,r=e.start,n="";for(let s=0;s +`+n+" +`}listitem(e){let t="";if(e.task){let r=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type==="paragraph"?(e.tokens[0].text=r+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=r+" "+ru(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):t+=r+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`
  • ${t}
  • +`}checkbox({checked:e}){return"'}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    +`}table(e){let t="",r="";for(let i=0;i${n}`),` + +`+t+` +`+n+`
    +`}tablerow({text:e}){return` +${e} +`}tablecell(e){let t=this.parser.parseInline(e.tokens),r=e.header?"th":"td";return(e.align?`<${r} align="${e.align}">`:`<${r}>`)+t+` +`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${ru(e,!0)}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:r}){let n=this.parser.parseInline(r),i=lse(e);if(i===null)return n;e=i;let a='
    ",a}image({href:e,title:t,text:r,tokens:n}){n&&(r=this.parser.parseInline(n,this.parser.textRenderer));let i=lse(e);if(i===null)return ru(r);e=i;let a=`${r}{let s=i[a].flat(1/0);r=r.concat(this.walkTokens(s,t))}):i.tokens&&(r=r.concat(this.walkTokens(i.tokens,t)))}}return r}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(r=>{let n={...r};if(n.async=this.defaults.async||n.async||!1,r.extensions&&(r.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){let a=t.renderers[i.name];a?t.renderers[i.name]=function(...s){let l=i.renderer.apply(this,s);return l===!1&&(l=a.apply(this,s)),l}:t.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let a=t[i.level];a?a.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level==="block"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level==="inline"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),n.extensions=t),r.renderer){let i=this.defaults.renderer||new w4(this.defaults);for(let a in r.renderer){if(!(a in i))throw new Error(`renderer '${a}' does not exist`);if(["options","parser"].includes(a))continue;let s=a,l=r.renderer[s],u=i[s];i[s]=(...h)=>{let d=l.apply(i,h);return d===!1&&(d=u.apply(i,h)),d||""}}n.renderer=i}if(r.tokenizer){let i=this.defaults.tokenizer||new C4(this.defaults);for(let a in r.tokenizer){if(!(a in i))throw new Error(`tokenizer '${a}' does not exist`);if(["options","rules","lexer"].includes(a))continue;let s=a,l=r.tokenizer[s],u=i[s];i[s]=(...h)=>{let d=l.apply(i,h);return d===!1&&(d=u.apply(i,h)),d}}n.tokenizer=i}if(r.hooks){let i=this.defaults.hooks||new L2;for(let a in r.hooks){if(!(a in i))throw new Error(`hook '${a}' does not exist`);if(["options","block"].includes(a))continue;let s=a,l=r.hooks[s],u=i[s];L2.passThroughHooks.has(a)?i[s]=h=>{if(this.defaults.async&&L2.passThroughHooksRespectAsync.has(a))return Promise.resolve(l.call(i,h)).then(f=>u.call(i,f));let d=l.call(i,h);return u.call(i,d)}:i[s]=(...h)=>{let d=l.apply(i,h);return d===!1&&(d=u.apply(i,h)),d}}n.hooks=i}if(r.walkTokens){let i=this.defaults.walkTokens,a=r.walkTokens;n.walkTokens=function(s){let l=[];return l.push(a.call(this,s)),i&&(l=l.concat(i.call(this,s))),l}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return bh.lex(e,t??this.defaults)}parser(e,t){return Th.parse(e,t??this.defaults)}parseMarkdown(e){return(t,r)=>{let n={...r},i={...this.defaults,...n},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&n.async===!1)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return a(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=e);let s=i.hooks?i.hooks.provideLexer():e?bh.lex:bh.lexInline,l=i.hooks?i.hooks.provideParser():e?Th.parse:Th.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(t):t).then(u=>s(u,i)).then(u=>i.hooks?i.hooks.processAllTokens(u):u).then(u=>i.walkTokens?Promise.all(this.walkTokens(u,i.walkTokens)).then(()=>u):u).then(u=>l(u,i)).then(u=>i.hooks?i.hooks.postprocess(u):u).catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let u=s(t,i);i.hooks&&(u=i.hooks.processAllTokens(u)),i.walkTokens&&this.walkTokens(u,i.walkTokens);let h=l(u,i);return i.hooks&&(h=i.hooks.postprocess(h)),h}catch(u){return a(u)}}}onError(e,t){return r=>{if(r.message+=` +Please report this to https://github.com/markedjs/marked.`,e){let n="

    An error occurred:

    "+ru(r.message+"",!0)+"
    ";return t?Promise.resolve(n):n}if(t)return Promise.reject(r);throw r}}},bm=new VZe;o(Sn,"d");Sn.options=Sn.setOptions=function(e){return bm.setOptions(e),Sn.defaults=bm.defaults,hse(Sn.defaults),Sn};Sn.getDefaults=MP;Sn.defaults=Tm;Sn.use=function(...e){return bm.use(...e),Sn.defaults=bm.defaults,hse(Sn.defaults),Sn};Sn.walkTokens=function(e,t){return bm.walkTokens(e,t)};Sn.parseInline=bm.parseInline;Sn.Parser=Th;Sn.parser=Th.parse;Sn.Renderer=w4;Sn.TextRenderer=GP;Sn.Lexer=bh;Sn.lexer=bh.lex;Sn.Tokenizer=C4;Sn.Hooks=L2;Sn.parse=Sn;yir=Sn.options,vir=Sn.setOptions,xir=Sn.use,bir=Sn.walkTokens,Tir=Sn.parseInline,Cir=Th.parse,wir=bh.lex});function WZe(e,{markdownAutoWrap:t}){let n=e.replace(//g,` +`).replace(/\n{2,}/g,` +`);return mS(n)}function wse(e){return e.split(/\\n|\n|/gi).map(t=>t.trim().match(/<[^>]+>|[^\s<>]+/g)?.map(r=>({content:r,type:"normal"}))??[])}function kse(e,t={}){let r=WZe(e,t),n=Sn.lexer(r),i=[[]],a=0;function s(l,u="normal"){l.type==="text"?l.text.split(` +`).forEach((d,f)=>{f!==0&&(a++,i.push([])),d.split(" ").forEach(p=>{p=p.replace(/'/g,"'"),p&&i[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&i[a].push({content:l.text,type:"normal"})}return o(s,"processNode"),n.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(u=>{s(u)}):l.type==="html"?i[a].push({content:l.text,type:"normal"}):i[a].push({content:l.raw,type:"normal"})}),i}function Sse(e){return e?`

    ${e.replace(/\\n|\n/g,"
    ")}

    `:""}function Ese(e,{markdownAutoWrap:t}={}){let r=Sn.lexer(e);function n(i){return i.type==="text"?t===!1?i.text.replace(/\n */g,"
    ").replace(/ /g," "):i.text.replace(/\n */g,"
    "):i.type==="strong"?`${i.tokens?.map(n).join("")}`:i.type==="em"?`${i.tokens?.map(n).join("")}`:i.type==="paragraph"?`

    ${i.tokens?.map(n).join("")}

    `:i.type==="space"?"":i.type==="html"?`${i.text}`:i.type==="escape"?i.text:(Z.warn(`Unsupported markdown: ${i.type}`),i.raw)}return o(n,"output"),r.map(n).join("")}var Ase=F(()=>{"use strict";Cse();h8();vt();o(WZe,"preprocessMarkdown");o(wse,"nonMarkdownToLines");o(kse,"markdownToLines");o(Sse,"nonMarkdownToHTML");o(Ese,"markdownToHTML")});function qZe(e){return Intl.Segmenter?[...new Intl.Segmenter().segment(e)].map(t=>t.segment):[...e]}function HZe(e,t){let r=qZe(t.content);return Rse(e,[],r,t.type)}function Rse(e,t,r,n){if(r.length===0)return[{content:t.join(""),type:n},{content:"",type:n}];let[i,...a]=r,s=[...t,i];return e([{content:s.join(""),type:n}])?Rse(e,s,a,n):(t.length===0&&i&&(t.push(i),r.shift()),[{content:t.join(""),type:n},{content:r.join(""),type:n}])}function _se(e,t){if(e.some(({content:r})=>r.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return VP(e,t)}function VP(e,t,r=[],n=[]){if(e.length===0)return n.length>0&&r.push(n),r.length>0?r:[];let i="";e[0].content===" "&&(i=" ",e.shift());let a=e.shift()??{content:" ",type:"normal"},s=[...n];if(i!==""&&s.push({content:i,type:"normal"}),s.push(a),t(s))return VP(e,t,r,s);if(n.length>0)r.push(n),e.unshift(a);else if(a.content){let[l,u]=HZe(t,a);r.push([l]),u.content&&e.unshift(u)}return VP(e,t,r)}var Lse=F(()=>{"use strict";o(qZe,"splitTextToChars");o(HZe,"splitWordToFitWidth");o(Rse,"splitWordToFitWidthRecursion");o(_se,"splitLineToFitWidth");o(VP,"splitLineToFitWidthRecursion")});function Dse(e,t){t&&e.attr("style",t)}async function UZe(e,t,r,n,i=!1,a=_t()){let s=e.append("foreignObject");s.attr("width",`${Math.min(10*r,Ise)}px`),s.attr("height",`${Math.min(10*r,Ise)}px`);let l=s.append("xhtml:div"),u=ni(t.label)?await ey(t.label.replace(xt.lineBreakRegex,` +`),a):mr(t.label,a),h=t.isNode?"nodeLabel":"edgeLabel",d=l.append("span");d.html(u),Dse(d,t.labelStyle),d.attr("class",`${h} ${n}`),Dse(l,t.labelStyle),l.style("display","table-cell"),l.style("white-space","nowrap"),l.style("line-height","1.5"),r!==Number.POSITIVE_INFINITY&&(l.style("max-width",r+"px"),l.style("text-align","center")),l.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&l.attr("class","labelBkg");let f=l.node().getBoundingClientRect();return f.width===r&&(l.style("display","table"),l.style("white-space","break-spaces"),l.style("width",r+"px"),f=l.node().getBoundingClientRect()),s.node()}function WP(e,t,r,n=!1){let i=e.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",t*r-.1+"em").attr("dy",r+"em");return n&&i.attr("text-anchor","middle"),i}function YZe(e,t,r){let n=e.append("text"),i=WP(n,1,t);qP(i,r);let a=i.node().getComputedTextLength();return n.remove(),a}function Nse(e,t,r){let n=e.append("text"),i=WP(n,1,t);qP(i,[{content:r,type:"normal"}]);let a=i.node()?.getBoundingClientRect();return a&&n.remove(),a}function jZe(e,t,r,n=!1,i=!1){let s=t.append("g"),l=s.insert("rect").attr("class","background").attr("style","stroke: none"),u=s.append("text").attr("y","-10.1");i&&u.attr("text-anchor","middle");let h=0;for(let d of r){let f=o(m=>YZe(s,1.1,m)<=e,"checkWidth"),p=f(d)?[d]:_se(d,f);for(let m of p){let g=WP(u,h,1.1,i);qP(g,m),h++}}if(n){let d=u.node().getBBox(),f=2;return l.attr("x",d.x-f).attr("y",d.y-f).attr("width",d.width+2*f).attr("height",d.height+2*f),s.node()}else return u.node()}function Mse(e){let t=/&(amp|lt|gt);/g;return e.replace(t,(r,n)=>{switch(n){case"amp":return"&";case"lt":return"<";case"gt":return">";default:return r}})}function qP(e,t){e.text(""),t.forEach((r,n)=>{let i=e.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");n===0?i.text(Mse(r.content)):i.text(" "+Mse(r.content))})}async function XZe(e,t={}){let r=[];e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(i,a,s)=>(r.push((async()=>{let l=`${a}:${s}`;return await iJ(l)?await ts(l,void 0,{class:"label-icon"}):``})()),i));let n=await Promise.all(r);return e.replace(/(fa[bklrs]?):fa-([\w-]+)/g,()=>n.shift()??"")}var Ise,Pn,Ls=F(()=>{"use strict";$r();Vr();vt();Ase();Qt();Vl();Lse();ur();o(Dse,"applyStyle");Ise=16384;o(UZe,"addHtmlSpan");o(WP,"createTspan");o(YZe,"computeWidthOfText");o(Nse,"computeDimensionOfText");o(jZe,"createFormattedText");o(Mse,"decodeHTMLEntities");o(qP,"updateTextContentAndStyles");o(XZe,"replaceIconSubstring");Pn=o(async(e,t="",{style:r="",isTitle:n=!1,classes:i="",useHtmlLabels:a=!0,markdown:s=!0,isNode:l=!0,width:u=200,addSvgBackground:h=!1}={},d)=>{if(Z.debug("XYZ createText",t,r,n,i,a,l,"addSvgBackground: ",h),a){let f=s?Ese(t,d):Sse(t),p=await XZe(Rs(f),d),m=t.replace(/\\\\/g,"\\"),g={isNode:l,label:ni(t)?m:p,labelStyle:r.replace("fill:","color:")};return await UZe(e,g,u,i,h,d)}else{let f=Rs(t.replace(//g,"
    ")),p=s?kse(f.replace("
    ","
    "),d):wse(f),m=jZe(u,e,p,t?h:!1,!l);if(l){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");et(m).attr("style",g)}else{let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");et(m).select("rect").attr("style",g.replace(/background:/g,"fill:"));let y=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");et(m).select("text").attr("style",y)}return n?et(m).selectAll("tspan.text-outer-tspan").classed("title-row",!0):et(m).selectAll("tspan.text-outer-tspan").classed("row",!0),m}},"createText")});async function E4(e,t){let r=e.getElementsByTagName("img");if(!r||r.length===0)return;let n=t.replace(/]*>/g,"").trim()==="";await Promise.all([...r].map(i=>new Promise(a=>{function s(){if(i.style.display="flex",i.style.flexDirection="column",n){let l=Ae().fontSize?Ae().fontSize:window.getComputedStyle(document.body).fontSize,u=5,[h=cr.fontSize]=As(l),d=h*u+"px";i.style.minWidth=d,i.style.maxWidth=d}else i.style.width="100%";a(i)}o(s,"setupImage"),setTimeout(()=>{i.complete&&s()}),i.addEventListener("error",s),i.addEventListener("load",s)})))}var HP=F(()=>{"use strict";Xt();Wi();Qt();o(E4,"configureLabelImages")});function or(e){let t=e.map((r,n)=>`${n===0?"M":"L"}${r.x},${r.y}`);return t.push("Z"),t.join(" ")}function fl(e,t,r,n,i,a){let s=[],u=r-e,h=n-t,d=u/a,f=2*Math.PI/d,p=t+h/2;for(let m=0;m<=50;m++){let g=m/50,y=e+g*u,v=p+i*Math.sin(f*(y-e));s.push({x:y,y:v})}return s}function Cm(e,t,r,n,i,a){let s=[],l=i*Math.PI/180,d=(a*Math.PI/180-l)/(n-1);for(let f=0;fu.tagName==="path"),r=document.createElementNS("http://www.w3.org/2000/svg","path"),n=t.map(u=>u.getAttribute("d")).filter(u=>u!==null).join(" ");r.setAttribute("d",n);let i=t.find(u=>u.getAttribute("fill")!=="none"),a=t.find(u=>u.getAttribute("stroke")!=="none"),s=o((u,h)=>u?.getAttribute(h)??void 0,"getAttr");if(i){let u={fill:s(i,"fill"),"fill-opacity":s(i,"fill-opacity")??"1"};Object.entries(u).forEach(([h,d])=>{d&&r.setAttribute(h,d)})}if(a){let u={stroke:s(a,"stroke"),"stroke-width":s(a,"stroke-width")??"1","stroke-opacity":s(a,"stroke-opacity")??"1"};Object.entries(u).forEach(([h,d])=>{d&&r.setAttribute(h,d)})}let l=document.createElementNS("http://www.w3.org/2000/svg","g");return l.appendChild(r),l}var It,A4,pt,Dt,Kt=F(()=>{"use strict";Ls();Xt();ur();$r();Vr();Qt();HP();It=o(async(e,t,r)=>{let n,i=t.useHtmlLabels||ya(Ae()?.htmlLabels);r?n=r:n="node default";let a=e.insert("g").attr("class",n).attr("id",t.domId||t.id),s=a.insert("g").attr("class","label").attr("style",kn(t.labelStyle)),l;t.label===void 0?l="":l=typeof t.label=="string"?t.label:t.label[0];let u=!!t.icon||!!t.img,h=t.labelType==="markdown",d=await Pn(s,mr(Rs(l),Ae()),{useHtmlLabels:i,width:t.width||Ae().flowchart?.wrappingWidth,classes:h?"markdown-node-label":"",style:t.labelStyle,addSvgBackground:u,markdown:h},Ae()),f=d.getBBox(),p=(t?.padding??0)/2;if(i){let m=d.children[0],g=et(d);await E4(m,l),f=m.getBoundingClientRect(),g.attr("width",f.width),g.attr("height",f.height)}return i?s.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):s.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&s.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:f,halfPadding:p,label:s}},"labelHelper"),A4=o(async(e,t,r)=>{let n=r.useHtmlLabels??Gr(Ae()),i=e.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await Pn(i,mr(Rs(t),Ae()),{useHtmlLabels:n,width:r.width||Ae()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),l=r.padding/2;if(Gr(Ae())){let u=a.children[0],h=et(a);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}return n?i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):i.attr("transform","translate(0, "+-s.height/2+")"),r.centerLabel&&i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),i.insert("rect",":first-child"),{shapeSvg:e,bbox:s,halfPadding:l,label:i}},"insertLabel"),pt=o((e,t)=>{let r=t.node().getBBox();e.width=r.width,e.height=r.height},"updateNodeBounds"),Dt=o((e,t)=>(e.look==="handDrawn"?"rough-node":"node")+" "+e.cssClasses+" "+(t||""),"getNodeClasses");o(or,"createPathFromPoints");o(fl,"generateFullSineWavePoints");o(Cm,"generateCirclePoints");o(UP,"mergePaths")});function KZe(e,t){return e.intersect(t)}var Pse,Ose=F(()=>{"use strict";o(KZe,"intersectNode");Pse=KZe});function ZZe(e,t,r,n){var i=e.x,a=e.y,s=i-n.x,l=a-n.y,u=Math.sqrt(t*t*l*l+r*r*s*s),h=Math.abs(t*r*s/u);n.x{"use strict";o(ZZe,"intersectEllipse");R4=ZZe});function QZe(e,t,r){return R4(e,t,t,r)}var Bse,$se=F(()=>{"use strict";YP();o(QZe,"intersectCircle");Bse=QZe});function JZe(e,t,r,n){{let i=t.y-e.y,a=e.x-t.x,s=t.x*e.y-e.x*t.y,l=i*r.x+a*r.y+s,u=i*n.x+a*n.y+s,h=1e-6;if(l!==0&&u!==0&&Fse(l,u))return;let d=n.y-r.y,f=r.x-n.x,p=n.x*r.y-r.x*n.y,m=d*e.x+f*e.y+p,g=d*t.x+f*t.y+p;if(Math.abs(m)0}var zse,Gse=F(()=>{"use strict";o(JZe,"intersectLine");o(Fse,"sameSign");zse=JZe});function eQe(e,t,r){let n=e.x,i=e.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(d){s=Math.min(s,d.x),l=Math.min(l,d.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));let u=n-e.width/2-s,h=i-e.height/2-l;for(let d=0;d1&&a.sort(function(d,f){let p=d.x-r.x,m=d.y-r.y,g=Math.sqrt(p*p+m*m),y=f.x-r.x,v=f.y-r.y,x=Math.sqrt(y*y+v*v);return g{"use strict";Gse();o(eQe,"intersectPolygon");Vse=eQe});var tQe,nu,_4=F(()=>{"use strict";tQe=o((e,t)=>{var r=e.x,n=e.y,i=t.x-r,a=t.y-n,s=e.width/2,l=e.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),nu=tQe});var ht,nr=F(()=>{"use strict";Ose();$se();YP();Wse();_4();ht={node:Pse,circle:Bse,ellipse:R4,polygon:Vse,rect:nu}});var qse,iu,rQe,M2,ct,dt,nQe,Jt=F(()=>{"use strict";Xt();qse=o(e=>{let{handDrawnSeed:t}=Ae();return{fill:e,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:e,seed:t}},"solidStateFill"),iu=o(e=>{let t=rQe([...e.cssCompiledStyles||[],...e.cssStyles||[],...e.labelStyle||[]]);return{stylesMap:t,stylesArray:[...t]}},"compileStyles"),rQe=o(e=>{let t=new Map;return e.forEach(r=>{let[n,i]=r.split(":");t.set(n.trim(),i?.trim())}),t},"styles2Map"),M2=o(e=>e==="color"||e==="font-size"||e==="font-family"||e==="font-weight"||e==="font-style"||e==="text-decoration"||e==="text-align"||e==="text-transform"||e==="line-height"||e==="letter-spacing"||e==="word-spacing"||e==="text-shadow"||e==="text-overflow"||e==="white-space"||e==="word-wrap"||e==="word-break"||e==="overflow-wrap"||e==="hyphens","isLabelStyle"),ct=o(e=>{let{stylesArray:t}=iu(e),r=[],n=[],i=[],a=[];return t.forEach(s=>{let l=s[0];M2(l)?r.push(s.join(":")+" !important"):(n.push(s.join(":")+" !important"),l.includes("stroke")&&i.push(s.join(":")+" !important"),l==="fill"&&a.push(s.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:t,borderStyles:i,backgroundStyles:a}},"styles2String"),dt=o((e,t)=>{let{themeVariables:r,handDrawnSeed:n}=Ae(),{nodeBorder:i,mainBkg:a}=r,{stylesMap:s}=iu(e);return Object.assign({roughness:.7,fill:s.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:s.get("stroke")||i,seed:n,strokeWidth:s.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:nQe(s.get("stroke-dasharray"))},t)},"userNodeOverrides"),nQe=o(e=>{if(!e)return[0,0];let t=e.trim().split(/\s+/).map(Number);if(t.length===1){let i=isNaN(t[0])?0:t[0];return[i,i]}let r=isNaN(t[0])?0:t[0],n=isNaN(t[1])?0:t[1];return[r,n]},"getStrokeDashArray")});function jP(e,t,r){if(e&&e.length){let[n,i]=t,a=Math.PI/180*r,s=Math.cos(a),l=Math.sin(a);for(let u of e){let[h,d]=u;u[0]=(h-n)*s-(d-i)*l+n,u[1]=(h-n)*l+(d-i)*s+i}}}function iQe(e,t){return e[0]===t[0]&&e[1]===t[1]}function aQe(e,t,r,n=1){let i=r,a=Math.max(t,.1),s=e[0]&&e[0][0]&&typeof e[0][0]=="number"?[e]:e,l=[0,0];if(i)for(let h of s)jP(h,l,i);let u=(function(h,d,f){let p=[];for(let b of h){let T=[...b];iQe(T[0],T[T.length-1])||T.push([T[0][0],T[0][1]]),T.length>2&&p.push(T)}let m=[];d=Math.max(d,.1);let g=[];for(let b of p)for(let T=0;Tb.yminT.ymin?1:b.xT.x?1:b.ymax===T.ymax?0:(b.ymax-T.ymax)/Math.abs(b.ymax-T.ymax))),!g.length)return m;let y=[],v=g[0].ymin,x=0;for(;y.length||g.length;){if(g.length){let b=-1;for(let T=0;Tv);T++)b=T;g.splice(0,b+1).forEach((T=>{y.push({s:v,edge:T})}))}if(y=y.filter((b=>!(b.edge.ymax<=v))),y.sort(((b,T)=>b.edge.x===T.edge.x?0:(b.edge.x-T.edge.x)/Math.abs(b.edge.x-T.edge.x))),(f!==1||x%d==0)&&y.length>1)for(let b=0;b=y.length)break;let k=y[b].edge,C=y[T].edge;m.push([[Math.round(k.x),v],[Math.round(C.x),v]])}v+=f,y.forEach((b=>{b.edge.x=b.edge.x+f*b.edge.islope})),x++}return m})(s,a,n);if(i){for(let h of s)jP(h,l,-i);(function(h,d,f){let p=[];h.forEach((m=>p.push(...m))),jP(p,d,f)})(u,l,-i)}return u}function B2(e,t){var r;let n=t.hachureAngle+90,i=t.hachureGap;i<0&&(i=4*t.strokeWidth),i=Math.round(Math.max(i,.1));let a=1;return t.roughness>=1&&(((r=t.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(a=i),aQe(e,i,n,a||1)}function $4(e){let t=e[0],r=e[1];return Math.sqrt(Math.pow(t[0]-r[0],2)+Math.pow(t[1]-r[1],2))}function KP(e,t){return e.type===t}function uO(e){let t=[],r=(function(s){let l=new Array;for(;s!=="";)if(s.match(/^([ \t\r\n,]+)/))s=s.substr(RegExp.$1.length);else if(s.match(/^([aAcChHlLmMqQsStTvVzZ])/))l[l.length]={type:sQe,text:RegExp.$1},s=s.substr(RegExp.$1.length);else{if(!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];l[l.length]={type:XP,text:`${parseFloat(RegExp.$1)}`},s=s.substr(RegExp.$1.length)}return l[l.length]={type:Hse,text:""},l})(e),n="BOD",i=0,a=r[i];for(;!KP(a,Hse);){let s=0,l=[];if(n==="BOD"){if(a.text!=="M"&&a.text!=="m")return uO("M0,0"+e);i++,s=L4[a.text],n=a.text}else KP(a,XP)?s=L4[n]:(i++,s=L4[a.text],n=a.text);if(!(i+sd%2?h+r:h+t));a.push({key:"C",data:u}),t=u[4],r=u[5];break}case"Q":a.push({key:"Q",data:[...l]}),t=l[2],r=l[3];break;case"q":{let u=l.map(((h,d)=>d%2?h+r:h+t));a.push({key:"Q",data:u}),t=u[2],r=u[3];break}case"A":a.push({key:"A",data:[...l]}),t=l[5],r=l[6];break;case"a":t+=l[5],r+=l[6],a.push({key:"A",data:[l[0],l[1],l[2],l[3],l[4],t,r]});break;case"H":a.push({key:"H",data:[...l]}),t=l[0];break;case"h":t+=l[0],a.push({key:"H",data:[t]});break;case"V":a.push({key:"V",data:[...l]}),r=l[0];break;case"v":r+=l[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...l]}),t=l[2],r=l[3];break;case"s":{let u=l.map(((h,d)=>d%2?h+r:h+t));a.push({key:"S",data:u}),t=u[2],r=u[3];break}case"T":a.push({key:"T",data:[...l]}),t=l[0],r=l[1];break;case"t":t+=l[0],r+=l[1],a.push({key:"T",data:[t,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),t=n,r=i}return a}function eoe(e){let t=[],r="",n=0,i=0,a=0,s=0,l=0,u=0;for(let{key:h,data:d}of e){switch(h){case"M":t.push({key:"M",data:[...d]}),[n,i]=d,[a,s]=d;break;case"C":t.push({key:"C",data:[...d]}),n=d[4],i=d[5],l=d[2],u=d[3];break;case"L":t.push({key:"L",data:[...d]}),[n,i]=d;break;case"H":n=d[0],t.push({key:"L",data:[n,i]});break;case"V":i=d[0],t.push({key:"L",data:[n,i]});break;case"S":{let f=0,p=0;r==="C"||r==="S"?(f=n+(n-l),p=i+(i-u)):(f=n,p=i),t.push({key:"C",data:[f,p,...d]}),l=d[0],u=d[1],n=d[2],i=d[3];break}case"T":{let[f,p]=d,m=0,g=0;r==="Q"||r==="T"?(m=n+(n-l),g=i+(i-u)):(m=n,g=i);let y=n+2*(m-n)/3,v=i+2*(g-i)/3,x=f+2*(m-f)/3,b=p+2*(g-p)/3;t.push({key:"C",data:[y,v,x,b,f,p]}),l=m,u=g,n=f,i=p;break}case"Q":{let[f,p,m,g]=d,y=n+2*(f-n)/3,v=i+2*(p-i)/3,x=m+2*(f-m)/3,b=g+2*(p-g)/3;t.push({key:"C",data:[y,v,x,b,m,g]}),l=f,u=p,n=m,i=g;break}case"A":{let f=Math.abs(d[0]),p=Math.abs(d[1]),m=d[2],g=d[3],y=d[4],v=d[5],x=d[6];f===0||p===0?(t.push({key:"C",data:[n,i,v,x,v,x]}),n=v,i=x):(n!==v||i!==x)&&(toe(n,i,v,x,f,p,m,g,y).forEach((function(b){t.push({key:"C",data:b})})),n=v,i=x);break}case"Z":t.push({key:"Z",data:[]}),n=a,i=s}r=h}return t}function N2(e,t,r){return[e*Math.cos(r)-t*Math.sin(r),e*Math.sin(r)+t*Math.cos(r)]}function toe(e,t,r,n,i,a,s,l,u,h){let d=(f=s,Math.PI*f/180);var f;let p=[],m=0,g=0,y=0,v=0;if(h)[m,g,y,v]=h;else{[e,t]=N2(e,t,-d),[r,n]=N2(r,n,-d);let A=(e-r)/2,M=(t-n)/2,D=A*A/(i*i)+M*M/(a*a);D>1&&(D=Math.sqrt(D),i*=D,a*=D);let P=i*i,B=a*a,O=P*B-P*M*M-B*A*A,$=P*M*M+B*A*A,V=(l===u?-1:1)*Math.sqrt(Math.abs(O/$));y=V*i*M/a+(e+r)/2,v=V*-a*A/i+(t+n)/2,m=Math.asin(parseFloat(((t-v)/a).toFixed(9))),g=Math.asin(parseFloat(((n-v)/a).toFixed(9))),eg&&(m-=2*Math.PI),!u&&g>m&&(g-=2*Math.PI)}let x=g-m;if(Math.abs(x)>120*Math.PI/180){let A=g,M=r,D=n;g=u&&g>m?m+120*Math.PI/180*1:m+120*Math.PI/180*-1,p=toe(r=y+i*Math.cos(g),n=v+a*Math.sin(g),M,D,i,a,s,0,u,[g,A,y,v])}x=g-m;let b=Math.cos(m),T=Math.sin(m),k=Math.cos(g),C=Math.sin(g),w=Math.tan(x/4),S=4/3*i*w,R=4/3*a*w,L=[e,t],N=[e+S*T,t-R*b],I=[r+S*C,n-R*k],_=[r,n];if(N[0]=2*L[0]-N[0],N[1]=2*L[1]-N[1],h)return[N,I,_].concat(p);{p=[N,I,_].concat(p);let A=[];for(let M=0;M2){let i=[];for(let a=0;a2*Math.PI&&(m=0,g=2*Math.PI);let y=2*Math.PI/u.curveStepCount,v=Math.min(y/2,(g-m)/2),x=Zse(v,h,d,f,p,m,g,1,u);if(!u.disableMultiStroke){let b=Zse(v,h,d,f,p,m,g,1.5,u);x.push(...b)}return s&&(l?x.push(...Jd(h,d,h+f*Math.cos(m),d+p*Math.sin(m),u),...Jd(h,d,h+f*Math.cos(g),d+p*Math.sin(g),u)):x.push({op:"lineTo",data:[h,d]},{op:"lineTo",data:[h+f*Math.cos(m),d+p*Math.sin(m)]})),{type:"path",ops:x}}function jse(e,t){let r=eoe(Jse(uO(e))),n=[],i=[0,0],a=[0,0];for(let{key:s,data:l}of r)switch(s){case"M":a=[l[0],l[1]],i=[l[0],l[1]];break;case"L":n.push(...Jd(a[0],a[1],l[0],l[1],t)),a=[l[0],l[1]];break;case"C":{let[u,h,d,f,p,m]=l;n.push(...cQe(u,h,d,f,p,m,a,t)),a=[p,m];break}case"Z":n.push(...Jd(a[0],a[1],i[0],i[1],t)),a=[i[0],i[1]]}return{type:"path",ops:n}}function ZP(e,t){let r=[];for(let n of e)if(n.length){let i=t.maxRandomnessOffset||0,a=n.length;if(a>2){r.push({op:"move",data:[n[0][0]+Cr(i,t),n[0][1]+Cr(i,t)]});for(let s=1;s500?.4:-.0016668*u+1.233334;let d=i.maxRandomnessOffset||0;d*d*100>l&&(d=u/10);let f=d/2,p=.2+.2*ioe(i),m=i.bowing*i.maxRandomnessOffset*(n-t)/200,g=i.bowing*i.maxRandomnessOffset*(e-r)/200;m=Cr(m,i,h),g=Cr(g,i,h);let y=[],v=o(()=>Cr(f,i,h),"M"),x=o(()=>Cr(d,i,h),"k"),b=i.preserveVertices;return a&&(s?y.push({op:"move",data:[e+(b?0:v()),t+(b?0:v())]}):y.push({op:"move",data:[e+(b?0:Cr(d,i,h)),t+(b?0:Cr(d,i,h))]})),s?y.push({op:"bcurveTo",data:[m+e+(r-e)*p+v(),g+t+(n-t)*p+v(),m+e+2*(r-e)*p+v(),g+t+2*(n-t)*p+v(),r+(b?0:v()),n+(b?0:v())]}):y.push({op:"bcurveTo",data:[m+e+(r-e)*p+x(),g+t+(n-t)*p+x(),m+e+2*(r-e)*p+x(),g+t+2*(n-t)*p+x(),r+(b?0:x()),n+(b?0:x())]}),y}function D4(e,t,r){if(!e.length)return[];let n=[];n.push([e[0][0]+Cr(t,r),e[0][1]+Cr(t,r)]),n.push([e[0][0]+Cr(t,r),e[0][1]+Cr(t,r)]);for(let i=1;i3){let a=[],s=1-r.curveTightness;i.push({op:"move",data:[e[1][0],e[1][1]]});for(let l=1;l+21&&i.push(l)):i.push(l),i.push(e[t+3])}else{let u=e[t+0],h=e[t+1],d=e[t+2],f=e[t+3],p=wm(u,h,.5),m=wm(h,d,.5),g=wm(d,f,.5),y=wm(p,m,.5),v=wm(m,g,.5),x=wm(y,v,.5);oO([u,p,y,x],0,r,i),oO([x,v,g,f],0,r,i)}var a,s;return i}function hQe(e,t){return B4(e,0,e.length,t)}function B4(e,t,r,n,i){let a=i||[],s=e[t],l=e[r-1],u=0,h=1;for(let d=t+1;du&&(u=f,h=d)}return Math.sqrt(u)>n?(B4(e,t,h+1,n,a),B4(e,h,r,n,a)):(a.length||a.push(s),a.push(l)),a}function QP(e,t=.15,r){let n=[],i=(e.length-1)/3;for(let a=0;a0?B4(n,0,n.length,r):n}var O2,JP,eO,tO,rO,nO,no,iO,sQe,XP,Hse,L4,oQe,zo,zy,lO,I4,cO,ut,tr=F(()=>{"use strict";o(jP,"t");o(iQe,"e");o(aQe,"s");o(B2,"n");O2=class{static{o(this,"o")}constructor(t){this.helper=t}fillPolygons(t,r){return this._fillPolygons(t,r)}_fillPolygons(t,r){let n=B2(t,r);return{type:"fillSketch",ops:this.renderLines(n,r)}}renderLines(t,r){let n=[];for(let i of t)n.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],r));return n}};o($4,"a");JP=class extends O2{static{o(this,"h")}fillPolygons(t,r){let n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let i=B2(t,Object.assign({},r,{hachureGap:n})),a=Math.PI/180*r.hachureAngle,s=[],l=.5*n*Math.cos(a),u=.5*n*Math.sin(a);for(let[h,d]of i)$4([h,d])&&s.push([[h[0]-l,h[1]+u],[...d]],[[h[0]+l,h[1]-u],[...d]]);return{type:"fillSketch",ops:this.renderLines(s,r)}}},eO=class extends O2{static{o(this,"r")}fillPolygons(t,r){let n=this._fillPolygons(t,r),i=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),a=this._fillPolygons(t,i);return n.ops=n.ops.concat(a.ops),n}},tO=class{static{o(this,"i")}constructor(t){this.helper=t}fillPolygons(t,r){let n=B2(t,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(n,r)}dotsOnLines(t,r){let n=[],i=r.hachureGap;i<0&&(i=4*r.strokeWidth),i=Math.max(i,.1);let a=r.fillWeight;a<0&&(a=r.strokeWidth/2);let s=i/4;for(let l of t){let u=$4(l),h=u/i,d=Math.ceil(h)-1,f=u-d*i,p=(l[0][0]+l[1][0])/2-i/4,m=Math.min(l[0][1],l[1][1]);for(let g=0;g{let l=$4(s),u=Math.floor(l/(n+i)),h=(l+i-u*(n+i))/2,d=s[0],f=s[1];d[0]>f[0]&&(d=s[1],f=s[0]);let p=Math.atan((f[1]-d[1])/(f[0]-d[0]));for(let m=0;m{let s=$4(a),l=Math.round(s/(2*r)),u=a[0],h=a[1];u[0]>h[0]&&(u=a[1],h=a[0]);let d=Math.atan((h[1]-u[1])/(h[0]-u[0]));for(let f=0;f2*Math.PI&&(S=0,R=2*Math.PI);let L=(R-S)/b.curveStepCount,N=[];for(let I=S;I<=R;I+=L)N.push([T+C*Math.cos(I),k+w*Math.sin(I)]);return N.push([T+C*Math.cos(R),k+w*Math.sin(R)]),N.push([T,k]),Fy([N],b)})(t,r,n,i,a,s,h));return h.stroke!==zo&&d.push(f),this._d("arc",d,h)}curve(t,r){let n=this._o(r),i=[],a=Use(t,n);if(n.fill&&n.fill!==zo)if(n.fillStyle==="solid"){let s=Use(t,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(s.ops)})}else{let s=[],l=t;if(l.length){let u=typeof l[0][0]=="number"?[l]:l;for(let h of u)h.length<3?s.push(...h):h.length===3?s.push(...QP(Qse([h[0],h[0],h[1],h[2]]),10,(1+n.roughness)/2)):s.push(...QP(Qse(h),10,(1+n.roughness)/2))}s.length&&i.push(Fy([s],n))}return n.stroke!==zo&&i.push(a),this._d("curve",i,n)}polygon(t,r){let n=this._o(r),i=[],a=M4(t,!0,n);return n.fill&&(n.fillStyle==="solid"?i.push(ZP([t],n)):i.push(Fy([t],n))),n.stroke!==zo&&i.push(a),this._d("polygon",i,n)}path(t,r){let n=this._o(r),i=[];if(!t)return this._d("path",i,n);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let a=n.fill&&n.fill!=="transparent"&&n.fill!==zo,s=n.stroke!==zo,l=!!(n.simplification&&n.simplification<1),u=(function(d,f,p){let m=eoe(Jse(uO(d))),g=[],y=[],v=[0,0],x=[],b=o(()=>{x.length>=4&&y.push(...QP(x,f)),x=[]},"i"),T=o(()=>{b(),y.length&&(g.push(y),y=[])},"c");for(let{key:C,data:w}of m)switch(C){case"M":T(),v=[w[0],w[1]],y.push(v);break;case"L":b(),y.push([w[0],w[1]]);break;case"C":if(!x.length){let S=y.length?y[y.length-1]:v;x.push([S[0],S[1]])}x.push([w[0],w[1]]),x.push([w[2],w[3]]),x.push([w[4],w[5]]);break;case"Z":b(),y.push([v[0],v[1]])}if(T(),!p)return g;let k=[];for(let C of g){let w=hQe(C,p);w.length&&k.push(w)}return k})(t,1,l?4-4*(n.simplification||1):(1+n.roughness)/2),h=jse(t,n);if(a)if(n.fillStyle==="solid")if(u.length===1){let d=jse(t,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(d.ops)})}else i.push(ZP(u,n));else i.push(Fy(u,n));return s&&(l?u.forEach((d=>{i.push(M4(d,!1,n))})):i.push(h)),this._d("path",i,n)}opsToPath(t,r){let n="";for(let i of t.ops){let a=typeof r=="number"&&r>=0?i.data.map((s=>+s.toFixed(r))):i.data;switch(i.op){case"move":n+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":n+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":n+=`L${a[0]} ${a[1]} `}}return n.trim()}toPaths(t){let r=t.sets||[],n=t.options||this.defaultOptions,i=[];for(let a of r){let s=null;switch(a.type){case"path":s={d:this.opsToPath(a),stroke:n.stroke,strokeWidth:n.strokeWidth,fill:zo};break;case"fillPath":s={d:this.opsToPath(a),stroke:zo,strokeWidth:0,fill:n.fill||zo};break;case"fillSketch":s=this.fillSketch(a,n)}s&&i.push(s)}return i}fillSketch(t,r){let n=r.fillWeight;return n<0&&(n=r.strokeWidth/2),{d:this.opsToPath(t),stroke:r.fill||zo,strokeWidth:n,fill:zo}}_mergedShape(t){return t.filter(((r,n)=>n===0||r.op!=="move"))}},lO=class{static{o(this,"st")}constructor(t,r){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new zy(r)}draw(t){let r=t.sets||[],n=t.options||this.getDefaultOptions(),i=this.ctx,a=t.options.fixedDecimalPlaceDigits;for(let s of r)switch(s.type){case"path":i.save(),i.strokeStyle=n.stroke==="none"?"transparent":n.stroke,i.lineWidth=n.strokeWidth,n.strokeLineDash&&i.setLineDash(n.strokeLineDash),n.strokeLineDashOffset&&(i.lineDashOffset=n.strokeLineDashOffset),this._drawToContext(i,s,a),i.restore();break;case"fillPath":{i.save(),i.fillStyle=n.fill||"";let l=t.shape==="curve"||t.shape==="polygon"||t.shape==="path"?"evenodd":"nonzero";this._drawToContext(i,s,a,l),i.restore();break}case"fillSketch":this.fillSketch(i,s,n)}}fillSketch(t,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2),t.save(),n.fillLineDash&&t.setLineDash(n.fillLineDash),n.fillLineDashOffset&&(t.lineDashOffset=n.fillLineDashOffset),t.strokeStyle=n.fill||"",t.lineWidth=i,this._drawToContext(t,r,n.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,r,n,i="nonzero"){t.beginPath();for(let a of r.ops){let s=typeof n=="number"&&n>=0?a.data.map((l=>+l.toFixed(n))):a.data;switch(a.op){case"move":t.moveTo(s[0],s[1]);break;case"bcurveTo":t.bezierCurveTo(s[0],s[1],s[2],s[3],s[4],s[5]);break;case"lineTo":t.lineTo(s[0],s[1])}}r.type==="fillPath"?t.fill(i):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,r,n,i,a){let s=this.gen.line(t,r,n,i,a);return this.draw(s),s}rectangle(t,r,n,i,a){let s=this.gen.rectangle(t,r,n,i,a);return this.draw(s),s}ellipse(t,r,n,i,a){let s=this.gen.ellipse(t,r,n,i,a);return this.draw(s),s}circle(t,r,n,i){let a=this.gen.circle(t,r,n,i);return this.draw(a),a}linearPath(t,r){let n=this.gen.linearPath(t,r);return this.draw(n),n}polygon(t,r){let n=this.gen.polygon(t,r);return this.draw(n),n}arc(t,r,n,i,a,s,l=!1,u){let h=this.gen.arc(t,r,n,i,a,s,l,u);return this.draw(h),h}curve(t,r){let n=this.gen.curve(t,r);return this.draw(n),n}path(t,r){let n=this.gen.path(t,r);return this.draw(n),n}},I4="http://www.w3.org/2000/svg",cO=class{static{o(this,"ot")}constructor(t,r){this.svg=t,this.gen=new zy(r)}draw(t){let r=t.sets||[],n=t.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,a=i.createElementNS(I4,"g"),s=t.options.fixedDecimalPlaceDigits;for(let l of r){let u=null;switch(l.type){case"path":u=i.createElementNS(I4,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke",n.stroke),u.setAttribute("stroke-width",n.strokeWidth+""),u.setAttribute("fill","none"),n.strokeLineDash&&u.setAttribute("stroke-dasharray",n.strokeLineDash.join(" ").trim()),n.strokeLineDashOffset&&u.setAttribute("stroke-dashoffset",`${n.strokeLineDashOffset}`);break;case"fillPath":u=i.createElementNS(I4,"path"),u.setAttribute("d",this.opsToPath(l,s)),u.setAttribute("stroke","none"),u.setAttribute("stroke-width","0"),u.setAttribute("fill",n.fill||""),t.shape!=="curve"&&t.shape!=="polygon"||u.setAttribute("fill-rule","evenodd");break;case"fillSketch":u=this.fillSketch(i,l,n)}u&&a.appendChild(u)}return a}fillSketch(t,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2);let a=t.createElementNS(I4,"path");return a.setAttribute("d",this.opsToPath(r,n.fixedDecimalPlaceDigits)),a.setAttribute("stroke",n.fill||""),a.setAttribute("stroke-width",i+""),a.setAttribute("fill","none"),n.fillLineDash&&a.setAttribute("stroke-dasharray",n.fillLineDash.join(" ").trim()),n.fillLineDashOffset&&a.setAttribute("stroke-dashoffset",`${n.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,r){return this.gen.opsToPath(t,r)}line(t,r,n,i,a){let s=this.gen.line(t,r,n,i,a);return this.draw(s)}rectangle(t,r,n,i,a){let s=this.gen.rectangle(t,r,n,i,a);return this.draw(s)}ellipse(t,r,n,i,a){let s=this.gen.ellipse(t,r,n,i,a);return this.draw(s)}circle(t,r,n,i){let a=this.gen.circle(t,r,n,i);return this.draw(a)}linearPath(t,r){let n=this.gen.linearPath(t,r);return this.draw(n)}polygon(t,r){let n=this.gen.polygon(t,r);return this.draw(n)}arc(t,r,n,i,a,s,l=!1,u){let h=this.gen.arc(t,r,n,i,a,s,l,u);return this.draw(h)}curve(t,r){let n=this.gen.curve(t,r);return this.draw(n)}path(t,r){let n=this.gen.path(t,r);return this.draw(n)}},ut={canvas:o((e,t)=>new lO(e,t),"canvas"),svg:o((e,t)=>new cO(e,t),"svg"),generator:o(e=>new zy(e),"generator"),newSeed:o(()=>zy.newSeed(),"newSeed")}});function aoe(e,t){let{labelStyles:r}=ct(t);t.labelStyle=r;let n=Dt(t),i=n;n||(i="anchor");let a=e.insert("g").attr("class",i).attr("id",t.domId||t.id),s=1,{cssStyles:l}=t,u=ut.svg(a),h=dt(t,{fill:"black",stroke:"none",fillStyle:"solid"});t.look!=="handDrawn"&&(h.roughness=0);let d=u.circle(0,0,s*2,h),f=a.insert(()=>d,":first-child");return f.attr("class","anchor").attr("style",kn(l)),pt(t,f),t.intersect=function(p){return Z.info("Circle intersect",t,s,p),ht.circle(t,s,p)},a}var soe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Qt();o(aoe,"anchor")});function ooe(e,t,r,n,i,a,s){let u=(e+r)/2,h=(t+n)/2,d=Math.atan2(n-t,r-e),f=(r-e)/2,p=(n-t)/2,m=f/i,g=p/a,y=Math.sqrt(m**2+g**2);if(y>1)throw new Error("The given radii are too small to create an arc between the points.");let v=Math.sqrt(1-y**2),x=u+v*a*Math.sin(d)*(s?-1:1),b=h-v*i*Math.cos(d)*(s?-1:1),T=Math.atan2((t-b)/a,(e-x)/i),C=Math.atan2((n-b)/a,(r-x)/i)-T;s&&C<0&&(C+=2*Math.PI),!s&&C>0&&(C-=2*Math.PI);let w=[];for(let S=0;S<20;S++){let R=S/19,L=T+R*C,N=x+i*Math.cos(L),I=b+a*Math.sin(L);w.push({x:N,y:I})}return w}function dQe(e,t,r){let[n,i]=[t,r].sort((a,s)=>s-a);return i*(1-Math.sqrt(1-(e/n/2)**2))}async function loe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=o(L=>L+s,"calcTotalHeight"),u=o(L=>{let N=L/2;return[N/(2.5+L/50),N]},"calcEllipseRadius"),{shapeSvg:h,bbox:d}=await It(e,t,Dt(t)),f=l(t?.height?t?.height:d.height),[p,m]=u(f),g=dQe(f,p,m),v=(t?.width?t?.width:d.width)+a*2+g-g,x=f,{cssStyles:b}=t,T=[{x:v/2,y:-x/2},{x:-v/2,y:-x/2},...ooe(-v/2,-x/2,-v/2,x/2,p,m,!1),{x:v/2,y:x/2},...ooe(v/2,x/2,v/2,-x/2,p,m,!0)],k=ut.svg(h),C=dt(t,{});t.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let w=or(T),S=k.path(w,C),R=h.insert(()=>S,":first-child");return R.attr("class","basic label-container outer-path"),b&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",b),n&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",n),R.attr("transform",`translate(${p/2}, 0)`),pt(t,R),t.intersect=function(L){return ht.polygon(t,T,L)},h}var coe=F(()=>{"use strict";Kt();nr();Jt();tr();o(ooe,"generateArcPoints");o(dQe,"calculateArcSagitta");o(loe,"bowTieRect")});function as(e,t,r,n){return e.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}var Ch=F(()=>{"use strict";o(as,"insertPolygonShape")});async function uoe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?28:i,s=t.look==="neo"?24:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.width??u.width)+(t.look==="neo"?a*2:a+F4),d=(t?.height??u.height)+(t.look==="neo"?s*2:s),f=0,p=h,m=-d,g=0,y=[{x:f+F4,y:m},{x:p,y:m},{x:p,y:g},{x:f,y:g},{x:f,y:m+F4},{x:f+F4,y:m}],v,{cssStyles:x}=t;if(t.look==="handDrawn"){let b=ut.svg(l),T=dt(t,{}),k=or(y),C=b.path(k,T);v=l.insert(()=>C,":first-child").attr("transform",`translate(${-h/2}, ${d/2})`),x&&v.attr("style",x)}else v=as(l,h,d,y);return n&&v.attr("style",n),pt(t,v),t.intersect=function(b){return ht.polygon(t,y,b)},l}var F4,hoe=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();Kt();F4=12;o(uoe,"card")});function doe(e,t){let{nodeStyles:r}=ct(t);t.label="";let n=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),{cssStyles:i}=t,a=Math.max(28,t.width??0),s=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],l=ut.svg(n),u=dt(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=or(s),d=l.path(h,u),f=n.insert(()=>d,":first-child");return i&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",i),r&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",r),t.width=28,t.height=28,t.intersect=function(p){return ht.polygon(t,s,p)},n}var foe=F(()=>{"use strict";nr();tr();Jt();Kt();o(doe,"choice")});async function z4(e,t,r){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n;let{shapeSvg:a,bbox:s,halfPadding:l}=await It(e,t,Dt(t)),u=16,h=r?.padding??l,d=t.look==="neo"?s.width/2+u*2:s.width/2+h,f,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=ut.svg(a),g=dt(t,{}),y=m.circle(0,0,d*2,g);f=a.insert(()=>y,":first-child"),f.attr("class","basic label-container").attr("style",kn(p))}else f=a.insert("circle",":first-child").attr("class","basic label-container").attr("style",i).attr("r",d).attr("cx",0).attr("cy",0);return pt(t,f),t.calcIntersect=function(m,g){let y=m.width/2;return ht.circle(m,y,g)},t.intersect=function(m){return Z.info("Circle intersect",t,d,m),ht.circle(t,d,m)},a}var hO=F(()=>{"use strict";tr();vt();Qt();nr();Jt();Kt();o(z4,"circle")});function fQe(e){let t=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),n=e*2,i={x:n/2*t,y:n/2*r},a={x:-(n/2)*t,y:n/2*r},s={x:-(n/2)*t,y:-(n/2)*r},l={x:n/2*t,y:-(n/2)*r};return`M ${a.x},${a.y} L ${l.x},${l.y} + M ${i.x},${i.y} L ${s.x},${s.y}`}function poe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r,t.label="";let i=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),a=Math.max(30,t?.width??0),{cssStyles:s}=t,l=ut.svg(i),u=dt(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=l.circle(0,0,a*2,u),d=fQe(a),f=l.path(d,u),p=i.insert(()=>h,":first-child");return p.insert(()=>f),p.attr("class","outer-path"),s&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",s),n&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",n),pt(t,p),t.intersect=function(m){return Z.info("crossedCircle intersect",t,{radius:a,point:m}),ht.circle(t,a,m)},i}var moe=F(()=>{"use strict";vt();Kt();Jt();tr();nr();o(fQe,"createLine");o(poe,"crossedCircle")});function ef(e,t,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,d=(a*Math.PI/180-l)/(n-1);for(let f=0;fC,":first-child").attr("stroke-opacity",0),w.insert(()=>T,":first-child"),w.attr("class","text"),p&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",p),n&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",n),w.attr("transform",`translate(${f}, 0)`),s.attr("transform",`translate(${-h/2+f-(a.x-(a.left??0))},${-d/2+(t.padding??0)/2-(a.y-(a.top??0))})`),pt(t,w),t.intersect=function(S){return ht.polygon(t,g,S)},i}var yoe=F(()=>{"use strict";Kt();nr();Jt();tr();o(ef,"generateCirclePoints");o(goe,"curlyBraceLeft")});function tf(e,t,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,d=(a*Math.PI/180-l)/(n-1);for(let f=0;fC,":first-child").attr("stroke-opacity",0),w.insert(()=>T,":first-child"),w.attr("class","text"),p&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",p),n&&t.look!=="handDrawn"&&w.selectAll("path").attr("style",n),w.attr("transform",`translate(${-f}, 0)`),s.attr("transform",`translate(${-h/2+(t.padding??0)/2-(a.x-(a.left??0))},${-d/2+(t.padding??0)/2-(a.y-(a.top??0))})`),pt(t,w),t.intersect=function(S){return ht.polygon(t,g,S)},i}var xoe=F(()=>{"use strict";Kt();nr();Jt();tr();o(tf,"generateCirclePoints");o(voe,"curlyBraceRight")});function ss(e,t,r,n=100,i=0,a=180){let s=[],l=i*Math.PI/180,d=(a*Math.PI/180-l)/(n-1);for(let f=0;fL,":first-child").attr("stroke-opacity",0),N.insert(()=>k,":first-child"),N.insert(()=>S,":first-child"),N.attr("class","text"),p&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",p),n&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",n),N.attr("transform",`translate(${f-f/4}, 0)`),s.attr("transform",`translate(${-h/2+(t.padding??0)/2-(a.x-(a.left??0))},${-d/2+(t.padding??0)/2-(a.y-(a.top??0))})`),pt(t,N),t.intersect=function(I){return ht.polygon(t,y,I)},i}var Toe=F(()=>{"use strict";Kt();nr();Jt();tr();o(ss,"generateCirclePoints");o(boe,"curlyBraces")});async function Coe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=20,u=5,{shapeSvg:h,bbox:d}=await It(e,t,Dt(t)),f=Math.max(l,(d.width+a*2)*1.25,t?.width??0),p=Math.max(u,d.height+s*2,t?.height??0),m=p/2,{cssStyles:g}=t,y=ut.svg(h),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=f,b=p,T=x-m,k=b/4,C=[{x:T,y:0},{x:k,y:0},{x:0,y:b/2},{x:k,y:b},{x:T,y:b},...Cm(-T,-b/2,m,50,270,90)],w=or(C),S=y.path(w,v),R=h.insert(()=>S,":first-child");return R.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&R.selectChildren("path").attr("style",g),n&&t.look!=="handDrawn"&&R.selectChildren("path").attr("style",n),R.attr("transform",`translate(${-f/2}, ${-p/2})`),pt(t,R),t.intersect=function(L){return ht.polygon(t,C,L)},h}var woe=F(()=>{"use strict";Kt();nr();Jt();tr();o(Coe,"curvedTrapezoid")});async function Eoe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?24:i,s=t.look==="neo"?24:i;if(t.width||t.height){let v=t.width??0;t.width=(t.width??0)-s,t.widthC,":first-child"),g=l.insert(()=>k,":first-child"),g.attr("class","basic label-container"),y&&g.attr("style",y)}else{let v=pQe(0,0,d,m,f,p);g=l.insert("path",":first-child").attr("d",v).attr("class","basic label-container outer-path").attr("style",kn(y)).attr("style",n)}return g.attr("label-offset-y",p),g.attr("transform",`translate(${-d/2}, ${-(m/2+p)})`),pt(t,g),h.attr("transform",`translate(${-(u.width/2)-(u.x-(u.left??0))}, ${-(u.height/2)+(t.padding??0)/1.5-(u.y-(u.top??0))})`),t.intersect=function(v){let x=ht.rect(t,v),b=x.x-(t.x??0);if(f!=0&&(Math.abs(b)<(t.width??0)/2||Math.abs(b)==(t.width??0)/2&&Math.abs(x.y-(t.y??0))>(t.height??0)/2-p)){let T=p*p*(1-b*b/(f*f));T>0&&(T=Math.sqrt(T)),T=p-T,v.y-(t.y??0)>0&&(T=-T),x.y+=T}return x},l}var pQe,mQe,gQe,koe,Soe,Aoe=F(()=>{"use strict";Kt();nr();Jt();tr();Qt();pQe=o((e,t,r,n,i,a)=>[`M${e},${t+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createCylinderPathD"),mQe=o((e,t,r,n,i,a)=>[`M${e},${t+a}`,`M${e+r},${t+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createOuterCylinderPathD"),gQe=o((e,t,r,n,i,a)=>[`M${e-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD"),koe=8,Soe=8;o(Eoe,"cylinder")});var io,km=F(()=>{"use strict";io=o((e,t,r,n,i)=>["M",e+i,t,"H",e+r-i,"A",i,i,0,0,1,e+r,t+i,"V",t+n-i,"A",i,i,0,0,1,e+r-i,t+n,"H",e+i,"A",i,i,0,0,1,e,t+n-i,"V",t+i,"A",i,i,0,0,1,e+i,t,"Z"].join(" "),"createRoundedRectPathD")});async function ac(e,t,r){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n;let{shapeSvg:a,bbox:s}=await It(e,t,Dt(t)),l=Math.max(s.width+r.labelPaddingX*2,t?.width||0),u=Math.max(s.height+r.labelPaddingY*2,t?.height||0),h=-l/2,d=-u/2,f,{rx:p,ry:m}=t,{cssStyles:g}=t;if(r?.rx&&r.ry&&(p=r.rx,m=r.ry),t.look==="handDrawn"){let y=ut.svg(a),v=dt(t,{}),x=p||m?y.path(io(h,d,l,u,p||0),v):y.rectangle(h,d,l,u,v);f=a.insert(()=>x,":first-child"),f.attr("class","basic label-container").attr("style",kn(g))}else f=a.insert("rect",":first-child"),f.attr("class","basic label-container").attr("style",i).attr("rx",kn(p)).attr("ry",kn(m)).attr("x",h).attr("y",d).attr("width",l).attr("height",u);return pt(t,f),t.calcIntersect=function(y,v){return ht.rect(y,v)},t.intersect=function(y){return ht.rect(t,y)},a}var Sm=F(()=>{"use strict";Kt();nr();km();Jt();tr();Qt();o(ac,"drawRect")});async function Roe(e,t){let{cssClasses:r,labelPaddingX:n,labelPaddingY:i,padding:a,width:s,height:l}=t,u={rx:0,ry:0,classes:r??"",labelPaddingX:n??(a??0)*2,labelPaddingY:i??a??0},h=await ac(e,t,u);if(t.look==="handDrawn"){let m=ut.svg(h),g=dt(t,{}),y=h.select(".basic.label-container > path:nth-child(2)"),v=y.node();if(!v)return h;let x=null;if(v instanceof SVGGraphicsElement)x=v.getBBox();else return h;return h.insert(()=>m.line(x.x,x.y,x.x+x.width,x.y,g),".basic.label-container g.label"),h.insert(()=>m.line(x.x,x.y+x.height,x.x+x.width,x.y+x.height,g),".basic.label-container g.label"),y.remove(),h}let d=h.select(".basic.label-container"),f=(Number(d.attr("width"))||s)??0,p=(Number(d.attr("height"))||l)??0;return f>0&&p>0&&d.attr("stroke-dasharray",`${f} ${p}`),h}var _oe=F(()=>{"use strict";Sm();Jt();tr();o(Roe,"datastore")});async function Loe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.look==="neo"?16:t.padding??0,a=t.look==="neo"?16:t.padding??0,{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=l.width+i,d=l.height+a,f=d*.2,p=-h/2,m=-d/2-f/2,{cssStyles:g}=t,y=ut.svg(s),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:p,y:m+f},{x:-p,y:m+f},{x:-p,y:-m},{x:p,y:-m},{x:p,y:m},{x:-p,y:m},{x:-p,y:m+f}],b=y.polygon(x.map(k=>[k.x,k.y]),v),T=s.insert(()=>b,":first-child");return T.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",g),n&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",n),u.attr("transform",`translate(${p+(t.padding??0)/2-(l.x-(l.left??0))}, ${m+f+(t.padding??0)/2-(l.y-(l.top??0))})`),pt(t,T),t.intersect=function(k){return ht.rect(t,k)},s}var Doe=F(()=>{"use strict";Kt();nr();Jt();tr();o(Loe,"dividedRectangle")});async function Ioe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t),i=t.look==="neo"?12:5;t.labelStyle=r;let a=t.padding??0,s=t.look==="neo"?16:a,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.width?t?.width/2:u.width/2)+(s??0),d=h-i,f,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=ut.svg(l),g=dt(t,{roughness:.2,strokeWidth:2.5}),y=dt(t,{roughness:.2,strokeWidth:1.5}),v=m.circle(0,0,h*2,g),x=m.circle(0,0,d*2,y);f=l.insert("g",":first-child"),f.attr("class",kn(t.cssClasses)).attr("style",kn(p)),f.node()?.appendChild(v),f.node()?.appendChild(x)}else{f=l.insert("g",":first-child");let m=f.insert("circle",":first-child"),g=f.insert("circle");f.attr("class","basic label-container").attr("style",n),m.attr("class","outer-circle").attr("style",n).attr("r",h).attr("cx",0).attr("cy",0),g.attr("class","inner-circle").attr("style",n).attr("r",d).attr("cx",0).attr("cy",0)}return pt(t,f),t.intersect=function(m){return Z.info("DoubleCircle intersect",t,h,m),ht.circle(t,h,m)},l}var Moe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Qt();o(Ioe,"doublecircle")});function Noe(e,t,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=ct(t);t.label="",t.labelStyle=n;let a=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),s=7,{cssStyles:l}=t,u=ut.svg(a),{nodeBorder:h}=r,d=dt(t,{fillStyle:"solid"});t.look!=="handDrawn"&&(d.roughness=0);let f=u.circle(0,0,s*2,d),p=a.insert(()=>f,":first-child");return p.selectAll("path").attr("style",`fill: ${h} !important;`),l&&l.length>0&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",l),i&&t.look!=="handDrawn"&&p.selectAll("path").attr("style",i),pt(t,p),t.intersect=function(m){return Z.info("filledCircle intersect",t,{radius:s,point:m}),ht.circle(t,s,m)},a}var Poe=F(()=>{"use strict";tr();vt();nr();Jt();Kt();o(Noe,"filledCircle")});async function $oe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?i*2:i;(t.width||t.height)&&(t.height=t?.height??0,t.heightx,":first-child").attr("transform",`translate(${-d/2}, ${d/2})`).attr("class","outer-path");return m&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",m),n&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",n),t.width=h,t.height=d,pt(t,b),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-d/2+(t.padding??0)/2+(l.y-(l.top??0))})`),t.intersect=function(T){return Z.info("Triangle intersect",t,p,T),ht.polygon(t,p,T)},s}var Ooe,Boe,Foe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Kt();Ooe=10,Boe=10;o($oe,"flippedTriangle")});function zoe(e,t,{dir:r,config:{state:n,themeVariables:i}}){let{nodeStyles:a}=ct(t);t.label="";let s=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),{cssStyles:l}=t,u=Math.max(70,t?.width??0),h=Math.max(10,t?.height??0);r==="LR"&&(u=Math.max(10,t?.width??0),h=Math.max(70,t?.height??0));let d=-1*u/2,f=-1*h/2,p=ut.svg(s),m=dt(t,{stroke:i.lineColor,fill:i.lineColor});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let g=p.rectangle(d,f,u,h,m),y=s.insert(()=>g,":first-child");l&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",l),a&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",a),pt(t,y);let v=n?.padding??0;return t.width&&t.height&&(t.width+=v/2||0,t.height+=v/2||0),t.intersect=function(x){return ht.rect(t,x)},s}var Goe=F(()=>{"use strict";tr();nr();Jt();Kt();o(zoe,"forkJoin")});async function Voe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=15,a=10,s=t.look==="neo"?16:t.padding??0,l=t.look==="neo"?12:t.padding??0;(t.width||t.height)&&(t.height=(t?.height??0)-l*2,t.heightb,":first-child");return T.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",m),n&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),pt(t,T),t.intersect=function(k){return Z.info("Pill intersect",t,{radius:p,point:k}),ht.polygon(t,v,k)},u}var Woe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();o(Voe,"halfRoundedRectangle")});async function qoe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t),i=t.look==="neo"?3.5:4;t.labelStyle=r;let a=t.padding??0,s=70,l=32,u=t.look==="neo"?s:a,h=t.look==="neo"?l:a;if(t.width||t.height){let T=(t.height??0)/i;t.width=(t?.width??0)-2*T-h,t.height=(t.height??0)-u}let{shapeSvg:d,bbox:f}=await It(e,t,Dt(t)),p=(t?.height?t?.height:f.height)+u,m=p/i,g=(t?.width?t?.width:f.width)+2*m+h,y=[{x:m,y:0},{x:g-m,y:0},{x:g,y:-p/2},{x:g-m,y:-p},{x:m,y:-p},{x:0,y:-p/2}],v,{cssStyles:x}=t;if(t.look==="handDrawn"){let b=ut.svg(d),T=dt(t,{}),k=yQe(0,0,g,p,m),C=b.path(k,T);v=d.insert(()=>C,":first-child").attr("transform",`translate(${-g/2}, ${p/2})`),x&&v.attr("style",x)}else v=as(d,g,p,y);return n&&v.attr("style",n),t.width=g,t.height=p,pt(t,v),t.intersect=function(b){return ht.polygon(t,y,b)},d}var yQe,Hoe=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();yQe=o((e,t,r,n,i)=>[`M${e+i},${t}`,`L${e+r-i},${t}`,`L${e+r},${t-n/2}`,`L${e+r-i},${t-n}`,`L${e+i},${t-n}`,`L${e},${t-n/2}`,"Z"].join(" "),"createHexagonPathD");o(qoe,"hexagon")});async function Uoe(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.label="",t.labelStyle=r;let{shapeSvg:i}=await It(e,t,Dt(t)),a=Math.max(30,t?.width??0),s=Math.max(30,t?.height??0),{cssStyles:l}=t,u=ut.svg(i),h=dt(t,{});t.look!=="handDrawn"&&(h.roughness=0,h.fillStyle="solid");let d=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],f=or(d),p=u.path(f,h),m=i.insert(()=>p,":first-child");return m.attr("class","basic label-container outer-path"),l&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",l),n&&t.look!=="handDrawn"&&m.selectChildren("path").attr("style",n),m.attr("transform",`translate(${-a/2}, ${-s/2})`),pt(t,m),t.intersect=function(g){return Z.info("Pill intersect",t,{points:d}),ht.polygon(t,d,g)},i}var Yoe=F(()=>{"use strict";vt();Kt();nr();Jt();tr();o(Uoe,"hourglass")});async function joe(e,t,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=ct(t);t.labelStyle=i;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,label:f}=await It(e,t,"icon-shape default"),p=t.pos==="t",m=l,g=l,{nodeBorder:y}=r,{stylesMap:v}=iu(t),x=-g/2,b=-m/2,T=t.label?8:0,k=ut.svg(h),C=dt(t,{stroke:"none",fill:"none"});t.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let w=k.rectangle(x,b,g,m,C),S=Math.max(g,d.width),R=m+d.height+T,L=k.rectangle(-S/2,-R/2,S,R,{...C,fill:"transparent",stroke:"none"}),N=h.insert(()=>w,":first-child"),I=h.insert(()=>L);if(t.icon){let _=h.append("g");_.html(`${await ts(t.icon,{height:l,width:l,fallbackPrefix:""})}`);let A=_.node().getBBox(),M=A.width,D=A.height,P=A.x,B=A.y;_.attr("transform",`translate(${-M/2-P},${p?d.height/2+T/2-D/2-B:-d.height/2-T/2-D/2-B})`),_.attr("style",`color: ${v.get("stroke")??y};`)}return f.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${p?-R/2:R/2-d.height})`),N.attr("transform",`translate(0,${p?d.height/2+T/2:-d.height/2-T/2})`),pt(t,I),t.intersect=function(_){if(Z.info("iconSquare intersect",t,_),!t.label)return ht.rect(t,_);let A=t.x??0,M=t.y??0,D=t.height??0,P=[];return p?P=[{x:A-d.width/2,y:M-D/2},{x:A+d.width/2,y:M-D/2},{x:A+d.width/2,y:M-D/2+d.height+T},{x:A+g/2,y:M-D/2+d.height+T},{x:A+g/2,y:M+D/2},{x:A-g/2,y:M+D/2},{x:A-g/2,y:M-D/2+d.height+T},{x:A-d.width/2,y:M-D/2+d.height+T}]:P=[{x:A-g/2,y:M-D/2},{x:A+g/2,y:M-D/2},{x:A+g/2,y:M-D/2+m},{x:A+d.width/2,y:M-D/2+m},{x:A+d.width/2/2,y:M+D/2},{x:A-d.width/2,y:M+D/2},{x:A-d.width/2,y:M-D/2+m},{x:A-g/2,y:M-D/2+m}],ht.polygon(t,P,_)},h}var Xoe=F(()=>{"use strict";tr();vt();Vl();nr();Jt();Kt();o(joe,"icon")});async function Koe(e,t,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=ct(t);t.labelStyle=i;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,label:f}=await It(e,t,"icon-shape default"),p=20,m=t.label?8:0,g=t.pos==="t",{nodeBorder:y,mainBkg:v}=r,{stylesMap:x}=iu(t),b=ut.svg(h),T=dt(t,{});t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let k=x.get("fill");T.stroke=k??v;let C=h.append("g");t.icon&&C.html(`${await ts(t.icon,{height:l,width:l,fallbackPrefix:""})}`);let w=C.node().getBBox(),S=w.width,R=w.height,L=w.x,N=w.y,I=Math.max(S,R)*Math.SQRT2+p*2,_=b.circle(0,0,I,T),A=Math.max(I,d.width),M=I+d.height+m,D=b.rectangle(-A/2,-M/2,A,M,{...T,fill:"transparent",stroke:"none"}),P=h.insert(()=>_,":first-child"),B=h.insert(()=>D);return C.attr("transform",`translate(${-S/2-L},${g?d.height/2+m/2-R/2-N:-d.height/2-m/2-R/2-N})`),C.attr("style",`color: ${x.get("stroke")??y};`),f.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${g?-M/2:M/2-d.height})`),P.attr("transform",`translate(0,${g?d.height/2+m/2:-d.height/2-m/2})`),pt(t,B),t.intersect=function(O){return Z.info("iconSquare intersect",t,O),ht.rect(t,O)},h}var Zoe=F(()=>{"use strict";tr();vt();Vl();nr();Jt();Kt();o(Koe,"iconCircle")});async function Qoe(e,t,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=ct(t);t.labelStyle=i;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,halfPadding:f,label:p}=await It(e,t,"icon-shape default"),m=t.pos==="t",g=l+f*2,y=l+f*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=iu(t),T=-y/2,k=-g/2,C=t.label?8:0,w=ut.svg(h),S=dt(t,{});t.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let R=b.get("fill");S.stroke=R??x;let L=w.path(io(T,k,y,g,5),S),N=Math.max(y,d.width),I=g+d.height+C,_=w.rectangle(-N/2,-I/2,N,I,{...S,fill:"transparent",stroke:"none"}),A=h.insert(()=>L,":first-child").attr("class","icon-shape2"),M=h.insert(()=>_);if(t.icon){let D=h.append("g");D.html(`${await ts(t.icon,{height:l,width:l,fallbackPrefix:""})}`);let P=D.node().getBBox(),B=P.width,O=P.height,$=P.x,V=P.y;D.attr("transform",`translate(${-B/2-$},${m?d.height/2+C/2-O/2-V:-d.height/2-C/2-O/2-V})`),D.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${m?-I/2:I/2-d.height})`),A.attr("transform",`translate(0,${m?d.height/2+C/2:-d.height/2-C/2})`),pt(t,M),t.intersect=function(D){if(Z.info("iconSquare intersect",t,D),!t.label)return ht.rect(t,D);let P=t.x??0,B=t.y??0,O=t.height??0,$=[];return m?$=[{x:P-d.width/2,y:B-O/2},{x:P+d.width/2,y:B-O/2},{x:P+d.width/2,y:B-O/2+d.height+C},{x:P+y/2,y:B-O/2+d.height+C},{x:P+y/2,y:B+O/2},{x:P-y/2,y:B+O/2},{x:P-y/2,y:B-O/2+d.height+C},{x:P-d.width/2,y:B-O/2+d.height+C}]:$=[{x:P-y/2,y:B-O/2},{x:P+y/2,y:B-O/2},{x:P+y/2,y:B-O/2+g},{x:P+d.width/2,y:B-O/2+g},{x:P+d.width/2/2,y:B+O/2},{x:P-d.width/2,y:B+O/2},{x:P-d.width/2,y:B-O/2+g},{x:P-y/2,y:B-O/2+g}],ht.polygon(t,$,D)},h}var Joe=F(()=>{"use strict";tr();vt();Vl();nr();Jt();km();Kt();o(Qoe,"iconRounded")});async function ele(e,t,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=ct(t);t.labelStyle=i;let a=t.assetHeight??48,s=t.assetWidth??48,l=Math.max(a,s),u=n?.wrappingWidth;t.width=Math.max(l,u??0);let{shapeSvg:h,bbox:d,halfPadding:f,label:p}=await It(e,t,"icon-shape default"),m=t.pos==="t",g=l+f*2,y=l+f*2,{nodeBorder:v,mainBkg:x}=r,{stylesMap:b}=iu(t),T=-y/2,k=-g/2,C=t.label?8:0,w=ut.svg(h),S=dt(t,{});t.look!=="handDrawn"&&(S.roughness=0,S.fillStyle="solid");let R=b.get("fill");S.stroke=R??x;let L=w.path(io(T,k,y,g,.1),S),N=Math.max(y,d.width),I=g+d.height+C,_=w.rectangle(-N/2,-I/2,N,I,{...S,fill:"transparent",stroke:"none"}),A=h.insert(()=>L,":first-child"),M=h.insert(()=>_);if(t.icon){let D=h.append("g");D.html(`${await ts(t.icon,{height:l,width:l,fallbackPrefix:""})}`);let P=D.node().getBBox(),B=P.width,O=P.height,$=P.x,V=P.y;D.attr("transform",`translate(${-B/2-$},${m?d.height/2+C/2-O/2-V:-d.height/2-C/2-O/2-V})`),D.attr("style",`color: ${b.get("stroke")??v};`)}return p.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${m?-I/2:I/2-d.height})`),A.attr("transform",`translate(0,${m?d.height/2+C/2:-d.height/2-C/2})`),pt(t,M),t.intersect=function(D){if(Z.info("iconSquare intersect",t,D),!t.label)return ht.rect(t,D);let P=t.x??0,B=t.y??0,O=t.height??0,$=[];return m?$=[{x:P-d.width/2,y:B-O/2},{x:P+d.width/2,y:B-O/2},{x:P+d.width/2,y:B-O/2+d.height+C},{x:P+y/2,y:B-O/2+d.height+C},{x:P+y/2,y:B+O/2},{x:P-y/2,y:B+O/2},{x:P-y/2,y:B-O/2+d.height+C},{x:P-d.width/2,y:B-O/2+d.height+C}]:$=[{x:P-y/2,y:B-O/2},{x:P+y/2,y:B-O/2},{x:P+y/2,y:B-O/2+g},{x:P+d.width/2,y:B-O/2+g},{x:P+d.width/2/2,y:B+O/2},{x:P-d.width/2,y:B+O/2},{x:P-d.width/2,y:B-O/2+g},{x:P-y/2,y:B-O/2+g}],ht.polygon(t,$,D)},h}var tle=F(()=>{"use strict";tr();vt();Vl();nr();km();Jt();Kt();o(ele,"iconSquare")});async function rle(e,t,{config:{flowchart:r}}){let n=new Image;n.src=t?.img??"",await n.decode();let i=Number(n.naturalWidth.toString().replace("px","")),a=Number(n.naturalHeight.toString().replace("px",""));t.imageAspectRatio=i/a;let{labelStyles:s}=ct(t);t.labelStyle=s;let l=r?.wrappingWidth;t.defaultWidth=r?.wrappingWidth;let u=Math.max(t.label?l??0:0,t?.assetWidth??i),h=t.constraint==="on"&&t?.assetHeight?t.assetHeight*t.imageAspectRatio:u,d=t.constraint==="on"?h/t.imageAspectRatio:t?.assetHeight??a;t.width=Math.max(h,l??0);let{shapeSvg:f,bbox:p,label:m}=await It(e,t,"image-shape default"),g=t.pos==="t",y=-h/2,v=-d/2,x=t.label?8:0,b=ut.svg(f),T=dt(t,{});t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let k=b.rectangle(y,v,h,d,T),C=Math.max(h,p.width),w=d+p.height+x,S=b.rectangle(-C/2,-w/2,C,w,{...T,fill:"none",stroke:"none"}),R=f.insert(()=>k,":first-child"),L=f.insert(()=>S);if(t.img){let N=f.append("image");N.attr("href",t.img),N.attr("width",h),N.attr("height",d),N.attr("preserveAspectRatio","none"),N.attr("transform",`translate(${-h/2},${g?w/2-d:-w/2})`)}return m.attr("transform",`translate(${-p.width/2-(p.x-(p.left??0))},${g?-d/2-p.height/2-x/2:d/2-p.height/2+x/2})`),R.attr("transform",`translate(0,${g?p.height/2+x/2:-p.height/2-x/2})`),pt(t,L),t.intersect=function(N){if(Z.info("iconSquare intersect",t,N),!t.label)return ht.rect(t,N);let I=t.x??0,_=t.y??0,A=t.height??0,M=[];return g?M=[{x:I-p.width/2,y:_-A/2},{x:I+p.width/2,y:_-A/2},{x:I+p.width/2,y:_-A/2+p.height+x},{x:I+h/2,y:_-A/2+p.height+x},{x:I+h/2,y:_+A/2},{x:I-h/2,y:_+A/2},{x:I-h/2,y:_-A/2+p.height+x},{x:I-p.width/2,y:_-A/2+p.height+x}]:M=[{x:I-h/2,y:_-A/2},{x:I+h/2,y:_-A/2},{x:I+h/2,y:_-A/2+d},{x:I+p.width/2,y:_-A/2+d},{x:I+p.width/2/2,y:_+A/2},{x:I-p.width/2,y:_+A/2},{x:I-p.width/2,y:_-A/2+d},{x:I-h/2,y:_-A/2+d}],ht.polygon(t,M,N)},f}var nle=F(()=>{"use strict";tr();vt();nr();Jt();Kt();o(rle,"imageSquare")});async function ile(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=i,s=t.look==="neo"?i*2:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=Math.max(u.width+(s??0)*2,t?.width??0),d=Math.max(u.height+(a??0)*2,t?.height??0),f=[{x:0,y:0},{x:h,y:0},{x:h+3*d/6,y:-d},{x:-3*d/6,y:-d}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=dt(t,{}),v=or(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-h/2}, ${d/2})`),m&&p.attr("style",m)}else p=as(l,h,d,f);return n&&p.attr("style",n),t.width=h,t.height=d,pt(t,p),t.intersect=function(g){return ht.polygon(t,f,g)},l}var ale=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();o(ile,"inv_trapezoid")});async function sle(e,t){let{shapeSvg:r,bbox:n,label:i}=await It(e,t,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),i.attr("transform",`translate(${-(n.width/2)-(n.x-(n.left??0))}, ${-(n.height/2)-(n.y-(n.top??0))})`),pt(t,a),t.intersect=function(u){return ht.rect(t,u)},r}var ole=F(()=>{"use strict";Sm();Kt();nr();o(sle,"labelRect")});async function lle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=i,s=t.look==="neo"?i*2:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.height??u.height)+a,d=(t?.width??u.width)+s,f=[{x:0,y:0},{x:d+3*h/6,y:0},{x:d,y:-h},{x:-(3*h)/6,y:-h}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=dt(t,{}),v=or(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${h/2})`),m&&p.attr("style",m)}else p=as(l,d,h,f);return n&&p.attr("style",n),t.width=d,t.height=h,pt(t,p),t.intersect=function(g){return ht.polygon(t,f,g)},l}var cle=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();o(lle,"lean_left")});async function ule(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=i,s=t.look==="neo"?i*2:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.height??u.height)+a,d=(t?.width??u.width)+s,f=[{x:-3*h/6,y:0},{x:d,y:0},{x:d+3*h/6,y:-h},{x:0,y:-h}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=dt(t,{}),v=or(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${h/2})`),m&&p.attr("style",m)}else p=as(l,d,h,f);return n&&p.attr("style",n),t.width=d,t.height=h,pt(t,p),t.intersect=function(g){return ht.polygon(t,f,g)},l}var hle=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();o(ule,"lean_right")});function dle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.label="",t.labelStyle=r;let i=e.insert("g").attr("class",Dt(t)).attr("id",t.domId??t.id),{cssStyles:a}=t,s=Math.max(35,t?.width??0),l=Math.max(35,t?.height??0),u=7,h=[{x:s,y:0},{x:0,y:l+u/2},{x:s-2*u,y:l+u/2},{x:0,y:2*l},{x:s,y:l-u/2},{x:2*u,y:l-u/2}],d=ut.svg(i),f=dt(t,{});t.look!=="handDrawn"&&(f.roughness=0,f.fillStyle="solid");let p=or(h),m=d.path(p,f),g=i.insert(()=>m,":first-child");return g.attr("class","outer-path"),a&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",a),n&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",n),g.attr("transform",`translate(-${s/2},${-l})`),pt(t,g),t.intersect=function(y){return Z.info("lightningBolt intersect",t,y),ht.polygon(t,h,y)},i}var fle=F(()=>{"use strict";vt();Kt();Jt();tr();nr();Kt();o(dle,"lightningBolt")});async function gle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?24:i;if(t.width||t.height){let x=t.width??0;t.width=(t.width??0)-a,t.widthw,":first-child").attr("class","line"),y=l.insert(()=>C,":first-child"),y.attr("class","basic label-container"),v&&y.attr("style",v)}else{let x=vQe(0,0,d,m,f,p,g);y=l.insert("path",":first-child").attr("d",x).attr("class","basic label-container outer-path").attr("style",kn(v)).attr("style",n)}return y.attr("label-offset-y",p),y.attr("transform",`translate(${-d/2}, ${-(m/2+p)})`),pt(t,y),h.attr("transform",`translate(${-(u.width/2)-(u.x-(u.left??0))}, ${-(u.height/2)+p-(u.y-(u.top??0))})`),t.intersect=function(x){let b=ht.rect(t,x),T=b.x-(t.x??0);if(f!=0&&(Math.abs(T)<(t.width??0)/2||Math.abs(T)==(t.width??0)/2&&Math.abs(b.y-(t.y??0))>(t.height??0)/2-p)){let k=p*p*(1-T*T/(f*f));k>0&&(k=Math.sqrt(k)),k=p-k,x.y-(t.y??0)>0&&(k=-k),b.y+=k}return b},l}var vQe,xQe,bQe,ple,mle,yle=F(()=>{"use strict";Kt();nr();Jt();tr();Qt();vQe=o((e,t,r,n,i,a,s)=>[`M${e},${t+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${e},${t+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),xQe=o((e,t,r,n,i,a,s)=>[`M${e},${t+a}`,`M${e+r},${t+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${e},${t+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),bQe=o((e,t,r,n,i,a)=>[`M${e-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD"),ple=10,mle=10;o(gle,"linedCylinder")});async function vle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i;if(t.width||t.height){let k=t.width;t.width=(k??0)*10/11-a*2,t.width<10&&(t.width=10),t.height=(t?.height??0)-s*2,t.height<10&&(t.height=10)}let{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=(t?.width?t?.width:u.width)+(a??0)*2,f=(t?.height?t?.height:u.height)+(s??0)*2,p=t.look==="neo"?f/4:f/8,m=f+p,{cssStyles:g}=t,y=ut.svg(l),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=[{x:-d/2-d/2*.1,y:-m/2},{x:-d/2-d/2*.1,y:m/2},...fl(-d/2-d/2*.1,m/2,d/2+d/2*.1,m/2,p,.8),{x:d/2+d/2*.1,y:-m/2},{x:-d/2-d/2*.1,y:-m/2},{x:-d/2,y:-m/2},{x:-d/2,y:m/2*1.1},{x:-d/2,y:-m/2}],b=y.polygon(x.map(k=>[k.x,k.y]),v),T=l.insert(()=>b,":first-child");return T.attr("class","basic label-container outer-path"),g&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",g),n&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",n),T.attr("transform",`translate(0,${-p/2})`),h.attr("transform",`translate(${-d/2+(t.padding??0)+d/2*.1/2-(u.x-(u.left??0))},${-f/2+(t.padding??0)-p/2-(u.y-(u.top??0))})`),pt(t,T),t.intersect=function(k){return ht.polygon(t,x,k)},l}var xle=F(()=>{"use strict";Kt();nr();tr();Jt();o(vle,"linedWaveEdgedRect")});async function ble(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=t.look==="neo"?10:5;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-a*2-2*l,10),t.height=Math.max((t?.height??0)-s*2-2*l,10));let{shapeSvg:u,bbox:h,label:d}=await It(e,t,Dt(t)),f=(t?.width?t?.width:h.width)+a*2+2*l,p=(t?.height?t?.height:h.height)+s*2+2*l,m=f-2*l,g=p-2*l,y=-m/2,v=-g/2,{cssStyles:x}=t,b=ut.svg(u),T=dt(t,{}),k=[{x:y-l,y:v+l},{x:y-l,y:v+g+l},{x:y+m-l,y:v+g+l},{x:y+m-l,y:v+g},{x:y+m,y:v+g},{x:y+m,y:v+g-l},{x:y+m+l,y:v+g-l},{x:y+m+l,y:v-l},{x:y+l,y:v-l},{x:y+l,y:v},{x:y,y:v},{x:y,y:v+l}],C=[{x:y,y:v+l},{x:y+m-l,y:v+l},{x:y+m-l,y:v+g},{x:y+m,y:v+g},{x:y+m,y:v},{x:y,y:v}];t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let w=or(k),S=b.path(w,T),R=or(C),L=b.path(R,T);t.look!=="handDrawn"&&(S=UP(S),L=UP(L));let N=u.insert("g",":first-child");return N.insert(()=>S),N.insert(()=>L),N.attr("class","basic label-container outer-path"),x&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",x),n&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",n),d.attr("transform",`translate(${-(h.width/2)-l-(h.x-(h.left??0))}, ${-(h.height/2)+l-(h.y-(h.top??0))})`),pt(t,N),t.intersect=function(I){return ht.polygon(t,k,I)},u}var Tle=F(()=>{"use strict";Kt();Jt();tr();nr();o(ble,"multiRect")});async function Cle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await It(e,t,Dt(t)),l=t.padding??0,u=t.look==="neo"?16:l,h=t.look==="neo"?12:l,d=!0;(t.width||t.height)&&(d=!1,t.width=(t?.width??0)-u*2,t.height=(t?.height??0)-h*3);let f=Math.max(a.width,t?.width??0)+u*2,p=Math.max(a.height,t?.height??0)+h*3,m=t.look==="neo"?p/4:p/8,g=p+(d?m/2:-m/2),y=-f/2,v=-g/2,x=10,{cssStyles:b}=t,T=fl(y-x,v+g+x,y+f-x,v+g+x,m,.8),k=T?.[T.length-1],C=[{x:y-x,y:v+x},{x:y-x,y:v+g+x},...T,{x:y+f-x,y:k.y-x},{x:y+f,y:k.y-x},{x:y+f,y:k.y-2*x},{x:y+f+x,y:k.y-2*x},{x:y+f+x,y:v-x},{x:y+x,y:v-x},{x:y+x,y:v},{x:y,y:v},{x:y,y:v+x}],w=[{x:y,y:v+x},{x:y+f-x,y:v+x},{x:y+f-x,y:k.y-x},{x:y+f,y:k.y-x},{x:y+f,y:v},{x:y,y:v}],S=ut.svg(i),R=dt(t,{});t.look!=="handDrawn"&&(R.roughness=0,R.fillStyle="solid");let L=or(C),N=S.path(L,R),I=or(w),_=S.path(I,R),A=i.insert(()=>N,":first-child");return A.insert(()=>_),A.attr("class","basic label-container outer-path"),b&&t.look!=="handDrawn"&&A.selectAll("path").attr("style",b),n&&t.look!=="handDrawn"&&A.selectAll("path").attr("style",n),A.attr("transform",`translate(0,${-m/2})`),s.attr("transform",`translate(${-(a.width/2)-x-(a.x-(a.left??0))}, ${-(a.height/2)+x-m/2-(a.y-(a.top??0))})`),pt(t,A),t.intersect=function(M){return ht.polygon(t,C,M)},i}var wle=F(()=>{"use strict";Kt();nr();tr();Jt();o(Cle,"multiWaveEdgedRectangle")});async function kle(e,t,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n,t.useHtmlLabels||Gr(_t())||(t.centerLabel=!0);let{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=Math.max(l.width+(t.padding??0)*2,t?.width??0),d=Math.max(l.height+(t.padding??0)*2,t?.height??0),f=-h/2,p=-d/2,{cssStyles:m}=t,g=ut.svg(s),y=dt(t,{fill:r.noteBkgColor,stroke:r.noteBorderColor});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=g.rectangle(f,p,h,d,y),x=s.insert(()=>v,":first-child");return x.attr("class","basic label-container outer-path"),u.attr("class","label noteLabel"),m&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",m),i&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",i),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),pt(t,x),t.intersect=function(b){return ht.rect(t,b)},s}var Sle=F(()=>{"use strict";tr();nr();Jt();Kt();ur();ur();o(kle,"note")});async function Ele(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a}=await It(e,t,Dt(t)),s=a.width+(t.padding??0),l=a.height+(t.padding??0),u=s+l,h=.5,d=[{x:u/2,y:0},{x:u,y:-u/2},{x:u/2,y:-u},{x:0,y:-u/2}],f,{cssStyles:p}=t;if(t.look==="handDrawn"){let m=ut.svg(i),g=dt(t,{}),y=TQe(0,0,u),v=m.path(y,g);f=i.insert(()=>v,":first-child").attr("transform",`translate(${-u/2+h}, ${u/2})`),p&&f.attr("style",p)}else f=as(i,u,u,d),f.attr("transform",`translate(${-u/2+h}, ${u/2})`);return n&&f.attr("style",n),pt(t,f),t.calcIntersect=function(m,g){let y=m.width,v=[{x:y/2,y:0},{x:y,y:-y/2},{x:y/2,y:-y},{x:0,y:-y/2}],x=ht.polygon(m,v,g);return{x:x.x-.5,y:x.y-.5}},t.intersect=function(m){return this.calcIntersect(t,m)},i}var TQe,Ale=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();TQe=o((e,t,r)=>[`M${e+r/2},${t}`,`L${e+r},${t-r/2}`,`L${e+r/2},${t-r}`,`L${e},${t-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");o(Ele,"question")});async function Rle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?21:i??0,s=t.look==="neo"?12:i??0,{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=(t?.width??u.width)+(t.look==="neo"?a*2:a),f=(t?.height??u.height)+(t.look==="neo"?s*2:s),p=-d/2,m=-f/2,g=m/2,y=[{x:p+g,y:m},{x:p,y:0},{x:p+g,y:-m},{x:-p,y:-m},{x:-p,y:m}],{cssStyles:v}=t,x=ut.svg(l),b=dt(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let T=or(y),k=x.path(T,b),C=l.insert(()=>k,":first-child");return C.attr("class","basic label-container outer-path"),v&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",v),n&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(${-g/2},0)`),h.attr("transform",`translate(${-g/2-u.width/2-(u.x-(u.left??0))}, ${-(u.height/2)-(u.y-(u.top??0))})`),pt(t,C),t.intersect=function(w){return ht.polygon(t,y,w)},l}var _le=F(()=>{"use strict";Kt();nr();Jt();tr();o(Rle,"rect_left_inv_arrow")});var CQe,sc,G4=F(()=>{"use strict";ur();Xt();Ls();CQe=o(async(e,t,r,n=!1,i=!1)=>{let a=t||"";typeof a=="object"&&(a=a[0]);let s=Ae(),l=Gr(s);return await Pn(e,a,{style:r,isTitle:n,useHtmlLabels:l,markdown:!1,isNode:i,width:Number.POSITIVE_INFINITY},s)},"createLabel"),sc=CQe});async function Lle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i;t.cssClasses?i="node "+t.cssClasses:i="node default";let a=e.insert("g").attr("class",i).attr("id",t.domId||t.id),s=a.insert("g"),l=a.insert("g").attr("class","label").attr("style",n),u=t.description,h=t.label,d=await sc(l,h,t.labelStyle,!0,!0),f={width:0,height:0};if(Gr(Ae())){let R=d.children[0],L=et(d);f=R.getBoundingClientRect(),L.attr("width",f.width),L.attr("height",f.height)}Z.info("Text 2",u);let p=u||[],m=d.getBBox(),g=await sc(l,Array.isArray(p)?p.join("
    "):p,t.labelStyle,!0,!0),y=g.children[0],v=et(g);f=y.getBoundingClientRect(),v.attr("width",f.width),v.attr("height",f.height);let x=(t.padding||0)/2;et(g).attr("transform","translate( "+(f.width>m.width?0:(m.width-f.width)/2)+", "+(m.height+x+5)+")"),et(d).attr("transform","translate( "+(f.width(Z.debug("Rough node insert CXC",N),I),":first-child"),w=a.insert(()=>(Z.debug("Rough node insert CXC",N),N),":first-child")}else w=s.insert("rect",":first-child"),S=s.insert("line"),w.attr("class","outer title-state").attr("style",n).attr("x",-f.width/2-x).attr("y",-f.height/2-x).attr("width",f.width+(t.padding||0)).attr("height",f.height+(t.padding||0)),S.attr("class","divider").attr("x1",-f.width/2-x).attr("x2",f.width/2+x).attr("y1",-f.height/2-x+m.height+x).attr("y2",-f.height/2-x+m.height+x);return pt(t,w),t.intersect=function(R){return ht.rect(t,R)},a}var Dle=F(()=>{"use strict";$r();Kt();G4();nr();Jt();tr();Xt();km();vt();ur();o(Lle,"rectWithTitle")});async function Ile(e,t,{config:{themeVariables:r}}){let n=r?.radius??5,i={rx:n,ry:n,classes:"",labelPaddingX:(t?.padding??0)*1,labelPaddingY:(t?.padding??0)*1};return ac(e,t,i)}var Mle=F(()=>{"use strict";Sm();o(Ile,"roundedRect")});async function Nle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.look==="neo"?16:t.padding??0,a=t.look==="neo"?12:t.padding??0,{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=(t?.width??l.width)+i*2+(t.look==="neo"?Em:Em*2),d=(t?.height??l.height)+a*2,f=h-Em,p=d,m=Em-h/2,g=-d/2,{cssStyles:y}=t,v=ut.svg(s),x=dt(t,{});t.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let b=[{x:m,y:g},{x:m+f,y:g},{x:m+f,y:g+p},{x:m-Em,y:g+p},{x:m-Em,y:g},{x:m,y:g},{x:m,y:g+p}],T=v.polygon(b.map(C=>[C.x,C.y]),x),k=s.insert(()=>T,":first-child");return k.attr("class","basic label-container outer-path").attr("style",kn(y)),n&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",n),y&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",n),u.attr("transform",`translate(${Em/2-l.width/2-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),pt(t,k),t.intersect=function(C){return ht.rect(t,C)},s}var Em,Ple=F(()=>{"use strict";Kt();nr();Jt();tr();Qt();Em=8;o(Nle,"shadedProcess")});async function Ole(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-a*2,10),t.height=Math.max((t?.height??0)/1.5-s*2,10));let{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=(t?.width?t?.width:u.width)+a*2,f=((t?.height?t?.height:u.height)+s*2)*1.5,p=d,m=f/1.5,g=-p/2,y=-m/2,{cssStyles:v}=t,x=ut.svg(l),b=dt(t,{});t.look!=="handDrawn"&&(b.roughness=0,b.fillStyle="solid");let T=[{x:g,y},{x:g,y:y+m},{x:g+p,y:y+m},{x:g+p,y:y-m/2}],k=or(T),C=x.path(k,b),w=l.insert(()=>C,":first-child");return w.attr("class","basic label-container outer-path"),v&&t.look!=="handDrawn"&&w.selectChildren("path").attr("style",v),n&&t.look!=="handDrawn"&&w.selectChildren("path").attr("style",n),w.attr("transform",`translate(0, ${m/4})`),h.attr("transform",`translate(${-p/2+(t.padding??0)-(u.x-(u.left??0))}, ${-m/4+(t.padding??0)-(u.y-(u.top??0))})`),pt(t,w),t.intersect=function(S){return ht.polygon(t,T,S)},l}var Ble=F(()=>{"use strict";Kt();nr();Jt();tr();o(Ole,"slopedRect")});async function $le(e,t){let r=t.padding??0,n=t.look==="neo"?16:r*2,i=t.look==="neo"?12:r,a={rx:0,ry:0,classes:"",labelPaddingX:t.labelPaddingX??n,labelPaddingY:i};return ac(e,t,a)}var Fle=F(()=>{"use strict";Sm();o($le,"squareRect")});async function zle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?20:i,s=t.look==="neo"?12:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=u.height+(t.look==="neo"?s*2:s),d=u.width+h/4+(t.look==="neo"?a*2:a),f=h/2,{cssStyles:p}=t,m=ut.svg(l),g=dt(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let y=[{x:-d/2+f,y:-h/2},{x:d/2-f,y:-h/2},...Cm(-d/2+f,0,f,50,90,270),{x:d/2-f,y:h/2},...Cm(d/2-f,0,f,50,270,450)],v=or(y),x=m.path(v,g),b=l.insert(()=>x,":first-child");return b.attr("class","basic label-container outer-path"),p&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",p),n&&t.look!=="handDrawn"&&b.selectChildren("path").attr("style",n),pt(t,b),t.intersect=function(T){return ht.polygon(t,y,T)},l}var Gle=F(()=>{"use strict";Kt();nr();Jt();tr();o(zle,"stadium")});async function Vle(e,t){let r={rx:t.look==="neo"?3:5,ry:t.look==="neo"?3:5,classes:"flowchart-node"};return ac(e,t,r)}var Wle=F(()=>{"use strict";Sm();o(Vle,"state")});function qle(e,t,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n;let{cssStyles:a}=t,{lineColor:s,stateBorder:l,nodeBorder:u,nodeShadow:h}=r;(t.width||t.height)&&((t.width??0)<14&&(t.width=14),(t.height??0)<14&&(t.height=14)),t.width||(t.width=14),t.height||(t.height=14);let d=e.insert("g").attr("class","node default").attr("id",t.domId??t.id),f=ut.svg(d),p=dt(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let m=f.circle(0,0,t.width,{...p,stroke:s,strokeWidth:2}),g=l??u,y=(t.width??0)*5/14,v=f.circle(0,0,y,{...p,fill:g,stroke:g,strokeWidth:2,fillStyle:"solid"}),x=d.insert(()=>m,":first-child");if(x.insert(()=>v),t.look!=="handDrawn"&&x.attr("class","outer-path"),a&&x.selectAll("path").attr("style",a),i&&x.selectAll("path").attr("style",i),t.width<25&&h&&t.look!=="handDrawn"){let b=e.node()?.ownerSVGElement?.id??"",T=b?`${b}-drop-shadow-small`:"drop-shadow-small";x.attr("style",`filter:url(#${T})`)}return pt(t,x),t.intersect=function(b){return ht.circle(t,(t.width??0)/2,b)},d}var Hle=F(()=>{"use strict";tr();nr();Jt();Kt();o(qle,"stateEnd")});function Ule(e,t,{config:{themeVariables:r}}){let{lineColor:n,nodeShadow:i}=r;(t.width||t.height)&&((t.width??0)<14&&(t.width=14),(t.height??0)<14&&(t.height=14)),t.width||(t.width=14),t.height||(t.height=14);let a=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),s;if(t.look==="handDrawn"){let u=ut.svg(a).circle(0,0,t.width,qse(n));s=a.insert(()=>u),s.attr("class","state-start").attr("r",(t.width??7)/2).attr("width",t.width??14).attr("height",t.height??14)}else s=a.insert("circle",":first-child"),s.attr("class","state-start").attr("r",(t.width??7)/2).attr("width",t.width??14).attr("height",t.height??14);if(t.width<25&&i&&t.look!=="handDrawn"){let l=e.node()?.ownerSVGElement?.id??"",u=l?`${l}-drop-shadow-small`:"drop-shadow-small";s.attr("style",`filter:url(#${u})`)}return pt(t,s),t.intersect=function(l){return ht.circle(t,(t.width??7)/2,l)},a}var Yle=F(()=>{"use strict";tr();nr();Jt();Kt();o(Ule,"stateStart")});async function jle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t?.padding??8,a=t.look==="neo"?28:i,s=t.look==="neo"?12:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.width??u.width)+2*Gy+a,d=(t?.height??u.height)+s,f=h-2*Gy,p=d,m=-h/2,g=-d/2,y=[{x:0,y:0},{x:f,y:0},{x:f,y:-p},{x:0,y:-p},{x:0,y:0},{x:-8,y:0},{x:f+8,y:0},{x:f+8,y:-p},{x:-8,y:-p},{x:-8,y:0}];if(t.look==="handDrawn"){let v=ut.svg(l),x=dt(t,{}),b=v.rectangle(m,g,f+16,p,x),T=v.line(m+Gy,g,m+Gy,g+p,x),k=v.line(m+Gy+f,g,m+Gy+f,g+p,x);l.insert(()=>T,":first-child"),l.insert(()=>k,":first-child");let C=l.insert(()=>b,":first-child"),{cssStyles:w}=t;C.attr("class","basic label-container").attr("style",kn(w)),pt(t,C)}else{let v=as(l,f,p,y);n&&v.attr("style",n),pt(t,v)}return t.intersect=function(v){return ht.polygon(t,y,v)},l}var Gy,Xle=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();Qt();Gy=8;o(jle,"subroutine")});async function Kle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i;(t.width||t.height)&&(t.height=Math.max((t?.height??0)-s*2,10),t.width=Math.max((t?.width??0)-a*2-dO*(t.height+s*2),10));let{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.height?t?.height:u.height)+s*2,d=dO*h,f=dO*h,m=(t?.width?t?.width:u.width)+a*2+d-d,g=h,y=-m/2,v=-g/2,{cssStyles:x}=t,b=ut.svg(l),T=dt(t,{}),k=[{x:y-d/2,y:v},{x:y+m+d/2,y:v},{x:y+m+d/2,y:v+g},{x:y-d/2,y:v+g}],C=[{x:y+m-d/2,y:v+g},{x:y+m+d/2,y:v+g},{x:y+m+d/2,y:v+g-f}];t.look!=="handDrawn"&&(T.roughness=0,T.fillStyle="solid");let w=or(k),S=b.path(w,T),R=or(C),L=b.path(R,{...T,fillStyle:"solid"}),N=l.insert(()=>L,":first-child");return N.insert(()=>S,":first-child"),N.attr("class","basic label-container outer-path"),x&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",x),n&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",n),pt(t,N),t.intersect=function(I){return ht.polygon(t,k,I)},l}var dO,Zle=F(()=>{"use strict";Kt();Jt();tr();nr();dO=.2;o(Kle,"taggedRect")});async function Qle(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await It(e,t,Dt(t)),l=Math.max(a.width+(t.padding??0)*2,t?.width??0),u=Math.max(a.height+(t.padding??0)*2,t?.height??0),h=u/8,d=.2*l,f=.2*u,p=u+h,{cssStyles:m}=t,g=ut.svg(i),y=dt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-l/2-l/2*.1,y:p/2},...fl(-l/2-l/2*.1,p/2,l/2+l/2*.1,p/2,h,.8),{x:l/2+l/2*.1,y:-p/2},{x:-l/2-l/2*.1,y:-p/2}],x=-l/2+l/2*.1,b=-p/2-f*.4,T=[{x:x+l-d,y:(b+u)*1.3},{x:x+l,y:b+u-f},{x:x+l,y:(b+u)*.9},...fl(x+l,(b+u)*1.25,x+l-d,(b+u)*1.3,-u*.02,.5)],k=or(v),C=g.path(k,y),w=or(T),S=g.path(w,{...y,fillStyle:"solid"}),R=i.insert(()=>S,":first-child");return R.insert(()=>C,":first-child"),R.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",m),n&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",n),R.attr("transform",`translate(0,${-h/2})`),s.attr("transform",`translate(${-l/2+(t.padding??0)-(a.x-(a.left??0))},${-u/2+(t.padding??0)-h/2-(a.y-(a.top??0))})`),pt(t,R),t.intersect=function(L){return ht.polygon(t,v,L)},i}var Jle=F(()=>{"use strict";Kt();nr();tr();Jt();o(Qle,"taggedWaveEdgedRectangle")});async function ece(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a}=await It(e,t,Dt(t)),s=Math.max(a.width+(t.padding??0),t?.width||0),l=Math.max(a.height+(t.padding??0),t?.height||0),u=-s/2,h=-l/2,d=i.insert("rect",":first-child");return d.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",u).attr("y",h).attr("width",s).attr("height",l),pt(t,d),t.intersect=function(f){return ht.rect(t,f)},i}var tce=F(()=>{"use strict";Kt();nr();Jt();o(ece,"text")});async function ice(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?12:i/2;if(t.width||t.height){let y=t.height??0;t.height=(t.height??0)-a,t.heightT,":first-child"),g=s.insert(()=>b,":first-child"),g.attr("class","basic label-container"),m&&g.attr("style",m)}else{let y=wQe(0,0,p,h,f,d);g=s.insert("path",":first-child").attr("d",y).attr("class","basic label-container").attr("style",kn(m)).attr("style",n),g.attr("class","basic label-container outer-path"),m&&g.selectAll("path").attr("style",m),n&&g.selectAll("path").attr("style",n)}return g.attr("label-offset-x",f),g.attr("transform",`translate(${-p/2}, ${h/2} )`),u.attr("transform",`translate(${-(l.width/2)-f-(l.x-(l.left??0))}, ${-(l.height/2)-(l.y-(l.top??0))})`),pt(t,g),t.intersect=function(y){let v=ht.rect(t,y),x=v.y-(t.y??0);if(d!=0&&(Math.abs(x)<(t.height??0)/2||Math.abs(x)==(t.height??0)/2&&Math.abs(v.x-(t.x??0))>(t.width??0)/2-f)){let b=f*f*(1-x*x/(d*d));b!=0&&(b=Math.sqrt(Math.abs(b))),b=f-b,y.x-(t.x??0)>0&&(b=-b),v.x+=b}return v},s}var wQe,kQe,SQe,rce,nce,ace=F(()=>{"use strict";Kt();Jt();tr();nr();Qt();wQe=o((e,t,r,n,i,a)=>`M${e},${t} + a${i},${a} 0,0,1 0,${-n} + l${r},0 + a${i},${a} 0,0,1 0,${n} + M${r},${-n} + a${i},${a} 0,0,0 0,${n} + l${-r},0`,"createCylinderPathD"),kQe=o((e,t,r,n,i,a)=>[`M${e},${t}`,`M${e+r},${t}`,`a${i},${a} 0,0,0 0,${-n}`,`l${-r},0`,`a${i},${a} 0,0,0 0,${n}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),SQe=o((e,t,r,n,i,a)=>[`M${e+r/2},${-n/2}`,`a${i},${a} 0,0,0 0,${n}`].join(" "),"createInnerCylinderPathD"),rce=5,nce=10;o(ice,"tiltedCylinder")});async function sce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=(t.look==="neo",i),s=t.look==="neo"?i*2:i,{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.height??u.height)+a,d=(t?.width??u.width)+s,f=[{x:-3*h/6,y:0},{x:d+3*h/6,y:0},{x:d,y:-h},{x:0,y:-h}],p,{cssStyles:m}=t;if(t.look==="handDrawn"){let g=ut.svg(l),y=dt(t,{}),v=or(f),x=g.path(v,y);p=l.insert(()=>x,":first-child").attr("transform",`translate(${-d/2}, ${h/2})`),m&&p.attr("style",m)}else p=as(l,d,h,f);return n&&p.attr("style",n),t.width=d,t.height=h,pt(t,p),t.intersect=function(g){return ht.polygon(t,f,g)},l}var oce=F(()=>{"use strict";Kt();nr();Jt();tr();Ch();o(sce,"trapezoid")});async function lce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=15,u=5;(t.width||t.height)&&(t.height=(t.height??0)-s*2,t.heightb,":first-child");return T.attr("class","basic label-container outer-path"),m&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",m),n&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),pt(t,T),t.intersect=function(k){return ht.polygon(t,v,k)},h}var cce=F(()=>{"use strict";Kt();nr();Jt();tr();o(lce,"trapezoidalPentagon")});async function dce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?i*2:i;(t.width||t.height)&&(t.width=((t?.width??0)-a)/2,t.widthb,":first-child").attr("transform",`translate(${-f/2}, ${f/2})`).attr("class","outer-path");return g&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",g),n&&t.look!=="handDrawn"&&T.selectChildren("path").attr("style",n),t.width=d,t.height=f,pt(t,T),u.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${f/2-(l.height+(t.padding??0)/(h?2:1)-(l.y-(l.top??0)))})`),t.intersect=function(k){return Z.info("Triangle intersect",t,m,k),ht.polygon(t,m,k)},s}var uce,hce,fce=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Kt();Vr();Xt();uce=10,hce=10;o(dce,"triangle")});async function pce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?12:i,l=!0;(t.width||t.height)&&(l=!1,t.width=(t?.width??0)-a*2,t.width<10&&(t.width=10),t.height=(t?.height??0)-s*2,t.height<10&&(t.height=10));let{shapeSvg:u,bbox:h,label:d}=await It(e,t,Dt(t)),f=(t?.width?t?.width:h.width)+(a??0)*2,p=(t?.height?t?.height:h.height)+(s??0)*2,m=t.look==="neo"?p/4:p/8,g=p+(l?m:-m),{cssStyles:y}=t,x=14-f,b=x>0?x/2:0,T=ut.svg(u),k=dt(t,{});t.look!=="handDrawn"&&(k.roughness=0,k.fillStyle="solid");let C=[{x:-f/2-b,y:g/2},...fl(-f/2-b,g/2,f/2+b,g/2,m,.8),{x:f/2+b,y:-g/2},{x:-f/2-b,y:-g/2}],w=or(C),S=T.path(w,k),R=u.insert(()=>S,":first-child");return R.attr("class","basic label-container outer-path"),y&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",y),n&&t.look!=="handDrawn"&&R.selectAll("path").attr("style",n),R.attr("transform",`translate(0,${-m/2})`),d.attr("transform",`translate(${-f/2+(t.padding??0)-(h.x-(h.left??0))},${-p/2+(t.padding??0)-m-(h.y-(h.top??0))})`),pt(t,R),t.intersect=function(L){return ht.polygon(t,C,L)},u}var mce=F(()=>{"use strict";Kt();nr();tr();Jt();o(pce,"waveEdgedRectangle")});async function gce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.padding??0,a=t.look==="neo"?16:i,s=t.look==="neo"?20:i;if(t.width||t.height){t.width=t?.width??0,t.width<20&&(t.width=20),t.height=t?.height??0,t.height<10&&(t.height=10);let k=Math.min(t.height*.2,t.height/4);t.height=Math.ceil(t.height-s-k*(20/9)),t.width=t.width-a*2}let{shapeSvg:l,bbox:u}=await It(e,t,Dt(t)),h=(t?.width?t?.width:u.width)+a*2,d=(t?.height?t?.height:u.height)+s,f=d/8,p=d+f*2,{cssStyles:m}=t,g=ut.svg(l),y=dt(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let v=[{x:-h/2,y:p/2},...fl(-h/2,p/2,h/2,p/2,f,1),{x:h/2,y:-p/2},...fl(h/2,-p/2,-h/2,-p/2,f,-1)],x=or(v),b=g.path(x,y),T=l.insert(()=>b,":first-child");return T.attr("class","basic label-container"),m&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",m),n&&t.look!=="handDrawn"&&T.selectAll("path").attr("style",n),pt(t,T),t.intersect=function(k){return ht.polygon(t,v,k)},l}var yce=F(()=>{"use strict";Kt();nr();Jt();tr();o(gce,"waveRectangle")});async function vce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t.look==="neo"?16:t.padding??0,a=t.look==="neo"?12:t.padding??0;(t.width||t.height)&&(t.width=Math.max((t?.width??0)-i*2-Ri,10),t.height=Math.max((t?.height??0)-a*2-Ri,10));let{shapeSvg:s,bbox:l,label:u}=await It(e,t,Dt(t)),h=(t?.width?t?.width:l.width)+i*2+Ri,d=(t?.height?t?.height:l.height)+a*2+Ri,f=h-Ri,p=d-Ri,m=-f/2,g=-p/2,{cssStyles:y}=t,v=ut.svg(s),x=dt(t,{}),b=[{x:m-Ri,y:g-Ri},{x:m-Ri,y:g+p},{x:m+f,y:g+p},{x:m+f,y:g-Ri}],T=`M${m-Ri},${g-Ri} L${m+f},${g-Ri} L${m+f},${g+p} L${m-Ri},${g+p} L${m-Ri},${g-Ri} + M${m-Ri},${g} L${m+f},${g} + M${m},${g-Ri} L${m},${g+p}`;t.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let k=v.path(T,x),C=s.insert(()=>k,":first-child");return C.attr("transform",`translate(${Ri/2}, ${Ri/2})`),C.attr("class","basic label-container outer-path"),y&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",y),n&&t.look!=="handDrawn"&&C.selectAll("path").attr("style",n),u.attr("transform",`translate(${-(l.width/2)+Ri/2-(l.x-(l.left??0))}, ${-(l.height/2)+Ri/2-(l.y-(l.top??0))})`),pt(t,C),t.intersect=function(w){return ht.polygon(t,b,w)},s}var Ri,xce=F(()=>{"use strict";Kt();Jt();tr();nr();Ri=10;o(vce,"windowPane")});async function fO(e,t){let r=t;r.alias&&(t.label=r.alias);let{theme:n,themeVariables:i}=_t(),{rowEven:a,rowOdd:s,nodeBorder:l,borderColorArray:u}=i;if(t.look==="handDrawn"){let{themeVariables:Q}=_t(),{background:U}=Q,oe={...t,id:t.id+"-background",domId:(t.domId||t.id)+"-background",look:"default",cssStyles:["stroke: none",`fill: ${U}`]};await fO(e,oe)}let h=_t();t.useHtmlLabels=h.htmlLabels;let d=h.er?.diagramPadding??10,f=h.er?.entityPadding??6,{cssStyles:p}=t,{labelStyles:m,nodeStyles:g}=ct(t);if(r.attributes.length===0&&t.label){let Q={rx:0,ry:0,labelPaddingX:d,labelPaddingY:d*1.5,classes:""};Ca(t.label,h)+Q.labelPaddingX*20){let Q=x.width+d*2-(C+w+S+R);C+=Q/I,w+=Q/I,S>0&&(S+=Q/I),R>0&&(R+=Q/I)}let A=C+w+S+R,M=ut.svg(v),D=dt(t,{});t.look!=="handDrawn"&&(D.roughness=0,D.fillStyle="solid");let P=0;k.length>0&&(P=k.reduce((Q,U)=>Q+(U?.rowHeight??0),0));let B=Math.max(_.width+d*2,t?.width||0,A),O=Math.max((P??0)+x.height,t?.height||0),$=-B/2,V=-O/2;if(v.selectAll("g:not(:first-child)").each((Q,U,oe)=>{let te=et(oe[U]),le=te.attr("transform"),ie=0,ae=0;if(le){let be=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(le);be&&(ie=parseFloat(be[1]),ae=parseFloat(be[2]),te.attr("class").includes("attribute-name")?ie+=C:te.attr("class").includes("attribute-keys")?ie+=C+w:te.attr("class").includes("attribute-comment")&&(ie+=C+w+S))}te.attr("transform",`translate(${$+d/2+ie}, ${ae+V+x.height+f/2})`)}),v.select(".name").attr("transform","translate("+-x.width/2+", "+(V+f/2)+")"),n!=null&&bce.has(n)){let Q=r.colorIndex??0;v.attr("data-color-id",`color-${Q%u.length}`)}let G=M.rectangle($,V,B,O,D),z=v.insert(()=>G,":first-child").attr("class","outer-path").attr("style",p.join(""));T.push(0);for(let[Q,U]of k.entries()){let te=(Q+1)%2===0&&U.yOffset!==0,le=M.rectangle($,x.height+V+U?.yOffset,B,U?.rowHeight,{...D,fill:te?a:s,stroke:l});v.insert(()=>le,"g.label").attr("style",p.join("")).attr("class",`row-rect-${te?"even":"odd"}`)}let W=1e-4,H=F2($,x.height+V,B+$,x.height+V,W),j=M.polygon(H.map(Q=>[Q.x,Q.y]),D);if(v.insert(()=>j).attr("class","divider"),H=F2(C+$,x.height+V,C+$,O+V,W),j=M.polygon(H.map(Q=>[Q.x,Q.y]),D),v.insert(()=>j).attr("class","divider"),L){let Q=C+w+$;H=F2(Q,x.height+V,Q,O+V,W),j=M.polygon(H.map(U=>[U.x,U.y]),D),v.insert(()=>j).attr("class","divider")}if(N){let Q=C+w+S+$;H=F2(Q,x.height+V,Q,O+V,W),j=M.polygon(H.map(U=>[U.x,U.y]),D),v.insert(()=>j).attr("class","divider")}for(let Q of T){let U=x.height+V+Q;H=F2($,U,B+$,U,W),j=M.polygon(H.map(oe=>[oe.x,oe.y]),D),v.insert(()=>j).attr("class","divider")}if(pt(t,z),g&&t.look!=="handDrawn")if(n!=null&&EQe.has(n))v.selectAll("path").attr("style",g);else{let U=g.split(";")?.filter(oe=>oe.includes("stroke"))?.map(oe=>`${oe}`).join("; ");v.selectAll("path").attr("style",U??""),v.selectAll(".row-rect-even path").attr("style",g)}return t.intersect=function(Q){return ht.rect(t,Q)},v}async function $2(e,t,r,n=0,i=0,a=[],s=""){let l=e.insert("g").attr("class",`label ${a.join(" ")}`).attr("transform",`translate(${n}, ${i})`).attr("style",s);t!==qc(t)&&(t=qc(t),t=t.replaceAll("<","<").replaceAll(">",">"));let u=l.node().appendChild(await Pn(l,t,{width:Ca(t,r)+100,style:s,useHtmlLabels:r.htmlLabels},r));if(t.includes("<")||t.includes(">")){let d=u.children[0];for(d.textContent=d.textContent.replaceAll("<","<").replaceAll(">",">");d.childNodes[0];)d=d.childNodes[0],d.textContent=d.textContent.replaceAll("<","<").replaceAll(">",">")}let h=u.getBBox();if(ya(r.htmlLabels)){let d=u.children[0];d.style.textAlign="start";let f=et(u);h=d.getBoundingClientRect(),f.attr("width",h.width),f.attr("height",h.height)}return h}function F2(e,t,r,n,i){return e===r?[{x:e-i/2,y:t},{x:e+i/2,y:t},{x:r+i/2,y:n},{x:r-i/2,y:n}]:[{x:e,y:t-i/2},{x:e,y:t+i/2},{x:r,y:n+i/2},{x:r,y:n-i/2}]}var bce,EQe,Tce=F(()=>{"use strict";Kt();nr();Jt();tr();Sm();ur();Ls();Vr();$r();Qt();bce=new Set(["redux-color","redux-dark-color"]),EQe=new Set(["redux","redux-dark","redux-color","redux-dark-color"]);o(fO,"erBox");o($2,"addText");o(F2,"lineToPolygon")});async function Cce(e,t,r,n,i=r.class.padding??12){let a=n?0:3,s=e.insert("g").attr("class",Dt(t)).attr("id",t.domId||t.id),l=null,u=null,h=null,d=null,f=0,p=0,m=0;if(l=s.insert("g").attr("class","annotation-group text"),t.annotations.length>0){let b=t.annotations[0];await V4(l,{text:`\xAB${b}\xBB`},0),f=l.node().getBBox().height}u=s.insert("g").attr("class","label-group text"),await V4(u,t,0,["font-weight: bolder"]);let g=u.node().getBBox();p=g.height,h=s.insert("g").attr("class","members-group text");let y=0;for(let b of t.members){let T=await V4(h,b,y,[b.parseClassifier()]);y+=T+a}m=h.node().getBBox().height,m<=0&&(m=i/2),d=s.insert("g").attr("class","methods-group text");let v=0;for(let b of t.methods){let T=await V4(d,b,v,[b.parseClassifier()]);v+=T+a}let x=s.node().getBBox();if(l!==null){let b=l.node().getBBox();l.attr("transform",`translate(${-b.width/2})`)}return u.attr("transform",`translate(${-g.width/2}, ${f})`),x=s.node().getBBox(),h.attr("transform",`translate(0, ${f+p+i*2})`),x=s.node().getBBox(),d.attr("transform",`translate(0, ${f+p+(m?m+i*4:i*2)})`),x=s.node().getBBox(),{shapeSvg:s,bbox:x}}async function V4(e,t,r,n=[]){let i=e.insert("g").attr("class","label").attr("style",n.join("; ")),a=_t(),s="useHtmlLabels"in t?t.useHtmlLabels:ya(a.htmlLabels)??!0,l="";"text"in t?l=t.text:l=t.label,!s&&l.startsWith("\\")&&(l=l.substring(1)),ni(l)&&(s=!0);let u=await Pn(i,ub(Rs(l)),{width:Ca(l,a)+50,classes:"markdown-node-label",useHtmlLabels:s},a),h,d=1;if(s){let f=u.children[0],p=et(u);d=f.innerHTML.split("
    ").length,f.innerHTML.includes("")&&(d+=f.innerHTML.split("").length-1);let m=f.getElementsByTagName("img");if(m){let g=l.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,k=parseInt(b,10)*5+"px";y.style.minWidth=k,y.style.maxWidth=k}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=f.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}else{n.includes("font-weight: bolder")&&et(u).selectAll("tspan").attr("font-weight",""),d=u.children.length;let f=u.children[0];(u.textContent===""||u.textContent.includes(">"))&&(f.textContent=l[0]+l.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),l[1]===" "&&(f.textContent=f.textContent[0]+" "+f.textContent.substring(1))),f.textContent==="undefined"&&(f.textContent=""),h=u.getBBox()}return i.attr("transform","translate(0,"+(-h.height/(2*d)+r)+")"),h.height}var wce=F(()=>{"use strict";$r();ur();Kt();Qt();Xt();Ls();Vr();o(Cce,"textHelper");o(V4,"addText")});async function kce(e,t){let r=Ae(),{themeVariables:n}=r,{useGradient:i}=n,a=r.class.padding??12,s=a,l=t.useHtmlLabels??ya(r.htmlLabels)??!0,u=t;u.annotations=u.annotations??[],u.members=u.members??[],u.methods=u.methods??[];let{shapeSvg:h,bbox:d}=await Cce(e,t,r,l,s),{labelStyles:f,nodeStyles:p}=ct(t);t.labelStyle=f,t.cssStyles=u.styles||"";let m=u.styles?.join(";")||p||"";t.cssStyles||(t.cssStyles=m.replaceAll("!important","").split(";"));let g=u.members.length===0&&u.methods.length===0&&!r.class?.hideEmptyMembersBox,y=ut.svg(h),v=dt(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=Math.max(t.width??0,d.width),b=Math.max(t.height??0,d.height),T=(t.height??0)>d.height;u.members.length===0&&u.methods.length===0?b+=s:u.members.length>0&&u.methods.length===0&&(b+=s*2);let k=-x/2,C=-b/2,w=g?a*2:u.members.length===0&&u.methods.length===0?-a:0;T&&(w=a*2);let S=y.rectangle(k-a,C-a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0),x+2*a,b+2*a+w,v),R=h.insert(()=>S,":first-child");R.attr("class","basic label-container outer-path");let L=R.node().getBBox(),N=h.select(".annotation-group").node().getBBox().height-(g?a/2:0)||0,I=h.select(".label-group").node().getBBox().height-(g?a/2:0)||0,_=h.select(".members-group").node().getBBox().height-(g?a/2:0)||0,A=(N+I+C+a-(C-a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0)))/2;if(h.selectAll(".text").each((M,D,P)=>{let B=et(P[D]),O=B.attr("transform"),$=0;if(O){let W=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(O);W&&($=parseFloat(W[2]))}let V=$+C+a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0);if(B.attr("class").includes("methods-group")){let z=Math.max(_,s/2);T?V=Math.max(A,N+I+z+C+s*2+a)+s*2:V=N+I+z+C+s*4+a}u.members.length===0&&u.methods.length===0&&r.class?.hideEmptyMembersBox&&(u.annotations.length>0?V=$-s:V=$),l||(V-=4);let G=k;(B.attr("class").includes("label-group")||B.attr("class").includes("annotation-group"))&&(G=-B.node()?.getBBox().width/2||0,h.selectAll("text").each(function(z,W,H){window.getComputedStyle(H[W]).textAnchor==="middle"&&(G=0)})),B.attr("transform",`translate(${G}, ${V})`)}),u.members.length>0||u.methods.length>0||g){let M=N+I+C+a,D=y.line(L.x,M,L.x+L.width,M+.001,v);h.insert(()=>D).attr("class",`divider${t.look==="neo"&&!i?" neo-line":""}`).attr("style",m)}if(g||u.members.length>0||u.methods.length>0){let M=N+I+_+C+s*2+a,D=y.line(L.x,T?Math.max(A,M):M,L.x+L.width,(T?Math.max(A,M):M)+.001,v);h.insert(()=>D).attr("class",`divider${t.look==="neo"&&!i?" neo-line":""}`).attr("style",m)}if(u.look!=="handDrawn"&&h.selectAll("path").attr("style",m),R.select(":nth-child(2)").attr("style",m),h.selectAll(".divider").select("path").attr("style",m),t.labelStyle?h.selectAll("span").attr("style",t.labelStyle):h.selectAll("span").attr("style",m),!l){let M=RegExp(/color\s*:\s*([^;]*)/),D=M.exec(m);if(D){let P=D[0].replace("color","fill");h.selectAll("tspan").attr("style",P)}else if(f){let P=M.exec(f);if(P){let B=P[0].replace("color","fill");h.selectAll("tspan").attr("style",B)}}}return pt(t,R),t.intersect=function(M){return ht.rect(t,M)},h}var Sce=F(()=>{"use strict";Kt();Xt();$r();tr();Jt();nr();wce();Vr();o(kce,"classBox")});async function Ece(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let i=t,a=t,s=20,l=20,u="verifyMethod"in t,h=Dt(t),{themeVariables:d}=Ae(),{borderColorArray:f,requirementEdgeLabelBackground:p}=d,m=e.insert("g").attr("class",h).attr("id",t.domId??t.id),g;u?g=await wh(m,`<<${i.type}>>`,0,t.labelStyle):g=await wh(m,"<<Element>>",0,t.labelStyle);let y=g,v=await wh(m,i.name,y,t.labelStyle+"; font-weight: bold;");if(y+=v+l,u){let L=await wh(m,`${i.requirementId?`ID: ${i.requirementId}`:""}`,y,t.labelStyle);y+=L;let N=await wh(m,`${i.text?`Text: ${i.text}`:""}`,y,t.labelStyle);y+=N;let I=await wh(m,`${i.risk?`Risk: ${i.risk}`:""}`,y,t.labelStyle);y+=I,await wh(m,`${i.verifyMethod?`Verification: ${i.verifyMethod}`:""}`,y,t.labelStyle)}else{let L=await wh(m,`${a.type?`Type: ${a.type}`:""}`,y,t.labelStyle);y+=L,await wh(m,`${a.docRef?`Doc Ref: ${a.docRef}`:""}`,y,t.labelStyle)}let x=(m.node()?.getBBox().width??200)+s,b=(m.node()?.getBBox().height??200)+s,T=-x/2,k=-b/2,C=ut.svg(m),w=dt(t,{});t.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let S=C.rectangle(T,k,x,b,w),R=m.insert(()=>S,":first-child");if(R.attr("class","basic label-container outer-path").attr("style",n),f?.length){let L=t.colorIndex??0;m.attr("data-color-id",`color-${L%f.length}`)}if(m.selectAll(".label").each((L,N,I)=>{let _=et(I[N]),A=_.attr("transform"),M=0,D=0;if(A){let $=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(A);$&&(M=parseFloat($[1]),D=parseFloat($[2]))}let P=D-b/2,B=T+s/2;(N===0||N===1)&&(B=M),_.attr("transform",`translate(${B}, ${P+s})`)}),y>g+v+l){let L=k+g+v+l,N;if(t.look==="neo"){let A=[[T,L],[T+x,L],[T+x,L+.001],[T,L+.001]];N=C.polygon(A,w)}else N=C.line(T,L,T+x,L,w);m.insert(()=>N).attr("class","divider")}return pt(t,R),t.intersect=function(L){return ht.rect(t,L)},n&&t.look!=="handDrawn"&&(p||f?.length)&&m.selectAll("path").attr("style",n),m}async function wh(e,t,r,n=""){if(t==="")return 0;let i=e.insert("g").attr("class","label").attr("style",n),a=Ae(),s=a.htmlLabels??!0,l=await Pn(i,ub(Rs(t)),{width:Ca(t,a)+50,classes:"markdown-node-label",useHtmlLabels:s,style:n},a),u;if(s){let h=l.children[0],d=et(l);u=h.getBoundingClientRect(),d.attr("width",u.width),d.attr("height",u.height)}else{let h=l.children[0];for(let d of h.children)n&&d.setAttribute("style",n);u=l.getBBox(),u.height+=6}return i.attr("transform",`translate(${-u.width/2},${-u.height/2+r})`),u.height}var Ace=F(()=>{"use strict";Kt();nr();Jt();tr();Qt();Xt();Ls();$r();o(Ece,"requirementBox");o(wh,"addText")});async function Rce(e,t,{config:r}){let{labelStyles:n,nodeStyles:i}=ct(t);t.labelStyle=n||"";let a=10,s=t.width;t.width=(t.width??200)-10;let{shapeSvg:l,bbox:u,label:h}=await It(e,t,Dt(t)),d=t.padding||10,f="",p;"ticket"in t&&t.ticket&&r?.kanban?.ticketBaseUrl&&(f=r?.kanban?.ticketBaseUrl.replace("#TICKET#",t.ticket),p=l.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",f).attr("target","_blank"));let m={useHtmlLabels:t.useHtmlLabels,labelStyle:t.labelStyle||"",width:t.width,img:t.img,padding:t.padding||8,centerLabel:!1},g,y;p?{label:g,bbox:y}=await A4(p,"ticket"in t&&t.ticket||"",m):{label:g,bbox:y}=await A4(l,"ticket"in t&&t.ticket||"",m);let{label:v,bbox:x}=await A4(l,"assigned"in t&&t.assigned||"",m);t.width=s;let b=10,T=t?.width||0,k=Math.max(y.height,x.height)/2,C=Math.max(u.height+b*2,t?.height||0)+k,w=-T/2,S=-C/2;h.attr("transform","translate("+(d-T/2)+", "+(-k-u.height/2)+")"),g.attr("transform","translate("+(d-T/2)+", "+(-k+u.height/2)+")"),v.attr("transform","translate("+(d+T/2-x.width-2*a)+", "+(-k+u.height/2)+")");let R,{rx:L,ry:N}=t,{cssStyles:I}=t;if(t.look==="handDrawn"){let _=ut.svg(l),A=dt(t,{}),M=L||N?_.path(io(w,S,T,C,L||0),A):_.rectangle(w,S,T,C,A);R=l.insert(()=>M,":first-child"),R.attr("class","basic label-container").attr("style",I||null)}else{R=l.insert("rect",":first-child"),R.attr("class","basic label-container __APA__").attr("style",i).attr("rx",L??5).attr("ry",N??5).attr("x",w).attr("y",S).attr("width",T).attr("height",C);let _="priority"in t&&t.priority;if(_){let A=l.append("line"),M=w+2,D=S+Math.floor((L??0)/2),P=S+C-Math.floor((L??0)/2);A.attr("x1",M).attr("y1",D).attr("x2",M).attr("y2",P).attr("stroke-width","4").attr("stroke",AQe(_))}}return pt(t,R),t.height=C,t.intersect=function(_){return ht.rect(t,_)},l}var AQe,_ce=F(()=>{"use strict";Kt();nr();km();Jt();tr();AQe=o(e=>{switch(e){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");o(Rce,"kanbanItem")});async function Lce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await It(e,t,Dt(t)),u=a.width+10*s,h=a.height+8*s,d=.15*u,{cssStyles:f}=t,p=a.width+20,m=a.height+20,g=Math.max(u,p),y=Math.max(h,m);l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`);let v,x=`M0 0 + a${d},${d} 1 0,0 ${g*.25},${-1*y*.1} + a${d},${d} 1 0,0 ${g*.25},0 + a${d},${d} 1 0,0 ${g*.25},0 + a${d},${d} 1 0,0 ${g*.25},${y*.1} + + a${d},${d} 1 0,0 ${g*.15},${y*.33} + a${d*.8},${d*.8} 1 0,0 0,${y*.34} + a${d},${d} 1 0,0 ${-1*g*.15},${y*.33} + + a${d},${d} 1 0,0 ${-1*g*.25},${y*.15} + a${d},${d} 1 0,0 ${-1*g*.25},0 + a${d},${d} 1 0,0 ${-1*g*.25},0 + a${d},${d} 1 0,0 ${-1*g*.25},${-1*y*.15} + + a${d},${d} 1 0,0 ${-1*g*.1},${-1*y*.33} + a${d*.8},${d*.8} 1 0,0 0,${-1*y*.34} + a${d},${d} 1 0,0 ${g*.1},${-1*y*.33} + H0 V0 Z`;if(t.look==="handDrawn"){let b=ut.svg(i),T=dt(t,{}),k=b.path(x,T);v=i.insert(()=>k,":first-child"),v.attr("class","basic label-container").attr("style",kn(f))}else v=i.insert("path",":first-child").attr("class","basic label-container").attr("style",n).attr("d",x);return v.attr("transform",`translate(${-g/2}, ${-y/2})`),pt(t,v),t.calcIntersect=function(b,T){return ht.rect(b,T)},t.intersect=function(b){return Z.info("Bang intersect",t,b),ht.rect(t,b)},i}var Dce=F(()=>{"use strict";vt();Kt();nr();Jt();tr();Qt();o(Lce,"bang")});async function Ice(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await It(e,t,Dt(t)),u=a.width+2*s,h=a.height+2*s,d=.15*u,f=.25*u,p=.35*u,m=.2*u,{cssStyles:g}=t,y,v=`M0 0 + a${d},${d} 0 0,1 ${u*.25},${-1*u*.1} + a${p},${p} 1 0,1 ${u*.4},${-1*u*.1} + a${f},${f} 1 0,1 ${u*.35},${u*.2} + + a${d},${d} 1 0,1 ${u*.15},${h*.35} + a${m},${m} 1 0,1 ${-1*u*.15},${h*.65} + + a${f},${d} 1 0,1 ${-1*u*.25},${u*.15} + a${p},${p} 1 0,1 ${-1*u*.5},0 + a${d},${d} 1 0,1 ${-1*u*.25},${-1*u*.15} + + a${d},${d} 1 0,1 ${-1*u*.1},${-1*h*.35} + a${m},${m} 1 0,1 ${u*.1},${-1*h*.65} + H0 V0 Z`;if(t.look==="handDrawn"){let x=ut.svg(i),b=dt(t,{}),T=x.path(v,b);y=i.insert(()=>T,":first-child"),y.attr("class","basic label-container").attr("style",kn(g))}else y=i.insert("path",":first-child").attr("class","basic label-container").attr("style",n).attr("d",v);return l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),y.attr("transform",`translate(${-u/2}, ${-h/2})`),pt(t,y),t.calcIntersect=function(x,b){return ht.rect(x,b)},t.intersect=function(x){return Z.info("Cloud intersect",t,x),ht.rect(t,x)},i}var Mce=F(()=>{"use strict";tr();vt();Qt();nr();Jt();Kt();o(Ice,"cloud")});async function Nce(e,t){let{labelStyles:r,nodeStyles:n}=ct(t);t.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s,label:l}=await It(e,t,Dt(t)),u=a.width+8*s,h=a.height+2*s,d=5,f=t.look==="neo"?` + M${-u/2} ${h/2-d} + v${-h+2*d} + q0,-${d} ${d},-${d} + h${u-2*d} + q${d},0 ${d},${d} + v${h-d} + H${-u/2} + Z + `:` + M${-u/2} ${h/2-d} + v${-h+2*d} + q0,-${d} ${d},-${d} + h${u-2*d} + q${d},0 ${d},${d} + v${h-2*d} + q0,${d} ${-d},${d} + h${-(u-2*d)} + q${-d},0 ${-d},${-d} + Z + `;if(!t.domId)throw new Error(`defaultMindmapNode: node "${t.id}" is missing a domId \u2014 was render.ts domId prefixing skipped?`);let p=i.append("path").attr("id",t.domId).attr("class","node-bkg node-"+t.type).attr("style",n).attr("d",f);return i.append("line").attr("class","node-line-").attr("x1",-u/2).attr("y1",h/2).attr("x2",u/2).attr("y2",h/2),l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),i.append(()=>l.node()),pt(t,p),t.calcIntersect=function(m,g){return ht.rect(m,g)},t.intersect=function(m){return ht.rect(t,m)},i}var Pce=F(()=>{"use strict";nr();Jt();Kt();o(Nce,"defaultMindmapNode")});async function Oce(e,t){let r={padding:t.padding??0};return z4(e,t,r)}var Bce=F(()=>{"use strict";hO();o(Oce,"mindmapCircle")});function $ce(e){return e in pO}var RQe,_Qe,pO,mO=F(()=>{"use strict";soe();coe();hoe();foe();hO();moe();yoe();xoe();Toe();woe();Aoe();_oe();Doe();Moe();Poe();Foe();Goe();Woe();Hoe();Yoe();Xoe();Zoe();Joe();tle();nle();ale();ole();cle();hle();fle();yle();xle();Tle();wle();Sle();Ale();_le();Dle();Mle();Ple();Ble();Fle();Gle();Wle();Hle();Yle();Xle();Zle();Jle();tce();ace();oce();cce();fce();mce();yce();xce();Tce();Sce();Ace();_ce();Dce();Mce();Pce();Bce();RQe=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:$le},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Ile},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:zle},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:jle},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:Eoe},{semanticName:"Data Store",name:"Data Store",shortName:"datastore",description:"Data flow diagram data store",aliases:["data-store"],handler:Roe},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:z4},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:Lce},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:Ice},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Ele},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:qoe},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:ule},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:lle},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:sce},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:ile},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:Ioe},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:ece},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:uoe},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:Nle},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:Ule},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:qle},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:zoe},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:Uoe},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:goe},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:voe},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:boe},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:dle},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:pce},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:Voe},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:ice},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:gle},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:Coe},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:Loe},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:dce},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:vce},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:Noe},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:lce},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:$oe},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:Ole},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:Cle},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:ble},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:loe},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:poe},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:Qle},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Kle},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:gce},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Rle},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:vle}],_Qe=o(()=>{let t=[...Object.entries({state:Vle,choice:doe,note:kle,rectWithTitle:Lle,labelRect:sle,iconSquare:ele,iconCircle:Koe,icon:joe,iconRounded:Qoe,imageSquare:rle,anchor:aoe,kanbanItem:Rce,mindmapCircle:Oce,defaultMindmapNode:Nce,classBox:kce,erBox:fO,requirementBox:Ece}),...RQe.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(i=>[i,r.handler]))];return Object.fromEntries(t)},"generateShapeMap"),pO=_Qe();o($ce,"isValidShape")});var LQe,W4,Fce=F(()=>{"use strict";$r();A2();Xt();vt();mO();Qt();Vr();Nn();Hd();H0();LQe="flowchart-",W4=class{constructor(){this.vertexCounter=0;this.config=Ae();this.diagramId="";this.vertices=new Map;this.edges=[];this.classes=new Map;this.subGraphs=[];this.subGraphLookup=new Map;this.tooltips=new Map;this.subCount=0;this.firstGraphFlag=!0;this.secCount=-1;this.posCrossRef=[];this.funs=[];this.setAccTitle=kr;this.setAccDescription=Rr;this.setDiagramTitle=Or;this.getAccTitle=Ar;this.getAccDescription=_r;this.getDiagramTitle=Lr;this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{o(this,"FlowDB")}sanitizeText(t){return xt.sanitizeText(t,this.config)}sanitizeNodeLabelType(t){switch(t){case"markdown":case"string":case"text":return t;default:return"markdown"}}setDiagramId(t){this.diagramId=t}lookUpDomId(t){for(let r of this.vertices.values())if(r.id===t)return this.diagramId?`${this.diagramId}-${r.domId}`:r.domId;return this.diagramId?`${this.diagramId}-${t}`:t}addVertex(t,r,n,i,a,s,l={},u){if(!t||t.trim().length===0)return;let h;if(u!==void 0){let m;u.includes(` +`)?m=u+` +`:m=`{ +`+u+` +}`,h=Qd(m,{schema:Zd})}let d=this.edges.find(m=>m.id===t);if(d){let m=h;m?.animate!==void 0&&(d.animate=m.animate),m?.animation!==void 0&&(d.animation=m.animation),m?.curve!==void 0&&(d.interpolate=m.curve);return}let f,p=this.vertices.get(t);if(p===void 0&&(r===void 0&&n===void 0&&i!==void 0&&i!==null&&Z.warn(`Style applied to unknown node "${t}". This may indicate a typo. The node will be created automatically.`),p={id:t,labelType:"text",domId:LQe+t+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(t,p)),this.vertexCounter++,r!==void 0?(this.config=Ae(),f=this.sanitizeText(r.text.trim()),p.labelType=r.type,f.startsWith('"')&&f.endsWith('"')&&(f=f.substring(1,f.length-1)),p.text=f):p.text===void 0&&(p.text=t),n!==void 0&&(p.type=n),i?.forEach(m=>{p.styles.push(m)}),a?.forEach(m=>{p.classes.push(m)}),s!==void 0&&(p.dir=s),p.props===void 0?p.props=l:l!==void 0&&Object.assign(p.props,l),h!==void 0){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!$ce(h.shape))throw new Error(`No such shape: ${h.shape}.`);p.type=h?.shape}h?.label&&(p.text=h?.label,p.labelType=this.sanitizeNodeLabelType(h?.labelType)),h?.icon&&(p.icon=h?.icon,!h.label?.trim()&&p.text===t&&(p.text="")),h?.form&&(p.form=h?.form),h?.pos&&(p.pos=h?.pos),h?.img&&(p.img=h?.img,!h.label?.trim()&&p.text===t&&(p.text="")),h?.constraint&&(p.constraint=h.constraint),h.w&&(p.assetWidth=Number(h.w)),h.h&&(p.assetHeight=Number(h.h))}}addSingleLink(t,r,n,i){let l={start:t,end:r,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};Z.info("abc78 Got edge...",l);let u=n.text;if(u!==void 0&&(l.text=this.sanitizeText(u.text.trim()),l.text.startsWith('"')&&l.text.endsWith('"')&&(l.text=l.text.substring(1,l.text.length-1)),l.labelType=this.sanitizeNodeLabelType(u.type)),n!==void 0&&(l.type=n.type,l.stroke=n.stroke,l.length=n.length>10?10:n.length),i&&!this.edges.some(h=>h.id===i))l.id=i,l.isUserDefinedId=!0;else{let h=this.edges.filter(d=>d.start===l.start&&d.end===l.end);h.length===0?l.id=eu(l.start,l.end,{counter:0,prefix:"L"}):l.id=eu(l.start,l.end,{counter:h.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))Z.info("Pushing edge..."),this.edges.push(l);else throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}. + +Initialize mermaid with maxEdges set to a higher number to allow more edges. +You cannot set this config via configuration inside the diagram as it is a secure config. +You have to call mermaid.initialize.`)}isLinkData(t){return t!==null&&typeof t=="object"&&"id"in t&&typeof t.id=="string"}addLink(t,r,n){let i=this.isLinkData(n)?n.id.replace("@",""):void 0;Z.info("addLink",t,r,i);for(let a of t)for(let s of r){let l=a===t[t.length-1],u=s===r[0];l&&u?this.addSingleLink(a,s,n,i):this.addSingleLink(a,s,n,void 0)}}updateLinkInterpolate(t,r){t.forEach(n=>{n==="default"?this.edges.defaultInterpolate=r:this.edges[n].interpolate=r})}updateLink(t,r){t.forEach(n=>{if(typeof n=="number"&&n>=this.edges.length)throw new Error(`The index ${n} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);n==="default"?this.edges.defaultStyle=r:(this.edges[n].style=r,(this.edges[n]?.style?.length??0)>0&&!this.edges[n]?.style?.some(i=>i?.startsWith("fill"))&&this.edges[n]?.style?.push("fill:none"))})}addClass(t,r){let n=r.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");t.split(",").forEach(i=>{let a=this.classes.get(i);a===void 0&&(a={id:i,styles:[],textStyles:[]},this.classes.set(i,a)),n?.forEach(s=>{if(/color/.exec(s)){let l=s.replace("fill","bgFill");a.textStyles.push(l)}a.styles.push(s)})})}setDirection(t){this.direction=t.trim(),/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(t,r){for(let n of t.split(",")){let i=this.vertices.get(n);i&&i.classes.push(r);let a=this.edges.find(l=>l.id===n);a&&a.classes.push(r);let s=this.subGraphLookup.get(n);s&&s.classes.push(r)}}setTooltip(t,r){if(r!==void 0){r=this.sanitizeText(r);for(let n of t.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(n):n,r)}}setClickFun(t,r,n){if(Ae().securityLevel!=="loose"||r===void 0)return;let i=[];if(typeof n=="string"){i=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let s=0;s{let s=this.lookUpDomId(t),l=document.querySelector(`[id="${s}"]`);l!==null&&l.addEventListener("click",()=>{Zt.runFunc(r,...i)},!1)}))}setLink(t,r,n){t.split(",").forEach(i=>{let a=this.vertices.get(i);a!==void 0&&(a.link=Zt.formatUrl(r,this.config),a.linkTarget=n)}),this.setClass(t,"clickable")}getTooltip(t){return this.tooltips.get(t)}setClickEvent(t,r,n){t.split(",").forEach(i=>{this.setClickFun(i,r,n)}),this.setClass(t,"clickable")}bindFunctions(t){this.funs.forEach(r=>{r(t)})}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(t){let r=Dy();et(t).select("svg").selectAll("g.node").on("mouseover",a=>{let s=et(a.currentTarget),l=s.attr("title");if(l===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.text(s.attr("title")).style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(Zs.sanitize(l)),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),et(a.currentTarget).classed("hover",!1)})}clear(t="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.diagramId="",this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=t,this.config=Ae(),yr()}setGen(t){this.version=t||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(t,r,n){let i=t.text.trim(),a=n.text;t===n&&/\s/.exec(n.text)&&(i=void 0);let l=o(g=>{let y={boolean:{},number:{},string:{}},v=[],x;return{nodeList:g.filter(function(T){let k=typeof T;return T.stmt&&T.stmt==="dir"?(x=T.value,!1):T.trim()===""?!1:k in y?y[k].hasOwnProperty(T)?!1:y[k][T]=!0:v.includes(T)?!1:v.push(T)}),dir:x}},"uniq")(r.flat()),u=l.nodeList,h=l.dir,d=h!==void 0,f=Ae().flowchart??{},p=h??(f.inheritDir?this.getDirection()??Ae().direction??void 0:void 0);if(this.version==="gen-1")for(let g=0;g2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=r,this.subGraphs[r].id===t)return{result:!0,count:0};let i=0,a=1;for(;i=0){let l=this.indexNodes2(t,s);if(l.result)return{result:!0,count:a+l.count};a=a+l.count}i=i+1}return{result:!1,count:a}}getDepthFirstPos(t){return this.posCrossRef[t]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return this.firstGraphFlag?(this.firstGraphFlag=!1,!0):!1}destructStartLink(t){let r=t.trim(),n="arrow_open";switch(r[0]){case"<":n="arrow_point",r=r.slice(1);break;case"x":n="arrow_cross",r=r.slice(1);break;case"o":n="arrow_circle",r=r.slice(1);break}let i="normal";return r.includes("=")&&(i="thick"),r.includes(".")&&(i="dotted"),{type:n,stroke:i}}countChar(t,r){let n=r.length,i=0;for(let a=0;a":i="arrow_point",r.startsWith("<")&&(i="double_"+i,n=n.slice(1));break;case"o":i="arrow_circle",r.startsWith("o")&&(i="double_"+i,n=n.slice(1));break}let a="normal",s=n.length-1;n.startsWith("=")&&(a="thick"),n.startsWith("~")&&(a="invisible");let l=this.countChar(".",n);return l&&(a="dotted",s=l),{type:i,stroke:a,length:s}}destructLink(t,r){let n=this.destructEndLink(t),i;if(r){if(i=this.destructStartLink(r),i.stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if(i.type==="arrow_open")i.type=n.type;else{if(i.type!==n.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return i.type==="double_arrow"&&(i.type="double_arrow_point"),i.length=n.length,i}return n}exists(t,r){for(let n of t)if(n.nodes.includes(r))return!0;return!1}makeUniq(t,r){let n=[];return t.nodes.forEach((i,a)=>{this.exists(r,i)||n.push(t.nodes[a])}),{nodes:n}}getTypeFromVertex(t){if(t.img)return"imageSquare";if(t.icon)return t.form==="circle"?"iconCircle":t.form==="square"?"iconSquare":t.form==="rounded"?"iconRounded":"icon";switch(t.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return t.type}}findNode(t,r){return t.find(n=>n.id===r)}destructEdgeType(t){let r="none",n="arrow_point";switch(t){case"arrow_point":case"arrow_circle":case"arrow_cross":n=t;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":r=t.replace("double_",""),n=r;break}return{arrowTypeStart:r,arrowTypeEnd:n}}addNodeFromVertex(t,r,n,i,a,s){let l=n.get(t.id),u=i.get(t.id)??!1,h=this.findNode(r,t.id);if(h)h.cssStyles=t.styles,h.cssCompiledStyles=this.getCompiledStyles(t.classes),h.cssClasses=t.classes.join(" ");else{let d={id:t.id,label:t.text,labelType:t.labelType,labelStyle:"",parentId:l,padding:a.flowchart?.padding||8,cssStyles:t.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...t.classes]),cssClasses:"default "+t.classes.join(" "),dir:t.dir,domId:t.domId,look:s,link:t.link,linkTarget:t.linkTarget,tooltip:this.getTooltip(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint};u?r.push({...d,isGroup:!0,shape:"rect"}):r.push({...d,isGroup:!1,shape:this.getTypeFromVertex(t)})}}getCompiledStyles(t){let r=[];for(let n of t){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}getData(){let t=Ae(),r=[],n=[],i=this.getSubGraphs(),a=new Map,s=new Map;for(let h=i.length-1;h>=0;h--){let d=i[h];d.nodes.length>0&&s.set(d.id,!0);for(let f of d.nodes)a.set(f,d.id)}for(let h=i.length-1;h>=0;h--){let d=i[h];r.push({id:d.id,label:d.title,labelStyle:"",labelType:d.labelType,parentId:a.get(d.id),padding:8,cssCompiledStyles:this.getCompiledStyles(d.classes),cssClasses:d.classes.join(" "),shape:"rect",dir:d.dir==="TD"?"TB":d.dir,explicitDir:d.hasExplicitDir,isGroup:!0,look:t.look})}this.getVertices().forEach(h=>{this.addNodeFromVertex(h,r,a,s,t,t.look||"classic")});let u=this.getEdges();return u.forEach((h,d)=>{let{arrowTypeStart:f,arrowTypeEnd:p}=this.destructEdgeType(h.type),m=[...u.defaultStyle??[]];h.style&&m.push(...h.style);let g={id:eu(h.start,h.end,{counter:d,prefix:"L"},h.id),isUserDefinedId:h.isUserDefinedId,start:h.start,end:h.end,type:h.type??"normal",label:h.text,labelType:h.labelType,labelpos:"c",thickness:h.stroke,minlen:h.length,classes:h?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":f,arrowTypeEnd:h?.stroke==="invisible"||h?.type==="arrow_open"?"none":p,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(h.classes),labelStyle:m,style:m,pattern:h.stroke,look:t.look,animate:h.animate,animation:h.animation,curve:h.interpolate||this.edges.defaultInterpolate||t.flowchart?.curve};n.push(g)}),{nodes:r,edges:n,other:{},config:t}}defaultConfig(){return bS.flowchart}}});var pl,Am=F(()=>{"use strict";$r();pl=o((e,t)=>{let r;return t==="sandbox"&&(r=et("#i"+e)),(t==="sandbox"?et(r.nodes()[0].contentDocument.body):et("body")).select(`[id="${e}"]`)},"getDiagramElement")});var oc,Vy=F(()=>{"use strict";oc=o(({flowchart:e})=>{let t=e?.subGraphTitleMargin?.top??0,r=e?.subGraphTitleMargin?.bottom??0,n=t+r;return{subGraphTitleTopMargin:t,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:n}},"getSubGraphTitleMargins")});var zce,Gce=F(()=>{"use strict";Xt();ur();vt();$r();tr();Ls();_4();Jt();zce=o(async(e,t)=>{let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,l=s,{labelStyles:u,nodeStyles:h,borderStyles:d,backgroundStyles:f}=ct(t),p=e.insert("g").attr("class","cluster swimlane "+(t.cssClasses||"")).attr("id",t.id).attr("data-id",t.id).attr("data-et","cluster").attr("data-look",t.look),m=ya(r.flowchart.htmlLabels),g=t.direction==="LR",y=p.insert("g").attr("class","cluster-label swimlane-label"),v=await Pn(y,t.label,{style:t.labelStyle,useHtmlLabels:m,isNode:!0,width:t.width}),x=v.getBBox();if(m){let A=v.children[0],M=et(v);x=A.getBoundingClientRect(),M.attr("width",x.width),M.attr("height",x.height)}let b=t.padding??0,T=t.width<=x.width+b?x.width+b:t.width;t.width<=x.width+b?t.diff=(T-t.width)/2-b:t.diff=-b;let k=t.height,C=t.y-k/2,w=t.y+k/2,S=t.x-T/2,R=t.swimlaneContentTop!==void 0?t.swimlaneContentTop:C+k/3,L=g?4:0,N=x.height+2*L,I,_;if(g){let A=Math.max(N,x.height+2*L),M=S+A,D=Math.max(0,T-A);if(t.look==="handDrawn"){let O=ut.svg(p),$=dt(t,{roughness:.7,fill:a,stroke:l,fillWeight:3,seed:i}),V=dt(t,{roughness:.7,fill:"none",stroke:l,seed:i}),G=O.rectangle(S,C,A,k,$);I=p.insert(()=>G,":first-child");let z=O.rectangle(M,C,D,k,V);_=p.insert(()=>z,":first-child"),I.select("path:nth-child(2)").attr("style",d.join(";")),I.select("path").attr("style",f.join(";").replace("fill","stroke"))}else I=p.insert("rect",":first-child"),_=p.insert("rect",":first-child"),I.attr("class","swimlane-title").attr("style",h).attr("x",S).attr("y",C).attr("width",A).attr("height",k).attr("fill",a).attr("stroke",l),_.attr("class","swimlane-body").attr("style",h).attr("x",M).attr("y",C).attr("width",D).attr("height",k).attr("fill","none").attr("stroke",l);let P=S+A/2,B=t.y;y.attr("transform",`translate(${P}, ${B}) rotate(-90) translate(${-x.width/2}, ${-x.height/2})`)}else{let A=Math.max(0,R-C),M=Math.min(N,A),D=C+M,P=Math.max(0,w-D),B=t.x-T/2;if(t.look==="handDrawn"){let V=ut.svg(p),G=dt(t,{roughness:.7,fill:a,stroke:l,fillWeight:3,seed:i}),z=dt(t,{roughness:.7,fill:"none",stroke:l,seed:i}),W=V.rectangle(B,C,T,M,G);I=p.insert(()=>W,":first-child");let H=V.rectangle(B,D,T,P,z);_=p.insert(()=>H,":first-child"),I.select("path:nth-child(2)").attr("style",d.join(";")),I.select("path").attr("style",f.join(";").replace("fill","stroke"))}else I=p.insert("rect",":first-child"),_=p.insert("rect",":first-child"),I.attr("class","swimlane-title").attr("style",h).attr("x",B).attr("y",C).attr("width",T).attr("height",M).attr("fill",a).attr("stroke",l),_.attr("class","swimlane-body").attr("style",h).attr("x",B).attr("y",D).attr("width",T).attr("height",P).attr("fill","none").attr("stroke",l);let O=t.x-x.width/2,$=C+(M-x.height)/2;y.attr("transform",`translate(${O}, ${$})`)}if(Z.trace("Swimlane data ",t,JSON.stringify(t)),u){let A=y.select("span");A&&A.attr("style",u)}return t.offsetX=0,t.width=T,t.height=k,t.offsetY=x.height-b/2,t.intersect=function(A){return nu(t,A)},{cluster:p,labelBBox:x}},"swimlane")});var Vce,DQe,IQe,MQe,NQe,PQe,OQe,Wce,rf,q4,Wy=F(()=>{"use strict";Xt();ur();vt();Vy();$r();tr();Ls();_4();G4();km();Jt();Gce();Vce=o(async(e,t)=>{Z.info("Creating subgraph rect for ",t.id,t);let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:d}=ct(t),f=e.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.domId).attr("data-look",t.look),p=Gr(r),m=f.insert("g").attr("class","cluster-label "),g;t.labelType==="markdown"?g=await Pn(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}):g=await sc(m,t.label,t.labelStyle||"",!1,!0);let y=g.getBBox();if(Gr(r)){let S=g.children[0],R=et(g);y=S.getBoundingClientRect(),R.attr("width",y.width),R.attr("height",y.height)}let v=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(v-t.width)/2-t.padding:t.diff=-t.padding;let x=t.height,b=t.x-v/2,T=t.y-x/2;Z.trace("Data ",t,JSON.stringify(t));let k;if(t.look==="handDrawn"){let S=ut.svg(f),R=dt(t,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),L=S.path(io(b,T,v,x,0),R);k=f.insert(()=>(Z.debug("Rough node insert CXC",L),L),":first-child"),k.select("path:nth-child(2)").attr("style",h.join(";")),k.select("path").attr("style",d.join(";").replace("fill","stroke"))}else k=f.insert("rect",":first-child"),k.attr("style",u).attr("rx",t.rx).attr("ry",t.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:C}=oc(r);if(m.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+C})`),l){let S=m.select("span");S&&S.attr("style",l)}let w=k.node().getBBox();return t.offsetX=0,t.width=w.width,t.height=w.height,t.offsetY=y.height-t.padding/2,t.intersect=function(S){return nu(t,S)},{cluster:f,labelBBox:y}},"rect"),DQe=o((e,t)=>{let r=e.insert("g").attr("class","note-cluster").attr("id",t.domId),n=r.insert("rect",":first-child"),i=0*t.padding,a=i/2;n.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-a).attr("y",t.y-t.height/2-a).attr("width",t.width+i).attr("height",t.height+i).attr("fill","none");let s=n.node().getBBox();return t.width=s.width,t.height=s.height,t.intersect=function(l){return nu(t,l)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),IQe=o(async(e,t)=>{let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{altBackground:a,compositeBackground:s,compositeTitleBackground:l,nodeBorder:u}=n,h=e.insert("g").attr("class",t.cssClasses).attr("id",t.domId).attr("data-id",t.id).attr("data-look",t.look),d=h.insert("g",":first-child"),f=h.insert("g").attr("class","cluster-label"),p=h.append("rect"),m=await sc(f,t.label,t.labelStyle,void 0,!0),g=m.getBBox();if(Gr(r)){let L=m.children[0],N=et(m);g=L.getBoundingClientRect(),N.attr("width",g.width),N.attr("height",g.height)}let y=0*t.padding,v=y/2,x=(t.width<=g.width+t.padding?g.width+t.padding:t.width)+y;t.width<=g.width+t.padding?t.diff=(x-t.width)/2-t.padding:t.diff=-t.padding;let b=t.height+y,T=t.height+y-g.height-6,k=t.x-x/2,C=t.y-b/2;t.width=x;let w=t.y-t.height/2-v+g.height+2,S;if(t.look==="handDrawn"){let L=t.cssClasses.includes("statediagram-cluster-alt"),N=ut.svg(h),I=t.rx||t.ry?N.path(io(k,C,x,b,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:i}):N.rectangle(k,C,x,b,{seed:i});S=h.insert(()=>I,":first-child");let _=N.rectangle(k,w,x,T,{fill:L?a:s,fillStyle:L?"hachure":"solid",stroke:u,seed:i});S=h.insert(()=>I,":first-child"),p=h.insert(()=>_)}else S=d.insert("rect",":first-child"),S.attr("class","outer").attr("x",k).attr("y",C).attr("width",x).attr("height",b).attr("data-look",t.look),p.attr("class","inner").attr("x",k).attr("y",w).attr("width",x).attr("height",T);f.attr("transform",`translate(${t.x-g.width/2}, ${C+1-(Gr(r)?0:3)})`);let R=S.node().getBBox();return t.height=R.height,t.offsetX=0,t.offsetY=g.height-t.padding/2,t.labelBBox=g,t.intersect=function(L){return nu(t,L)},{cluster:h,labelBBox:g}},"roundedWithTitle"),MQe=o(async(e,t)=>{Z.info("Creating subgraph rect for ",t.id,t);let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:l,nodeStyles:u,borderStyles:h,backgroundStyles:d}=ct(t),f=e.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.domId).attr("data-look",t.look),p=Gr(r),m=f.insert("g").attr("class","cluster-label "),g=await Pn(m,t.label,{style:t.labelStyle,useHtmlLabels:p,isNode:!0,width:t.width}),y=g.getBBox();if(Gr(r)){let S=g.children[0],R=et(g);y=S.getBoundingClientRect(),R.attr("width",y.width),R.attr("height",y.height)}let v=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(v-t.width)/2-t.padding:t.diff=-t.padding;let x=t.height,b=t.x-v/2,T=t.y-x/2;Z.trace("Data ",t,JSON.stringify(t));let k;if(t.look==="handDrawn"){let S=ut.svg(f),R=dt(t,{roughness:.7,fill:a,stroke:s,fillWeight:4,seed:i}),L=S.path(io(b,T,v,x,t.rx),R);k=f.insert(()=>(Z.debug("Rough node insert CXC",L),L),":first-child"),k.select("path:nth-child(2)").attr("style",h.join(";")),k.select("path").attr("style",d.join(";").replace("fill","stroke"))}else k=f.insert("rect",":first-child"),k.attr("style",u).attr("rx",t.rx).attr("ry",t.ry).attr("x",b).attr("y",T).attr("width",v).attr("height",x);let{subGraphTitleTopMargin:C}=oc(r);if(m.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+C})`),l){let S=m.select("span");S&&S.attr("style",l)}let w=k.node().getBBox();return t.offsetX=0,t.width=w.width,t.height=w.height,t.offsetY=y.height-t.padding/2,t.intersect=function(S){return nu(t,S)},{cluster:f,labelBBox:y}},"kanbanSection"),NQe=o((e,t)=>{let r=Ae(),{themeVariables:n,handDrawnSeed:i}=r,{nodeBorder:a}=n,s=e.insert("g").attr("class",t.cssClasses).attr("id",t.domId).attr("data-look",t.look),l=s.insert("g",":first-child"),u=0*t.padding,h=t.width+u;t.diff=-t.padding;let d=t.height+u,f=t.x-h/2,p=t.y-d/2;t.width=h;let m;if(t.look==="handDrawn"){let v=ut.svg(s).rectangle(f,p,h,d,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:i});m=s.insert(()=>v,":first-child")}else{m=l.insert("rect",":first-child");let y="outer";t.look,y="divider",m.attr("class",y).attr("x",f).attr("y",p).attr("width",h).attr("height",d).attr("data-look",t.look)}let g=m.node().getBBox();return t.height=g.height,t.offsetX=0,t.offsetY=0,t.intersect=function(y){return nu(t,y)},{cluster:s,labelBBox:{}}},"divider"),PQe=Vce,OQe={rect:Vce,squareRect:PQe,roundedWithTitle:IQe,noteGroup:DQe,divider:NQe,kanbanSection:MQe,swimlane:zce},Wce=new Map,rf=o(async(e,t)=>{let r=t.shape||"rect",n=await OQe[r](e,t);return Wce.set(t.id,n),n},"insertCluster"),q4=o(()=>{Wce=new Map},"clear")});var ml,gO=F(()=>{"use strict";ml=o((e,t)=>{if(t)return"translate("+-e.width/2+", "+-e.height/2+")";let r=e.x??0,n=e.y??0;return"translate("+-(r+e.width/2)+", "+-(n+e.height/2)+")"},"computeLabelTransform")});function H4(e,t){if(e===void 0||t===void 0)return{angle:0,deltaX:0,deltaY:0};e=di(e),t=di(t);let[r,n]=[e.x,e.y],[i,a]=[t.x,t.y],s=i-r,l=a-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}var Yi,yO,di,U4,Y4=F(()=>{"use strict";Yi={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4,arrow_barb:0,arrow_barb_neo:5.5},yO={arrow_point:4,arrow_cross:12.5,arrow_circle:12.5};o(H4,"calculateDeltaAndAngle");di=o(e=>Array.isArray(e)?{x:e[0],y:e[1]}:e,"pointTransformer"),U4=o(e=>({x:o(function(t,r,n){let i=0,a=di(n[0]).x=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(Yi,e.arrowTypeEnd)){let{angle:m,deltaX:g}=H4(n[n.length-1],n[n.length-2]);i=Yi[e.arrowTypeEnd]*Math.cos(m)*(g>=0?1:-1)}let s=Math.abs(di(t).x-di(n[n.length-1]).x),l=Math.abs(di(t).y-di(n[n.length-1]).y),u=Math.abs(di(t).x-di(n[0]).x),h=Math.abs(di(t).y-di(n[0]).y),d=Yi[e.arrowTypeStart],f=Yi[e.arrowTypeEnd],p=1;if(s0&&l0&&h=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(Yi,e.arrowTypeEnd)){let{angle:m,deltaY:g}=H4(n[n.length-1],n[n.length-2]);i=Yi[e.arrowTypeEnd]*Math.abs(Math.sin(m))*(g>=0?1:-1)}let s=Math.abs(di(t).y-di(n[n.length-1]).y),l=Math.abs(di(t).x-di(n[n.length-1]).x),u=Math.abs(di(t).y-di(n[0]).y),h=Math.abs(di(t).x-di(n[0]).x),d=Yi[e.arrowTypeStart],f=Yi[e.arrowTypeEnd],p=1;if(s0&&l0&&h{"use strict";vt();Hce=o((e,t,r,n,i,a=!1,s)=>{t.arrowTypeStart&&qce(e,"start",t.arrowTypeStart,r,n,i,a,s),t.arrowTypeEnd&&qce(e,"end",t.arrowTypeEnd,r,n,i,a,s)},"addEdgeMarkers"),BQe={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_barb_neo:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},$Qe=["cross","point","circle","lollipop","aggregation","extension","composition","dependency","barb"],qce=o((e,t,r,n,i,a,s=!1,l)=>{let u=BQe[r],h=u&&$Qe.includes(u.type);if(!u){Z.warn(`Unknown arrow type: ${r}`);return}let d=u.type,m=`${i}_${a}-${d}${t==="start"?"Start":"End"}${s&&h?"-margin":""}`;if(l&&l.trim()!==""){let g=l.replace(/[^\dA-Za-z]/g,"_"),y=`${m}_${g}`;if(!document.getElementById(y)){let v=document.getElementById(m);if(v){let x=v.cloneNode(!0);x.id=y,x.querySelectorAll("path, circle, line").forEach(T=>{T.setAttribute("stroke",l),u.fill&&T.setAttribute("fill",l)}),v.parentNode?.appendChild(x)}}e.attr(`marker-${t}`,`url(${n}#${y})`)}else e.attr(`marker-${t}`,`url(${n}#${m})`)},"addEdgeMarker")});function j4(e,t){Gr(Ae())&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}function WQe(e){let t=[],r=[];for(let n=1;n5&&Math.abs(a.y-i.y)>5||i.y===a.y&&a.x===s.x&&Math.abs(a.x-i.x)>5&&Math.abs(a.y-s.y)>5)&&(t.push(a),r.push(n))}return{cornerPoints:t,cornerPointPositions:r}}function UQe(e,t){if(e.length<2)return"";let r="",n=e.length,i=1e-5;for(let a=0;a({...i}));if(e.length>=2&&Yi[t.arrowTypeStart]){let i=Yi[t.arrowTypeStart],a=e[0],s=e[1],{angle:l}=Xce(a,s),u=i*Math.cos(l),h=i*Math.sin(l);r[0].x=a.x+u,r[0].y=a.y+h}let n=e.length;if(n>=2&&Yi[t.arrowTypeEnd]){let i=Yi[t.arrowTypeEnd],a=e[n-1],s=e[n-2],{angle:l}=Xce(s,a),u=i*Math.cos(l),h=i*Math.sin(l);r[n-1].x=a.x-u,r[n-1].y=a.y-h}return r}var FQe,qy,_i,X4,z2,Rm,K4,zQe,GQe,VQe,Yce,jce,qQe,HQe,Hy,G2=F(()=>{"use strict";Xt();ur();vt();Ls();gO();Qt();Y4();Vy();$r();tr();G4();Uce();Jt();FQe=o(e=>typeof e=="string"?e:Ae()?.flowchart?.curve,"resolveEdgeCurveType"),qy=new Map,_i=new Map,X4=o(()=>{qy.clear(),_i.clear()},"clear"),z2=o(e=>e?typeof e=="string"?e:e.reduce((t,r)=>t+";"+r,""):"","getLabelStyles"),Rm=o(async(e,t)=>{let r=Ae(),n=Gr(r),{labelStyles:i}=ct(t);t.labelStyle=i;let a=e.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label").attr("data-id",t.id),l=t.labelType==="markdown",h=await Pn(e,t.label,{style:z2(t.labelStyle),useHtmlLabels:n,addSvgBackground:!0,isNode:!1,markdown:l,width:l?void 0:void 0},r);s.node().appendChild(h),Z.info("abc82",t,t.labelType);let d=h.getBBox(),f=d;if(n){let m=h.children[0],g=et(h);d=m.getBoundingClientRect(),f=d,g.attr("width",d.width),g.attr("height",d.height)}else{let m=et(h).select("text").node();m&&typeof m.getBBox=="function"&&(f=m.getBBox())}s.attr("transform",ml(f,n)),qy.set(t.id,a),t.width=d.width,t.height=d.height;let p;if(t.startLabelLeft){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await sc(g,t.startLabelLeft,z2(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(n){let x=y.children[0],b=et(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",ml(v,n)),_i.get(t.id)||_i.set(t.id,{}),_i.get(t.id).startLeft=m,j4(p,t.startLabelLeft)}if(t.startLabelRight){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await sc(g,t.startLabelRight,z2(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(n){let x=y.children[0],b=et(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",ml(v,n)),_i.get(t.id)||_i.set(t.id,{}),_i.get(t.id).startRight=m,j4(p,t.startLabelRight)}if(t.endLabelLeft){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await sc(m,t.endLabelLeft,z2(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(n){let x=y.children[0],b=et(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",ml(v,n)),_i.get(t.id)||_i.set(t.id,{}),_i.get(t.id).endLeft=m,j4(p,t.endLabelLeft)}if(t.endLabelRight){let m=e.insert("g").attr("class","edgeTerminals"),g=m.insert("g").attr("class","inner"),y=await sc(m,t.endLabelRight,z2(t.labelStyle)||"",!1,!1);p=y;let v=y.getBBox();if(n){let x=y.children[0],b=et(y);v=x.getBoundingClientRect(),b.attr("width",v.width),b.attr("height",v.height)}g.attr("transform",ml(v,n)),_i.get(t.id)||_i.set(t.id,{}),_i.get(t.id).endRight=m,j4(p,t.endLabelRight)}return h},"insertEdgeLabel");o(j4,"setTerminalWidth");K4=o((e,t)=>{Z.debug("Moving label abc88 ",e.id,e.label,qy.get(e.id),t);let r=t.updatedPath?t.updatedPath:t.originalPath,n=Ae(),{subGraphTitleTotalMargin:i}=oc(n);if(e.label){let a=qy.get(e.id),s=e.x,l=e.y;if(r){let u=Zt.calcLabelPosition(r);Z.debug("Moving label "+e.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),t.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(e.startLabelLeft){let a=_i.get(e.id).startLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.startLabelRight){let a=_i.get(e.id).startRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelLeft){let a=_i.get(e.id).endLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelRight){let a=_i.get(e.id).endRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),zQe=o((e,t)=>{if(!e?.isLabelEdge||!e?.id?.endsWith("-to-label")||!Array.isArray(t)||t.length!==2)return t;let[r,n]=t,i=Math.abs(n.x-r.x),a=Math.abs(n.y-r.y);return i<.001||a<.001?t:a>=i?[r,{x:r.x,y:n.y},n]:[r,{x:n.x,y:r.y},n]},"orthogonalizeToLabelClippedPoints"),GQe=o((e,t)=>{let r=e.x,n=e.y,i=Math.abs(t.x-r),a=Math.abs(t.y-n),s=e.width/2,l=e.height/2;return i>=s||a>=l},"outsideNode"),VQe=o((e,t,r)=>{Z.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(t)} + insidePoint : ${JSON.stringify(r)} + node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let n=e.x,i=e.y,a=Math.abs(n-r.x),s=e.width/2,l=r.xMath.abs(n-t.x)*u){let f=r.y{Z.warn("abc88 cutPathAtIntersect",e,t);let r=[],n=e[0],i=!1;return e.forEach(a=>{if(Z.info("abc88 checking point",a,t),!GQe(t,a)&&!i){let s=VQe(t,n,a);Z.debug("abc88 inside",a,n,s),Z.debug("abc88 intersection",s,t);let l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)?Z.warn("abc88 no intersect",s,r):r.push(s),i=!0}else Z.warn("abc88 outside",a,n),n=a,i||r.push(a)}),Z.debug("returning points",r),r},"cutPathAtIntersect");o(WQe,"extractCornerPoints");jce=o(function(e,t,r){let n=t.x-e.x,i=t.y-e.y,a=Math.sqrt(n*n+i*i),s=r/a;return{x:t.x-s*n,y:t.y-s*i}},"findAdjacentPoint"),qQe=o(function(e){let{cornerPointPositions:t}=WQe(e),r=[];for(let n=0;n10&&Math.abs(a.y-i.y)>=10){Z.debug("Corner point fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));let m=5;s.x===l.x?p={x:h<0?l.x-m+f:l.x+m-f,y:d<0?l.y-f:l.y+f}:p={x:h<0?l.x-f:l.x+f,y:d<0?l.y-m+f:l.y+m-f}}else Z.debug("Corner point skipping fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));r.push(p,u)}else r.push(e[n]);return r},"fixCorners"),HQe=o((e,t,r)=>{let n=e-t-r,i=2,a=2,s=i+a,l=Math.floor(n/s),u=Array(l).fill(`${i} ${a}`).join(" ");return`0 ${t} ${u} ${r}`},"generateDashArray"),Hy=o(function(e,t,r,n,i,a,s,l=!1){if(!s)throw new Error(`insertEdge: missing diagramId for edge "${t.id}" \u2014 edge IDs require a diagram prefix for uniqueness`);let{handDrawnSeed:u,layout:h}=Ae(),d=t.points,f=!1,p=i;var m=a;let g=[];for(let O in t.cssCompiledStyles)M2(O)||g.push(t.cssCompiledStyles[O]);if(h==="swimlane"){if(m.intersect&&p.intersect&&Array.isArray(d)&&d.length>=2)if(d.length===2)d=[p.intersect(d[0]),m.intersect(d[1])];else{let O=d.slice(1,-1),$=O[0],V=O[O.length-1],G=.5,z=Math.abs(d[d.length-1].x-V.x)!Number.isNaN(O.y)),x=FQe(t.curve);x!=="rounded"&&(v=qQe(v));let b=Jc;switch(x){case"linear":b=Jc;break;case"basis":b=rc;break;case"cardinal":b=e2;break;case"bumpX":b=Xb;break;case"bumpY":b=Kb;break;case"catmullRom":b=n2;break;case"monotoneX":b=i2;break;case"monotoneY":b=a2;break;case"natural":b=Ry;break;case"step":b=_y;break;case"stepAfter":b=o2;break;case"stepBefore":b=s2;break;case"rounded":b=Jc;break;default:b=rc}let{x:T,y:k}=U4(t),C=tc().x(T).y(k).curve(b),w;switch(t.thickness){case"normal":w="edge-thickness-normal";break;case"thick":w="edge-thickness-thick";break;case"invisible":w="edge-thickness-invisible";break;default:w="edge-thickness-normal"}switch(t.pattern){case"solid":w+=" edge-pattern-solid";break;case"dotted":w+=" edge-pattern-dotted";break;case"dashed":w+=" edge-pattern-dashed";break;default:w+=" edge-pattern-solid"}let S,R=x==="rounded"?UQe(YQe(v,t),5):C(v),L=Array.isArray(t.style)?t.style:[t.style],N=L.find(O=>O?.startsWith("stroke:")),I="";t.animate&&(I="edge-animation-fast"),t.animation&&(I="edge-animation-"+t.animation);let _=!1;if(t.look==="handDrawn"){let O=ut.svg(e);Object.assign([],v);let $=O.path(R,{roughness:.3,seed:u});w+=" transition",S=et($).select("path").attr("id",`${s}-${t.id}`).attr("class"," "+w+(t.classes?" "+t.classes:"")+(I?" "+I:"")).attr("style",L?L.reduce((G,z)=>G+";"+z,""):"");let V=S.attr("d");S.attr("d",V),e.node().appendChild(S.node())}else{let O=g.join(";"),$=L?L.reduce((j,Q)=>j+Q+";",""):"",V=(O?O+";"+$+";":$)+";"+(L?L.reduce((j,Q)=>j+";"+Q,""):"");S=e.append("path").attr("d",R).attr("id",`${s}-${t.id}`).attr("class"," "+w+(t.classes?" "+t.classes:"")+(I?" "+I:"")).attr("style",V),N=V.match(/stroke:([^;]+)/)?.[1],_=t.animate===!0||!!t.animation||O.includes("animation");let G=S.node(),z=typeof G.getTotalLength=="function"?G.getTotalLength():0,W=yO[t.arrowTypeStart]||0,H=yO[t.arrowTypeEnd]||0;if(t.look==="neo"&&!_){let Q=`stroke-dasharray: ${t.pattern==="dotted"||t.pattern==="dashed"?HQe(z,W,H):`0 ${W} ${z-W-H} ${H}`}; stroke-dashoffset: 0;`;S.attr("style",Q+S.attr("style"))}}S.attr("data-edge",!0),S.attr("data-et","edge"),S.attr("data-id",t.id),S.attr("data-points",y),S.attr("data-look",kn(t.look)),t.showPoints&&v.forEach(O=>{e.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",O.x).attr("cy",O.y)});let A="";(Ae().flowchart.arrowMarkerAbsolute||Ae().state.arrowMarkerAbsolute)&&(A=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,A=A.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),Z.info("arrowTypeStart",t.arrowTypeStart),Z.info("arrowTypeEnd",t.arrowTypeEnd);let M=!_&&t?.look==="neo";Hce(S,t,A,s,n,M,N);let D=Math.floor(d.length/2),P=d[D];Zt.isLabelCoordinateInPath(P,S.attr("d"))||(f=!0);let B={};return f&&(B.updatedPath=d),B.originalPath=t.points,B},"insertEdge");o(UQe,"generateRoundedPath");o(Xce,"calculateDeltaAndAngle");o(YQe,"applyMarkerOffsetsToPoints")});var jQe,XQe,KQe,ZQe,QQe,JQe,eJe,tJe,rJe,nJe,iJe,aJe,sJe,oJe,lJe,cJe,uJe,hJe,dJe,fJe,pJe,mJe,gJe,yJe,Uy,Z4=F(()=>{"use strict";vt();ur();jQe=o((e,t,r,n)=>{t.forEach(i=>{yJe[i](e,r,n)})},"insertMarkers"),XQe=o((e,t,r)=>{Z.trace("Making markers for ",r),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),e.append("marker").attr("id",r+"_"+t+"-extensionStart-margin").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("viewBox","0 0 20 14").append("polygon").attr("points","10,7 18,13 18,1").style("stroke-width",2).style("stroke-dasharray","0"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd-margin").attr("class","marker extension "+t).attr("refX",9).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("viewBox","0 0 20 14").append("polygon").attr("points","10,1 10,13 18,7").style("stroke-width",2).style("stroke-dasharray","0")},"extension"),KQe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart-margin").attr("class","marker composition "+t).attr("refX",15).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("viewBox","0 0 15 15").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd-margin").attr("class","marker composition "+t).attr("refX",3.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),ZQe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart-margin").attr("class","marker aggregation "+t).attr("refX",15).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",2).attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd-margin").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",2).attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),QQe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart-margin").attr("class","marker dependency "+t).attr("refX",4).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd-margin").attr("class","marker dependency "+t).attr("refX",16).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").style("stroke-width",0).attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),JQe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart-margin").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6).attr("stroke-width",2),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd-margin").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("circle").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6).attr("stroke-width",2)},"lollipop"),eJe=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointEnd-margin").attr("class","marker "+t).attr("viewBox","0 0 11.5 14").attr("refX",11.5).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",10.5).attr("markerHeight",14).attr("orient","auto").append("path").attr("d","M 0 0 L 11.5 7 L 0 14 z").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointStart-margin").attr("class","marker "+t).attr("viewBox","0 0 11.5 14").attr("refX",1).attr("refY",7).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11.5).attr("markerHeight",14).attr("orient","auto").append("polygon").attr("points","0,7 11.5,14 11.5,0").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0")},"point"),tJe=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleEnd-margin").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refY",5).attr("refX",12.25).attr("markerUnits","userSpaceOnUse").attr("markerWidth",14).attr("markerHeight",14).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleStart-margin").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-2).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",14).attr("markerHeight",14).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",0).style("stroke-dasharray","1,0")},"circle"),rJe=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-crossEnd-margin").attr("class","marker cross "+t).attr("viewBox","0 0 15 15").attr("refX",17.7).attr("refY",7.5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 1,1 L 14,14 M 1,14 L 14,1").attr("class","arrowMarkerPath").style("stroke-width",2.5),e.append("marker").attr("id",r+"_"+t+"-crossStart-margin").attr("class","marker cross "+t).attr("viewBox","0 0 15 15").attr("refX",-3.5).attr("refY",7.5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 1,1 L 14,14 M 1,14 L 14,1").attr("class","arrowMarkerPath").style("stroke-width",2.5).style("stroke-dasharray","1,0")},"cross"),nJe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),iJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{transitionColor:a}=i;e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L11,14 L13,7 L11,0 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd-margin").attr("refX",17).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L11,14 L13,7 L11,0 Z").attr("fill",`${a}`)},"barbNeo"),aJe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneStart").attr("class","marker onlyOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneEnd").attr("class","marker onlyOne "+t).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")},"only_one"),sJe=o((e,t,r)=>{let n=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneStart").attr("class","marker zeroOrOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),n.append("path").attr("d","M9,0 L9,18");let i=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+t).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),i.append("path").attr("d","M21,0 L21,18")},"zero_or_one"),oJe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreStart").attr("class","marker oneOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreEnd").attr("class","marker oneOrMore "+t).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")},"one_or_more"),lJe=o((e,t,r)=>{let n=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),n.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");let i=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+t).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),i.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"zero_or_more"),cJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a}=i;e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneStart").attr("class","marker onlyOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M9,0 L9,18 M15,0 L15,18").attr("stroke-width",`${a}`),e.append("defs").append("marker").attr("id",r+"_"+t+"-onlyOneEnd").attr("class","marker onlyOne "+t).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M3,0 L3,18 M9,0 L9,18").attr("stroke-width",`${a}`)},"only_one_neo"),uJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a,mainBkg:s}=i,l=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneStart").attr("class","marker zeroOrOne "+t).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto").attr("markerUnits","userSpaceOnUse");l.append("circle").attr("fill",s??"white").attr("cx",21).attr("cy",9).attr("stroke-width",`${a}`).attr("r",6),l.append("path").attr("d","M9,0 L9,18").attr("stroke-width",`${a}`);let u=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+t).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("markerUnits","userSpaceOnUse").attr("orient","auto");u.append("circle").attr("fill",s??"white").attr("cx",9).attr("cy",9).attr("stroke-width",`${a}`).attr("r",6),u.append("path").attr("d","M21,0 L21,18").attr("stroke-width",`${a}`)},"zero_or_one_neo"),hJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a}=i;e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreStart").attr("class","marker oneOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27").attr("stroke-width",`${a}`),e.append("defs").append("marker").attr("id",r+"_"+t+"-oneOrMoreEnd").attr("class","marker oneOrMore "+t).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18").attr("stroke-width",`${a}`)},"one_or_more_neo"),dJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a,mainBkg:s}=i,l=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+t).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("markerUnits","userSpaceOnUse").attr("orient","auto");l.append("circle").attr("fill",s??"white").attr("cx",45.5).attr("cy",18).attr("r",6).attr("stroke-width",`${a}`),l.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18").attr("stroke-width",`${a}`);let u=e.append("defs").append("marker").attr("id",r+"_"+t+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+t).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto").attr("markerUnits","userSpaceOnUse");u.append("circle").attr("fill",s??"white").attr("cx",11).attr("cy",18).attr("r",6).attr("stroke-width",`${a}`),u.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18").attr("stroke-width",`${a}`)},"zero_or_more_neo"),fJe=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d",`M0,0 + L20,10 + M20,10 + L0,20`)},"requirement_arrow"),pJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a}=i;e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").attr("markerUnits","userSpaceOnUse").attr("stroke-width",`${a}`).attr("viewBox","0 0 25 20").append("path").attr("d",`M0,0 + L20,10 + M20,10 + L0,20`).attr("stroke-linejoin","miter")},"requirement_arrow_neo"),mJe=o((e,t,r)=>{let n=e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");n.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),n.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),n.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)},"requirement_contains"),gJe=o((e,t,r)=>{let n=_t(),{themeVariables:i}=n,{strokeWidth:a}=i,s=e.append("defs").append("marker").attr("id",r+"_"+t+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").attr("markerUnits","userSpaceOnUse").append("g");s.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),s.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),s.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10),s.selectAll("*").attr("stroke-width",`${a}`)},"requirement_contains_neo"),yJe={extension:XQe,composition:KQe,aggregation:ZQe,dependency:QQe,lollipop:JQe,point:eJe,circle:tJe,cross:rJe,barb:nJe,barbNeo:iJe,only_one:aJe,zero_or_one:sJe,one_or_more:oJe,zero_or_more:lJe,only_one_neo:cJe,zero_or_one_neo:uJe,one_or_more_neo:hJe,zero_or_more_neo:dJe,requirement_arrow:fJe,requirement_contains:mJe,requirement_arrow_neo:pJe,requirement_contains_neo:gJe},Uy=jQe});async function nf(e,t,r){let n,i;t.shape==="rect"&&(t.rx&&t.ry?t.shape="roundedRect":t.shape="squareRect");let a=t.shape?pO[t.shape]:void 0;if(!a)throw new Error(`No such shape: ${t.shape}. Please check your syntax.`);if(t.link){let s;r.config.securityLevel==="sandbox"?s="_top":t.linkTarget&&(s=t.linkTarget||"_blank"),n=e.insert("svg:a").attr("xlink:href",t.link).attr("target",s??null),i=await a(n,t,r)}else i=await a(e,t,r),n=i;return n.attr("data-look",kn(t.look)),t.tooltip&&i.attr("title",t.tooltip),Q4.set(t.id,n),t.haveCallback&&n.attr("class",n.attr("class")+" clickable"),n}var Q4,Kce,J4,_m,Lm=F(()=>{"use strict";vt();mO();Qt();Q4=new Map;o(nf,"insertNode");Kce=o((e,t)=>{Q4.set(t.id,e)},"setNodeElem"),J4=o(()=>{Q4.clear()},"clear"),_m=o(e=>{let t=Q4.get(e.id);Z.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");let r=8,n=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+n-e.width/2)+", "+(e.y-e.height/2-r)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),n},"positionNode")});var Zce,Qce=F(()=>{"use strict";ur();Vr();vt();Wy();G2();Z4();Lm();Kt();Qt();Zce={common:xt,getConfig:_t,insertCluster:rf,insertEdge:Hy,insertEdgeLabel:Rm,insertMarkers:Uy,insertNode:nf,interpolateToCurve:lP,labelHelper:It,log:Z,positionEdgeLabel:K4}});var vJe,e3,vO=F(()=>{"use strict";vJe=typeof global=="object"&&global&&global.Object===Object&&global,e3=vJe});var xJe,bJe,Li,gl=F(()=>{"use strict";vO();xJe=typeof self=="object"&&self&&self.Object===Object&&self,bJe=e3||xJe||Function("return this")(),Li=bJe});var TJe,wa,Dm=F(()=>{"use strict";gl();TJe=Li.Symbol,wa=TJe});function kJe(e){var t=CJe.call(e,V2),r=e[V2];try{e[V2]=void 0;var n=!0}catch{}var i=wJe.call(e);return n&&(t?e[V2]=r:delete e[V2]),i}var Jce,CJe,wJe,V2,eue,tue=F(()=>{"use strict";Dm();Jce=Object.prototype,CJe=Jce.hasOwnProperty,wJe=Jce.toString,V2=wa?wa.toStringTag:void 0;o(kJe,"getRawTag");eue=kJe});function AJe(e){return EJe.call(e)}var SJe,EJe,rue,nue=F(()=>{"use strict";SJe=Object.prototype,EJe=SJe.toString;o(AJe,"objectToString");rue=AJe});function LJe(e){return e==null?e===void 0?_Je:RJe:iue&&iue in Object(e)?eue(e):rue(e)}var RJe,_Je,iue,Ds,af=F(()=>{"use strict";Dm();tue();nue();RJe="[object Null]",_Je="[object Undefined]",iue=wa?wa.toStringTag:void 0;o(LJe,"baseGetTag");Ds=LJe});function DJe(e){return e!=null&&typeof e=="object"}var Bi,lc=F(()=>{"use strict";o(DJe,"isObjectLike");Bi=DJe});function MJe(e){return typeof e=="symbol"||Bi(e)&&Ds(e)==IJe}var IJe,Go,Im=F(()=>{"use strict";af();lc();IJe="[object Symbol]";o(MJe,"isSymbol");Go=MJe});function NJe(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r{"use strict";o(NJe,"arrayMap");au=NJe});var PJe,Yr,ji=F(()=>{"use strict";PJe=Array.isArray,Yr=PJe});function oue(e){if(typeof e=="string")return e;if(Yr(e))return au(e,oue)+"";if(Go(e))return sue?sue.call(e):"";var t=e+"";return t=="0"&&1/e==-OJe?"-0":t}var OJe,aue,sue,lue,cue=F(()=>{"use strict";Dm();W2();ji();Im();OJe=1/0,aue=wa?wa.prototype:void 0,sue=aue?aue.toString:void 0;o(oue,"baseToString");lue=oue});function $Je(e){for(var t=e.length;t--&&BJe.test(e.charAt(t)););return t}var BJe,uue,hue=F(()=>{"use strict";BJe=/\s/;o($Je,"trimmedEndIndex");uue=$Je});function zJe(e){return e&&e.slice(0,uue(e)+1).replace(FJe,"")}var FJe,due,fue=F(()=>{"use strict";hue();FJe=/^\s+/;o(zJe,"baseTrim");due=zJe});function GJe(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var fi,yl=F(()=>{"use strict";o(GJe,"isObject");fi=GJe});function UJe(e){if(typeof e=="number")return e;if(Go(e))return pue;if(fi(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=fi(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=due(e);var r=WJe.test(e);return r||qJe.test(e)?HJe(e.slice(2),r?2:8):VJe.test(e)?pue:+e}var pue,VJe,WJe,qJe,HJe,mue,gue=F(()=>{"use strict";fue();yl();Im();pue=NaN,VJe=/^[-+]0x[0-9a-f]+$/i,WJe=/^0b[01]+$/i,qJe=/^0o[0-7]+$/i,HJe=parseInt;o(UJe,"toNumber");mue=UJe});function jJe(e){if(!e)return e===0?e:0;if(e=mue(e),e===yue||e===-yue){var t=e<0?-1:1;return t*YJe}return e===e?e:0}var yue,YJe,Yy,xO=F(()=>{"use strict";gue();yue=1/0,YJe=17976931348623157e292;o(jJe,"toFinite");Yy=jJe});function XJe(e){var t=Yy(e),r=t%1;return t===t?r?t-r:t:0}var vue,xue=F(()=>{"use strict";xO();o(XJe,"toInteger");vue=XJe});function KJe(e){return e}var ao,sf=F(()=>{"use strict";o(KJe,"identity");ao=KJe});function tet(e){if(!fi(e))return!1;var t=Ds(e);return t==QJe||t==JJe||t==ZJe||t==eet}var ZJe,QJe,JJe,eet,su,q2=F(()=>{"use strict";af();yl();ZJe="[object AsyncFunction]",QJe="[object Function]",JJe="[object GeneratorFunction]",eet="[object Proxy]";o(tet,"isFunction");su=tet});var ret,t3,bue=F(()=>{"use strict";gl();ret=Li["__core-js_shared__"],t3=ret});function net(e){return!!Tue&&Tue in e}var Tue,Cue,wue=F(()=>{"use strict";bue();Tue=(function(){var e=/[^.]+$/.exec(t3&&t3.keys&&t3.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();o(net,"isMasked");Cue=net});function set(e){if(e!=null){try{return aet.call(e)}catch{}try{return e+""}catch{}}return""}var iet,aet,kh,bO=F(()=>{"use strict";iet=Function.prototype,aet=iet.toString;o(set,"toSource");kh=set});function met(e){if(!fi(e)||Cue(e))return!1;var t=su(e)?pet:cet;return t.test(kh(e))}var oet,cet,uet,het,det,fet,pet,kue,Sue=F(()=>{"use strict";q2();wue();yl();bO();oet=/[\\^$.*+?()[\]{}|]/g,cet=/^\[object .+?Constructor\]$/,uet=Function.prototype,het=Object.prototype,det=uet.toString,fet=het.hasOwnProperty,pet=RegExp("^"+det.call(fet).replace(oet,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(met,"baseIsNative");kue=met});function get(e,t){return e?.[t]}var Eue,Aue=F(()=>{"use strict";o(get,"getValue");Eue=get});function yet(e,t){var r=Eue(e,t);return kue(r)?r:void 0}var so,of=F(()=>{"use strict";Sue();Aue();o(yet,"getNative");so=yet});var vet,r3,Rue=F(()=>{"use strict";of();gl();vet=so(Li,"WeakMap"),r3=vet});var _ue,xet,Lue,Due=F(()=>{"use strict";yl();_ue=Object.create,xet=(function(){function e(){}return o(e,"object"),function(t){if(!fi(t))return{};if(_ue)return _ue(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}})(),Lue=xet});function bet(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}var Iue,Mue=F(()=>{"use strict";o(bet,"apply");Iue=bet});function Tet(){}var Nue,Pue=F(()=>{"use strict";o(Tet,"noop");Nue=Tet});function Cet(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r{"use strict";o(Cet,"copyArray");n3=Cet});function Aet(e){var t=0,r=0;return function(){var n=Eet(),i=ket-(n-r);if(r=n,i>0){if(++t>=wet)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var wet,ket,Eet,Oue,Bue=F(()=>{"use strict";wet=800,ket=16,Eet=Date.now;o(Aet,"shortOut");Oue=Aet});function Ret(e){return function(){return e}}var oo,CO=F(()=>{"use strict";o(Ret,"constant");oo=Ret});var _et,jy,wO=F(()=>{"use strict";of();_et=(function(){try{var e=so(Object,"defineProperty");return e({},"",{}),e}catch{}})(),jy=_et});var Let,$ue,Fue=F(()=>{"use strict";CO();wO();sf();Let=jy?function(e,t){return jy(e,"toString",{configurable:!0,enumerable:!1,value:oo(t),writable:!0})}:ao,$ue=Let});var Det,i3,kO=F(()=>{"use strict";Fue();Bue();Det=Oue($ue),i3=Det});function Iet(e,t){for(var r=-1,n=e==null?0:e.length;++r{"use strict";o(Iet,"arrayEach");a3=Iet});function Met(e,t,r,n){for(var i=e.length,a=r+(n?1:-1);n?a--:++a{"use strict";o(Met,"baseFindIndex");s3=Met});function Net(e){return e!==e}var zue,Gue=F(()=>{"use strict";o(Net,"baseIsNaN");zue=Net});function Pet(e,t,r){for(var n=r-1,i=e.length;++n{"use strict";o(Pet,"strictIndexOf");Vue=Pet});function Oet(e,t,r){return t===t?Vue(e,t,r):s3(e,zue,r)}var que,Hue=F(()=>{"use strict";EO();Gue();Wue();o(Oet,"baseIndexOf");que=Oet});function Bet(e,t){var r=e==null?0:e.length;return!!r&&que(e,t,0)>-1}var Uue,Yue=F(()=>{"use strict";Hue();o(Bet,"arrayIncludes");Uue=Bet});function zet(e,t){var r=typeof e;return t=t??$et,!!t&&(r=="number"||r!="symbol"&&Fet.test(e))&&e>-1&&e%1==0&&e{"use strict";$et=9007199254740991,Fet=/^(?:0|[1-9]\d*)$/;o(zet,"isIndex");lf=zet});function Get(e,t,r){t=="__proto__"&&jy?jy(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var cf,U2=F(()=>{"use strict";wO();o(Get,"baseAssignValue");cf=Get});function Vet(e,t){return e===t||e!==e&&t!==t}var vl,Mm=F(()=>{"use strict";o(Vet,"eq");vl=Vet});function Het(e,t,r){var n=e[t];(!(qet.call(e,t)&&vl(n,r))||r===void 0&&!(t in e))&&cf(e,t,r)}var Wet,qet,uf,Y2=F(()=>{"use strict";U2();Mm();Wet=Object.prototype,qet=Wet.hasOwnProperty;o(Het,"assignValue");uf=Het});function Uet(e,t,r,n){var i=!r;r||(r={});for(var a=-1,s=t.length;++a{"use strict";Y2();U2();o(Uet,"copyObject");ou=Uet});function Yet(e,t,r){return t=jue(t===void 0?e.length-1:t,0),function(){for(var n=arguments,i=-1,a=jue(n.length-t,0),s=Array(a);++i{"use strict";Mue();jue=Math.max;o(Yet,"overRest");o3=Yet});function jet(e,t){return i3(o3(e,t,ao),e+"")}var hf,j2=F(()=>{"use strict";sf();AO();kO();o(jet,"baseRest");hf=jet});function Ket(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Xet}var Xet,Ky,l3=F(()=>{"use strict";Xet=9007199254740991;o(Ket,"isLength");Ky=Ket});function Zet(e){return e!=null&&Ky(e.length)&&!su(e)}var ka,lu=F(()=>{"use strict";q2();l3();o(Zet,"isArrayLike");ka=Zet});function Qet(e,t,r){if(!fi(r))return!1;var n=typeof t;return(n=="number"?ka(r)&&lf(t,r.length):n=="string"&&t in r)?vl(r[t],e):!1}var Sh,X2=F(()=>{"use strict";Mm();lu();H2();yl();o(Qet,"isIterateeCall");Sh=Qet});function Jet(e){return hf(function(t,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=e.length>3&&typeof a=="function"?(i--,a):void 0,s&&Sh(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),t=Object(t);++n{"use strict";j2();X2();o(Jet,"createAssigner");Xue=Jet});function ttt(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||ett;return e===r}var ett,df,K2=F(()=>{"use strict";ett=Object.prototype;o(ttt,"isPrototype");df=ttt});function rtt(e,t){for(var r=-1,n=Array(e);++r{"use strict";o(rtt,"baseTimes");Zue=rtt});function itt(e){return Bi(e)&&Ds(e)==ntt}var ntt,RO,Jue=F(()=>{"use strict";af();lc();ntt="[object Arguments]";o(itt,"baseIsArguments");RO=itt});var ehe,att,stt,ott,cc,Zy=F(()=>{"use strict";Jue();lc();ehe=Object.prototype,att=ehe.hasOwnProperty,stt=ehe.propertyIsEnumerable,ott=RO((function(){return arguments})())?RO:function(e){return Bi(e)&&att.call(e,"callee")&&!stt.call(e,"callee")},cc=ott});function ltt(){return!1}var the,rhe=F(()=>{"use strict";o(ltt,"stubFalse");the=ltt});var ahe,nhe,ctt,ihe,utt,htt,uc,Qy=F(()=>{"use strict";gl();rhe();ahe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,nhe=ahe&&typeof module=="object"&&module&&!module.nodeType&&module,ctt=nhe&&nhe.exports===ahe,ihe=ctt?Li.Buffer:void 0,utt=ihe?ihe.isBuffer:void 0,htt=utt||the,uc=htt});function Ott(e){return Bi(e)&&Ky(e.length)&&!!ai[Ds(e)]}var dtt,ftt,ptt,mtt,gtt,ytt,vtt,xtt,btt,Ttt,Ctt,wtt,ktt,Stt,Ett,Att,Rtt,_tt,Ltt,Dtt,Itt,Mtt,Ntt,Ptt,ai,she,ohe=F(()=>{"use strict";af();l3();lc();dtt="[object Arguments]",ftt="[object Array]",ptt="[object Boolean]",mtt="[object Date]",gtt="[object Error]",ytt="[object Function]",vtt="[object Map]",xtt="[object Number]",btt="[object Object]",Ttt="[object RegExp]",Ctt="[object Set]",wtt="[object String]",ktt="[object WeakMap]",Stt="[object ArrayBuffer]",Ett="[object DataView]",Att="[object Float32Array]",Rtt="[object Float64Array]",_tt="[object Int8Array]",Ltt="[object Int16Array]",Dtt="[object Int32Array]",Itt="[object Uint8Array]",Mtt="[object Uint8ClampedArray]",Ntt="[object Uint16Array]",Ptt="[object Uint32Array]",ai={};ai[Att]=ai[Rtt]=ai[_tt]=ai[Ltt]=ai[Dtt]=ai[Itt]=ai[Mtt]=ai[Ntt]=ai[Ptt]=!0;ai[dtt]=ai[ftt]=ai[Stt]=ai[ptt]=ai[Ett]=ai[mtt]=ai[gtt]=ai[ytt]=ai[vtt]=ai[xtt]=ai[btt]=ai[Ttt]=ai[Ctt]=ai[wtt]=ai[ktt]=!1;o(Ott,"baseIsTypedArray");she=Ott});function Btt(e){return function(t){return e(t)}}var ff,Z2=F(()=>{"use strict";o(Btt,"baseUnary");ff=Btt});var lhe,Q2,$tt,_O,Ftt,Eh,c3=F(()=>{"use strict";vO();lhe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Q2=lhe&&typeof module=="object"&&module&&!module.nodeType&&module,$tt=Q2&&Q2.exports===lhe,_O=$tt&&e3.process,Ftt=(function(){try{var e=Q2&&Q2.require&&Q2.require("util").types;return e||_O&&_O.binding&&_O.binding("util")}catch{}})(),Eh=Ftt});var che,ztt,pf,J2=F(()=>{"use strict";ohe();Z2();c3();che=Eh&&Eh.isTypedArray,ztt=che?ff(che):she,pf=ztt});function Wtt(e,t){var r=Yr(e),n=!r&&cc(e),i=!r&&!n&&uc(e),a=!r&&!n&&!i&&pf(e),s=r||n||i||a,l=s?Zue(e.length,String):[],u=l.length;for(var h in e)(t||Vtt.call(e,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||lf(h,u)))&&l.push(h);return l}var Gtt,Vtt,u3,LO=F(()=>{"use strict";Que();Zy();ji();Qy();H2();J2();Gtt=Object.prototype,Vtt=Gtt.hasOwnProperty;o(Wtt,"arrayLikeKeys");u3=Wtt});function qtt(e,t){return function(r){return e(t(r))}}var h3,DO=F(()=>{"use strict";o(qtt,"overArg");h3=qtt});var Htt,uhe,hhe=F(()=>{"use strict";DO();Htt=h3(Object.keys,Object),uhe=Htt});function jtt(e){if(!df(e))return uhe(e);var t=[];for(var r in Object(e))Ytt.call(e,r)&&r!="constructor"&&t.push(r);return t}var Utt,Ytt,Jy,d3=F(()=>{"use strict";K2();hhe();Utt=Object.prototype,Ytt=Utt.hasOwnProperty;o(jtt,"baseKeys");Jy=jtt});function Xtt(e){return ka(e)?u3(e):Jy(e)}var Di,Ah=F(()=>{"use strict";LO();d3();lu();o(Xtt,"keys");Di=Xtt});function Ktt(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}var dhe,fhe=F(()=>{"use strict";o(Ktt,"nativeKeysIn");dhe=Ktt});function Jtt(e){if(!fi(e))return dhe(e);var t=df(e),r=[];for(var n in e)n=="constructor"&&(t||!Qtt.call(e,n))||r.push(n);return r}var Ztt,Qtt,phe,mhe=F(()=>{"use strict";yl();K2();fhe();Ztt=Object.prototype,Qtt=Ztt.hasOwnProperty;o(Jtt,"baseKeysIn");phe=Jtt});function ert(e){return ka(e)?u3(e,!0):phe(e)}var lo,mf=F(()=>{"use strict";LO();mhe();lu();o(ert,"keysIn");lo=ert});function nrt(e,t){if(Yr(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||Go(e)?!0:rrt.test(e)||!trt.test(e)||t!=null&&e in Object(t)}var trt,rrt,e1,f3=F(()=>{"use strict";ji();Im();trt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rrt=/^\w*$/;o(nrt,"isKey");e1=nrt});var irt,Rh,eT=F(()=>{"use strict";of();irt=so(Object,"create"),Rh=irt});function art(){this.__data__=Rh?Rh(null):{},this.size=0}var ghe,yhe=F(()=>{"use strict";eT();o(art,"hashClear");ghe=art});function srt(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var vhe,xhe=F(()=>{"use strict";o(srt,"hashDelete");vhe=srt});function urt(e){var t=this.__data__;if(Rh){var r=t[e];return r===ort?void 0:r}return crt.call(t,e)?t[e]:void 0}var ort,lrt,crt,bhe,The=F(()=>{"use strict";eT();ort="__lodash_hash_undefined__",lrt=Object.prototype,crt=lrt.hasOwnProperty;o(urt,"hashGet");bhe=urt});function frt(e){var t=this.__data__;return Rh?t[e]!==void 0:drt.call(t,e)}var hrt,drt,Che,whe=F(()=>{"use strict";eT();hrt=Object.prototype,drt=hrt.hasOwnProperty;o(frt,"hashHas");Che=frt});function mrt(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Rh&&t===void 0?prt:t,this}var prt,khe,She=F(()=>{"use strict";eT();prt="__lodash_hash_undefined__";o(mrt,"hashSet");khe=mrt});function t1(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t{"use strict";yhe();xhe();The();whe();She();o(t1,"Hash");t1.prototype.clear=ghe;t1.prototype.delete=vhe;t1.prototype.get=bhe;t1.prototype.has=Che;t1.prototype.set=khe;IO=t1});function grt(){this.__data__=[],this.size=0}var Ahe,Rhe=F(()=>{"use strict";o(grt,"listCacheClear");Ahe=grt});function yrt(e,t){for(var r=e.length;r--;)if(vl(e[r][0],t))return r;return-1}var gf,tT=F(()=>{"use strict";Mm();o(yrt,"assocIndexOf");gf=yrt});function brt(e){var t=this.__data__,r=gf(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():xrt.call(t,r,1),--this.size,!0}var vrt,xrt,_he,Lhe=F(()=>{"use strict";tT();vrt=Array.prototype,xrt=vrt.splice;o(brt,"listCacheDelete");_he=brt});function Trt(e){var t=this.__data__,r=gf(t,e);return r<0?void 0:t[r][1]}var Dhe,Ihe=F(()=>{"use strict";tT();o(Trt,"listCacheGet");Dhe=Trt});function Crt(e){return gf(this.__data__,e)>-1}var Mhe,Nhe=F(()=>{"use strict";tT();o(Crt,"listCacheHas");Mhe=Crt});function wrt(e,t){var r=this.__data__,n=gf(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}var Phe,Ohe=F(()=>{"use strict";tT();o(wrt,"listCacheSet");Phe=wrt});function r1(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t{"use strict";Rhe();Lhe();Ihe();Nhe();Ohe();o(r1,"ListCache");r1.prototype.clear=Ahe;r1.prototype.delete=_he;r1.prototype.get=Dhe;r1.prototype.has=Mhe;r1.prototype.set=Phe;yf=r1});var krt,vf,p3=F(()=>{"use strict";of();gl();krt=so(Li,"Map"),vf=krt});function Srt(){this.size=0,this.__data__={hash:new IO,map:new(vf||yf),string:new IO}}var Bhe,$he=F(()=>{"use strict";Ehe();rT();p3();o(Srt,"mapCacheClear");Bhe=Srt});function Ert(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Fhe,zhe=F(()=>{"use strict";o(Ert,"isKeyable");Fhe=Ert});function Art(e,t){var r=e.__data__;return Fhe(t)?r[typeof t=="string"?"string":"hash"]:r.map}var xf,nT=F(()=>{"use strict";zhe();o(Art,"getMapData");xf=Art});function Rrt(e){var t=xf(this,e).delete(e);return this.size-=t?1:0,t}var Ghe,Vhe=F(()=>{"use strict";nT();o(Rrt,"mapCacheDelete");Ghe=Rrt});function _rt(e){return xf(this,e).get(e)}var Whe,qhe=F(()=>{"use strict";nT();o(_rt,"mapCacheGet");Whe=_rt});function Lrt(e){return xf(this,e).has(e)}var Hhe,Uhe=F(()=>{"use strict";nT();o(Lrt,"mapCacheHas");Hhe=Lrt});function Drt(e,t){var r=xf(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}var Yhe,jhe=F(()=>{"use strict";nT();o(Drt,"mapCacheSet");Yhe=Drt});function n1(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t{"use strict";$he();Vhe();qhe();Uhe();jhe();o(n1,"MapCache");n1.prototype.clear=Bhe;n1.prototype.delete=Ghe;n1.prototype.get=Whe;n1.prototype.has=Hhe;n1.prototype.set=Yhe;Nm=n1});function MO(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(Irt);var r=o(function(){var n=arguments,i=t?t.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=e.apply(this,n);return r.cache=a.set(i,s)||a,s},"memoized");return r.cache=new(MO.Cache||Nm),r}var Irt,Xhe,Khe=F(()=>{"use strict";m3();Irt="Expected a function";o(MO,"memoize");MO.Cache=Nm;Xhe=MO});function Nrt(e){var t=Xhe(e,function(n){return r.size===Mrt&&r.clear(),n}),r=t.cache;return t}var Mrt,Zhe,Qhe=F(()=>{"use strict";Khe();Mrt=500;o(Nrt,"memoizeCapped");Zhe=Nrt});var Prt,Ort,Brt,Jhe,ede=F(()=>{"use strict";Qhe();Prt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ort=/\\(\\)?/g,Brt=Zhe(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Prt,function(r,n,i,a){t.push(i?a.replace(Ort,"$1"):n||r)}),t}),Jhe=Brt});function $rt(e){return e==null?"":lue(e)}var g3,NO=F(()=>{"use strict";cue();o($rt,"toString");g3=$rt});function Frt(e,t){return Yr(e)?e:e1(e,t)?[e]:Jhe(g3(e))}var bf,iT=F(()=>{"use strict";ji();f3();ede();NO();o(Frt,"castPath");bf=Frt});function Grt(e){if(typeof e=="string"||Go(e))return e;var t=e+"";return t=="0"&&1/e==-zrt?"-0":t}var zrt,cu,i1=F(()=>{"use strict";Im();zrt=1/0;o(Grt,"toKey");cu=Grt});function Vrt(e,t){t=bf(t,e);for(var r=0,n=t.length;e!=null&&r{"use strict";iT();i1();o(Vrt,"baseGet");Tf=Vrt});function Wrt(e,t,r){var n=e==null?void 0:Tf(e,t);return n===void 0?r:n}var tde,rde=F(()=>{"use strict";aT();o(Wrt,"get");tde=Wrt});function qrt(e,t){for(var r=-1,n=t.length,i=e.length;++r{"use strict";o(qrt,"arrayPush");a1=qrt});function Hrt(e){return Yr(e)||cc(e)||!!(nde&&e&&e[nde])}var nde,ide,ade=F(()=>{"use strict";Dm();Zy();ji();nde=wa?wa.isConcatSpreadable:void 0;o(Hrt,"isFlattenable");ide=Hrt});function sde(e,t,r,n,i){var a=-1,s=e.length;for(r||(r=ide),i||(i=[]);++a0&&r(l)?t>1?sde(l,t-1,r,n,i):a1(i,l):n||(i[i.length]=l)}return i}var s1,v3=F(()=>{"use strict";y3();ade();o(sde,"baseFlatten");s1=sde});function Urt(e){var t=e==null?0:e.length;return t?s1(e,1):[]}var xl,PO=F(()=>{"use strict";v3();o(Urt,"flatten");xl=Urt});function Yrt(e){return i3(o3(e,void 0,xl),e+"")}var ode,lde=F(()=>{"use strict";PO();AO();kO();o(Yrt,"flatRest");ode=Yrt});var jrt,o1,x3=F(()=>{"use strict";DO();jrt=h3(Object.getPrototypeOf,Object),o1=jrt});function ent(e){if(!Bi(e)||Ds(e)!=Xrt)return!1;var t=o1(e);if(t===null)return!0;var r=Qrt.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&cde.call(r)==Jrt}var Xrt,Krt,Zrt,cde,Qrt,Jrt,ude,hde=F(()=>{"use strict";af();x3();lc();Xrt="[object Object]",Krt=Function.prototype,Zrt=Object.prototype,cde=Krt.toString,Qrt=Zrt.hasOwnProperty,Jrt=cde.call(Object);o(ent,"isPlainObject");ude=ent});function cnt(e){return lnt.test(e)}var tnt,rnt,nnt,int,ant,snt,ont,lnt,dde,fde=F(()=>{"use strict";tnt="\\ud800-\\udfff",rnt="\\u0300-\\u036f",nnt="\\ufe20-\\ufe2f",int="\\u20d0-\\u20ff",ant=rnt+nnt+int,snt="\\ufe0e\\ufe0f",ont="\\u200d",lnt=RegExp("["+ont+tnt+ant+snt+"]");o(cnt,"hasUnicode");dde=cnt});function unt(e,t,r,n){var i=-1,a=e==null?0:e.length;for(n&&a&&(r=e[++i]);++i{"use strict";o(unt,"arrayReduce");pde=unt});function hnt(){this.__data__=new yf,this.size=0}var gde,yde=F(()=>{"use strict";rT();o(hnt,"stackClear");gde=hnt});function dnt(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}var vde,xde=F(()=>{"use strict";o(dnt,"stackDelete");vde=dnt});function fnt(e){return this.__data__.get(e)}var bde,Tde=F(()=>{"use strict";o(fnt,"stackGet");bde=fnt});function pnt(e){return this.__data__.has(e)}var Cde,wde=F(()=>{"use strict";o(pnt,"stackHas");Cde=pnt});function gnt(e,t){var r=this.__data__;if(r instanceof yf){var n=r.__data__;if(!vf||n.length{"use strict";rT();p3();m3();mnt=200;o(gnt,"stackSet");kde=gnt});function l1(e){var t=this.__data__=new yf(e);this.size=t.size}var uu,sT=F(()=>{"use strict";rT();yde();xde();Tde();wde();Sde();o(l1,"Stack");l1.prototype.clear=gde;l1.prototype.delete=vde;l1.prototype.get=bde;l1.prototype.has=Cde;l1.prototype.set=kde;uu=l1});function ynt(e,t){return e&&ou(t,Di(t),e)}var Ede,Ade=F(()=>{"use strict";Xy();Ah();o(ynt,"baseAssign");Ede=ynt});function vnt(e,t){return e&&ou(t,lo(t),e)}var Rde,_de=F(()=>{"use strict";Xy();mf();o(vnt,"baseAssignIn");Rde=vnt});function bnt(e,t){if(t)return e.slice();var r=e.length,n=Ide?Ide(r):new e.constructor(r);return e.copy(n),n}var Mde,Lde,xnt,Dde,Ide,b3,OO=F(()=>{"use strict";gl();Mde=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Lde=Mde&&typeof module=="object"&&module&&!module.nodeType&&module,xnt=Lde&&Lde.exports===Mde,Dde=xnt?Li.Buffer:void 0,Ide=Dde?Dde.allocUnsafe:void 0;o(bnt,"cloneBuffer");b3=bnt});function Tnt(e,t){for(var r=-1,n=e==null?0:e.length,i=0,a=[];++r{"use strict";o(Tnt,"arrayFilter");T3=Tnt});function Cnt(){return[]}var C3,$O=F(()=>{"use strict";o(Cnt,"stubArray");C3=Cnt});var wnt,knt,Nde,Snt,c1,w3=F(()=>{"use strict";BO();$O();wnt=Object.prototype,knt=wnt.propertyIsEnumerable,Nde=Object.getOwnPropertySymbols,Snt=Nde?function(e){return e==null?[]:(e=Object(e),T3(Nde(e),function(t){return knt.call(e,t)}))}:C3,c1=Snt});function Ent(e,t){return ou(e,c1(e),t)}var Pde,Ode=F(()=>{"use strict";Xy();w3();o(Ent,"copySymbols");Pde=Ent});var Ant,Rnt,k3,FO=F(()=>{"use strict";y3();x3();w3();$O();Ant=Object.getOwnPropertySymbols,Rnt=Ant?function(e){for(var t=[];e;)a1(t,c1(e)),e=o1(e);return t}:C3,k3=Rnt});function _nt(e,t){return ou(e,k3(e),t)}var Bde,$de=F(()=>{"use strict";Xy();FO();o(_nt,"copySymbolsIn");Bde=_nt});function Lnt(e,t,r){var n=t(e);return Yr(e)?n:a1(n,r(e))}var S3,zO=F(()=>{"use strict";y3();ji();o(Lnt,"baseGetAllKeys");S3=Lnt});function Dnt(e){return S3(e,Di,c1)}var oT,GO=F(()=>{"use strict";zO();w3();Ah();o(Dnt,"getAllKeys");oT=Dnt});function Int(e){return S3(e,lo,k3)}var Fde,zde=F(()=>{"use strict";zO();FO();mf();o(Int,"getAllKeysIn");Fde=Int});var Mnt,E3,Gde=F(()=>{"use strict";of();gl();Mnt=so(Li,"DataView"),E3=Mnt});var Nnt,A3,Vde=F(()=>{"use strict";of();gl();Nnt=so(Li,"Promise"),A3=Nnt});var Pnt,Cf,VO=F(()=>{"use strict";of();gl();Pnt=so(Li,"Set"),Cf=Pnt});var Wde,Ont,qde,Hde,Ude,Yde,Bnt,$nt,Fnt,znt,Gnt,Pm,Vo,Om=F(()=>{"use strict";Gde();p3();Vde();VO();Rue();af();bO();Wde="[object Map]",Ont="[object Object]",qde="[object Promise]",Hde="[object Set]",Ude="[object WeakMap]",Yde="[object DataView]",Bnt=kh(E3),$nt=kh(vf),Fnt=kh(A3),znt=kh(Cf),Gnt=kh(r3),Pm=Ds;(E3&&Pm(new E3(new ArrayBuffer(1)))!=Yde||vf&&Pm(new vf)!=Wde||A3&&Pm(A3.resolve())!=qde||Cf&&Pm(new Cf)!=Hde||r3&&Pm(new r3)!=Ude)&&(Pm=o(function(e){var t=Ds(e),r=t==Ont?e.constructor:void 0,n=r?kh(r):"";if(n)switch(n){case Bnt:return Yde;case $nt:return Wde;case Fnt:return qde;case znt:return Hde;case Gnt:return Ude}return t},"getTag"));Vo=Pm});function qnt(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&Wnt.call(e,"index")&&(r.index=e.index,r.input=e.input),r}var Vnt,Wnt,jde,Xde=F(()=>{"use strict";Vnt=Object.prototype,Wnt=Vnt.hasOwnProperty;o(qnt,"initCloneArray");jde=qnt});var Hnt,u1,WO=F(()=>{"use strict";gl();Hnt=Li.Uint8Array,u1=Hnt});function Unt(e){var t=new e.constructor(e.byteLength);return new u1(t).set(new u1(e)),t}var h1,R3=F(()=>{"use strict";WO();o(Unt,"cloneArrayBuffer");h1=Unt});function Ynt(e,t){var r=t?h1(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}var Kde,Zde=F(()=>{"use strict";R3();o(Ynt,"cloneDataView");Kde=Ynt});function Xnt(e){var t=new e.constructor(e.source,jnt.exec(e));return t.lastIndex=e.lastIndex,t}var jnt,Qde,Jde=F(()=>{"use strict";jnt=/\w*$/;o(Xnt,"cloneRegExp");Qde=Xnt});function Knt(e){return tfe?Object(tfe.call(e)):{}}var efe,tfe,rfe,nfe=F(()=>{"use strict";Dm();efe=wa?wa.prototype:void 0,tfe=efe?efe.valueOf:void 0;o(Knt,"cloneSymbol");rfe=Knt});function Znt(e,t){var r=t?h1(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}var _3,qO=F(()=>{"use strict";R3();o(Znt,"cloneTypedArray");_3=Znt});function yit(e,t,r){var n=e.constructor;switch(t){case sit:return h1(e);case Qnt:case Jnt:return new n(+e);case oit:return Kde(e,r);case lit:case cit:case uit:case hit:case dit:case fit:case pit:case mit:case git:return _3(e,r);case eit:return new n;case tit:case iit:return new n(e);case rit:return Qde(e);case nit:return new n;case ait:return rfe(e)}}var Qnt,Jnt,eit,tit,rit,nit,iit,ait,sit,oit,lit,cit,uit,hit,dit,fit,pit,mit,git,ife,afe=F(()=>{"use strict";R3();Zde();Jde();nfe();qO();Qnt="[object Boolean]",Jnt="[object Date]",eit="[object Map]",tit="[object Number]",rit="[object RegExp]",nit="[object Set]",iit="[object String]",ait="[object Symbol]",sit="[object ArrayBuffer]",oit="[object DataView]",lit="[object Float32Array]",cit="[object Float64Array]",uit="[object Int8Array]",hit="[object Int16Array]",dit="[object Int32Array]",fit="[object Uint8Array]",pit="[object Uint8ClampedArray]",mit="[object Uint16Array]",git="[object Uint32Array]";o(yit,"initCloneByTag");ife=yit});function vit(e){return typeof e.constructor=="function"&&!df(e)?Lue(o1(e)):{}}var L3,HO=F(()=>{"use strict";Due();x3();K2();o(vit,"initCloneObject");L3=vit});function bit(e){return Bi(e)&&Vo(e)==xit}var xit,sfe,ofe=F(()=>{"use strict";Om();lc();xit="[object Map]";o(bit,"baseIsMap");sfe=bit});var lfe,Tit,cfe,ufe=F(()=>{"use strict";ofe();Z2();c3();lfe=Eh&&Eh.isMap,Tit=lfe?ff(lfe):sfe,cfe=Tit});function wit(e){return Bi(e)&&Vo(e)==Cit}var Cit,hfe,dfe=F(()=>{"use strict";Om();lc();Cit="[object Set]";o(wit,"baseIsSet");hfe=wit});var ffe,kit,pfe,mfe=F(()=>{"use strict";dfe();Z2();c3();ffe=Eh&&Eh.isSet,kit=ffe?ff(ffe):hfe,pfe=kit});function D3(e,t,r,n,i,a){var s,l=t&Sit,u=t&Eit,h=t&Ait;if(r&&(s=i?r(e,n,i,a):r(e)),s!==void 0)return s;if(!fi(e))return e;var d=Yr(e);if(d){if(s=jde(e),!l)return n3(e,s)}else{var f=Vo(e),p=f==yfe||f==Iit;if(uc(e))return b3(e,l);if(f==vfe||f==gfe||p&&!i){if(s=u||p?{}:L3(e),!l)return u?Bde(e,Rde(s,e)):Pde(e,Ede(s,e))}else{if(!jn[f])return i?e:{};s=ife(e,f,l)}}a||(a=new uu);var m=a.get(e);if(m)return m;a.set(e,s),pfe(e)?e.forEach(function(v){s.add(D3(v,t,r,v,e,a))}):cfe(e)&&e.forEach(function(v,x){s.set(x,D3(v,t,r,x,e,a))});var g=h?u?Fde:oT:u?lo:Di,y=d?void 0:g(e);return a3(y||e,function(v,x){y&&(x=v,v=e[x]),uf(s,x,D3(v,t,r,x,e,a))}),s}var Sit,Eit,Ait,gfe,Rit,_it,Lit,Dit,yfe,Iit,Mit,Nit,vfe,Pit,Oit,Bit,$it,Fit,zit,Git,Vit,Wit,qit,Hit,Uit,Yit,jit,Xit,Kit,jn,I3,UO=F(()=>{"use strict";sT();SO();Y2();Ade();_de();OO();TO();Ode();$de();GO();zde();Om();Xde();afe();HO();ji();Qy();ufe();yl();mfe();Ah();mf();Sit=1,Eit=2,Ait=4,gfe="[object Arguments]",Rit="[object Array]",_it="[object Boolean]",Lit="[object Date]",Dit="[object Error]",yfe="[object Function]",Iit="[object GeneratorFunction]",Mit="[object Map]",Nit="[object Number]",vfe="[object Object]",Pit="[object RegExp]",Oit="[object Set]",Bit="[object String]",$it="[object Symbol]",Fit="[object WeakMap]",zit="[object ArrayBuffer]",Git="[object DataView]",Vit="[object Float32Array]",Wit="[object Float64Array]",qit="[object Int8Array]",Hit="[object Int16Array]",Uit="[object Int32Array]",Yit="[object Uint8Array]",jit="[object Uint8ClampedArray]",Xit="[object Uint16Array]",Kit="[object Uint32Array]",jn={};jn[gfe]=jn[Rit]=jn[zit]=jn[Git]=jn[_it]=jn[Lit]=jn[Vit]=jn[Wit]=jn[qit]=jn[Hit]=jn[Uit]=jn[Mit]=jn[Nit]=jn[vfe]=jn[Pit]=jn[Oit]=jn[Bit]=jn[$it]=jn[Yit]=jn[jit]=jn[Xit]=jn[Kit]=!0;jn[Dit]=jn[yfe]=jn[Fit]=!1;o(D3,"baseClone");I3=D3});function Qit(e){return I3(e,Zit)}var Zit,YO,xfe=F(()=>{"use strict";UO();Zit=4;o(Qit,"clone");YO=Qit});function tat(e){return I3(e,Jit|eat)}var Jit,eat,jO,bfe=F(()=>{"use strict";UO();Jit=1,eat=4;o(tat,"cloneDeep");jO=tat});function nat(e){return this.__data__.set(e,rat),this}var rat,Tfe,Cfe=F(()=>{"use strict";rat="__lodash_hash_undefined__";o(nat,"setCacheAdd");Tfe=nat});function iat(e){return this.__data__.has(e)}var wfe,kfe=F(()=>{"use strict";o(iat,"setCacheHas");wfe=iat});function M3(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Nm;++t{"use strict";m3();Cfe();kfe();o(M3,"SetCache");M3.prototype.add=M3.prototype.push=Tfe;M3.prototype.has=wfe;N3=M3});function aat(e,t){for(var r=-1,n=e==null?0:e.length;++r{"use strict";o(aat,"arraySome");Sfe=aat});function sat(e,t){return e.has(t)}var P3,KO=F(()=>{"use strict";o(sat,"cacheHas");P3=sat});function cat(e,t,r,n,i,a){var s=r&oat,l=e.length,u=t.length;if(l!=u&&!(s&&u>l))return!1;var h=a.get(e),d=a.get(t);if(h&&d)return h==t&&d==e;var f=-1,p=!0,m=r&lat?new N3:void 0;for(a.set(e,t),a.set(t,e);++f{"use strict";XO();Efe();KO();oat=1,lat=2;o(cat,"equalArrays");O3=cat});function uat(e){var t=-1,r=Array(e.size);return e.forEach(function(n,i){r[++t]=[i,n]}),r}var Afe,Rfe=F(()=>{"use strict";o(uat,"mapToArray");Afe=uat});function hat(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}var d1,B3=F(()=>{"use strict";o(hat,"setToArray");d1=hat});function Sat(e,t,r,n,i,a,s){switch(r){case kat:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case wat:return!(e.byteLength!=t.byteLength||!a(new u1(e),new u1(t)));case pat:case mat:case vat:return vl(+e,+t);case gat:return e.name==t.name&&e.message==t.message;case xat:case Tat:return e==t+"";case yat:var l=Afe;case bat:var u=n&dat;if(l||(l=d1),e.size!=t.size&&!u)return!1;var h=s.get(e);if(h)return h==t;n|=fat,s.set(e,t);var d=O3(l(e),l(t),n,i,a,s);return s.delete(e),d;case Cat:if(QO)return QO.call(e)==QO.call(t)}return!1}var dat,fat,pat,mat,gat,yat,vat,xat,bat,Tat,Cat,wat,kat,_fe,QO,Lfe,Dfe=F(()=>{"use strict";Dm();WO();Mm();ZO();Rfe();B3();dat=1,fat=2,pat="[object Boolean]",mat="[object Date]",gat="[object Error]",yat="[object Map]",vat="[object Number]",xat="[object RegExp]",bat="[object Set]",Tat="[object String]",Cat="[object Symbol]",wat="[object ArrayBuffer]",kat="[object DataView]",_fe=wa?wa.prototype:void 0,QO=_fe?_fe.valueOf:void 0;o(Sat,"equalByTag");Lfe=Sat});function _at(e,t,r,n,i,a){var s=r&Eat,l=oT(e),u=l.length,h=oT(t),d=h.length;if(u!=d&&!s)return!1;for(var f=u;f--;){var p=l[f];if(!(s?p in t:Rat.call(t,p)))return!1}var m=a.get(e),g=a.get(t);if(m&&g)return m==t&&g==e;var y=!0;a.set(e,t),a.set(t,e);for(var v=s;++f{"use strict";GO();Eat=1,Aat=Object.prototype,Rat=Aat.hasOwnProperty;o(_at,"equalObjects");Ife=_at});function Iat(e,t,r,n,i,a){var s=Yr(e),l=Yr(t),u=s?Pfe:Vo(e),h=l?Pfe:Vo(t);u=u==Nfe?$3:u,h=h==Nfe?$3:h;var d=u==$3,f=h==$3,p=u==h;if(p&&uc(e)){if(!uc(t))return!1;s=!0,d=!1}if(p&&!d)return a||(a=new uu),s||pf(e)?O3(e,t,r,n,i,a):Lfe(e,t,u,r,n,i,a);if(!(r&Lat)){var m=d&&Ofe.call(e,"__wrapped__"),g=f&&Ofe.call(t,"__wrapped__");if(m||g){var y=m?e.value():e,v=g?t.value():t;return a||(a=new uu),i(y,v,r,n,a)}}return p?(a||(a=new uu),Ife(e,t,r,n,i,a)):!1}var Lat,Nfe,Pfe,$3,Dat,Ofe,Bfe,$fe=F(()=>{"use strict";sT();ZO();Dfe();Mfe();Om();ji();Qy();J2();Lat=1,Nfe="[object Arguments]",Pfe="[object Array]",$3="[object Object]",Dat=Object.prototype,Ofe=Dat.hasOwnProperty;o(Iat,"baseIsEqualDeep");Bfe=Iat});function Ffe(e,t,r,n,i){return e===t?!0:e==null||t==null||!Bi(e)&&!Bi(t)?e!==e&&t!==t:Bfe(e,t,r,n,Ffe,i)}var F3,JO=F(()=>{"use strict";$fe();lc();o(Ffe,"baseIsEqual");F3=Ffe});function Pat(e,t,r,n){var i=r.length,a=i,s=!n;if(e==null)return!a;for(e=Object(e);i--;){var l=r[i];if(s&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++i{"use strict";sT();JO();Mat=1,Nat=2;o(Pat,"baseIsMatch");zfe=Pat});function Oat(e){return e===e&&!fi(e)}var z3,e9=F(()=>{"use strict";yl();o(Oat,"isStrictComparable");z3=Oat});function Bat(e){for(var t=Di(e),r=t.length;r--;){var n=t[r],i=e[n];t[r]=[n,i,z3(i)]}return t}var Vfe,Wfe=F(()=>{"use strict";e9();Ah();o(Bat,"getMatchData");Vfe=Bat});function $at(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}var G3,t9=F(()=>{"use strict";o($at,"matchesStrictComparable");G3=$at});function Fat(e){var t=Vfe(e);return t.length==1&&t[0][2]?G3(t[0][0],t[0][1]):function(r){return r===e||zfe(r,e,t)}}var qfe,Hfe=F(()=>{"use strict";Gfe();Wfe();t9();o(Fat,"baseMatches");qfe=Fat});function zat(e,t){return e!=null&&t in Object(e)}var Ufe,Yfe=F(()=>{"use strict";o(zat,"baseHasIn");Ufe=zat});function Gat(e,t,r){t=bf(t,e);for(var n=-1,i=t.length,a=!1;++n{"use strict";iT();Zy();ji();H2();l3();i1();o(Gat,"hasPath");V3=Gat});function Vat(e,t){return e!=null&&V3(e,t,Ufe)}var W3,n9=F(()=>{"use strict";Yfe();r9();o(Vat,"hasIn");W3=Vat});function Hat(e,t){return e1(e)&&z3(t)?G3(cu(e),t):function(r){var n=tde(r,e);return n===void 0&&n===t?W3(r,e):F3(t,n,Wat|qat)}}var Wat,qat,jfe,Xfe=F(()=>{"use strict";JO();rde();n9();f3();e9();t9();i1();Wat=1,qat=2;o(Hat,"baseMatchesProperty");jfe=Hat});function Uat(e){return function(t){return t?.[e]}}var q3,i9=F(()=>{"use strict";o(Uat,"baseProperty");q3=Uat});function Yat(e){return function(t){return Tf(t,e)}}var Kfe,Zfe=F(()=>{"use strict";aT();o(Yat,"basePropertyDeep");Kfe=Yat});function jat(e){return e1(e)?q3(cu(e)):Kfe(e)}var Qfe,Jfe=F(()=>{"use strict";i9();Zfe();f3();i1();o(jat,"property");Qfe=jat});function Xat(e){return typeof e=="function"?e:e==null?ao:typeof e=="object"?Yr(e)?jfe(e[0],e[1]):qfe(e):Qfe(e)}var os,_h=F(()=>{"use strict";Hfe();Xfe();sf();ji();Jfe();o(Xat,"baseIteratee");os=Xat});function Kat(e){return function(t,r,n){for(var i=-1,a=Object(t),s=n(t),l=s.length;l--;){var u=s[e?l:++i];if(r(a[u],u,a)===!1)break}return t}}var epe,tpe=F(()=>{"use strict";o(Kat,"createBaseFor");epe=Kat});var Zat,f1,H3=F(()=>{"use strict";tpe();Zat=epe(),f1=Zat});function Qat(e,t){return e&&f1(e,t,Di)}var p1,U3=F(()=>{"use strict";H3();Ah();o(Qat,"baseForOwn");p1=Qat});function Jat(e,t){return function(r,n){if(r==null)return r;if(!ka(r))return e(r,n);for(var i=r.length,a=t?i:-1,s=Object(r);(t?a--:++a{"use strict";lu();o(Jat,"createBaseEach");rpe=Jat});var est,wf,lT=F(()=>{"use strict";U3();npe();est=rpe(p1),wf=est});var tst,Y3,ipe=F(()=>{"use strict";gl();tst=o(function(){return Li.Date.now()},"now"),Y3=tst});var ape,rst,nst,a9,spe=F(()=>{"use strict";j2();Mm();X2();mf();ape=Object.prototype,rst=ape.hasOwnProperty,nst=hf(function(e,t){e=Object(e);var r=-1,n=t.length,i=n>2?t[2]:void 0;for(i&&Sh(t[0],t[1],i)&&(n=1);++r{"use strict";U2();Mm();o(ist,"assignMergeValue");cT=ist});function ast(e){return Bi(e)&&ka(e)}var j3,o9=F(()=>{"use strict";lu();lc();o(ast,"isArrayLikeObject");j3=ast});function sst(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}var uT,l9=F(()=>{"use strict";o(sst,"safeGet");uT=sst});function ost(e){return ou(e,lo(e))}var ope,lpe=F(()=>{"use strict";Xy();mf();o(ost,"toPlainObject");ope=ost});function lst(e,t,r,n,i,a,s){var l=uT(e,r),u=uT(t,r),h=s.get(u);if(h){cT(e,r,h);return}var d=a?a(l,u,r+"",e,t,s):void 0,f=d===void 0;if(f){var p=Yr(u),m=!p&&uc(u),g=!p&&!m&&pf(u);d=u,p||m||g?Yr(l)?d=l:j3(l)?d=n3(l):m?(f=!1,d=b3(u,!0)):g?(f=!1,d=_3(u,!0)):d=[]:ude(u)||cc(u)?(d=l,cc(l)?d=ope(l):(!fi(l)||su(l))&&(d=L3(u))):f=!1}f&&(s.set(u,d),i(d,u,n,a,s),s.delete(u)),cT(e,r,d)}var cpe,upe=F(()=>{"use strict";s9();OO();qO();TO();HO();Zy();ji();o9();Qy();q2();yl();hde();J2();l9();lpe();o(lst,"baseMergeDeep");cpe=lst});function hpe(e,t,r,n,i){e!==t&&f1(t,function(a,s){if(i||(i=new uu),fi(a))cpe(e,t,s,r,hpe,n,i);else{var l=n?n(uT(e,s),a,s+"",e,t,i):void 0;l===void 0&&(l=a),cT(e,s,l)}},lo)}var dpe,fpe=F(()=>{"use strict";sT();s9();H3();upe();yl();mf();l9();o(hpe,"baseMerge");dpe=hpe});function cst(e,t,r){for(var n=-1,i=e==null?0:e.length;++n{"use strict";o(cst,"arrayIncludesWith");ppe=cst});function ust(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}var kf,gpe=F(()=>{"use strict";o(ust,"last");kf=ust});function hst(e){return typeof e=="function"?e:ao}var m1,X3=F(()=>{"use strict";sf();o(hst,"castFunction");m1=hst});function dst(e,t){var r=Yr(e)?a3:wf;return r(e,m1(t))}var st,c9=F(()=>{"use strict";SO();lT();X3();ji();o(dst,"forEach");st=dst});var ype=F(()=>{"use strict";c9()});function fst(e,t){var r=[];return wf(e,function(n,i,a){t(n,i,a)&&r.push(n)}),r}var vpe,xpe=F(()=>{"use strict";lT();o(fst,"baseFilter");vpe=fst});function pst(e,t){var r=Yr(e)?T3:vpe;return r(e,os(t,3))}var Is,bpe=F(()=>{"use strict";BO();xpe();_h();ji();o(pst,"filter");Is=pst});function mst(e){return function(t,r,n){var i=Object(t);if(!ka(t)){var a=os(r,3);t=Di(t),r=o(function(l){return a(i[l],l,i)},"predicate")}var s=e(t,r,n);return s>-1?i[a?t[s]:s]:void 0}}var Tpe,Cpe=F(()=>{"use strict";_h();lu();Ah();o(mst,"createFind");Tpe=mst});function yst(e,t,r){var n=e==null?0:e.length;if(!n)return-1;var i=r==null?0:vue(r);return i<0&&(i=gst(n+i,0)),s3(e,os(t,3),i)}var gst,wpe,kpe=F(()=>{"use strict";EO();_h();xue();gst=Math.max;o(yst,"findIndex");wpe=yst});var vst,g1,Spe=F(()=>{"use strict";Cpe();kpe();vst=Tpe(wpe),g1=vst});function xst(e,t){var r=-1,n=ka(e)?Array(e.length):[];return wf(e,function(i,a,s){n[++r]=t(i,a,s)}),n}var K3,u9=F(()=>{"use strict";lT();lu();o(xst,"baseMap");K3=xst});function bst(e,t){var r=Yr(e)?au:K3;return r(e,os(t,3))}var mn,Epe=F(()=>{"use strict";W2();_h();u9();ji();o(bst,"map");mn=bst});function Tst(e,t){return e==null?e:f1(e,m1(t),lo)}var h9,Ape=F(()=>{"use strict";H3();X3();mf();o(Tst,"forIn");h9=Tst});function Cst(e,t){return e&&p1(e,m1(t))}var d9,Rpe=F(()=>{"use strict";U3();X3();o(Cst,"forOwn");d9=Cst});function wst(e,t){return e>t}var _pe,Lpe=F(()=>{"use strict";o(wst,"baseGt");_pe=wst});function Est(e,t){return e!=null&&Sst.call(e,t)}var kst,Sst,Dpe,Ipe=F(()=>{"use strict";kst=Object.prototype,Sst=kst.hasOwnProperty;o(Est,"baseHas");Dpe=Est});function Ast(e,t){return e!=null&&V3(e,t,Dpe)}var hT,Mpe=F(()=>{"use strict";Ipe();r9();o(Ast,"has");hT=Ast});function _st(e){return typeof e=="string"||!Yr(e)&&Bi(e)&&Ds(e)==Rst}var Rst,Npe,Ppe=F(()=>{"use strict";af();ji();lc();Rst="[object String]";o(_st,"isString");Npe=_st});function Lst(e,t){return au(t,function(r){return e[r]})}var Ope,Bpe=F(()=>{"use strict";W2();o(Lst,"baseValues");Ope=Lst});function Dst(e){return e==null?[]:Ope(e,Di(e))}var Wo,$pe=F(()=>{"use strict";Bpe();Ah();o(Dst,"values");Wo=Dst});function Ost(e){if(e==null)return!0;if(ka(e)&&(Yr(e)||typeof e=="string"||typeof e.splice=="function"||uc(e)||pf(e)||cc(e)))return!e.length;var t=Vo(e);if(t==Ist||t==Mst)return!e.size;if(df(e))return!Jy(e).length;for(var r in e)if(Pst.call(e,r))return!1;return!0}var Ist,Mst,Nst,Pst,Z3,Fpe=F(()=>{"use strict";d3();Om();Zy();ji();lu();Qy();K2();J2();Ist="[object Map]",Mst="[object Set]",Nst=Object.prototype,Pst=Nst.hasOwnProperty;o(Ost,"isEmpty");Z3=Ost});function Bst(e){return e===void 0}var Fn,zpe=F(()=>{"use strict";o(Bst,"isUndefined");Fn=Bst});function $st(e,t){return e{"use strict";o($st,"baseLt");Q3=$st});function Fst(e,t){var r={};return t=os(t,3),p1(e,function(n,i,a){cf(r,i,t(n,i,a))}),r}var Bm,Gpe=F(()=>{"use strict";U2();U3();_h();o(Fst,"mapValues");Bm=Fst});function zst(e,t,r){for(var n=-1,i=e.length;++n{"use strict";Im();o(zst,"baseExtremum");y1=zst});function Gst(e){return e&&e.length?y1(e,ao,_pe):void 0}var co,Vpe=F(()=>{"use strict";J3();Lpe();sf();o(Gst,"max");co=Gst});var Vst,v1,Wpe=F(()=>{"use strict";fpe();Kue();Vst=Xue(function(e,t,r){dpe(e,t,r)}),v1=Vst});function Wst(e){return e&&e.length?y1(e,ao,Q3):void 0}var Lh,qpe=F(()=>{"use strict";J3();f9();sf();o(Wst,"min");Lh=Wst});function qst(e,t){return e&&e.length?y1(e,os(t,2),Q3):void 0}var $m,Hpe=F(()=>{"use strict";J3();_h();f9();o(qst,"minBy");$m=qst});function Hst(e,t,r,n){if(!fi(e))return e;t=bf(t,e);for(var i=-1,a=t.length,s=a-1,l=e;l!=null&&++i{"use strict";Y2();iT();H2();yl();i1();o(Hst,"baseSet");Upe=Hst});function Ust(e,t,r){for(var n=-1,i=t.length,a={};++n{"use strict";aT();Ype();iT();o(Ust,"basePickBy");jpe=Ust});function Yst(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}var Kpe,Zpe=F(()=>{"use strict";o(Yst,"baseSortBy");Kpe=Yst});function jst(e,t){if(e!==t){var r=e!==void 0,n=e===null,i=e===e,a=Go(e),s=t!==void 0,l=t===null,u=t===t,h=Go(t);if(!l&&!h&&!a&&e>t||a&&s&&u&&!l&&!h||n&&s&&u||!r&&u||!i)return 1;if(!n&&!a&&!h&&e{"use strict";Im();o(jst,"compareAscending");Qpe=jst});function Xst(e,t,r){for(var n=-1,i=e.criteria,a=t.criteria,s=i.length,l=r.length;++n=l)return u;var h=r[n];return u*(h=="desc"?-1:1)}}return e.index-t.index}var eme,tme=F(()=>{"use strict";Jpe();o(Xst,"compareMultiple");eme=Xst});function Kst(e,t,r){t.length?t=au(t,function(a){return Yr(a)?function(s){return Tf(s,a.length===1?a[0]:a)}:a}):t=[ao];var n=-1;t=au(t,ff(os));var i=K3(e,function(a,s,l){var u=au(t,function(h){return h(a)});return{criteria:u,index:++n,value:a}});return Kpe(i,function(a,s){return eme(a,s,r)})}var rme,nme=F(()=>{"use strict";W2();aT();_h();u9();Zpe();Z2();tme();sf();ji();o(Kst,"baseOrderBy");rme=Kst});var Zst,ime,ame=F(()=>{"use strict";i9();Zst=q3("length"),ime=Zst});function cot(e){for(var t=sme.lastIndex=0;sme.test(e);)++t;return t}var ome,Qst,Jst,eot,tot,rot,not,p9,m9,iot,lme,cme,ume,aot,hme,dme,sot,oot,lot,sme,fme,pme=F(()=>{"use strict";ome="\\ud800-\\udfff",Qst="\\u0300-\\u036f",Jst="\\ufe20-\\ufe2f",eot="\\u20d0-\\u20ff",tot=Qst+Jst+eot,rot="\\ufe0e\\ufe0f",not="["+ome+"]",p9="["+tot+"]",m9="\\ud83c[\\udffb-\\udfff]",iot="(?:"+p9+"|"+m9+")",lme="[^"+ome+"]",cme="(?:\\ud83c[\\udde6-\\uddff]){2}",ume="[\\ud800-\\udbff][\\udc00-\\udfff]",aot="\\u200d",hme=iot+"?",dme="["+rot+"]?",sot="(?:"+aot+"(?:"+[lme,cme,ume].join("|")+")"+dme+hme+")*",oot=dme+hme+sot,lot="(?:"+[lme+p9+"?",p9,cme,ume,not].join("|")+")",sme=RegExp(m9+"(?="+m9+")|"+lot+oot,"g");o(cot,"unicodeSize");fme=cot});function uot(e){return dde(e)?fme(e):ime(e)}var mme,gme=F(()=>{"use strict";ame();fde();pme();o(uot,"stringSize");mme=uot});function hot(e,t){return jpe(e,t,function(r,n){return W3(e,n)})}var yme,vme=F(()=>{"use strict";Xpe();n9();o(hot,"basePick");yme=hot});var dot,Fm,xme=F(()=>{"use strict";vme();lde();dot=ode(function(e,t){return e==null?{}:yme(e,t)}),Fm=dot});function mot(e,t,r,n){for(var i=-1,a=pot(fot((t-e)/(r||1)),0),s=Array(a);a--;)s[n?a:++i]=e,e+=r;return s}var fot,pot,bme,Tme=F(()=>{"use strict";fot=Math.ceil,pot=Math.max;o(mot,"baseRange");bme=mot});function got(e){return function(t,r,n){return n&&typeof n!="number"&&Sh(t,r,n)&&(r=n=void 0),t=Yy(t),r===void 0?(r=t,t=0):r=Yy(r),n=n===void 0?t{"use strict";Tme();X2();xO();o(got,"createRange");Cme=got});var yot,bl,kme=F(()=>{"use strict";wme();yot=Cme(),bl=yot});function vot(e,t,r,n,i){return i(e,function(a,s,l){r=n?(n=!1,a):t(r,a,s,l)}),r}var Sme,Eme=F(()=>{"use strict";o(vot,"baseReduce");Sme=vot});function xot(e,t,r){var n=Yr(e)?pde:Sme,i=arguments.length<3;return n(e,os(t,4),r,i,wf)}var hu,Ame=F(()=>{"use strict";mde();lT();_h();Eme();ji();o(xot,"reduce");hu=xot});function Cot(e){if(e==null)return 0;if(ka(e))return Npe(e)?mme(e):e.length;var t=Vo(e);return t==bot||t==Tot?e.size:Jy(e).length}var bot,Tot,g9,Rme=F(()=>{"use strict";d3();Om();lu();Ppe();gme();bot="[object Map]",Tot="[object Set]";o(Cot,"size");g9=Cot});var wot,du,_me=F(()=>{"use strict";v3();nme();j2();X2();wot=hf(function(e,t){if(e==null)return[];var r=t.length;return r>1&&Sh(e,t[0],t[1])?t=[]:r>2&&Sh(t[0],t[1],t[2])&&(t=[t[0]]),rme(e,s1(t,1),[])}),du=wot});var kot,Sot,Lme,Dme=F(()=>{"use strict";VO();Pue();B3();kot=1/0,Sot=Cf&&1/d1(new Cf([,-0]))[1]==kot?function(e){return new Cf(e)}:Nue,Lme=Sot});function Aot(e,t,r){var n=-1,i=Uue,a=e.length,s=!0,l=[],u=l;if(r)s=!1,i=ppe;else if(a>=Eot){var h=t?null:Lme(e);if(h)return d1(h);s=!1,i=P3,u=new N3}else u=t?[]:l;e:for(;++n{"use strict";XO();Yue();mpe();KO();Dme();B3();Eot=200;o(Aot,"baseUniq");Ime=Aot});var Rot,y9,Nme=F(()=>{"use strict";v3();j2();Mme();o9();Rot=hf(function(e){return Ime(s1(e,1,j3,!0))}),y9=Rot});function Lot(e){var t=++_ot;return g3(e)+t}var _ot,zm,Pme=F(()=>{"use strict";NO();_ot=0;o(Lot,"uniqueId");zm=Lot});function Dot(e,t,r){for(var n=-1,i=e.length,a=t.length,s={};++n{"use strict";o(Dot,"baseZipObject");Ome=Dot});function Iot(e,t){return Ome(e||[],t||[],uf)}var e5,$me=F(()=>{"use strict";Y2();Bme();o(Iot,"zipObject");e5=Iot});var Ln=F(()=>{"use strict";xfe();bfe();CO();spe();ype();bpe();Spe();PO();c9();Ape();Rpe();Mpe();ji();Fpe();q2();zpe();Ah();gpe();Epe();Gpe();Vpe();Wpe();qpe();Hpe();ipe();xme();kme();Ame();Rme();_me();Nme();Pme();$pe();$me();});function zme(e,t){e[t]?e[t]++:e[t]=1}function Gme(e,t){--e[t]||delete e[t]}function dT(e,t,r,n){var i=""+t,a=""+r;if(!e&&i>a){var s=i;i=a,a=s}return i+Fme+a+Fme+(Fn(n)?Mot:n)}function Not(e,t,r,n){var i=""+t,a=""+r;if(!e&&i>a){var s=i;i=a,a=s}var l={v:i,w:a};return n&&(l.name=n),l}function v9(e,t){return dT(e,t.v,t.w,t.name)}var Mot,Gm,Fme,on,t5=F(()=>{"use strict";Ln();Mot="\0",Gm="\0",Fme="",on=class{static{o(this,"Graph")}constructor(t={}){this._isDirected=Object.prototype.hasOwnProperty.call(t,"directed")?t.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(t,"multigraph")?t.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(t,"compound")?t.compound:!1,this._label=void 0,this._defaultNodeLabelFn=oo(void 0),this._defaultEdgeLabelFn=oo(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[Gm]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return su(t)||(t=oo(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return Di(this._nodes)}sources(){var t=this;return Is(this.nodes(),function(r){return Z3(t._in[r])})}sinks(){var t=this;return Is(this.nodes(),function(r){return Z3(t._out[r])})}setNodes(t,r){var n=arguments,i=this;return st(t,function(a){n.length>1?i.setNode(a,r):i.setNode(a)}),this}setNode(t,r){return Object.prototype.hasOwnProperty.call(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=r),this):(this._nodes[t]=arguments.length>1?r:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=Gm,this._children[t]={},this._children[Gm][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return Object.prototype.hasOwnProperty.call(this._nodes,t)}removeNode(t){if(Object.prototype.hasOwnProperty.call(this._nodes,t)){var r=o(n=>this.removeEdge(this._edgeObjs[n]),"removeEdge");delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],st(this.children(t),n=>{this.setParent(n)}),delete this._children[t]),st(Di(this._in[t]),r),delete this._in[t],delete this._preds[t],st(Di(this._out[t]),r),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(Fn(r))r=Gm;else{r+="";for(var n=r;!Fn(n);n=this.parent(n))if(n===t)throw new Error("Setting "+r+" as parent of "+t+" would create a cycle");this.setNode(r)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=r,this._children[r][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var r=this._parent[t];if(r!==Gm)return r}}children(t){if(Fn(t)&&(t=Gm),this._isCompound){var r=this._children[t];if(r)return Di(r)}else{if(t===Gm)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var r=this._preds[t];if(r)return Di(r)}successors(t){var r=this._sucs[t];if(r)return Di(r)}neighbors(t){var r=this.predecessors(t);if(r)return y9(r,this.successors(t))}isLeaf(t){var r;return this.isDirected()?r=this.successors(t):r=this.neighbors(t),r.length===0}filterNodes(t){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var n=this;st(this._nodes,function(s,l){t(l)&&r.setNode(l,s)}),st(this._edgeObjs,function(s){r.hasNode(s.v)&&r.hasNode(s.w)&&r.setEdge(s,n.edge(s))});var i={};function a(s){var l=n.parent(s);return l===void 0||r.hasNode(l)?(i[s]=l,l):l in i?i[l]:a(l)}return o(a,"findParent"),this._isCompound&&st(r.nodes(),function(s){r.setParent(s,a(s))}),r}setDefaultEdgeLabel(t){return su(t)||(t=oo(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return Wo(this._edgeObjs)}setPath(t,r){var n=this,i=arguments;return hu(t,function(a,s){return i.length>1?n.setEdge(a,s,r):n.setEdge(a,s),s}),this}setEdge(){var t,r,n,i,a=!1,s=arguments[0];typeof s=="object"&&s!==null&&"v"in s?(t=s.v,r=s.w,n=s.name,arguments.length===2&&(i=arguments[1],a=!0)):(t=s,r=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),t=""+t,r=""+r,Fn(n)||(n=""+n);var l=dT(this._isDirected,t,r,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,l))return a&&(this._edgeLabels[l]=i),this;if(!Fn(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(r),this._edgeLabels[l]=a?i:this._defaultEdgeLabelFn(t,r,n);var u=Not(this._isDirected,t,r,n);return t=u.v,r=u.w,Object.freeze(u),this._edgeObjs[l]=u,zme(this._preds[r],t),zme(this._sucs[t],r),this._in[r][l]=u,this._out[t][l]=u,this._edgeCount++,this}edge(t,r,n){var i=arguments.length===1?v9(this._isDirected,arguments[0]):dT(this._isDirected,t,r,n);return this._edgeLabels[i]}hasEdge(t,r,n){var i=arguments.length===1?v9(this._isDirected,arguments[0]):dT(this._isDirected,t,r,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(t,r,n){var i=arguments.length===1?v9(this._isDirected,arguments[0]):dT(this._isDirected,t,r,n),a=this._edgeObjs[i];return a&&(t=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],Gme(this._preds[r],t),Gme(this._sucs[t],r),delete this._in[r][i],delete this._out[t][i],this._edgeCount--),this}inEdges(t,r){var n=this._in[t];if(n){var i=Wo(n);return r?Is(i,function(a){return a.v===r}):i}}outEdges(t,r){var n=this._out[t];if(n){var i=Wo(n);return r?Is(i,function(a){return a.w===r}):i}}nodeEdges(t,r){var n=this.inEdges(t,r);if(n)return n.concat(this.outEdges(t,r))}};on.prototype._nodeCount=0;on.prototype._edgeCount=0;o(zme,"incrementOrInitEntry");o(Gme,"decrementOrRemoveEntry");o(dT,"edgeArgsToId");o(Not,"edgeArgsToObj");o(v9,"edgeObjToId")});var qo=F(()=>{"use strict";t5()});function Vme(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function Pot(e,t){if(e!=="_next"&&e!=="_prev")return t}var r5,Wme=F(()=>{"use strict";r5=class{static{o(this,"List")}constructor(){var t={};t._next=t._prev=t,this._sentinel=t}dequeue(){var t=this._sentinel,r=t._prev;if(r!==t)return Vme(r),r}enqueue(t){var r=this._sentinel;t._prev&&t._next&&Vme(t),t._next=r._next,r._next._prev=t,r._next=t,t._prev=r}toString(){for(var t=[],r=this._sentinel,n=r._prev;n!==r;)t.push(JSON.stringify(n,Pot)),n=n._prev;return"["+t.join(", ")+"]"}};o(Vme,"unlink");o(Pot,"filterOutLinks")});function qme(e,t){if(e.nodeCount()<=1)return[];var r=$ot(e,t||Oot),n=Bot(r.graph,r.buckets,r.zeroIdx);return xl(mn(n,function(i){return e.outEdges(i.v,i.w)}))}function Bot(e,t,r){for(var n=[],i=t[t.length-1],a=t[0],s;e.nodeCount();){for(;s=a.dequeue();)x9(e,t,r,s);for(;s=i.dequeue();)x9(e,t,r,s);if(e.nodeCount()){for(var l=t.length-2;l>0;--l)if(s=t[l].dequeue(),s){n=n.concat(x9(e,t,r,s,!0));break}}}return n}function x9(e,t,r,n,i){var a=i?[]:void 0;return st(e.inEdges(n.v),function(s){var l=e.edge(s),u=e.node(s.v);i&&a.push({v:s.v,w:s.w}),u.out-=l,b9(t,r,u)}),st(e.outEdges(n.v),function(s){var l=e.edge(s),u=s.w,h=e.node(u);h.in-=l,b9(t,r,h)}),e.removeNode(n.v),a}function $ot(e,t){var r=new on,n=0,i=0;st(e.nodes(),function(l){r.setNode(l,{v:l,in:0,out:0})}),st(e.edges(),function(l){var u=r.edge(l.v,l.w)||0,h=t(l),d=u+h;r.setEdge(l.v,l.w,d),i=Math.max(i,r.node(l.v).out+=h),n=Math.max(n,r.node(l.w).in+=h)});var a=bl(i+n+3).map(function(){return new r5}),s=n+1;return st(r.nodes(),function(l){b9(a,s,r.node(l))}),{graph:r,buckets:a,zeroIdx:s}}function b9(e,t,r){r.out?r.in?e[r.out-r.in+t].enqueue(r):e[e.length-1].enqueue(r):e[0].enqueue(r)}var Oot,Hme=F(()=>{"use strict";Ln();qo();Wme();Oot=oo(1);o(qme,"greedyFAS");o(Bot,"doGreedyFAS");o(x9,"removeNode");o($ot,"buildState");o(b9,"assignBucket")});function Ume(e){var t=e.graph().acyclicer==="greedy"?qme(e,r(e)):Fot(e);st(t,function(n){var i=e.edge(n);e.removeEdge(n),i.forwardName=n.name,i.reversed=!0,e.setEdge(n.w,n.v,i,zm("rev"))});function r(n){return function(i){return n.edge(i).weight}}o(r,"weightFn")}function Fot(e){var t=[],r={},n={};function i(a){Object.prototype.hasOwnProperty.call(n,a)||(n[a]=!0,r[a]=!0,st(e.outEdges(a),function(s){Object.prototype.hasOwnProperty.call(r,s.w)?t.push(s):i(s.w)}),delete r[a])}return o(i,"dfs"),st(e.nodes(),i),t}function Yme(e){st(e.edges(),function(t){var r=e.edge(t);if(r.reversed){e.removeEdge(t);var n=r.forwardName;delete r.reversed,delete r.forwardName,e.setEdge(t.w,t.v,r,n)}})}var T9=F(()=>{"use strict";Ln();Hme();o(Ume,"run");o(Fot,"dfsFAS");o(Yme,"undo")});function fu(e,t,r,n){var i;do i=zm(n);while(e.hasNode(i));return r.dummy=t,e.setNode(i,r),i}function Xme(e){var t=new on().setGraph(e.graph());return st(e.nodes(),function(r){t.setNode(r,e.node(r))}),st(e.edges(),function(r){var n=t.edge(r.v,r.w)||{weight:0,minlen:1},i=e.edge(r);t.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),t}function n5(e){var t=new on({multigraph:e.isMultigraph()}).setGraph(e.graph());return st(e.nodes(),function(r){e.children(r).length||t.setNode(r,e.node(r))}),st(e.edges(),function(r){t.setEdge(r,e.edge(r))}),t}function C9(e,t){var r=e.x,n=e.y,i=t.x-r,a=t.y-n,s=e.width/2,l=e.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=l*i/a,h=l):(i<0&&(s=-s),u=s,h=s*a/i),{x:r+u,y:n+h}}function Sf(e){var t=mn(bl(k9(e)+1),function(){return[]});return st(e.nodes(),function(r){var n=e.node(r),i=n.rank;Fn(i)||(t[i][n.order]=r)}),t}function Kme(e){var t=Lh(mn(e.nodes(),function(r){return e.node(r).rank}));st(e.nodes(),function(r){var n=e.node(r);hT(n,"rank")&&(n.rank-=t)})}function Zme(e){var t=Lh(mn(e.nodes(),function(a){return e.node(a).rank})),r=[];st(e.nodes(),function(a){var s=e.node(a).rank-t;r[s]||(r[s]=[]),r[s].push(a)});var n=0,i=e.graph().nodeRankFactor;st(r,function(a,s){Fn(a)&&s%i!==0?--n:n&&st(a,function(l){e.node(l).rank+=n})})}function w9(e,t,r,n){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),fu(e,"border",i,t)}function k9(e){return co(mn(e.nodes(),function(t){var r=e.node(t).rank;if(!Fn(r))return r}))}function Qme(e,t){var r={lhs:[],rhs:[]};return st(e,function(n){t(n)?r.lhs.push(n):r.rhs.push(n)}),r}function Jme(e,t){var r=Y3();try{return t()}finally{console.log(e+" time: "+(Y3()-r)+"ms")}}function ege(e,t){return t()}var pu=F(()=>{"use strict";Ln();qo();o(fu,"addDummyNode");o(Xme,"simplify");o(n5,"asNonCompoundGraph");o(C9,"intersectRect");o(Sf,"buildLayerMatrix");o(Kme,"normalizeRanks");o(Zme,"removeEmptyRanks");o(w9,"addBorderNode");o(k9,"maxRank");o(Qme,"partition");o(Jme,"time");o(ege,"notime")});function rge(e){function t(r){var n=e.children(r),i=e.node(r);if(n.length&&st(n,t),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,s=i.maxRank+1;a{"use strict";Ln();pu();o(rge,"addBorderSegments");o(tge,"addBorderNode")});function age(e){var t=e.graph().rankdir.toLowerCase();(t==="lr"||t==="rl")&&oge(e)}function sge(e){var t=e.graph().rankdir.toLowerCase();(t==="bt"||t==="rl")&&zot(e),(t==="lr"||t==="rl")&&(Got(e),oge(e))}function oge(e){st(e.nodes(),function(t){ige(e.node(t))}),st(e.edges(),function(t){ige(e.edge(t))})}function ige(e){var t=e.width;e.width=e.height,e.height=t}function zot(e){st(e.nodes(),function(t){S9(e.node(t))}),st(e.edges(),function(t){var r=e.edge(t);st(r.points,S9),Object.prototype.hasOwnProperty.call(r,"y")&&S9(r)})}function S9(e){e.y=-e.y}function Got(e){st(e.nodes(),function(t){E9(e.node(t))}),st(e.edges(),function(t){var r=e.edge(t);st(r.points,E9),Object.prototype.hasOwnProperty.call(r,"x")&&E9(r)})}function E9(e){var t=e.x;e.x=e.y,e.y=t}var lge=F(()=>{"use strict";Ln();o(age,"adjust");o(sge,"undo");o(oge,"swapWidthHeight");o(ige,"swapWidthHeightOne");o(zot,"reverseY");o(S9,"reverseYOne");o(Got,"swapXY");o(E9,"swapXYOne")});function cge(e){e.graph().dummyChains=[],st(e.edges(),function(t){Wot(e,t)})}function Wot(e,t){var r=t.v,n=e.node(r).rank,i=t.w,a=e.node(i).rank,s=t.name,l=e.edge(t),u=l.labelRank;if(a!==n+1){e.removeEdge(t);var h=void 0,d,f;for(f=0,++n;n{"use strict";Ln();pu();o(cge,"run");o(Wot,"normalizeEdge");o(uge,"undo")});function pT(e){var t={};function r(n){var i=e.node(n);if(Object.prototype.hasOwnProperty.call(t,n))return i.rank;t[n]=!0;var a=Lh(mn(e.outEdges(n),function(s){return r(s.w)-e.edge(s).minlen}));return(a===Number.POSITIVE_INFINITY||a===void 0||a===null)&&(a=0),i.rank=a}o(r,"dfs"),st(e.sources(),r)}function Vm(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}var i5=F(()=>{"use strict";Ln();o(pT,"longestPath");o(Vm,"slack")});function a5(e){var t=new on({directed:!1}),r=e.nodes()[0],n=e.nodeCount();t.setNode(r,{});for(var i,a;qot(t,e){"use strict";Ln();qo();i5();o(a5,"feasibleTree");o(qot,"tightTree");o(Hot,"findMinSlackEdge");o(Uot,"shiftRanks")});var dge=F(()=>{"use strict"});var _9=F(()=>{"use strict"});var Z6r,L9=F(()=>{"use strict";Ln();_9();Z6r=oo(1)});var fge=F(()=>{"use strict";L9()});var D9=F(()=>{"use strict"});var pge=F(()=>{"use strict";D9()});var lRr,mge=F(()=>{"use strict";Ln();lRr=oo(1)});function I9(e){var t={},r={},n=[];function i(a){if(Object.prototype.hasOwnProperty.call(r,a))throw new mT;Object.prototype.hasOwnProperty.call(t,a)||(r[a]=!0,t[a]=!0,st(e.predecessors(a),i),delete r[a],n.push(a))}if(o(i,"visit"),st(e.sinks(),i),g9(t)!==e.nodeCount())throw new mT;return n}function mT(){}var M9=F(()=>{"use strict";Ln();I9.CycleException=mT;o(I9,"topsort");o(mT,"CycleException");mT.prototype=new Error});var gge=F(()=>{"use strict";M9()});function s5(e,t,r){Yr(t)||(t=[t]);var n=(e.isDirected()?e.successors:e.neighbors).bind(e),i=[],a={};return st(t,function(s){if(!e.hasNode(s))throw new Error("Graph does not have node: "+s);yge(e,s,r==="post",a,n,i)}),i}function yge(e,t,r,n,i,a){Object.prototype.hasOwnProperty.call(n,t)||(n[t]=!0,r||a.push(t),st(i(t),function(s){yge(e,s,r,n,i,a)}),r&&a.push(t))}var N9=F(()=>{"use strict";Ln();o(s5,"dfs");o(yge,"doDfs")});function P9(e,t){return s5(e,t,"post")}var vge=F(()=>{"use strict";N9();o(P9,"postorder")});function O9(e,t){return s5(e,t,"pre")}var xge=F(()=>{"use strict";N9();o(O9,"preorder")});var bge=F(()=>{"use strict";_9();t5()});var Tge=F(()=>{"use strict";dge();L9();fge();pge();mge();gge();vge();xge();bge();D9();M9()});function Af(e){e=Xme(e),pT(e);var t=a5(e);$9(t),B9(t,e);for(var r,n;r=Sge(t);)n=Ege(t,e,r),Age(t,e,r,n)}function B9(e,t){var r=P9(e,e.nodes());r=r.slice(0,r.length-1),st(r,function(n){Zot(e,t,n)})}function Zot(e,t,r){var n=e.node(r),i=n.parent;e.edge(r,i).cutvalue=wge(e,t,r)}function wge(e,t,r){var n=e.node(r),i=n.parent,a=!0,s=t.edge(r,i),l=0;return s||(a=!1,s=t.edge(i,r)),l=s.weight,st(t.nodeEdges(r),function(u){var h=u.v===r,d=h?u.w:u.v;if(d!==i){var f=h===a,p=t.edge(u).weight;if(l+=f?p:-p,Jot(e,r,d)){var m=e.edge(r,d).cutvalue;l+=f?-m:m}}}),l}function $9(e,t){arguments.length<2&&(t=e.nodes()[0]),kge(e,{},1,t)}function kge(e,t,r,n,i){var a=r,s=e.node(n);return t[n]=!0,st(e.neighbors(n),function(l){Object.prototype.hasOwnProperty.call(t,l)||(r=kge(e,t,r,l,n))}),s.low=a,s.lim=r++,i?s.parent=i:delete s.parent,r}function Sge(e){return g1(e.edges(),function(t){return e.edge(t).cutvalue<0})}function Ege(e,t,r){var n=r.v,i=r.w;t.hasEdge(n,i)||(n=r.w,i=r.v);var a=e.node(n),s=e.node(i),l=a,u=!1;a.lim>s.lim&&(l=s,u=!0);var h=Is(t.edges(),function(d){return u===Cge(e,e.node(d.v),l)&&u!==Cge(e,e.node(d.w),l)});return $m(h,function(d){return Vm(t,d)})}function Age(e,t,r,n){var i=r.v,a=r.w;e.removeEdge(i,a),e.setEdge(n.v,n.w,{}),$9(e),B9(e,t),Qot(e,t)}function Qot(e,t){var r=g1(e.nodes(),function(i){return!t.node(i).parent}),n=O9(e,r);n=n.slice(1),st(n,function(i){var a=e.node(i).parent,s=t.edge(i,a),l=!1;s||(s=t.edge(a,i),l=!0),t.node(i).rank=t.node(a).rank+(l?s.minlen:-s.minlen)})}function Jot(e,t,r){return e.hasEdge(t,r)}function Cge(e,t,r){return r.low<=t.lim&&t.lim<=r.lim}var Rge=F(()=>{"use strict";Ln();Tge();pu();R9();i5();Af.initLowLimValues=$9;Af.initCutValues=B9;Af.calcCutValue=wge;Af.leaveEdge=Sge;Af.enterEdge=Ege;Af.exchangeEdges=Age;o(Af,"networkSimplex");o(B9,"initCutValues");o(Zot,"assignCutValue");o(wge,"calcCutValue");o($9,"initLowLimValues");o(kge,"dfsAssignLowLim");o(Sge,"leaveEdge");o(Ege,"enterEdge");o(Age,"exchangeEdges");o(Qot,"updateRanks");o(Jot,"isTreeEdge");o(Cge,"isDescendant")});function F9(e){switch(e.graph().ranker){case"network-simplex":_ge(e);break;case"tight-tree":tlt(e);break;case"longest-path":elt(e);break;default:_ge(e)}}function tlt(e){pT(e),a5(e)}function _ge(e){Af(e)}var elt,z9=F(()=>{"use strict";R9();Rge();i5();o(F9,"rank");elt=pT;o(tlt,"tightTreeRanker");o(_ge,"networkSimplexRanker")});function Lge(e){var t=fu(e,"root",{},"_root"),r=rlt(e),n=co(Wo(r))-1,i=2*n+1;e.graph().nestingRoot=t,st(e.edges(),function(s){e.edge(s).minlen*=i});var a=nlt(e)+1;st(e.children(),function(s){Dge(e,t,i,a,n,r,s)}),e.graph().nodeRankFactor=i}function Dge(e,t,r,n,i,a,s){var l=e.children(s);if(!l.length){s!==t&&e.setEdge(t,s,{weight:0,minlen:r});return}var u=w9(e,"_bt"),h=w9(e,"_bb"),d=e.node(s);e.setParent(u,s),d.borderTop=u,e.setParent(h,s),d.borderBottom=h,st(l,function(f){Dge(e,t,r,n,i,a,f);var p=e.node(f),m=p.borderTop?p.borderTop:f,g=p.borderBottom?p.borderBottom:f,y=p.borderTop?n:2*n,v=m!==g?1:i-a[s]+1;e.setEdge(u,m,{weight:y,minlen:v,nestingEdge:!0}),e.setEdge(g,h,{weight:y,minlen:v,nestingEdge:!0})}),e.parent(s)||e.setEdge(t,u,{weight:0,minlen:i+a[s]})}function rlt(e){var t={};function r(n,i){var a=e.children(n);a&&a.length&&st(a,function(s){r(s,i+1)}),t[n]=i}return o(r,"dfs"),st(e.children(),function(n){r(n,1)}),t}function nlt(e){return hu(e.edges(),function(t,r){return t+e.edge(r).weight},0)}function Ige(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,st(e.edges(),function(r){var n=e.edge(r);n.nestingEdge&&e.removeEdge(r)})}var Mge=F(()=>{"use strict";Ln();pu();o(Lge,"run");o(Dge,"dfs");o(rlt,"treeDepths");o(nlt,"sumWeights");o(Ige,"cleanup")});function Nge(e,t,r){var n={},i;st(r,function(a){for(var s=e.parent(a),l,u;s;){if(l=e.parent(s),l?(u=n[l],n[l]=s):(u=i,i=s),u&&u!==s){t.setEdge(u,s);return}s=l}})}var Pge=F(()=>{"use strict";Ln();o(Nge,"addSubgraphConstraints")});function Oge(e,t,r){var n=alt(e),i=new on({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(a){return e.node(a)});return st(e.nodes(),function(a){var s=e.node(a),l=e.parent(a);(s.rank===t||s.minRank<=t&&t<=s.maxRank)&&(i.setNode(a),i.setParent(a,l||n),st(e[r](a),function(u){var h=u.v===a?u.w:u.v,d=i.edge(h,a),f=Fn(d)?0:d.weight;i.setEdge(h,a,{weight:e.edge(u).weight+f})}),Object.prototype.hasOwnProperty.call(s,"minRank")&&i.setNode(a,{borderLeft:s.borderLeft[t],borderRight:s.borderRight[t]}))}),i}function alt(e){for(var t;e.hasNode(t=zm("_root")););return t}var Bge=F(()=>{"use strict";Ln();qo();o(Oge,"buildLayerGraph");o(alt,"createRootNode")});function $ge(e,t){for(var r=0,n=1;n0;)d%2&&(f+=l[d+1]),d=d-1>>1,l[d]+=h.weight;u+=h.weight*f})),u}var Fge=F(()=>{"use strict";Ln();o($ge,"crossCount");o(slt,"twoLayerCrossCount")});function zge(e){var t={},r=Is(e.nodes(),function(l){return!e.children(l).length}),n=co(mn(r,function(l){return e.node(l).rank})),i=mn(bl(n+1),function(){return[]});function a(l){if(!hT(t,l)){t[l]=!0;var u=e.node(l);i[u.rank].push(l),st(e.successors(l),a)}}o(a,"dfs");var s=du(r,function(l){return e.node(l).rank});return st(s,a),i}var Gge=F(()=>{"use strict";Ln();o(zge,"initOrder")});function Vge(e,t){return mn(t,function(r){var n=e.inEdges(r);if(n.length){var i=hu(n,function(a,s){var l=e.edge(s),u=e.node(s.v);return{sum:a.sum+l.weight*u.order,weight:a.weight+l.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}var Wge=F(()=>{"use strict";Ln();o(Vge,"barycenter")});function qge(e,t){var r={};st(e,function(i,a){var s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};Fn(i.barycenter)||(s.barycenter=i.barycenter,s.weight=i.weight)}),st(t.edges(),function(i){var a=r[i.v],s=r[i.w];!Fn(a)&&!Fn(s)&&(s.indegree++,a.out.push(r[i.w]))});var n=Is(r,function(i){return!i.indegree});return olt(n)}function olt(e){var t=[];function r(a){return function(s){s.merged||(Fn(s.barycenter)||Fn(a.barycenter)||s.barycenter>=a.barycenter)&&llt(a,s)}}o(r,"handleIn");function n(a){return function(s){s.in.push(a),--s.indegree===0&&e.push(s)}}for(o(n,"handleOut");e.length;){var i=e.pop();t.push(i),st(i.in.reverse(),r(i)),st(i.out,n(i))}return mn(Is(t,function(a){return!a.merged}),function(a){return Fm(a,["vs","i","barycenter","weight"])})}function llt(e,t){var r=0,n=0;e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.vs=t.vs.concat(e.vs),e.barycenter=r/n,e.weight=n,e.i=Math.min(t.i,e.i),t.merged=!0}var Hge=F(()=>{"use strict";Ln();o(qge,"resolveConflicts");o(olt,"doResolveConflicts");o(llt,"mergeEntries")});function Yge(e,t){var r=Qme(e,function(d){return Object.prototype.hasOwnProperty.call(d,"barycenter")}),n=r.lhs,i=du(r.rhs,function(d){return-d.i}),a=[],s=0,l=0,u=0;n.sort(clt(!!t)),u=Uge(a,i,u),st(n,function(d){u+=d.vs.length,a.push(d.vs),s+=d.barycenter*d.weight,l+=d.weight,u=Uge(a,i,u)});var h={vs:xl(a)};return l&&(h.barycenter=s/l,h.weight=l),h}function Uge(e,t,r){for(var n;t.length&&(n=kf(t)).i<=r;)t.pop(),e.push(n.vs),r++;return r}function clt(e){return function(t,r){return t.barycenterr.barycenter?1:e?r.i-t.i:t.i-r.i}}var jge=F(()=>{"use strict";Ln();pu();o(Yge,"sort");o(Uge,"consumeUnsortable");o(clt,"compareWithBias")});function G9(e,t,r,n){var i=e.children(t),a=e.node(t),s=a?a.borderLeft:void 0,l=a?a.borderRight:void 0,u={};s&&(i=Is(i,function(g){return g!==s&&g!==l}));var h=Vge(e,i);st(h,function(g){if(e.children(g.v).length){var y=G9(e,g.v,r,n);u[g.v]=y,Object.prototype.hasOwnProperty.call(y,"barycenter")&&hlt(g,y)}});var d=qge(h,r);ult(d,u);var f=Yge(d,n);if(s&&(f.vs=xl([s,f.vs,l]),e.predecessors(s).length)){var p=e.node(e.predecessors(s)[0]),m=e.node(e.predecessors(l)[0]);Object.prototype.hasOwnProperty.call(f,"barycenter")||(f.barycenter=0,f.weight=0),f.barycenter=(f.barycenter*f.weight+p.order+m.order)/(f.weight+2),f.weight+=2}return f}function ult(e,t){st(e,function(r){r.vs=xl(r.vs.map(function(n){return t[n]?t[n].vs:n}))})}function hlt(e,t){Fn(e.barycenter)?(e.barycenter=t.barycenter,e.weight=t.weight):(e.barycenter=(e.barycenter*e.weight+t.barycenter*t.weight)/(e.weight+t.weight),e.weight+=t.weight)}var Xge=F(()=>{"use strict";Ln();Wge();Hge();jge();o(G9,"sortSubgraph");o(ult,"expandSubgraphs");o(hlt,"mergeBarycenters")});function Qge(e){var t=k9(e),r=Kge(e,bl(1,t+1),"inEdges"),n=Kge(e,bl(t-1,-1,-1),"outEdges"),i=zge(e);Zge(e,i);for(var a=Number.POSITIVE_INFINITY,s,l=0,u=0;u<4;++l,++u){dlt(l%2?r:n,l%4>=2),i=Sf(e);var h=$ge(e,i);h{"use strict";Ln();qo();pu();Pge();Bge();Fge();Gge();Xge();o(Qge,"order");o(Kge,"buildLayerGraphs");o(dlt,"sweepLayerGraphs");o(Zge,"assignOrder")});function e0e(e){var t=plt(e);st(e.graph().dummyChains,function(r){for(var n=e.node(r),i=n.edgeObj,a=flt(e,t,i.v,i.w),s=a.path,l=a.lca,u=0,h=s[u],d=!0;r!==i.w;){if(n=e.node(r),d){for(;(h=s[u])!==l&&e.node(h).maxRanks||l>t[u].lim));for(h=u,u=n;(u=e.parent(u))!==h;)a.push(u);return{path:i.concat(a.reverse()),lca:h}}function plt(e){var t={},r=0;function n(i){var a=r;st(e.children(i),n),t[i]={low:a,lim:r++}}return o(n,"dfs"),st(e.children(),n),t}var t0e=F(()=>{"use strict";Ln();o(e0e,"parentDummyChains");o(flt,"findPath");o(plt,"postorder")});function mlt(e,t){var r={};function n(i,a){var s=0,l=0,u=i.length,h=kf(a);return st(a,function(d,f){var p=ylt(e,d),m=p?e.node(p).order:u;(p||d===h)&&(st(a.slice(l,f+1),function(g){st(e.predecessors(g),function(y){var v=e.node(y),x=v.order;(xh)&&r0e(r,p,d)})})}o(n,"scan");function i(a,s){var l=-1,u,h=0;return st(s,function(d,f){if(e.node(d).dummy==="border"){var p=e.predecessors(d);p.length&&(u=e.node(p[0]).order,n(s,h,f,l,u),h=f,l=u)}n(s,h,s.length,u,a.length)}),s}return o(i,"visitLayer"),hu(t,i),r}function ylt(e,t){if(e.node(t).dummy)return g1(e.predecessors(t),function(r){return e.node(r).dummy})}function r0e(e,t,r){if(t>r){var n=t;t=r,r=n}Object.prototype.hasOwnProperty.call(e,t)||Object.defineProperty(e,t,{enumerable:!0,configurable:!0,value:{},writable:!0});var i=e[t];Object.defineProperty(i,r,{enumerable:!0,configurable:!0,value:!0,writable:!0})}function vlt(e,t,r){if(t>r){var n=t;t=r,r=n}return!!e[t]&&Object.prototype.hasOwnProperty.call(e[t],r)}function xlt(e,t,r,n){var i={},a={},s={};return st(t,function(l){st(l,function(u,h){i[u]=u,a[u]=u,s[u]=h})}),st(t,function(l){var u=-1;st(l,function(h){var d=n(h);if(d.length){d=du(d,function(y){return s[y]});for(var f=(d.length-1)/2,p=Math.floor(f),m=Math.ceil(f);p<=m;++p){var g=d[p];a[h]===h&&u{"use strict";Ln();qo();pu();o(mlt,"findType1Conflicts");o(glt,"findType2Conflicts");o(ylt,"findOtherInnerSegmentNode");o(r0e,"addConflict");o(vlt,"hasConflict");o(xlt,"verticalAlignment");o(blt,"horizontalCompaction");o(Tlt,"buildBlockGraph");o(Clt,"findSmallestWidthAlignment");o(wlt,"alignCoordinates");o(klt,"balance");o(n0e,"positionX");o(Slt,"sep");o(Elt,"width")});function a0e(e){e=n5(e),Alt(e),d9(n0e(e),function(t,r){e.node(r).x=t})}function Alt(e){var t=Sf(e),r=e.graph().ranksep,n=0;st(t,function(i){var a=co(mn(i,function(s){return e.node(s).height}));st(i,function(s){e.node(s).y=n+a/2}),n+=a+r})}var s0e=F(()=>{"use strict";Ln();pu();i0e();o(a0e,"position");o(Alt,"positionY")});function gT(e,t){var r=t&&t.debugTiming?Jme:ege;r("layout",()=>{var n=r(" buildLayoutGraph",()=>$lt(e));r(" runLayout",()=>Rlt(n,r)),r(" updateInputGraph",()=>_lt(e,n))})}function Rlt(e,t){t(" makeSpaceForEdgeLabels",()=>Flt(e)),t(" removeSelfEdges",()=>jlt(e)),t(" acyclic",()=>Ume(e)),t(" nestingGraph.run",()=>Lge(e)),t(" rank",()=>F9(n5(e))),t(" injectEdgeLabelProxies",()=>zlt(e)),t(" removeEmptyRanks",()=>Zme(e)),t(" nestingGraph.cleanup",()=>Ige(e)),t(" normalizeRanks",()=>Kme(e)),t(" assignRankMinMax",()=>Glt(e)),t(" removeEdgeLabelProxies",()=>Vlt(e)),t(" normalize.run",()=>cge(e)),t(" parentDummyChains",()=>e0e(e)),t(" addBorderSegments",()=>rge(e)),t(" order",()=>Qge(e)),t(" insertSelfEdges",()=>Xlt(e)),t(" adjustCoordinateSystem",()=>age(e)),t(" position",()=>a0e(e)),t(" positionSelfEdges",()=>Klt(e)),t(" removeBorderNodes",()=>Ylt(e)),t(" normalize.undo",()=>uge(e)),t(" fixupEdgeLabelCoords",()=>Hlt(e)),t(" undoCoordinateSystem",()=>sge(e)),t(" translateGraph",()=>Wlt(e)),t(" assignNodeIntersects",()=>qlt(e)),t(" reversePoints",()=>Ult(e)),t(" acyclic.undo",()=>Yme(e))}function _lt(e,t){st(e.nodes(),function(r){var n=e.node(r),i=t.node(r);n&&(n.x=i.x,n.y=i.y,t.children(r).length&&(n.width=i.width,n.height=i.height))}),st(e.edges(),function(r){var n=e.edge(r),i=t.edge(r);n.points=i.points,Object.prototype.hasOwnProperty.call(i,"x")&&(n.x=i.x,n.y=i.y)}),e.graph().width=t.graph().width,e.graph().height=t.graph().height}function $lt(e){var t=new on({multigraph:!0,compound:!0}),r=W9(e.graph());return t.setGraph(v1({},Dlt,V9(r,Llt),Fm(r,Ilt))),st(e.nodes(),function(n){var i=W9(e.node(n));t.setNode(n,a9(V9(i,Mlt),Nlt)),t.setParent(n,e.parent(n))}),st(e.edges(),function(n){var i=W9(e.edge(n));t.setEdge(n,v1({},Olt,V9(i,Plt),Fm(i,Blt)))}),t}function Flt(e){var t=e.graph();t.ranksep/=2,st(e.edges(),function(r){var n=e.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!=="c"&&(t.rankdir==="TB"||t.rankdir==="BT"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function zlt(e){st(e.edges(),function(t){var r=e.edge(t);if(r.width&&r.height){var n=e.node(t.v),i=e.node(t.w),a={rank:(i.rank-n.rank)/2+n.rank,e:t};fu(e,"edge-proxy",a,"_ep")}})}function Glt(e){var t=0;st(e.nodes(),function(r){var n=e.node(r);n.borderTop&&(n.minRank=e.node(n.borderTop).rank,n.maxRank=e.node(n.borderBottom).rank,t=co(t,n.maxRank))}),e.graph().maxRank=t}function Vlt(e){st(e.nodes(),function(t){var r=e.node(t);r.dummy==="edge-proxy"&&(e.edge(r.e).labelRank=r.rank,e.removeNode(t))})}function Wlt(e){var t=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,a=e.graph(),s=a.marginx||0,l=a.marginy||0;function u(h){var d=h.x,f=h.y,p=h.width,m=h.height;t=Math.min(t,d-p/2),r=Math.max(r,d+p/2),n=Math.min(n,f-m/2),i=Math.max(i,f+m/2)}o(u,"getExtremes"),st(e.nodes(),function(h){u(e.node(h))}),st(e.edges(),function(h){var d=e.edge(h);Object.prototype.hasOwnProperty.call(d,"x")&&u(d)}),t-=s,n-=l,st(e.nodes(),function(h){var d=e.node(h);d.x-=t,d.y-=n}),st(e.edges(),function(h){var d=e.edge(h);st(d.points,function(f){f.x-=t,f.y-=n}),Object.prototype.hasOwnProperty.call(d,"x")&&(d.x-=t),Object.prototype.hasOwnProperty.call(d,"y")&&(d.y-=n)}),a.width=r-t+s,a.height=i-n+l}function qlt(e){st(e.edges(),function(t){var r=e.edge(t),n=e.node(t.v),i=e.node(t.w),a,s;r.points?(a=r.points[0],s=r.points[r.points.length-1]):(r.points=[],a=i,s=n),r.points.unshift(C9(n,a)),r.points.push(C9(i,s))})}function Hlt(e){st(e.edges(),function(t){var r=e.edge(t);if(Object.prototype.hasOwnProperty.call(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function Ult(e){st(e.edges(),function(t){var r=e.edge(t);r.reversed&&r.points.reverse()})}function Ylt(e){st(e.nodes(),function(t){if(e.children(t).length){var r=e.node(t),n=e.node(r.borderTop),i=e.node(r.borderBottom),a=e.node(kf(r.borderLeft)),s=e.node(kf(r.borderRight));r.width=Math.abs(s.x-a.x),r.height=Math.abs(i.y-n.y),r.x=a.x+r.width/2,r.y=n.y+r.height/2}}),st(e.nodes(),function(t){e.node(t).dummy==="border"&&e.removeNode(t)})}function jlt(e){st(e.edges(),function(t){if(t.v===t.w){var r=e.node(t.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}})}function Xlt(e){var t=Sf(e);st(t,function(r){var n=0;st(r,function(i,a){var s=e.node(i);s.order=a+n,st(s.selfEdges,function(l){fu(e,"selfedge",{width:l.label.width,height:l.label.height,rank:s.rank,order:a+ ++n,e:l.e,label:l.label},"_se")}),delete s.selfEdges})})}function Klt(e){st(e.nodes(),function(t){var r=e.node(t);if(r.dummy==="selfedge"){var n=e.node(r.e.v),i=n.x+n.width/2,a=n.y,s=r.x-i,l=n.height/2;e.setEdge(r.e,r.label),e.removeNode(t),r.label.points=[{x:i+2*s/3,y:a-l},{x:i+5*s/6,y:a-l},{x:i+s,y:a},{x:i+5*s/6,y:a+l},{x:i+2*s/3,y:a+l}],r.label.x=r.x,r.label.y=r.y}})}function V9(e,t){return Bm(Fm(e,t),Number)}function W9(e){var t={};return st(e,function(r,n){t[n.toLowerCase()]=r}),t}var Llt,Dlt,Ilt,Mlt,Nlt,Plt,Olt,Blt,o0e=F(()=>{"use strict";Ln();qo();nge();lge();T9();A9();z9();Mge();Jge();t0e();s0e();pu();o(gT,"layout");o(Rlt,"runLayout");o(_lt,"updateInputGraph");Llt=["nodesep","edgesep","ranksep","marginx","marginy"],Dlt={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Ilt=["acyclicer","ranker","rankdir","align"],Mlt=["width","height"],Nlt={width:0,height:0},Plt=["minlen","weight","width","height","labeloffset"],Olt={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Blt=["labelpos"];o($lt,"buildLayoutGraph");o(Flt,"makeSpaceForEdgeLabels");o(zlt,"injectEdgeLabelProxies");o(Glt,"assignRankMinMax");o(Vlt,"removeEdgeLabelProxies");o(Wlt,"translateGraph");o(qlt,"assignNodeIntersects");o(Hlt,"fixupEdgeLabelCoords");o(Ult,"reversePointsForReversedEdges");o(Ylt,"removeBorderNodes");o(jlt,"removeSelfEdges");o(Xlt,"insertSelfEdges");o(Klt,"positionSelfEdges");o(V9,"selectNumberAttrs");o(W9,"canonicalize")});var q9=F(()=>{"use strict";T9();o0e();A9();z9()});function hc(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:Zlt(e),edges:Qlt(e)};return Fn(e.graph())||(t.value=YO(e.graph())),t}function Zlt(e){return mn(e.nodes(),function(t){var r=e.node(t),n=e.parent(t),i={v:t};return Fn(r)||(i.value=r),Fn(n)||(i.parent=n),i})}function Qlt(e){return mn(e.edges(),function(t){var r=e.edge(t),n={v:t.v,w:t.w};return Fn(t.name)||(n.name=t.name),Fn(r)||(n.value=r),n})}var H9=F(()=>{"use strict";Ln();t5();o(hc,"write");o(Zlt,"writeNodes");o(Qlt,"writeEdges")});var Br,Rf,u0e,o5,Wm,Jlt,U9,h0e,ect,qm,c0e,d0e,f0e,p0e,m0e,g0e,tct,Y9=F(()=>{"use strict";vt();qo();H9();Br=new Map,Rf=new Map,u0e=new Map,o5=o(()=>{Rf.clear(),u0e.clear(),Br.clear()},"clear"),Wm=o((e,t)=>{let r=Rf.get(t)||[];return Z.trace("In isDescendant",t," ",e," = ",r.includes(e)),r.includes(e)},"isDescendant"),Jlt=o((e,t)=>{let r=Rf.get(t)||[];return Z.info("Descendants of ",t," is ",r),Z.info("Edge is ",e),e.v===t||e.w===t?!1:r?r.includes(e.v)||Wm(e.v,t)||Wm(e.w,t)||r.includes(e.w):(Z.debug("Tilt, ",t,",not in descendants"),!1)},"edgeInCluster"),U9=o((e,t,r,n)=>{Z.warn("Copying children of ",e,"root",n,"data",t.node(e),n);let i=t.children(e)||[];e!==n&&i.push(e),Z.warn("Copying (nodes) clusterId",e,"nodes",i),i.forEach(a=>{if(t.children(a).length>0)U9(a,t,r,n);else{let s=t.node(a);Z.info("cp ",a," to ",n," with parent ",e),r.setNode(a,s),n!==t.parent(a)&&(Z.warn("Setting parent",a,t.parent(a)),r.setParent(a,t.parent(a))),e!==n&&a!==e?(Z.debug("Setting parent",a,e),r.setParent(a,e)):(Z.info("In copy ",e,"root",n,"data",t.node(e),n),Z.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==n,"node!==clusterId",a!==e));let l=t.edges(a);Z.debug("Copying Edges",l),l.forEach(u=>{Z.info("Edge",u);let h=t.edge(u.v,u.w,u.name);Z.info("Edge data",h,n);try{if(Jlt(u,n)){let d=Rf.get(n)||[],f=d.includes(u.v)||Wm(u.v,n)||u.v===n,p=d.includes(u.w)||Wm(u.w,n)||u.w===n;if(f&&p)Z.info("Copying as ",u.v,u.w,h,u.name),r.setEdge(u.v,u.w,h,u.name),Z.info("newGraph edges ",r.edges(),r.edge(r.edges()[0]));else{let m=f?n:u.v,g=p?n:u.w;Z.info("Rebinding cross-boundary edge as ",m,g,h,u.name),t.setEdge(m,g,h,u.name)}}else Z.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",n," clusterId:",e)}catch(d){Z.error(d)}})}Z.debug("Removing node",a),t.removeNode(a)})},"copy"),h0e=o((e,t)=>{let r=t.children(e),n=[...r];for(let i of r)u0e.set(i,e),n=[...n,...h0e(i,t)];return n},"extractDescendants"),ect=o((e,t,r)=>{let n=e.edges().filter(u=>u.v===t||u.w===t),i=e.edges().filter(u=>u.v===r||u.w===r),a=n.map(u=>({v:u.v===t?r:u.v,w:u.w===t?t:u.w})),s=i.map(u=>({v:u.v,w:u.w}));return a.filter(u=>s.some(h=>u.v===h.v&&u.w===h.w))},"findCommonEdges"),qm=o((e,t,r)=>{let n=t.children(e);if(Z.trace("Searching children of id ",e,n),n.length<1)return e;let i;for(let a of n){let s=qm(a,t,r),l=ect(t,r,s);if(s)if(l.length>0)i=s;else return s}return i},"findNonClusterChild"),c0e=o(e=>!Br.has(e)||!Br.get(e).externalConnections?e:Br.has(e)?Br.get(e).id:e,"getAnchorId"),d0e=o((e,t)=>{if(!e||t>10){Z.debug("Opting out, no graph ");return}else Z.debug("Opting in, graph ");e.nodes().forEach(function(r){e.children(r).length>0&&(Z.warn("Cluster identified",r," Replacement id in edges: ",qm(r,e,r)),Rf.set(r,h0e(r,e)),Br.set(r,{id:qm(r,e,r),clusterData:e.node(r)}))}),e.nodes().forEach(function(r){let n=e.children(r),i=e.edges();n.length>0?(Z.debug("Cluster identified",r,Rf),i.forEach(a=>{let s=Wm(a.v,r),l=Wm(a.w,r);s^l&&(Z.warn("Edge: ",a," leaves cluster ",r),Z.warn("Descendants of XXX ",r,": ",Rf.get(r)),Br.get(r).externalConnections=!0)})):Z.debug("Not a cluster ",r,Rf)});for(let r of Br.keys()){let n=Br.get(r).id,i=e.parent(n);i!==r&&Br.has(i)&&!Br.get(i).externalConnections&&(Br.get(r).id=i);let a=e.edges().some(s=>s.v===r);if(n&&Br.get(r)?.externalConnections&&a&&g0e(e,n,r)){let s=tct(e,r,e.parent(n));s&&(Br.get(r).id=s)}}e.edges().forEach(function(r){let n=e.edge(r);Z.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),Z.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(e.edge(r)));let i=r.v,a=r.w;if(Z.warn("Fix XXX",Br,"ids:",r.v,r.w,"Translating: ",Br.get(r.v)," --- ",Br.get(r.w)),Br.get(r.v)||Br.get(r.w)){if(Z.warn("Fixing and trying - removing XXX",r.v,r.w,r.name),i=c0e(r.v),a=c0e(r.w),e.removeEdge(r.v,r.w,r.name),i!==r.v){let s=e.parent(i);Br.get(s).externalConnections=!0,n.fromCluster=r.v}if(a!==r.w){let s=e.parent(a);Br.get(s).externalConnections=!0,n.toCluster=r.w}Z.warn("Fix Replacing with XXX",i,a,r.name),e.setEdge(i,a,n,r.name)}}),Z.warn("Adjusted Graph",hc(e)),f0e(e,0),Z.trace(Br)},"adjustClustersAndEdges"),f0e=o((e,t)=>{if(Z.warn("extractor - ",t,hc(e),e.children("D")),t>10){Z.error("Bailing out");return}let r=e.nodes(),n=!1;for(let i of r){let a=e.children(i);n=n||a.length>0}if(!n){Z.debug("Done, no node has children",e.nodes());return}Z.debug("Nodes = ",r,t);for(let i of r)if(Z.debug("Extracting node",i,Br,Br.has(i)&&!Br.get(i).externalConnections,!e.parent(i),e.node(i),e.children("D")," Depth ",t),!Br.has(i))Z.debug("Not a cluster",i,t);else if(Br.get(i)?.clusterData?.explicitDir&&e.children(i)&&e.children(i).length>0){Z.warn("Cluster with explicit dir, creating subgraph for children",i,t);let a=Br.get(i).clusterData.dir,s=new on({multigraph:!0,compound:!0}).setGraph({rankdir:a,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});U9(i,e,s,i);let l=e.node(i)||{};e.setNode(i,{...l,clusterNode:!0,id:i,clusterData:Br.get(i).clusterData,label:Br.get(i).label,graph:s}),Z.warn("Subgraph for cluster with explicit dir created:",i,hc(s))}else if(!Br.get(i).externalConnections&&e.children(i)&&e.children(i).length>0){Z.warn("Cluster without external connections, without a parent and with children",i,t);let s=e.graph().rankdir==="TB"?"LR":"TB";Br.get(i)?.clusterData?.dir&&(s=Br.get(i).clusterData.dir,Z.warn("Fixing dir",Br.get(i).clusterData.dir,s));let l=new on({multigraph:!0,compound:!0}).setGraph({rankdir:s,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});U9(i,e,l,i);let u=e.node(i)||{};e.setNode(i,{...u,clusterNode:!0,id:i,clusterData:Br.get(i).clusterData,label:Br.get(i).label,graph:l}),Z.debug("Old graph after copy",hc(e))}else Z.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!Br.get(i).externalConnections," no parent: ",!e.parent(i)," children ",e.children(i)&&e.children(i).length>0,e.children("D"),t),Z.debug(Br);r=e.nodes(),Z.warn("New list of nodes",r);for(let i of r){let a=e.node(i);Z.warn(" Now next level",i,a),a?.clusterNode&&f0e(a.graph,t+1)}},"extractor"),p0e=o((e,t)=>{if(t.length===0)return[];let r=Object.assign([],t);return t.forEach(n=>{let i=e.children(n),a=p0e(e,i);r=[...r,...a]}),r},"sorter"),m0e=o(e=>p0e(e,e.children()),"sortNodesByHierarchy"),g0e=o((e,t,r)=>{let n=e.parent(t);for(;n&&n!==r;){let i=Br.get(n);if(i&&!i.externalConnections)return!0;n=e.parent(n)}return!1},"isNodeInExtractableCluster"),tct=o((e,t,r)=>{let n=e.children(t)??[];for(let i of n){if(i===r||Wm(i,r))continue;let a=qm(i,e,t);if(a&&!g0e(e,a,t))return a}return null},"findSafeAnchorNode")});var T0e={};ir(T0e,{getEdgesToRender:()=>x0e,render:()=>sct});var y0e,v0e,rct,nct,ict,act,x0e,b0e,sct,C0e=F(()=>{"use strict";q9();H9();qo();Z4();Kt();Y9();Lm();Wy();G2();vt();Vy();Xt();y0e=o((e,t,r)=>Math.max(t,Math.min(r,e)),"clamp"),v0e=o((e="TB")=>{switch(e){case"BT":return"bottom";case"LR":return"right";case"RL":return"left";case"TB":default:return"top"}},"getDefaultSelfLoopSide"),rct=o(e=>e==="flowchart"||e==="flowchart-v2"||e==="stateDiagram","shouldMergeSelfLoopSegments"),nct=o((e,t,r,n,i)=>{let a=[],s=new Set;if(r.forEach(({start:d,end:f})=>{d!==n&&s.add(d),f!==n&&s.add(f)}),s.forEach(d=>{let f=e.node(d);typeof f?.x=="number"&&typeof f?.y=="number"&&a.push(f)}),a.length===0&&r.forEach(({edge:d})=>{(d.points??[]).forEach(f=>{typeof f?.x=="number"&&typeof f?.y=="number"&&a.push(f)})}),a.length===0)return v0e(i);let l=a.reduce((d,f)=>({x:d.x+f.x/a.length,y:d.y+f.y/a.length}),{x:0,y:0}),u=l.x-t.x,h=l.y-t.y;return Math.abs(u)>Math.abs(h)?u>0?"right":"left":Math.abs(h)>0?h>0?"bottom":"top":v0e(i)},"getSelfLoopSide"),ict=o((e,t="top",r=0,n=0)=>{let i=e.x,a=e.y-r,s=e.width/2,l=e.height/2,u=Math.max(36,Math.min(100,e.width*.8)),h=y0e(Math.max(n,e.width*.35),36,u),d=y0e(Math.min(e.width,e.height)*.45,24,48);switch(t){case"bottom":{let f=a+l;return[{x:i-h/2,y:f},{x:i-h/2,y:f+d},{x:i+h/2,y:f+d},{x:i+h/2,y:f}]}case"right":{let f=i+s;return[{x:f,y:a-h/2},{x:f+d,y:a-h/2},{x:f+d,y:a+h/2},{x:f,y:a+h/2}]}case"left":{let f=i-s;return[{x:f,y:a-h/2},{x:f-d,y:a-h/2},{x:f-d,y:a+h/2},{x:f,y:a+h/2}]}case"top":default:{let f=a-l;return[{x:i-h/2,y:f},{x:i-h/2,y:f-d},{x:i+h/2,y:f-d},{x:i+h/2,y:f}]}}},"getSelfLoopPoints"),act=o((e,t,r="top",n=0,i={})=>{let s=e.x,l=e.y-n,u=i.width??0,h=i.height??0;switch(r){case"bottom":return{x:s,y:Math.max(...t.map(d=>d.y))+h/2+4};case"right":return{x:Math.max(...t.map(d=>d.x))+u/2+4,y:l};case"left":return{x:Math.min(...t.map(d=>d.x))-u/2-4,y:l};case"top":default:return{x:s,y:Math.min(...t.map(d=>d.y))-h/2-4}}},"getSelfLoopLabelPosition"),x0e=o((e,t=0,{mergeSelfLoops:r=!0}={})=>{let n=new Map,i=[],a=e.graph()?.rankdir;return e.edges().forEach(s=>{let l=e.edge(s);if(r&&l.selfLoop){let u=l.selfLoop.id;n.has(u)||n.set(u,[]),n.get(u).push({edge:l,start:s.v,end:s.w})}else i.push({edge:l,start:s.v,end:s.w})}),n.forEach(s=>{if(s.length!==3){s.forEach(x=>i.push(x));return}s.sort((x,b)=>x.edge.selfLoop.order-b.edge.selfLoop.order);let[l,u,h]=s,d=l.edge.originalEdge??u.edge.originalEdge??h.edge.originalEdge??u.edge,f=e.node(d.start);if(!f){s.forEach(x=>i.push(x));return}let p={width:u.edge.width,height:u.edge.height},m=nct(e,f,s,d.start,a),g=ict(f,m,t,p.width??0),y=act(f,g,m,t,p),v={...u.edge,...d,id:d.id,points:g,start:d.start,end:d.end,x:y.x,y:y.y,width:p.width,height:p.height,labelStyle:u.edge.labelStyle,fromCluster:l.edge.fromCluster??u.edge.fromCluster??h.edge.fromCluster,toCluster:l.edge.toCluster??u.edge.toCluster??h.edge.toCluster};delete v.selfLoop,delete v.originalEdge,i.push({edge:v,start:v.start,end:v.end})}),i},"getEdgesToRender"),b0e=o(async(e,t,r,n,i,a)=>{Z.warn("Graph in recursive render:XAX",hc(t),i);let s=t.graph().rankdir;Z.trace("Dir in recursive render - dir:",s);let l=e.insert("g").attr("class","root");t.nodes()?Z.info("Recursive render XXX",t.nodes()):Z.info("No nodes found for",t),t.edges().length>0&&Z.info("Recursive edges",t.edge(t.edges()[0]));let u=l.insert("g").attr("class","clusters"),h=l.insert("g").attr("class","edgePaths"),d=l.insert("g").attr("class","edgeLabels"),f=l.insert("g").attr("class","nodes"),p=rct(r);await Promise.all(t.nodes().map(async function(b){let T=t.node(b);if(i!==void 0){let k=JSON.parse(JSON.stringify(i.clusterData));Z.trace(`Setting data for parent cluster XXX + Node.id = `,b,` + data=`,k.height,` +Parent cluster`,i.height),t.setNode(i.id,k),t.parent(b)||(Z.trace("Setting parent",b,i.id),t.setParent(b,i.id,k))}if(Z.info("(Insert) Node XXX"+b+": "+JSON.stringify(t.node(b))),T?.clusterNode){Z.info("Cluster identified XBX",b,T.width,t.node(b));let{ranksep:k,nodesep:C}=t.graph();T.graph.setGraph({...T.graph.graph(),ranksep:k+25,nodesep:C});let w=await b0e(f,T.graph,r,n,t.node(b),a),S=w.elem;pt(T,S),T.diff=w.diff||0,Z.info("New compound node after recursive render XAX",b,"width",T.width,"height",T.height),Kce(S,T)}else t.children(b).length>0?(Z.trace("Cluster - the non recursive path XBX",b,T.id,T,T.width,"Graph:",t),Z.trace(qm(T.id,t)),Br.set(T.id,{id:qm(T.id,t),node:T})):(Z.trace("Node - the non recursive path XAX",b,f,t.node(b),s),await nf(f,t.node(b),{config:a,dir:s}))})),await o(async()=>{let b=t.edges().map(async function(T){let k=t.edge(T.v,T.w,T.name);if(Z.info("Edge "+T.v+" -> "+T.w+": "+JSON.stringify(T)),Z.info("Edge "+T.v+" -> "+T.w+": ",T," ",JSON.stringify(t.edge(T))),Z.info("Fix",Br,"ids:",T.v,T.w,"Translating: ",Br.get(T.v),Br.get(T.w)),p&&k.selfLoop){if(k.selfLoop.order!==1)return;let C=k.id;k.id=k.selfLoop.id,await Rm(d,k),k.id=C;return}await Rm(d,k)});await Promise.all(b)},"processEdges")(),Z.info("Graph before layout:",JSON.stringify(hc(t))),Z.info("############################################# XXX"),Z.info("### Layout ### XXX"),Z.info("############################################# XXX"),gT(t),Z.info("Graph after layout:",JSON.stringify(hc(t)));let g=0,{subGraphTitleTotalMargin:y}=oc(a);await Promise.all(m0e(t).map(async function(b){let T=t.node(b);if(Z.info("Position XBX => "+b+": ("+T.x,","+T.y,") width: ",T.width," height: ",T.height),T?.clusterNode)T.y+=y,Z.info("A tainted cluster node XBX1",b,T.id,T.width,T.height,T.x,T.y,t.parent(b)),Br.get(T.id).node=T,_m(T);else if(t.children(b).length>0){Z.info("A pure cluster node XBX1",b,T.id,T.x,T.y,T.width,T.height,t.parent(b)),T.height+=y,t.node(T.parentId);let k=T?.padding/2||0,C=T?.labelBBox?.height||0,w=C-k||0;Z.debug("OffsetY",w,"labelHeight",C,"halfPadding",k),await rf(u,T),Br.get(T.id).node=T}else{let k=t.node(T.parentId);T.y+=y/2,Z.info("A regular node XBX1 - using the padding",T.id,"parent",T.parentId,T.width,T.height,T.x,T.y,"offsetY",T.offsetY,"parent",k,k?.offsetY,T),_m(T)}}));let v=y/2;return x0e(t,v,{mergeSelfLoops:p}).forEach(function({edge:b,start:T,end:k}){Z.info("Edge "+T+" -> "+k+": "+JSON.stringify(b),b),b.points.forEach(R=>R.y+=v);let C=t.node(T),w=t.node(k),S=Hy(h,b,Br,r,C,w,n);K4(b,S)}),t.nodes().forEach(function(b){let T=t.node(b);Z.info(b,T.type,T.diff),T.isGroup&&(g=T.diff)}),Z.warn("Returning from recursive render XAX",l,g),{elem:l,diff:g}},"recursiveRender"),sct=o(async(e,t)=>{let r=new on({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.config?.flowchart?.nodeSpacing||e.nodeSpacing,ranksep:e.config?.rankSpacing||e.config?.flowchart?.rankSpacing||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),n=t.select("g");Uy(n,e.markers,e.type,e.diagramId),J4(),X4(),q4(),o5(),e.nodes.forEach(a=>{r.setNode(a.id,{...a}),a.parentId&&r.setParent(a.id,a.parentId)}),Z.debug("Edges:",e.edges),e.edges.forEach(a=>{if(a.start===a.end){let s=a.start,l=s+"---"+s+"---1",u=s+"---"+s+"---2",h=r.node(s);r.setNode(l,{domId:l,id:l,parentId:h.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),r.setParent(l,h.parentId),r.setNode(u,{domId:u,id:u,parentId:h.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),r.setParent(u,h.parentId);let d=structuredClone(a),f=structuredClone(a),p=structuredClone(a),m=structuredClone(a);f.originalEdge=d,f.selfLoop={id:d.id,order:0},p.originalEdge=d,p.selfLoop={id:d.id,order:1},m.originalEdge=d,m.selfLoop={id:d.id,order:2},f.label="",f.arrowTypeEnd="none",f.endLabelLeft="",f.endLabelRight="",f.startLabelLeft="",f.id=s+"-cyclic-special-1",p.startLabelRight="",p.startLabelLeft="",p.endLabelLeft="",p.endLabelRight="",p.arrowTypeStart="none",p.arrowTypeEnd="none",p.id=s+"-cyclic-special-mid",m.label="",m.startLabelRight="",m.startLabelLeft="",m.arrowTypeStart="none",h.isGroup&&(f.fromCluster=s,m.toCluster=s),m.id=s+"-cyclic-special-2",m.arrowTypeStart="none",r.setEdge(s,l,f,s+"-cyclic-special-0"),r.setEdge(l,u,p,s+"-cyclic-special-1"),r.setEdge(u,s,m,s+"-cyclic-special-2")}else r.setEdge(a.start,a.end,{...a},a.id)}),Z.warn("Graph at first:",JSON.stringify(hc(r))),d0e(r),Z.warn("Graph after XAX:",JSON.stringify(hc(r)));let i=Ae();await b0e(n,r,e.type,e.diagramId,void 0,i)},"render")});var w0e=F(()=>{"use strict"});var S0e={};ir(S0e,{captureNodeSizes:()=>hct,shouldCaptureSizes:()=>lct});function k0e(){if(!(typeof globalThis>"u"))return globalThis}function lct(){return!!k0e()?.mermaidCaptureSizes}function cct(){return typeof location>"u"?"browser-dev":`${location.pathname}${location.search}`}function uct(e,t){let r=k0e();if(!r)return;let n=t.node(),a=((n&&"ownerSVGElement"in n?n.ownerSVGElement:null)??n)?.id??"(unknown)";r.mermaidCapturedSizes??=[];let s={svgId:a,sizes:e};r.mermaidCapturedSizes.push(s),r.mermaidLastCapturedSizes=s}function hct(e,t){let r=[];for(let n of t.nodes)n.isGroup||r.push({id:n.id,width:n.width??0,height:n.height??0});r.length!==0&&uct({metadata:{captureVersion:1,capturedAt:new Date().toISOString(),capturedFrom:cct()},nodes:r},e)}var E0e=F(()=>{"use strict";w0e();o(k0e,"getCaptureGlobal");o(lct,"shouldCaptureSizes");o(cct,"capturedFromLocation");o(uct,"emitCapturedSizes");o(hct,"captureNodeSizes")});async function A0e(e,t){let r=new on({multigraph:!0,compound:!0}),n=[...t.edges],i=Ae(),a=e.insert("g").attr("class","root"),s=a.insert("g").attr("class","clusters"),l=a.insert("g").attr("class","edges edgePath"),u=a.insert("g").attr("class","edgeLabels"),h=a.insert("g").attr("class","nodes"),d=new Map,f=e.node()!=null;await Promise.all(t.nodes.map(async p=>{if(p.isGroup)r.setNode(p.id,{...p});else{if(f){let m=await nf(h,p,{config:i,dir:p.dir}),g=m.node()?.getBBox()??{width:0,height:0};d.set(p.id,m),p.width=g.width,p.height=g.height}r.setNode(p.id,{...p})}}));for(let p of n)r.setEdge(p.start,p.end,{...p},p.id),t.edges.some(g=>g.id===p.id)||t.edges.push(p);if(globalThis.mermaidCaptureSizes){let{captureNodeSizes:p}=await Promise.resolve().then(()=>(E0e(),S0e));p(e,t)}return{graph:r,groups:{clusters:s,edgePaths:l,edgeLabels:u,nodes:h,rootGroups:a},nodeElements:d}}var R0e=F(()=>{"use strict";qo();Xt();Lm();o(A0e,"createGraphWithElements")});function j9(e){let t=[];for(let r=0;r=1-c5||p<=c5||p>=1-c5?null:{point:{x:e.x+f*i,y:e.y+f*a},tA:f,tB:p}}function L0e(e){return Math.abs(e.b.x-e.a.x)>=Math.abs(e.b.y-e.a.y)}function fct(e){let t=[];for(let r=0;r=Math.abs(r)?t>=0?1:0:r>=0?1:0}function gct(e,t){if(e.length<2)return e.map(a=>({...a}));let r=e.map(a=>({...a})),n=t.arrowTypeStart&&Yi[t.arrowTypeStart];if(n){let a=e[0],s=e[1],l=Math.atan2(s.y-a.y,s.x-a.x);r[0].x=a.x+n*Math.cos(l),r[0].y=a.y+n*Math.sin(l)}let i=t.arrowTypeEnd&&Yi[t.arrowTypeEnd];if(i){let a=e.length,s=e[a-2],l=e[a-1],u=Math.atan2(l.y-s.y,l.x-s.x);r[a-1].x=l.x-i*Math.cos(u),r[a-1].y=l.y-i*Math.sin(u)}return r}function yct(e,t,r,n,i){let a=e.point.x,s=e.point.y,l={x:a-t*e.r,y:s-r*e.r},u={x:a+t*e.r,y:s+r*e.r},h=[`L${yT(l)}`];return i==="arc"?h.push(`A${mu(e.r)},${mu(e.r)} 0 0 ${n} ${yT(u)}`):h.push(`M${yT(u)}`),h}function D0e(e,t,r,n){let i=t.x-e.x,a=t.y-e.y,s=r.x-t.x,l=r.y-t.y,u=Math.hypot(i,a),h=Math.hypot(s,l);if(u0){let T=D0e(i[h-1],i[h],i[h+1]??i[h],_0e);T&&(y=T.cutLen)}let v=f,x=null;a&&hT.t-k.t);for(let T of b)T.r=Math.min(T.r,T.d-y,v-T.d);for(let T=0;Tk){let C=k/2;b[T].r=Math.min(b[T].r,C),b[T+1].r=Math.min(b[T+1].r,C)}}for(let T of b)T.r=2?n:null}catch{return null}}function I0e(e,t,r){if(!r.enabled)return;let n=e.node();if(!n)return;let i=new Map;for(let h of t)i.set(h.id,h);let a=[],s=new Map;for(let h of t){let d=typeof CSS<"u"&&CSS.escape?CSS.escape(h.id):h.id,f=n.querySelector(`path[data-id="${d}"]`);if(!f)continue;s.set(h.id,f);let m=Tct(f.getAttribute("data-points"))??h.points;a.push({...h,points:m})}let l=fct(a);if(l.length===0)return;let u=new Map;for(let h of l){let d=u.get(h.jumpEdgeId)??[];d.push(h),u.set(h.jumpEdgeId,d)}for(let h of a){let d=u.get(h.id);if(!d||d.length===0)continue;let p=i.get(h.id)?.curve;if(p!==void 0&&!bct(p))continue;let m=s.get(h.id);if(!m)continue;if(p===void 0){let T=m.getAttribute("d")??"";if(!xct(T))continue}let g=m.getAttribute("style")??"",y=/stroke-dasharray\s*:\s*0\s+([\d.]+)\s+[\d.]+\s+([\d.]+)/.exec(g),v=y?Number.parseFloat(y[1]):null,x=y?Number.parseFloat(y[2]):null,b=vct(h,d,r);if(m.setAttribute("d",b),v!==null&&x!==null&&typeof m.getTotalLength=="function"){let T=m.getTotalLength(),k=Math.max(0,T-v-x),C=`0 ${v} ${k} ${x}`,w=g.replace(/stroke-dasharray\s*:[^;]*;?/g,`stroke-dasharray: ${C};`).replace(/;\s*;+/g,";");m.setAttribute("style",w)}}}var _0e,l5,c5,mct,M0e=F(()=>{"use strict";Y4();_0e=5,l5=1e-5,c5=1e-6;o(j9,"buildSegmentList");o(dct,"segmentIntersection");o(L0e,"isHorizontalSeg");o(fct,"findEdgeIntersections");o(mu,"fmt");o(yT,"pointToString");o(pct,"getArcSweepFlag");mct=.001;o(gct,"applyMarkerOffsets");o(yct,"emitJump");o(D0e,"computeRoundedCorner");o(vct,"rewriteEdgePath");o(xct,"isStraightPath");o(bct,"curveSupportsLineHops");o(Tct,"decodeDataPoints");o(I0e,"applyLineJumpsToSvg")});async function N0e(e,t){for(let i of e.nodes)i.isGroup?await rf(t.clusters,i):_m(i);let r=new Map;for(let i of e.nodes)i?.id&&r.set(i.id,i);for(let i of e.edges){let a=i.start?r.get(i.start)??{}:{},s=i.end?r.get(i.end)??{}:{},l=Hy(t.edgePaths,{...i},{},e.type,a,s,e.diagramId);i.label&&await Rm(t.rootGroups,i),i.label&&Cct(i,l)}let n=e.config?.swimlane?.lineHops;if(n!==!1){let i=n==="gap"?"gap":"arc",a=e.edges.filter(s=>Array.isArray(s.points)&&s.points.length>=2).map(s=>({id:s.id,points:s.points,curve:s.curve,arrowTypeStart:s.arrowTypeStart,arrowTypeEnd:s.arrowTypeEnd}));I0e(t.edgePaths,a,{enabled:!0,jumpRadius:6,jumpStyle:i})}}function Cct(e,t){let r=t?.updatedPath??t?.originalPath,n=_t(),{subGraphTitleTotalMargin:i}=oc({flowchart:n.flowchart??{}});if(e.label){let a=qy.get(e.id),s=e.x,l=e.y;if(r){let u=Zt.calcLabelPosition(r);Z.debug("Moving label "+e.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),t&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(e?.startLabelLeft){let a=_i.get(e.id).startLeft,s=e?.x,l=e?.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.startLabelRight){let a=_i.get(e.id).startRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelLeft){let a=_i.get(e.id).endLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelRight){let a=_i.get(e.id).endRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}}var P0e=F(()=>{"use strict";Lm();Wy();G2();M0e();vt();Vy();ur();Qt();o(N0e,"adjustLayout");o(Cct,"positionEdgeLabel")});function O0e(e){return Math.max(e.padding??20,20)}function wct(e){let{x:t,y:r,width:n,height:i}=e,a=e.swimlaneContentTop;if(typeof t!="number"||typeof r!="number"||typeof n!="number"||typeof i!="number"||typeof a!="number"||!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(n)||!Number.isFinite(i)||!Number.isFinite(a)||n<=0||i<=0){delete e.groupTitleRect;return}let s=r-i/2,l=Math.min(a,r+i/2),u=Math.min(21,Math.max(0,l-s)),h=s+u;if(h<=s){delete e.groupTitleRect;return}e.groupTitleRect={left:t-n/2,right:t+n/2,top:s,bottom:h}}function B0e(e){let t=e.direction,r=e.nodes??=[];for(let a of e.nodes??[])a.isGroup&&!a.parentId&&(a.shape="swimlane",t&&(a.direction=t));let n=r.filter(a=>!a.isGroup&&!a.parentId);if(n.length===0)return;let i=r.find(a=>a.id===X9);i?i.isGroup&&(i.shape="swimlane",t&&(i.direction=t)):(i={id:X9,label:"",isGroup:!0,shape:"swimlane",padding:20,...t?{direction:t}:{}},r.push(i));for(let a of n)a.parentId=X9}function $0e(e){let t=new Map;for(let u of e.nodes??[])t.set(u.id,u);let r=[];for(let u of e.edges??[]){let h=typeof u.start=="string"?u.start:void 0,d=typeof u.end=="string"?u.end:void 0;!h||!d||u.labelNodeId||r.push({id:u.id,src:h,dst:d,ref:u})}let n=e.nodes??[],i=n.filter(u=>u.isGroup),a=n.filter(u=>!u.isGroup);return{nodes:[...[...i].reverse(),...a].map(u=>u.id),edges:r,layout:e,nodeById:t}}function F0e(e,t,r,n){let{layout:i}=e,a=e.nodeById,s=n?.layerGap??100,l=n?.nodeGap??40,u=0;for(let p of t.layers){let m=0;for(let g of p){let y=a.get(g);if(!y){m++;continue}y.layer=u,y.order=m;let v=r.x[g]??m*l,x=r.y[g]??u*s;y.x=v,y.y=x,m++}u++}let h=i.nodes??[],d=new Map,f=[];for(let p of h){if(!p?.isGroup)continue;p.parentId||f.push(p);let m=h.filter(b=>b.parentId===p.id),g=1/0,y=-1/0,v=1/0,x=-1/0;for(let b of m){let T=b.x??r.x[b.id],k=b.y??r.y[b.id],C=b.width??0,w=b.height??0;T!=null&&k!=null&&(g=Math.min(g,T-C/2),y=Math.max(y,T+C/2),v=Math.min(v,k-w/2),x=Math.max(x,k+w/2))}if(g===1/0||v===1/0)p.x=p.x??0,p.y=p.y??0,p.width=p.width??0,p.height=p.height??0;else{let b=p.padding??20,T=p.parentId?b:2*O0e(p),k=b,C=Math.max(0,y-g)+T,w=Math.max(0,x-v)+k,S=(g+y)/2,R=(v+x)/2;p.x=S,p.y=R,p.width=C,p.height=w,d.set(p.id,{minX:g,maxX:y,minY:v,maxY:x})}}if(f.length>0&&d.size>0){let p=1/0,m=-1/0,g=0;for(let y of f){let v=y.padding??20;v>g&&(g=v);let x=d.get(y.id);x&&(p=Math.min(p,x.minY),m=Math.max(m,x.maxY))}if(p!==1/0&&m!==-1/0){let y=Math.max(0,m-p),x=Math.max(g,36),b=y+2*x,T=(p+m)/2;for(let L of f)L.y=T,L.height=b,L.swimlaneContentTop=p;let k=[...f].sort((L,N)=>{let I=L.x??0,_=N.x??0;return I-_}),C=[],w=[],S=[];for(let L of k){let N=d.get(L.id);if(!N)continue;let I=Math.max(0,N.maxX-N.minX)+2*O0e(L),_=(N.minX+N.maxX)/2;C.push(L.id),w.push(_),S.push(I)}let R=C.length;if(R>0){let L=new Map;if(R===1)L.set(C[0],S[0]);else{let N=[];for(let D=0;D{"use strict";X9="__swimlane_default__";o(O0e,"topLaneHorizontalPadding");o(wct,"assignTopLaneTitleRect");o(B0e,"prepareLayoutForSwimlanes");o($0e,"toGraphView");o(F0e,"writeBackToLayoutData")});function z0e(e){let t=[],r=[],n=new Map;for(let s of e.nodes)n.set(s.id,s);for(let s of e.edges){if(!s.label||s.label.length===0||s.isLayoutOnly||s.labelNodeId)continue;let l=s.start?n.get(s.start):void 0,u=s.end?n.get(s.end):void 0;if(!l||!u){Z.warn(kct,`Edge ${s.id} has missing source or target node`);continue}let h=`edge-label-${s.start}-${s.end}-${s.id}`,f=l.parentId!==u.parentId?u.parentId:l.parentId,p={id:h,label:s.label,edgeStart:s.start??"",edgeEnd:s.end??"",shape:"labelRect",width:0,height:0,isEdgeLabel:!0,isDummy:!0,parentId:f,isGroup:!1,labelStyle:Array.isArray(s.labelStyle)?s.labelStyle[0]:s.labelStyle??"",...l.dir?{dir:l.dir}:{}};t.push(p),s.labelNodeId=h,s.label=void 0,s.text=void 0;let m={id:`${s.id}-to-label`,start:s.start,end:h,type:"normal",isLayoutOnly:!0},g={id:`${s.id}-from-label`,start:h,end:s.end,type:"normal",isLayoutOnly:!0};r.push(m,g)}let i=[...e.nodes,...t],a=[...e.edges,...r];return{...e,nodes:i,edges:a}}var kct,G0e=F(()=>{"use strict";vt();kct="[EdgeLabelNodes]";o(z0e,"createEdgeLabelNodes")});function W0e(e){let t=e.x??0,r=e.y??0,n=e.width??0,i=e.height??0;return n>0&&i>0?{cx:t,cy:r,rect:x1(t,r,n,i)}:void 0}function q0e(e){if(e.isGroup)return;let t=W0e(e);return t?{id:String(e.id??""),cx:t.cx,cy:t.cy,rect:t.rect}:void 0}function uo(e,t,r=.001){return Math.abs(e.x-t.x)r}function Ti(e,t,r=.001){return Qr(e,t,r)&&Math.abs(e.y-t.y)>r}function ls(e,t,r,n){return Math.max(0,Math.min(Math.max(e,t),Math.max(r,n))-Math.max(Math.min(e,t),Math.min(r,n)))}function dc(e,t,r=.001){return e.horizontal&&t.horizontal&&tn(e.a,t.a,r)?ls(e.a.x,e.b.x,t.a.x,t.b.x):e.vertical&&t.vertical&&Qr(e.a,t.a,r)?ls(e.a.y,e.b.y,t.a.y,t.b.y):0}function _f(e,t=.001){let r=[];for(let n=0;n0?r[r.length-1]:void 0;(!i||!uo(i,n,t))&&r.push({x:n.x,y:n.y})}return r}function u5(e,t=.001){if(!e||e.length!==4)return;let[r,n,i,a]=e;return bi(r,n,t)&&Ti(n,i,t)&&bi(i,a,t)?{kind:"HVH",p0:r,p1:n,p2:i,p3:a}:Ti(r,n,t)&&bi(n,i,t)&&Ti(i,a,t)?{kind:"VHV",p0:r,p1:n,p2:i,p3:a}:void 0}function vT(e,t,r,n=0){let i=Math.min(e.x,t.x),a=Math.max(e.x,t.x),s=Math.min(e.y,t.y),l=Math.max(e.y,t.y);return a>r.left-n&&ir.top-n&&st.left+r&&e.xt.top+r&&e.y=t.right&&e.top<=t.top&&e.bottom>=t.bottom}function d5(e,t){return e.leftt.left&&e.topt.top}function Z9(e,t){return{left:e.left-t,right:e.right+t,top:e.top-t,bottom:e.bottom+t}}function x1(e,t,r,n){return{left:e-r/2,right:e+r/2,top:t-n/2,bottom:t+n/2}}function Sa(e){return W0e(e)?.rect}function Lf(e,t){switch(t){case"top":return{x:e.cx,y:e.rect.top};case"bottom":return{x:e.cx,y:e.rect.bottom};case"left":return{x:e.rect.left,y:e.cy};case"right":return{x:e.rect.right,y:e.cy}}}function f5(e,t,r,n,i,a=.001){let s=t==="left"||t==="right",l=n==="left"||n==="right";if(s&&l){if(t==="right"&&n==="left"&&e.xr.x){if(tn(e,r,a))return[e,r];let f=(e.x+r.x)/2;return[e,{x:f,y:e.y},{x:f,y:r.y},r]}if(t===n){if(tn(e,r,a))return;let f=t==="left"?Math.min(e.x,r.x)-i:Math.max(e.x,r.x)+i;return[e,{x:f,y:e.y},{x:f,y:r.y},r]}return}if(!s&&!l){if(t===n){if(Qr(e,r,a))return;let p=t==="top"?Math.min(e.y,r.y)-i:Math.max(e.y,r.y)+i;return[e,{x:e.x,y:p},{x:r.x,y:p},r]}if(!(t==="bottom"&&n==="top"&&e.yr.y))return;if(Qr(e,r,a))return[e,r];let f=(e.y+r.y)/2;return[e,{x:e.x,y:f},{x:r.x,y:f},r]}if(s&&!l){let d=t==="right"&&r.x>e.x||t==="left"&&r.xr.y;return d&&f?[e,{x:r.x,y:e.y},r]:void 0}let u=t==="bottom"&&r.y>e.y||t==="top"&&r.yr.x;return u&&h?[e,{x:e.x,y:r.y},r]:void 0}function p5(e,t,r,n){return t==="left"||t==="right"?[e,{x:n,y:e.y},{x:n,y:r.y},r]:[e,{x:e.x,y:n},{x:r.x,y:n},r]}function b1(e){let t=new Map,r=[];for(let n of e){if(n.isEdgeLabel)continue;let i=q0e(n);i&&(t.set(i.id,i),r.push({id:i.id,rect:i.rect}))}return{nodeInfoById:t,realNodeRects:r}}function gu(e){let t=[],r=[];for(let n of e){let i=q0e(n);if(!i)continue;let a={id:i.id,rect:i.rect};n.isEdgeLabel?r.push(a):t.push(a)}return{realNodeRects:t,labelNodeRects:r}}function U0e(e,{includeEdgeLabels:t=!0}={}){let r=[];for(let n of e){if(n.isGroup||!t&&n.isEdgeLabel)continue;let i=n.x??0,a=n.y??0,s=n.width??0,l=n.height??0;r.push({nodeId:n.id,...x1(i,a,s,l)})}return r}function m5(e,t,r=.001){let n=e.start,i=e.end;if(!n||!i)return;let a=t.get(n),s=t.get(i);if(!(!a||!s))return{srcId:n,dstId:i,srcInfo:a,dstInfo:s,collinearX:Math.abs(a.cx-s.cx)g||px)return!1;let b=Math.abs(y-d.a.x)i:a&&l&&tn(e,r,i)?ls(e.x,t.x,r.x,n.x)>i:!1}function xT(e,t,r,n,{epsilon:i=.001,skipDegenerateOther:a=!1}={}){for(let s of r){if(s===n||s.isLayoutOnly)continue;let l=s.points;if(!(!l||l.length<2))for(let u=0;up+i&&gy+i&&fn+.001&&e=2?t[t.length-2]:void 0,u=(s?Qr(s,i):!1)?{x:i.x,y:a.y}:{x:a.x,y:i.y};t.push(u)}t.push(a)}let r=[];for(let n of t){let i=r[r.length-1];(!i||!uo(i,n))&&r.push(n)}return r}function Tl(e){if(e.length<3)return e;let t=[...e];for(let r=0;r<32;r++){let n=Act(t);if(t=n.points,!n.changed)break}return t}var pc=F(()=>{"use strict";o(W0e,"measuredNodeRect");o(q0e,"nodeBoundsInfoFor");o(uo,"samePoint");o(Qr,"sameX");o(tn,"sameY");o(bi,"isHorizontalSegment");o(Ti,"isVerticalSegment");o(ls,"overlapLength");o(dc,"sameAxisSegmentOverlapLength");o(_f,"orthogonalSegmentsForPoints");o(ho,"countOrthogonalBends");o(Jr,"dedupeConsecutivePoints");o(u5,"classifyThreeSegmentRoute");o(vT,"segmentBoundsOverlapRect");o(h5,"pointInsideRect");o(H0e,"rectContainsRect");o(d5,"rectsOverlap");o(Z9,"inflateRect");o(x1,"rectFromCenterSize");o(Sa,"rectOfNodeBounds");o(Lf,"portForRectSide");o(f5,"buildOrthogonalPortPath");o(p5,"buildSameSideTrackPath");o(b1,"collectRealNodeBounds");o(gu,"collectNodeRectEntries");o(U0e,"collectLayoutNodeRects");o(m5,"getNodePairGeometry");o(Xn,"segmentHitsAnyRect");o(Q9,"orthogonalSegmentsCross");o(Sct,"sameAxisSegmentsOverlap");o(xT,"segmentConflictsWithAnyEdge");o(fc,"orthogonalSegmentsStrictlyCross");o(V0e,"strictlyBetween");o(Ect,"isCollinearIntermediate");o(Act,"simplifyPolylineOnce");o(bT,"orthogonalizePolyline");o(Tl,"simplifyPolyline")});function nye(e,t,r){let n=e;if(n.isLayoutOnly||!n.points||n.points.length=0&&i=e.length)return e;let a=i-n;if(a<0||a>=e.length)return e;let s=_ct(e[i],e[a],t);return r?[s,...e.slice(i)]:[...e.slice(0,i+1),s]}function iye(e,t){for(let r of e){let n=nye(r,t,2);if(!n)continue;let i=[...n.points];n.srcRect&&(i=j0e(i,n.srcRect,!0)),n.dstRect&&(i=j0e(i,n.dstRect,!1)),i=Tl(bT(i)),i=aye(i,n.srcRect,n.dstRect),n.edge.points=Tl(bT(i))}}function X0e(e,t,r,n=!1){if(tn(e,t,Sr)){if(t.yr.bottom+Sr)return t;if(n){if(e.xr.right+Sr)return{x:r.right,y:e.y}}return{x:Math.abs(t.x-r.left)<=Math.abs(t.x-r.right)?r.left:r.right,y:e.y}}if(Qr(e,t,Sr)){if(t.xr.right+Sr)return t;if(n){if(e.yr.bottom+Sr)return{x:e.x,y:r.bottom}}let i=Math.abs(t.y-r.top)<=Math.abs(t.y-r.bottom);return{x:e.x,y:i?r.top:r.bottom}}return t}function J9(e,t,r){let n=e[t];for(let i=t+r;i>=0&&in.lo)),r=Math.min(...e.map(n=>n.hi));if(!(t>r))return{lo:t,hi:r}}function Z0e(e,t){return t==="left"||t==="right"?eB(e.top,e.bottom):eB(e.left,e.right)}function tB(e,t,r){let n=e.y>=r.top-Sr&&e.y<=r.bottom+Sr,i=e.x>=r.left-Sr&&e.x<=r.right+Sr;if(tn(e,t,Sr)&&n){if(Math.abs(e.x-r.left)0?Lct(a):void 0}function Q0e(e,t,r,n,i){let a=Dct(e,t,r,n,i);if(!a)return;let s=i?e.y:e.x,l=Math.min(a.hi,Math.max(a.lo,s));if(!(Math.abs(l-s)({...l}));for(let l=t;l>=0&&l=r.left-Sr&&Math.max(e.x,t.x)<=r.right+Sr,i=Math.min(e.y,t.y)>=r.top-Sr&&Math.max(e.y,t.y)<=r.bottom+Sr;if(Math.abs(e.y-r.top)n.bottom+Sr;case"left":return tn(t,r,Sr)&&r.xn.right+Sr}}function rye(e,t,r){if(e.length<3)return e;if(r){let a=eye(e[0],e[1],t);return a&&tye(a,e[1],e[2],t)?e.slice(1):e}let n=e.length-1,i=eye(e[n-1],e[n],t);return i&&tye(i,e[n-1],e[n-2],t)?e.slice(0,n):e}function Nct(e,t,r){let n=e;if(t){let a=J9(n,0,1);if(a){let s=X0e(a,n[0],t);s!==n[0]&&(n=[s,...n.slice(1)])}n=rye(n,t,!0)}if(r){let a=n.length-1,s=J9(n,a,-1);if(s){let l=X0e(s,n[a],r,!0);l!==n[a]&&(n=[...n.slice(0,a),l])}n=rye(n,r,!1)}let i=aye(n,t,r);return i!==n||n.length===2?i:(t&&(n=J0e(n,t,!0)),r&&(n=J0e(n,r,!1)),n)}function rB(e,t){for(let r of e){let n=nye(r,t,2);if(!n)continue;let i=Jr(n.points,Sr),a=Nct(i,n.srcRect,n.dstRect);if(a.length<3){n.edge.points=a;continue}let s=[a[0],{...a[0]},...a.slice(1,-1),a[a.length-1],{...a[a.length-1]}];n.edge.points=s}}var Sr,Rct,Y0e,sye=F(()=>{"use strict";pc();Sr=.001,Rct=.5,Y0e=4;o(nye,"endpointContextFor");o(_ct,"segmentEnterPoint");o(j0e,"clipEndpoint");o(iye,"clipEdgeEndpointsToNodeBoundaries");o(X0e,"snapEndpointToBoundary");o(J9,"firstDistinctAdjacent");o(eB,"cornerClearanceRange");o(K0e,"clampToCornerClearance");o(Lct,"intersectRanges");o(Z0e,"clearanceRangeForSide");o(tB,"terminalSideForSegment");o(g5,"isHorizontalSide");o(Dct,"straightClearanceRange");o(Q0e,"clearStraightEndpointCornerAxis");o(aye,"clearStraightEndpointCornerConnections");o(Ict,"cornerClearedEndpoint");o(Mct,"moveCollinearEndpointRun");o(J0e,"clearEndpointCornerConnection");o(eye,"borderSideForSegment");o(tye,"leavesOutward");o(rye,"collapseOwnBorderStub");o(Nct,"snapAndCollapseEndpoints");o(rB,"prepareEdgeEndpointsForRenderer")});function lye(e){return new Map(e.map(t=>[t.id,t]))}function Pct(e,t){let r=e.parentId,n=null;for(;r;){let i=t.get(r);if(!i?.isGroup)break;n=i.id,r=i.parentId}return n}function oye(e,t){let r=0,n=e.parentId;for(;n;){let i=t.get(n);if(!i?.isGroup)break;r++,n=i.parentId}return r}function cye(e){let t=1/0,r=-1/0,n=1/0,i=-1/0;for(let a of e){let s=a.x,l=a.y;if(typeof s!="number"||typeof l!="number")continue;let u=a.width??0,h=a.height??0;t=Math.min(t,s-u/2),r=Math.max(r,s+u/2),n=Math.min(n,l-h/2),i=Math.max(i,l+h/2)}return t===1/0||n===1/0?null:{minX:t,maxX:r,minY:n,maxY:i}}function Oct(e,t){let r=e.padding??20;e.x=(t.minX+t.maxX)/2,e.y=(t.minY+t.maxY)/2,e.width=Math.max(0,t.maxX-t.minX)+r,e.height=Math.max(0,t.maxY-t.minY)+r}function Bct(e){let t=lye(e),r=e.filter(n=>n.isGroup&&n.parentId).sort((n,i)=>oye(i,t)-oye(n,t));for(let n of r){let i=e.filter(s=>s.parentId===n.id),a=cye(i);a&&Oct(n,a)}}function nB(e,t){let r=e.nodes??[],n=e.edges??[],i=r.filter(u=>!u.isGroup),a=1/0,s=-1/0;for(let u of i){let h=u[t];typeof h=="number"&&(a=Math.min(a,h),s=Math.max(s,h))}if(!Number.isFinite(a)||!Number.isFinite(s))return!1;let l=o(u=>a+s-u,"mirror");for(let u of r){let h=u[t];typeof h=="number"&&(u[t]=l(h));let d=u.groupTitleRect;d&&(u.groupTitleRect=t==="x"?{...d,left:l(d.right),right:l(d.left)}:{...d,top:l(d.bottom),bottom:l(d.top)})}for(let u of n)for(let h of u.points??[])h[t]=l(h[t]);return!0}function uye(e){return(e.nodes??[]).some(r=>!r.isGroup)?nB(e,"y"):!0}function hye(e,t="LR"){let r=e.nodes??[],n=e.edges??[],i=r.filter(A=>!A.isGroup),a=1/0,s=1/0;for(let A of i){let M=A.x??0,D=A.y??0;M0?Math.max(1,d/f):1;for(let A of i){let M=A.x??0,P=((A.y??0)-s)*p+l,B=M-a;A.x=P,A.y=B}for(let A of n)if(A.points)for(let M of A.points){let D=M.x,B=(M.y-s)*p+l,O=D-a;M.x=B,M.y=O}Bct(r);let m=r.filter(A=>A.isGroup&&!A.parentId);if(m.length===0)return t==="RL"&&nB(e,"x"),!0;let g=lye(r),y=new Map;for(let A of r){if(A.isGroup)continue;let M=Pct(A,g);if(!M)continue;let D=y.get(M)??[];D.push(A),y.set(M,D)}let v=0;for(let A of m){let M=A.padding??0;M>v&&(v=M)}let x=[],b=1/0,T=-1/0;for(let A of m){let M=y.get(A.id)??[],D=cye(M);D&&(b=Math.min(b,D.minX),T=Math.max(T,D.maxX),x.push({lane:A,contentTop:D.minY,contentBottom:D.maxY,centerY:(D.minY+D.maxY)/2}))}if(b===1/0||T===-1/0)return!0;let k=Math.max(0,T-b),C=Math.max(v,10),w=k+2*C,S=l+w,N=(b+T)/2-w/2-l,I=N+S/2,_=Math.max(v,l);x.sort((A,M)=>A.centerY-M.centerY);for(let A=0;A{"use strict";o(lye,"buildNodeMap");o(Pct,"resolveTopLevelGroupId");o(oye,"groupDepth");o(cye,"boundsForChildren");o(Oct,"applyGroupBounds");o(Bct,"recomputeNestedGroupBounds");o(nB,"mirrorAxis");o(uye,"applyBtDirectionTransform");o(hye,"applyLrDirectionTransform")});function fye(e,t){let{nodeInfoById:r,realNodeRects:n}=b1(t);for(let i of e){if(i.isLayoutOnly)continue;let a=i.points;if(!a||a.length<4)continue;let s=u5(Jr(a,mc),mc);if(!s)continue;let{p3:l}=s,u=s.kind==="HVH",h=m5(i,r,mc);if(!h)continue;let{srcId:d,dstId:f,srcInfo:p,dstInfo:m,collinearX:g,collinearY:y}=h;if(g||y)continue;let v,x=p.rect;for(let b of Fct){let T,k,C;if(u){let I=m.cy>p.cy?x.bottom:x.top,_=p.cx+b;if(_<=x.left+mc||_>=x.right-mc)continue;T={x:_,y:I},k={x:_,y:l.y},C={x:l.x,y:l.y}}else{let I=m.cx>p.cx?x.right:x.left,_=p.cy+b;if(_<=x.top+mc||_>=x.bottom-mc)continue;T={x:I,y:_},k={x:l.x,y:_},C={x:l.x,y:l.y}}let w=uo(T,k,mc),S=uo(k,C,mc);if(w&&S||!w&&Xn(T,k,n,[d],1)||!S&&Xn(k,C,n,[f],1))continue;let R=!w&&xT(T,k,e,i,{epsilon:mc,skipDegenerateOther:!0}),L=!S&&xT(k,C,e,i,{epsilon:mc,skipDegenerateOther:!0});if(!(R||L)){w?v=[k,C]:S?v=[T,k]:v=[T,k,C];break}}v&&(i.points=v)}}var mc,$ct,y5,Fct,pye=F(()=>{"use strict";pc();mc=1e-6,$ct=8,y5=$ct,Fct=[0,y5,-y5,2*y5,-2*y5];o(fye,"portSwapToLShape")});function mye(e,t){let{realNodeRects:a,labelNodeRects:s}=gu(t.values());for(let l of e){if(l.isLayoutOnly)continue;let u=l.points;if(!u||u.length<4)continue;let h=Jr(u,.001);if(h.length<4)continue;let d=h.length-1,f=h[d],p=h[d-1],m=h[d-2],g=f.x-p.x,y=f.y-p.y,v=Math.hypot(g,y);if(v>=10||v<.001)continue;let x=p.x-m.x,b=p.y-m.y;if(Math.hypot(x,b)<.001)continue;let k=bi(p,f,.001),C=Ti(p,f,.001),w=bi(m,p,.001),S=Ti(m,p,.001);if(!(k&&S||C&&w))continue;let R=l.end,L=l.start,N=R?t.get(R):void 0;if(!N)continue;let I=N.x??0,_=N.y??0,A=Sa(N);if(!A)continue;let M,D;if(S){let z=b<0;M={x:I,y:m.y},D={x:I,y:z?A.bottom:A.top}}else{let z=x>0;M={x:m.x,y:_},D={x:z?A.right:A.left,y:_}}if(Xn(M,D,a,R?[R]:[],-2)||Xn(M,D,s,[],-2))continue;if(L){let z=t.get(L),W=z?Sa(z):void 0;if(W&&h5(M,W,2))continue}let P=o((z,W)=>`${z.x.toFixed(3)},${z.y.toFixed(3)}|${W.x.toFixed(3)},${W.y.toFixed(3)}`,"ownSegmentKey"),B=new Set;for(let z=0;z{for(let H of e){if(H===l||H.isLayoutOnly)continue;let j=H.points;if(!(!j||j.length<2))for(let Q=0;Q=0){let z=h[d-3],W=[L,R].filter(H=>!!H);if(Xn(z,M,a,W,-2)||O(z,M))continue}let V=[...h.slice(0,d-2),M,D];l.points=V;let G=l.labelNodeId;if(G){let z=t.get(G);if(z){let W=z.width??0,H=z.height??0;if(W>0&&H>0){let j,Q,U=-1;for(let oe=0;oe=W+2||Re&&ie>=H+2)&&ie>U&&(U=ie,j=(te.x+le.x)/2,Q=(te.y+le.y)/2)}j!==void 0&&Q!==void 0&&(z.x=j,z.y=Q)}}}}}var gye=F(()=>{"use strict";pc();o(mye,"collapseShortTerminalStub")});function yye(e,t){let i=o((m,g)=>{let y=m.x??0,v=m.y??0,x=g.x-y,b=g.y-v,T=(m.width??0)/2,k=(m.height??0)/2;return Math.abs(b)*T>Math.abs(x)*k?(b<0&&(k=-k),{x:y+(b===0?0:k*x/b),y:v+k}):(x<0&&(T=-T),{x:y+T,y:v+(x===0?0:T*b/x)})},"rectIntersect"),a=o((m,g)=>{let y=Jr(m.points??[]);if(y.length<2)return;let v=g?m.start:m.end,x=v?t.get(v):void 0,b=x?Sa(x):void 0;if(!x||!v||!b)return;let T=g?y[0]:y[y.length-1],k=g?y[1]:y[y.length-2],C=i(x,T),w=T;if(iB(k,C)&&(w=k),Qr(C,w,rr))return{edge:m,edgeId:String(m.id??""),nodeId:v,atStart:g,orientation:"V",coord:C.x,min:Math.min(C.y,w.y),max:Math.max(C.y,w.y),boundary:C,railEnd:w,rect:b};if(tn(C,w,rr))return{edge:m,edgeId:String(m.id??""),nodeId:v,atStart:g,orientation:"H",coord:C.y,min:Math.min(C.x,w.x),max:Math.max(C.x,w.x),boundary:C,railEnd:w,rect:b}},"terminalLaneFor"),s=o((m,g)=>Math.max(0,Math.min(m.max,g.max)-Math.max(m.min,g.min)),"projectedOverlapLength"),l=o((m,g)=>m.nodeId!==g.nodeId||m.orientation!==g.orientation?!1:m.orientation==="H"?(Math.abs(m.boundary.x-m.rect.left)<1||Math.abs(m.boundary.x-m.rect.right)<1)&&Qr(m.boundary,g.boundary,1):(Math.abs(m.boundary.y-m.rect.top)<1||Math.abs(m.boundary.y-m.rect.bottom)<1)&&tn(m.boundary,g.boundary,1),"sameTerminalFace"),u=o((m,g)=>m.nodeId!==g.nodeId||m.orientation!==g.orientation?!1:s(m,g)>=Ea&&Math.abs(m.coord-g.coord)<.5,"exactTerminalLaneConflict"),h=o((m,g)=>{if(m.nodeId!==g.nodeId||m.orientation!==g.orientation||m.orientation!=="H"||m.atStart===g.atStart)return!1;let y=s(m,g);if(y2*v?!1:l(m,g)&&Math.abs(m.coord-g.coord)<16},"nearTerminalLaneConflict"),d=o((m,g)=>{let y=Jr(m.edge.points??[]);if(y.length<2)return;let v=m.orientation==="V"?{x:m.boundary.x+g,y:m.boundary.y}:{x:m.boundary.x,y:m.boundary.y+g},x=m.orientation==="V"?{x:m.railEnd.x+g,y:m.railEnd.y}:{x:m.railEnd.x,y:m.railEnd.y+g};if(!o(()=>Math.abs(m.boundary.y-m.rect.top)<1||Math.abs(m.boundary.y-m.rect.bottom)<1?tn(v,m.boundary,rr)&&v.x>=m.rect.left+1&&v.x<=m.rect.right-1:Math.abs(m.boundary.x-m.rect.left)<1||Math.abs(m.boundary.x-m.rect.right)<1?Qr(v,m.boundary,rr)&&v.y>=m.rect.top+1&&v.y<=m.rect.bottom-1:!1,"boundaryStaysOnSameFace")())return;if(m.atStart){let w=y.length>1&&uo(y[1],m.railEnd,rr),S=y.slice(w?2:1),R=S[0];return R&&!iB(R,x)?void 0:[v,x,...S]}let T=y.length>1&&uo(y[y.length-2],m.railEnd,rr),k=y.slice(0,T?-2:-1),C=k[k.length-1];if(!(C&&!iB(C,x)))return[...k,x,v]},"shiftedCandidate"),f=o(m=>{let g=m.edge,y=Jr(g.points??[]);if(y.length!==2)return!1;let v=g.start,x=g.end,b=v?t.get(v):void 0,T=x?t.get(x):void 0;if(!b||!T)return!1;let k=b.x??0,C=b.y??0,w=T.x??0,S=T.y??0,[R,L]=y;return tn(R,L,rr)&&Math.abs(C-S)<1&&Math.abs(k-w)>1||Qr(R,L,rr)&&Math.abs(k-w)<1&&Math.abs(C-S)>1},"laneIsStraightCollinearConnector"),p=[-7,7,-14,14,-21,21];for(let m=0;m<8;m++){let g=e.filter(v=>!v.isLayoutOnly).flatMap(v=>[a(v,!0),a(v,!1)]).filter(v=>!!v),y=!1;for(let v=0;v{let R=f(w),L=f(S);return R!==L?Number(R)-Number(L):+!S.atStart-+!w.atStart});for(let w of C){for(let S of p){let R=d(w,S);if(!R)continue;let L=a({...w.edge,points:R},w.atStart);if(!(!L||g.some(N=>N.edge!==w.edge&&(u(L,N)||k&&h(L,N))))){w.edge.points=R,y=!0;break}}if(y)break}}if(!y)return}}function vye(e,t){let{realNodeRects:i,labelNodeRects:a}=gu(t.values()),s=o((u,h)=>{let d=u.start,f=u.end,p=jr(h);if(p.length!==h.length-1)return!1;let m=[d,f].filter(g=>!!g);for(let g of p)if(Xn(g.a,g.b,i,m,-2)||Xn(g.a,g.b,a,[],-2))return!1;for(let g of e){if(g===u||g.isLayoutOnly)continue;let y=g.points;if(!(!y||y.length<2)){for(let v of p)for(let x of jr(Jr(y)))if(dc(v,x,.5)>=Ea||fc(v.a,v.b,x.a,x.b,rr))return!1}}return!0},"candidateIsSafe"),l=o((u,h)=>{if(h+4>=u.length)return;let d=u[h],f=u[h+1],p=u[h+2],m=u[h+3],g=u[h+4],y=bi(d,f)&&Ti(f,p)&&bi(p,m)&&Ti(m,g)&&Qr(d,m,rr)&&Qr(d,g,rr)&&Qr(f,p,rr)&&(f.x-d.x)*(m.x-p.x)<0,v=Ti(d,f)&&bi(f,p)&&Ti(p,m)&&bi(m,g)&&tn(d,m,rr)&&tn(d,g,rr)&&tn(f,p,rr)&&(f.y-d.y)*(m.y-p.y)<0;if(y||v)return Jr([...u.slice(0,h+1),g,...u.slice(h+5)]);if(h+5>=u.length)return;let x=u[h+5],b=Ti(d,f)&&bi(f,p)&&Ti(p,m)&&bi(m,g)&&Ti(g,x)&&Qr(d,g,rr)&&Qr(d,x,rr)&&Qr(p,m,rr)&&(p.x-f.x)*(g.x-m.x)<0,T=bi(d,f)&&Ti(f,p)&&bi(p,m)&&Ti(m,g)&&bi(g,x)&&tn(d,g,rr)&&tn(d,x,rr)&&tn(p,m,rr)&&(p.y-f.y)*(g.y-m.y)<0;if(!(!b&&!T))return Jr([...u.slice(0,h+1),x,...u.slice(h+6)])},"withoutDogleg");for(let u=0;u<8;u++){let h=!1;for(let d of e){if(d.isLayoutOnly)continue;let f=Jr(d.points??[]);for(let p=0;p<=f.length-5;p++){let m=l(f,p);if(!(!m||!s(d,m))){d.points=m,h=!0;break}}if(h)break}if(!h)return}}function aB(e,t){let{realNodeRects:a,labelNodeRects:s}=gu(t.values()),l=e.filter(g=>!g.isLayoutOnly),u=o((g,y,v)=>Jr(g===y?v??[]:g.points??[]),"pointsFor"),h=o((g,y)=>{let v=0;for(let x=0;x{let y=jr(g);if(y.length!==3)return;let v=y[1];if(!(y[0].horizontal===v.horizontal||y[2].horizontal===v.horizontal))return{index:v.index,horizontal:v.horizontal,vertical:v.vertical,segment:v}},"middleRail"),f=o((g,y)=>{let v=[g.start,g.end].filter(x=>!!x);return a.filter(x=>{if(v.includes(x.id))return!1;let b=x.rect;return y.horizontal?ls(y.a.x,y.b.x,b.left,b.right)>=Ea&&y.a.y>=b.top-2&&y.a.y<=b.bottom+2:ls(y.a.y,y.b.y,b.top,b.bottom)>=Ea&&y.a.x>=b.left-2&&y.a.x<=b.right+2})},"blockingRectsFor"),p=o((g,y,v)=>{let x=g.map(T=>({...T}));if(y.horizontal)x[y.index].y=v,x[y.index+1].y=v;else if(y.vertical)x[y.index].x=v,x[y.index+1].x=v;else return;let b=Tl(Jr(x));return jr(b).length===b.length-1?b:void 0},"candidateByMovingRail"),m=o((g,y,v)=>{let x=[g.start,g.end].filter(T=>!!T),b=jr(y);if(b.length!==y.length-1)return!1;for(let T of b)if(Xn(T.a,T.b,a,x,-2)||Xn(T.a,T.b,s,[],-2))return!1;for(let T of l)if(T!==g){for(let k of b)for(let C of jr(u(T)))if(dc(k,C,.5)>=Ea)return!1}return h(g,y)<=v},"candidateIsSafe");for(let g=0;g<8;g++){let y=h(),v=!1;for(let x of l){let b=u(x),T=d(b);if(!T)continue;let k=f(x,T.segment);if(k.length===0)continue;let C=T.horizontal?[Math.min(...k.map(w=>w.rect.top))-20,Math.max(...k.map(w=>w.rect.bottom))+20]:[Math.min(...k.map(w=>w.rect.left))-20,Math.max(...k.map(w=>w.rect.right))+20];for(let w of C){let S=p(b,T.segment,w);if(!(!S||!m(x,S,y))){x.points=S,v=!0;break}}if(v)break}if(!v)return}}function sB(e,t){let n=o(u=>{let h=u.groupTitleRect;if(!(!h||typeof h.left!="number"||typeof h.right!="number"||typeof h.top!="number"||typeof h.bottom!="number"||!Number.isFinite(h.left)||!Number.isFinite(h.right)||!Number.isFinite(h.top)||!Number.isFinite(h.bottom)||h.right<=h.left||h.bottom<=h.top))return{left:h.left,right:h.right,top:h.top,bottom:h.bottom}},"validTitleRect"),i=o(u=>{if(!u.isGroup||u.parentId)return;let h=u.direction,d=typeof h=="string"?h.toUpperCase():"";if(d==="LR"||d==="RL"||d==="BT")return;let f=n(u),p=u.y,m=u.height;if(!f||typeof p!="number"||typeof m!="number"||!Number.isFinite(p)||!Number.isFinite(m)||m<=0)return;let g=f.right-f.left,y=f.bottom-f.top;if(!(y<=0||g{if(!u.horizontal)return!1;let d=u.a.y;return d<=h.top+rr||d>=h.bottom-rr?!1:ls(u.a.x,u.b.x,h.left,h.right)>=Ea},"horizontalSegmentIntersectsTitle"),s=[...t.values()].map(i).filter(u=>!!u);if(s.length===0)return;let l=0;for(let u of e){if(u.isLayoutOnly)continue;let h=Jr(u.points??[]);for(let d of jr(h))for(let f of s)a(d,f.rect)&&(l=Math.max(l,f.rect.bottom-d.a.y+4))}if(!(l<=rr))for(let u of s){let h=u.node.y,d=u.node.height;typeof h!="number"||typeof d!="number"||!Number.isFinite(h)||!Number.isFinite(d)||d<=0||(u.node.y=h-l/2,u.node.height=d+l,u.node.groupTitleRect={...u.rect,top:u.rect.top-l,bottom:u.rect.bottom-l})}}function oB(e,t){let n=o(h=>{let d=h.groupTitleRect;if(!(!d||typeof d.left!="number"||typeof d.right!="number"||typeof d.top!="number"||typeof d.bottom!="number"||!Number.isFinite(d.left)||!Number.isFinite(d.right)||!Number.isFinite(d.top)||!Number.isFinite(d.bottom)||d.right<=d.left||d.bottom<=d.top))return{left:d.left,right:d.right,top:d.top,bottom:d.bottom}},"validTitleRect"),i=o(h=>{if(!h.isGroup||h.parentId||h.direction!=="LR")return;let f=n(h),p=h.x,m=h.width;if(!f||typeof p!="number"||typeof m!="number"||!Number.isFinite(p)||!Number.isFinite(m)||m<=0)return;let g=f.right-f.left,y=f.bottom-f.top;if(!(g<=0||y{if(!h.vertical)return!1;let f=h.a.x;return f<=d.left+rr||f>=d.right-rr?!1:ls(h.a.y,h.b.y,d.top,d.bottom)>=Ea},"verticalSegmentIntersectsTitle"),s=o((h,d)=>{if(!h.horizontal)return!1;let f=h.a.y;return f<=d.top+rr||f>=d.bottom-rr?!1:ls(h.a.x,h.b.x,d.left,d.right)>=Ea},"horizontalSegmentIntersectsTitle"),l=[...t.values()].map(i).filter(h=>!!h);if(l.length===0)return;let u=0;for(let h of e){if(h.isLayoutOnly)continue;let d=Jr(h.points??[]);for(let f of jr(d))for(let p of l)if(a(f,p.rect))u=Math.max(u,p.rect.right-f.a.x+4);else if(s(f,p.rect)){let m=Math.min(f.a.x,f.b.x);u=Math.max(u,p.rect.right-m+4)}}if(!(u<=rr))for(let h of l){let d=h.node.x,f=h.node.width;typeof d!="number"||typeof f!="number"||!Number.isFinite(d)||!Number.isFinite(f)||f<=0||(h.node.x=d-u/2,h.node.width=f+u,h.node.groupTitleRect={...h.rect,left:h.rect.left-u,right:h.rect.right-u})}}function xye(e,t){let{realNodeRects:i}=gu(t.values()),a=e.filter(y=>!y.isLayoutOnly),s=o((y,v=new Map)=>Jr(v.get(y)??y.points??[]),"replacementPointsFor"),l=o((y=new Map)=>{let v=0;for(let x=0;xa.reduce((v,x)=>v+ho(s(x,y)),0),"totalBends"),h=o(y=>{let v=s(y);if(v.length<4)return;let x=v[v.length-2],b=v[v.length-1];if(!(!bi(x,b,rr)&&!Ti(x,b,rr)))return{tailStart:x,terminal:b}},"terminalTailFor"),d=o((y,v)=>{let x=s(y);if(x.length<3)return;let b=x[0],T=x[1],k;if(bi(b,T,rr))k={x:T.x,y:v.tailStart.y};else if(Ti(b,T,rr))k={x:v.tailStart.x,y:T.y};else return;let C=Tl(Jr([b,T,k,v.tailStart,v.terminal]));return jr(C).length===C.length-1?C:void 0},"candidateWithDestinationTail"),f=o((y,v)=>{let x=[y.start,y.end].filter(b=>!!b);for(let b of jr(v))if(Xn(b.a,b.b,i,x,-2))return!0;return!1},"pathHasNodeHit"),p=o((y,v,x)=>{for(let b of a)if(b!==y){for(let T of jr(v))for(let k of jr(s(b,x)))if(dc(T,k,.5)>=Ea)return!0}return!1},"pathHasSharedTrack"),m=o((y,v,x)=>!f(y,v)&&!p(y,v,x),"candidateIsSafe"),g=o(()=>{let y=new Map;for(let v of a){let x=v.end;if(!x||!t.has(x)||s(v).length<4)continue;let T=y.get(x)??[];T.push(v),y.set(x,T)}return y},"edgesByDestination");for(let y=0;y<4;y++){let v=l();if(v===0)return;let x=u(),b,T=v,k=x;for(let C of g().values())for(let w=0;w=v||D>T||D===T&&P>=k||(b=M,T=D,k=P)}if(!b)return;for(let[C,w]of b)C.points=w}}function bye(e,t){let{realNodeRects:s,labelNodeRects:l}=gu(t.values()),u=e.filter(C=>!C.isLayoutOnly),h=o((C,w=new Map)=>Jr(w.get(C)??C.points??[]),"replacementPointsFor"),d=o((C=new Map)=>{let w=0;for(let S=0;Su.reduce((w,S)=>w+ho(h(S,C)),0),"totalBends"),p=o(C=>{let w=C.start,S=C.end,R=w?t.get(w):void 0,L=S?t.get(S):void 0,N=R?Sa(R):void 0,I=L?Sa(L):void 0;return N&&I?{src:N,dst:I}:void 0},"endpointRectsFor"),m=o((C,w,S)=>{if(S.index<=0||S.index+1>=w.length-1)return;let R=p(C);if(R){if(S.vertical){let L=S.a.x,N=Math.min(R.src.left,R.dst.left),I=Math.max(R.src.right,R.dst.right),_=LI+rr?"right":void 0;return _?{edge:C,points:w,segmentIndex:S.index,axis:"vertical",side:_,coord:L,min:Math.min(S.a.y,S.b.y),max:Math.max(S.a.y,S.b.y)}:void 0}if(S.horizontal){let L=S.a.y,N=Math.min(R.src.top,R.dst.top),I=Math.max(R.src.bottom,R.dst.bottom),_=LI+rr?"bottom":void 0;return _?{edge:C,points:w,segmentIndex:S.index,axis:"horizontal",side:_,coord:L,min:Math.min(S.a.x,S.b.x),max:Math.max(S.a.x,S.b.x)}:void 0}}},"externalRailForSegment"),g=o(()=>{let C=[];for(let w of u){let S=h(w);for(let R of jr(S)){let L=m(w,S,R);L&&C.push(L)}}return C},"collectExternalRails"),y=o((C,w)=>C.edge!==w.edge&&C.axis===w.axis&&C.side===w.side&&ls(C.min,C.max,w.min,w.max)>=Ea,"railsInteract"),v=o(C=>{let w=[],S=new Set;for(let R of C){if(S.has(R))continue;let L=[R],N=[];for(S.add(R);L.length>0;){let I=L.pop();N.push(I);for(let _ of C)!S.has(_)&&y(I,_)&&(S.add(_),L.push(_))}N.length>1&&w.push(N)}return w},"connectedComponents"),x=o(C=>{let w=[];for(let S of C)w.some(R=>Math.abs(R-S.coord){let w=C.map(L=>L.coord),S=x(C),R=[];if(C.length<=6){let L=new Array(S.length).fill(!1),N=[],I=o(()=>{if(N.length===C.length){N.some((_,A)=>Math.abs(_-w[A])>=rr)&&R.push([...N]);return}for(let[_,A]of S.entries())L[_]||(L[_]=!0,N.push(A),I(),N.pop(),L[_]=!1)},"visit");return I(),R}for(let L=0;L{let S=new Map;for(let[L,N]of C.entries()){let I=w[L],_=S.get(N.edge)??N.points.map(A=>({x:A.x,y:A.y}));N.axis==="vertical"?(_[N.segmentIndex].x=I,_[N.segmentIndex+1].x=I):(_[N.segmentIndex].y=I,_[N.segmentIndex+1].y=I),S.set(N.edge,_)}let R=new Map;for(let[L,N]of S){let I=Tl(Jr(N));if(jr(I).length!==I.length-1)return;R.set(L,I)}return R},"replacementsForAssignment"),k=o(C=>{for(let[w,S]of C){let R=[w.start,w.end].filter(L=>!!L);for(let L of jr(S))if(Xn(L.a,L.b,s,R,-2)||Xn(L.a,L.b,l,[],-2))return!1}for(let w=0;w=Ea)return!1}}return!0},"candidateIsSafe");for(let C=0;C<4;C++){let w=d();if(w===0)return;let S,R=w,L=f(),N=Number.POSITIVE_INFINITY;for(let I of v(g()))for(let _ of b(I)){let A=T(I,_);if(!A||!k(A))continue;let M=d(A);if(M>=w)continue;let D=f(A),P=I.reduce((B,O,$)=>B+Math.abs(_[$]-O.coord),0);M>R||M===R&&(D>L||D===L&&P>=N)||(S=A,R=M,L=D,N=P)}if(!S)return;for(let[I,_]of S)I.points=_}}function Tye(e,t){let{realNodeRects:i,labelNodeRects:a}=gu(t.values()),s=e.filter(g=>!g.isLayoutOnly),l=o((g,y,v)=>Jr(g===y?v??[]:g.points??[]),"pointsFor"),u=o(g=>jr(g).reduce((y,v)=>{let x=v.a.x-v.b.x,b=v.a.y-v.b.y;return y+Math.hypot(x,b)},0),"pathLength"),h=o((g,y)=>{let v=0;for(let x=0;x{if(g.horizontal){let v=g.a.y;return(Math.abs(v-y.top)<1||Math.abs(v-y.bottom)<1)&&ls(g.a.x,g.b.x,y.left,y.right)>=Ea}if(g.vertical){let v=g.a.x;return(Math.abs(v-y.left)<1||Math.abs(v-y.right)<1)&&ls(g.a.y,g.b.y,y.top,y.bottom)>=Ea}return!1},"segmentRunsAlongRectBorder"),f=o(g=>{let y=[g.start,g.end].filter(x=>!!x),v=[];for(let x of y){let b=t.get(x),T=b?Sa(b):void 0;T&&v.push(T)}return v},"endpointRectsFor"),p=o((g,y)=>{if(y+3>=g.length)return[];let v=g[y],x=g[y+1],b=g[y+2],T=g[y+3],k=bi(v,x,rr)&&Ti(x,b,rr)&&bi(b,T,rr),C=Ti(v,x,rr)&&bi(x,b,rr)&&Ti(b,T,rr);if(!k&&!C)return[];if(!(k?Math.sign(x.x-v.x)!==Math.sign(T.x-b.x):Math.sign(x.y-v.y)!==Math.sign(T.y-b.y)))return[];let S=Qr(v,T,rr)||tn(v,T,rr)?[]:[{x:v.x,y:T.y},{x:T.x,y:v.y}],R=S.length===0?[[...g.slice(0,y+1),...g.slice(y+3)]]:S.map(N=>[...g.slice(0,y+1),N,...g.slice(y+3)]),L=new Set;return R.map(N=>Tl(Jr(N))).filter(N=>{if(jr(N).length!==N.length-1||!N.some(_=>uo(_,T,rr)))return!1;let I=N.map(_=>`${_.x.toFixed(3)},${_.y.toFixed(3)}`).join("|");return L.has(I)?!1:(L.add(I),!0)})},"shortcutCandidatesAt"),m=o((g,y,v)=>{let x=[g.start,g.end].filter(T=>!!T),b=f(g);for(let T of jr(y))if(Xn(T.a,T.b,i,x,-2)||Xn(T.a,T.b,a,[],-2)||b.some(k=>d(T,k)))return!1;for(let T of s)if(T!==g){for(let k of jr(y))for(let C of jr(l(T)))if(dc(k,C,.5)>=Ea)return!1}return h(g,y)<=v},"candidateIsSafe");for(let g=0;g<8;g++){let y=h(),v,x,b=y,T=Number.POSITIVE_INFINITY,k=Number.POSITIVE_INFINITY;for(let C of s){let w=l(C),S=ho(w,rr),R=u(w);for(let L=0;L<=w.length-4;L++)for(let N of p(w,L)){let I=ho(N,rr),_=u(N);if(!(Ib||M===b&&(I>T||I===T&&_>=k)||(v=C,x=N,b=M,T=I,k=_)}}if(!v||!x)return;v.points=x}}function Cye(e,t){let s=[];for(let ue of t.values()){if(ue.isGroup||ue.isEdgeLabel)continue;let ye=ue.x??0,ke=ue.y??0,ce=Sa(ue);ce&&s.push({id:String(ue.id??""),cx:ye,cy:ke,rect:ce})}if(s.length===0)return;let l=new Map(s.map(ue=>[ue.id,ue])),u=s.map(ue=>({id:ue.id,rect:ue.rect})),h=["top","bottom","left","right"],d={top:Math.min(...s.map(ue=>ue.rect.top))-20,bottom:Math.max(...s.map(ue=>ue.rect.bottom))+20,left:Math.min(...s.map(ue=>ue.rect.left))-20,right:Math.max(...s.map(ue=>ue.rect.right))+20},f=e.filter(ue=>!ue.isLayoutOnly),p=new Map(f.map((ue,ye)=>[ue,ye])),m=o(ue=>{let ye=ue==="left"||ue==="top"?-1:1,ke=[];for(let ce=0;ce<=2;ce++)ke.push(d[ue]+ye*20*ce);return ke},"outwardTracksForSide"),g=o((ue,ye=new Map)=>Jr(ye.get(ue)??ue.points??[]),"replacementPointsFor"),y=o((ue,ye)=>{let ke=0;for(let ce of ue)for(let re of ye)fc(ce.a,ce.b,re.a,re.b,rr)&&ke++;return ke},"crossingCountBetweenSegments"),v=o((ue,ye)=>y(jr(ue),jr(ye)),"crossingCountBetweenPaths"),x=o((ue=new Map)=>{let ye=0,ke=[],ce=new Set,re=[],J=o(se=>{ce.has(se)||(ce.add(se),re.push(se))},"addEdge");for(let se=0;se0&&(ye+=ve,ke.push({first:ge,second:Me,count:ve}),J(ge),J(Me))}}return re.sort((se,ge)=>(p.get(se)??0)-(p.get(ge)??0)),{count:ye,pairs:ke,edgeSet:ce,edges:re}},"crossingSnapshot"),b=o((ue,ye)=>{let ke=new Set(ye.keys());if(ke.size===0)return ue.count;let ce=0;for(let J of ue.pairs)(ke.has(J.first)||ke.has(J.second))&&(ce+=J.count);let re=0;for(let J=0;J{let ye=new Map;for(let re of ue.pairs){let J=ye.get(re.first)??new Set;J.add(re.second),ye.set(re.first,J);let se=ye.get(re.second)??new Set;se.add(re.first),ye.set(re.second,se)}let ke=[],ce=new Set;for(let re of ue.edges){if(ce.has(re))continue;let J=[re],se=[];for(ce.add(re);J.length>0;){let ge=J.pop();se.push(ge);for(let Te of ye.get(ge)??[])ce.has(Te)||(ce.add(Te),J.push(Te))}se.sort((ge,Te)=>(p.get(ge)??0)-(p.get(Te)??0)),se.length>1&&ke.push(se)}return ke},"crossingComponents"),k=o(ue=>[ue.start,ue.end].filter(ye=>!!ye),"endpointIdsFor"),C=o(ue=>{let ye=[];for(let ke of T(ue)){let ce=new Set(ke),re=new Set(ke.flatMap(se=>k(se))),J=[...ke];for(let se of f)ce.has(se)||k(se).some(ge=>re.has(ge))&&J.push(se);J.sort((se,ge)=>(p.get(se)??0)-(p.get(ge)??0)),ye.push(J)}return ye},"pairSearchGroups"),w=o((ue,ye,ke)=>b(ue,new Map([[ye,ke]])),"crossingCountWithSingleReplacement"),S=o(ue=>{let ye=new Map;for(let ke of ue.pairs)ye.set(ke.first,(ye.get(ke.first)??0)+ke.count),ye.set(ke.second,(ye.get(ke.second)??0)+ke.count);return ye},"currentCrossingsByEdge"),R=o(ue=>ue.slice(1).reduce((ye,ke,ce)=>{let re=ue[ce];return ye+Math.abs(ke.x-re.x)+Math.abs(ke.y-re.y)},0),"pathLength"),L=o((ue=new Map)=>f.reduce((ye,ke)=>ye+ho(g(ke,ue)),0),"totalBends"),N=o((ue=new Map)=>f.reduce((ye,ke)=>ye+R(g(ke,ue)),0),"totalLength"),I=o((ue,ye,ke=new Map)=>{let ce=jr(ye);for(let re of f)if(re!==ue){for(let J of ce)for(let se of jr(g(re,ke)))if(dc(J,se,.5)>=Ea)return!0}return!1},"pathHasSegmentConflict"),_=o((ue,ye)=>{let ke=[ue.start,ue.end].filter(ce=>!!ce);for(let ce of jr(ye))if(Xn(ce.a,ce.b,u,ke,-2))return!0;return!1},"pathHitsNode"),A=o((ue,ye)=>{let ke=Tl(Jr(ye));jr(ke).length===ke.length-1&&ue.push(ke)},"pushOrthogonalCandidate"),M=o(ue=>ue==="left"||ue==="right","sideIsHorizontal"),D=o((ue,ye,ke)=>{switch(ye){case"left":return Math.min(ue.x,ke.x)-20;case"right":return Math.max(ue.x,ke.x)+20;case"top":return Math.min(ue.y,ke.y)-20;case"bottom":return Math.max(ue.y,ke.y)+20}},"localTrackForSameSide"),P=o((ue,ye,ke,ce)=>{let re=ke==="left"||ke==="top"?-1:1,J=[D(ye,ke,ce),d[ke]];for(let se of J)for(let ge=0;ge<=2;ge++)A(ue,p5(ye,ke,ce,se+re*20*ge))},"addSameSideCandidates"),B=o((ue,ye,ke,ce,re)=>{for(let J of m(ke))for(let se of m(re))A(ue,[ye,{x:J,y:ye.y},{x:J,y:se},{x:ce.x,y:se},ce])},"addHorizontalToVerticalCandidates"),O=o((ue,ye,ke,ce,re)=>{for(let J of m(ke))for(let se of m(re))A(ue,[ye,{x:ye.x,y:J},{x:se,y:J},{x:se,y:ce.y},ce])},"addVerticalToHorizontalCandidates"),$=o((ue,ye,ke,ce,re)=>{let J=[...m("top"),...m("bottom")];for(let se of m(ke))for(let ge of m(re))for(let Te of J)A(ue,[ye,{x:se,y:ye.y},{x:se,y:Te},{x:ge,y:Te},{x:ge,y:ce.y},ce])},"addHorizontalPairCandidates"),V=o((ue,ye,ke,ce,re)=>{let J=[...m("left"),...m("right")];for(let se of m(ke))for(let ge of m(re))for(let Te of J)A(ue,[ye,{x:ye.x,y:se},{x:Te,y:se},{x:Te,y:ge},{x:ce.x,y:ge},ce])},"addVerticalPairCandidates"),G=o(ue=>{let ye=new Set;return ue.map(ke=>Jr(ke)).filter(ke=>{let ce=ke.map(re=>`${re.x.toFixed(3)},${re.y.toFixed(3)}`).join("|");return ye.has(ce)||ke.length<2?!1:(ye.add(ce),!0)})},"dedupeCandidatePaths"),z=o((ue,ye,ke,ce)=>{let re=[],J=f5(ue,ye,ke,ce,20,rr);J&&A(re,J),ye===ce&&P(re,ue,ye,ke);let se=M(ye),ge=M(ce);return se&&!ge?B(re,ue,ye,ke,ce):!se&&ge?O(re,ue,ye,ke,ce):se?$(re,ue,ye,ke,ce):V(re,ue,ye,ke,ce),G(re)},"buildCandidatesForSides"),W=o((ue,ye,ke,ce)=>{let re=[...m("left"),...m("right")],J=[...m("top"),...m("bottom")];for(let se of h){let ge=Lf(ce,se),Te=se==="top"||se==="bottom"?m(se):J;for(let we of re){A(ue,[ye,ke,{x:we,y:ke.y},{x:we,y:ge.y},ge]);for(let Me of Te)A(ue,[ye,ke,{x:we,y:ke.y},{x:we,y:Me},{x:ge.x,y:Me},ge])}}},"addVerticalDepartureOuterTrackCandidates"),H=o((ue,ye,ke,ce)=>{let re=[...m("left"),...m("right")],J=[...m("top"),...m("bottom")];for(let se of h){let ge=Lf(ce,se),Te=se==="left"||se==="right"?m(se):re;for(let we of J){A(ue,[ye,ke,{x:ke.x,y:we},{x:ge.x,y:we},ge]);for(let Me of Te)A(ue,[ye,ke,{x:ke.x,y:we},{x:Me,y:we},{x:Me,y:ge.y},ge])}}},"addHorizontalDepartureOuterTrackCandidates"),j=o(ue=>{let ye=ue.start,ke=ue.end,ce=ke?l.get(ke):void 0;if(!ye||!ce)return[];let re=Jr(ue.points??[]);if(re.length<4)return[];let J=re[0],se=re[1],ge=[];return Ti(J,se,rr)?W(ge,J,se,ce):bi(J,se,rr)&&H(ge,J,se,ce),ge},"terminalPreservingOuterTrackCandidates"),Q=o(ue=>{let ye=ue.start,ke=ue.end,ce=ye?l.get(ye):void 0,re=ke?l.get(ke):void 0;if(!ce||!re)return[];let J=[];for(let se of h){let ge=Lf(ce,se);for(let Te of h)J.push(...z(ge,se,Lf(re,Te),Te))}return J.push(...j(ue)),J},"candidatePathsFor"),U=o(()=>new Map(f.map(ue=>[ue,jr(g(ue))])),"currentSegmentsByEdge"),oe=o((ue,ye,ke)=>{let ce=new Set;for(let re of f){if(re===ue)continue;let J=ke.get(re)??jr(g(re));ye.some(se=>J.some(ge=>dc(se,ge,.5)>=Ea))&&ce.add(re)}return ce},"sharedTrackConflictsFor"),te=o((ue,ye,ke,ce)=>{let re=new Set;return Q(ue).map(se=>Tl(Jr(se))).filter(se=>{if(_(ue,se))return!1;let ge=se.map(Te=>`${Te.x.toFixed(3)},${Te.y.toFixed(3)}`).join("|");return re.has(ge)||se.length<2?!1:(re.add(ge),!0)}).map(se=>{let ge=jr(se),Te=0;for(let we of f)we!==ue&&(Te+=y(ge,ke.get(we)??jr(g(we))));return{candidate:se,candidateSegments:ge,crossings:ye.count-(ce.get(ue)??0)+Te,bends:ho(se,rr),totalBends:ho(se),length:R(se)}}).filter(({crossings:se})=>se<=ye.count).sort((se,ge)=>se.crossings-ge.crossings||se.bends-ge.bends||se.length-ge.length).slice(0,48).map(se=>({path:se.candidate,segments:se.candidateSegments,sharedTrackConflicts:oe(ue,se.candidateSegments,ke),totalBends:se.totalBends,length:se.length}))},"pairCandidatesFor"),le=o((ue,ye,ke,ce,re,J)=>{let se=0;for(let Te of ue.pairs)(Te.first===ye||Te.second===ye||Te.first===ce||Te.second===ce)&&(se+=Te.count);let ge=y(ke.segments,re.segments);for(let Te of f){if(Te===ye||Te===ce)continue;let we=J.get(Te)??jr(g(Te));ge+=y(ke.segments,we)+y(re.segments,we)}return ue.count-se+ge},"pairCrossingCount"),ie=o((ue,ye)=>{for(let ke of ue.sharedTrackConflicts)if(ke!==ye)return!1;return!0},"conflictsOnlyWith"),ae=o((ue,ye)=>ue.segments.some(ke=>ye.segments.some(ce=>dc(ke,ce,.5)>=Ea)),"candidatesShareTrack"),Re=o((ue,ye,ke,ce)=>ie(ye,ke.edge)&&ie(ce,ue.edge)&&!ae(ye,ce),"pairCandidatesAreCompatible"),be=o((ue,ye,ke,ce,re)=>{let J=le(ue.current,ye.edge,ke,ce.edge,re,ue.baseSegments);if(!(J>=ue.current.count))return{replacements:new Map([[ye.edge,ke.path],[ce.edge,re.path]]),crossings:J,bends:ue.currentBends-(ue.baseBendsByEdge.get(ye.edge)??0)-(ue.baseBendsByEdge.get(ce.edge)??0)+ke.totalBends+re.totalBends,length:ue.currentLength-(ue.baseLengthByEdge.get(ye.edge)??0)-(ue.baseLengthByEdge.get(ce.edge)??0)+ke.length+re.length}},"scorePairReplacement"),Pe=o((ue,ye)=>ue.crossings{let re=ce;for(let J of ye.candidates)for(let se of ke.candidates){if(!Re(ye,J,ke,se))continue;let ge=be(ue,ye,J,ke,se);ge&&Pe(ge,re)&&(re=ge)}return re},"bestScoreForOptionPair"),Oe=o(ue=>{let ye=L(),ke=N(),ce=U(),re=S(ue),J=new Map(f.map(ve=>[ve,ho(g(ve))])),se=new Map(f.map(ve=>[ve,R(g(ve))])),ge=new Map,Te=C(ue);for(let ve of Te)for(let ne of ve){if(ge.has(ne))continue;let q=te(ne,ue,ce,re);q.length>0&&ge.set(ne,{edge:ne,candidates:q})}let we={replacements:new Map,crossings:ue.count,bends:ye,length:ke},Me={current:ue,currentBends:ye,currentLength:ke,baseBendsByEdge:J,baseLengthByEdge:se,baseSegments:ce};for(let ve of Te){let ne=new Set(ve.filter(he=>ue.edgeSet.has(he))),q=ve.map(he=>ge.get(he)).filter(he=>!!he);for(let he=0;he0?we.replacements:void 0},"bestPairedReplacement");for(let ue=0;ue<4;ue++){let ye=x(),ke=ye.count;if(ke===0)return;let ce,re,J=ke,se=Number.POSITIVE_INFINITY;for(let Te of ye.edges){let we=ho(g(Te),rr);for(let Me of Q(Te)){let ve=_(Te,Me),ne=!ve&&I(Te,Me),q=w(ye,Te,Me),he=ho(Me,rr);ve||ne||!(qJ||q===J&&he>=se||(ce=Te,re=Me,J=q,se=he)}}if(ce&&re){ce.points=re;continue}let ge=Oe(ye);if(!ge)return;for(let[Te,we]of ge)Te.points=we}}var rr,Ea,jr,iB,wye=F(()=>{"use strict";pc();rr=.001,Ea=8,jr=_f,iB=o((e,t)=>Qr(e,t,rr)||tn(e,t,rr),"orthogonallyAligned");o(yye,"separateSharedRenderedTerminalLanes");o(vye,"collapseRedundantRectangularDoglegs");o(aB,"liftObstacleHuggingSameSideRails");o(sB,"liftTopLaneTitleBandsAboveRails");o(oB,"shiftLeftLaneTitleBandsLeftOfRails");o(xye,"swapDestinationTerminalTailsToReduceCrossings");o(bye,"reassignCrossingExternalRailChannels");o(Tye,"shortcutRedundantOrthogonalJogs");o(Cye,"resolveRenderedOrthogonalCrossings")});function kye(e,t){let{nodeInfoById:r,realNodeRects:n}=b1(t),i=["top","bottom","left","right"],a=20,s={top:Math.min(...n.map(y=>y.rect.top))-a,bottom:Math.max(...n.map(y=>y.rect.bottom))+a,left:Math.min(...n.map(y=>y.rect.left))-a,right:Math.max(...n.map(y=>y.rect.right))+a},l=o((y,v,x,b)=>{let T=[],k=f5(y,v,x,b,a,Df);return k&&T.push(k),v===b&&T.push(p5(y,v,x,s[v])),T},"buildOrthogonalPathCandidates"),u=o((y,v)=>{for(let x=0;x{let b=0,T=_f(y,Df),k=v.start,C=v.end;for(let w of e){if(w===v||w.isLayoutOnly)continue;let S=w.start,R=w.end;if(!x&&k&&C&&(S===k||S===C||R===k||R===C))continue;let L=w.points;if(!(!L||L.length<2))for(let N of T)for(let I of _f(L,Df)){if(Q9(N.a,N.b,I.a,I.b,Df,Df)){b++;continue}dc(N,I,Df)>=zct&&b++}}return b},"pathConflictCount"),d=4,f=o((y,v)=>{let x=Math.abs(y.y-v.rect.top),b=Math.abs(y.y-v.rect.bottom),T=Math.abs(y.x-v.rect.left),k=Math.abs(y.x-v.rect.right),C="top",w=x;return b{let b=p.get(y)??[];b.push({side:v,edgeId:x}),p.set(y,b)},"addFaceClaim");for(let y of e){if(y.isLayoutOnly)continue;let v=y.points??[];if(v.length<1)continue;let x=y.id??"",b=y.start,T=y.end;if(b){let k=r.get(b);k&&m(b,f(v[0],k),x)}if(T){let k=r.get(T);k&&m(T,f(v[v.length-1],k),x)}}let g=o((y,v,x)=>p.get(y)?.some(b=>b.edgeId!==x&&b.side===v)??!1,"faceIsClaimed");for(let y of e){if(y.isLayoutOnly)continue;let v=y.points;if(!v||v.length<2)continue;let x=ho(v,Df);if(x0){let O=h(P,y,!0);if(O>N||O===N&&B>=I)continue;N=O,I=B,L=P;continue}h(P,y)>R||BM.edgeId!==w));let A=p.get(T);A&&p.set(T,A.filter(M=>M.edgeId!==w)),m(b,f(L[0],k),w),m(T,f(L[L.length-1],C),w)}}}var Df,zct,Sye=F(()=>{"use strict";pc();Df=.001,zct=8;o(kye,"simplifyDetouredEdges")});function Aye(e,t){let r=t?0:e.length-1,n=t?1:-1,i=e[r],a=e[r+n];if(!i||!a)return;let s=a.x-i.x,l=a.y-i.y;if(!(Math.abs(s)+Math.abs(l)a&&d5(e,Gct(a)))}function x5(e,t){let r=[];for(let g of e){if(g.isLayoutOnly)continue;let y=g.points;if(!(!y||y.length<2))for(let v=0;v{let v=Z9(y,a);for(let{nodeId:x,rect:b}of n)if(x!==g&&d5(v,b))return!0;return!1},"labelOverlapsForeignNode"),h=o((g,y)=>{let v=Z9(y,a);for(let x of r)if(x.edgeId!==g&&vT(x.p1,x.p2,v))return!0;return!1},"labelOverlapsForeignEdge"),d=o((g,y,v)=>u(g,v)||h(y,v),"labelOverlapsAnything"),f=[],p=o(g=>{for(let{id:y,rect:v}of i)if(H0e(v,g))return y},"findContainingLane"),m=o((g,y)=>f.some(v=>v.labelId!==g&&d5(y,v.rect)),"overlapsPlacedLabel");for(let g of e){if(g.isLayoutOnly)continue;let y=g.labelNodeId;if(!y)continue;let v=t.get(y);if(!v)continue;let x=g.points;if(!x||x.length<2)continue;let b=v.width??0,T=v.height??0;if(b<=0||T<=0)continue;let k=[];for(let G=0;G=fo&&j>=fo||k.push({idx:G,length:H+j,orientation:H>=fo?"horizontal":"vertical",midX:(z.x+W.x)/2,midY:(z.y+W.y)/2})}if(k.length===0)continue;let C=k.length>=3?k.filter(G=>G.idx>0&&G.idx0?C:k,S=b>=T?"horizontal":"vertical",R=o(G=>[...G].sort((z,W)=>{let H=z.orientation===S,j=W.orientation===S;if(H!==j)return H?-1:1;let Q=z.length>=(z.orientation==="horizontal"?b:T)+2,U=W.length>=(W.orientation==="horizontal"?b:T)+2;return Q!==U?Q?-1:1:W.length-z.length}),"rankSegments"),L=k[0],N=k[k.length-1],I=[.5,.25,.75,.05,.95,.15,.85,.1,.9],_=o((G,z)=>{let W=x[G.idx],H=x[G.idx+1];return{midX:W.x+(H.x-W.x)*z,midY:W.y+(H.y-W.y)*z}},"anchorAtT"),A=o((G,z,W)=>Math.min(W,Math.max(z,G)),"clamp"),M=o((G,z)=>G.midX>=z.left-fo&&G.midX<=z.right+fo&&G.midY>=z.top-fo&&G.midY<=z.bottom+fo,"pointInsideRectInclusive"),D=o(G=>{let z=x1(G.midX,G.midY,b,T),W=p(z);if(W)return{laneId:W,anchor:G,rect:z};let H=i.find(({rect:ie})=>M(G,ie));if(!H)return;let j=H.rect.left+b/2+s,Q=H.rect.right-b/2-s,U=H.rect.top+T/2+s,oe=H.rect.bottom-T/2-s;if(j>Q||U>oe)return;let te={midX:A(G.midX,j,Q),midY:A(G.midY,U,oe)},le=x1(te.midX,te.midY,b,T);return M(G,le)?{laneId:H.id,anchor:te,rect:le}:void 0},"placementForAnchor"),P=o((G,z,W)=>G.orientation==="horizontal"?Math.abs(z.midX-W.x):Math.abs(z.midY-W.y),"distanceAlongSegment"),B=o((G,z)=>{let H=(G.orientation==="horizontal"?b/2:T/2)+l;if(G===L){let j=x[G.idx];if(P(G,z,j)+fo{let z=R(G);for(let W of z)for(let H of I){let j=_(W,H);if(!B(W,j))continue;let Q=D(j);if(Q&&!Rye(Q.rect,x)&&!m(y,Q.rect)&&!d(y,g.id,Q.rect))return{laneId:Q.laneId,anchor:Q.anchor}}},"tryPool"),$=o((G,z,W=!1)=>{let H=R(G);for(let j of H){let Q={midX:j.midX,midY:j.midY};if(z&&!B(j,Q))continue;let U=D(Q);if(U&&!Rye(U.rect,x)&&!m(y,U.rect)&&!u(y,U.rect)&&(W||!h(g.id,U.rect)))return{laneId:U.laneId,anchor:U.anchor}}},"findLaneContainingFallback"),V=O(w)??(w.lengthW.labelId===y);z>=0?f[z]={labelId:y,rect:G}:f.push({labelId:y,rect:G})}}}var fo,Eye,v5,_ye=F(()=>{"use strict";pc();fo=.001,Eye=10,v5=7;o(Aye,"markerClearanceRectFor");o(Gct,"normalizeRect");o(Rye,"labelOverlapsOwnMarker");o(x5,"anchorLabelsToPolyline")});function Dye(e,t){return e{let d=Dye(l,u),f=0,p=o(m=>{if(!m)return;let g=i.get(m);if(!g)return;let y=h==="x"?g.w/2:g.h/2;y>f&&(f=y)},"consider");p(s.labelNodeId);for(let m of e){if(m===s||m.isLayoutOnly)continue;let g=m.start,y=m.end;!g||!y||Dye(g,y)===d&&p(m.labelNodeId)}return f>0?f+Wct:0},"labelClearanceFor");for(let s of e){if(s.isLayoutOnly)continue;let l=s.points;if(!u5(l,lB))continue;let u=m5(s,r,lB);if(!u)continue;let{srcId:h,dstId:d,srcInfo:f,dstInfo:p,collinearX:m,collinearY:g}=u;if(m===g)continue;let y,v;if(m){let C=p.cy>f.cy;y={x:f.cx,y:C?f.rect.bottom:f.rect.top},v={x:p.cx,y:C?p.rect.top:p.rect.bottom}}else{let C=p.cx>f.cx;y={x:C?f.rect.right:f.rect.left,y:f.cy},v={x:C?p.rect.left:p.rect.right,y:p.cy}}if(Xn(y,v,n,[h,d],1))continue;let b=a(s,h,d,m?"x":"y"),T=b>Lye?b:Lye,k=[0,T,-T];for(let C of k){let w={...y},S={...v};if(m){if(w.x+=C,S.x+=C,w.x<=f.rect.left||w.x>=f.rect.right||S.x<=p.rect.left||S.x>=p.rect.right)continue}else if(w.y+=C,S.y+=C,w.y<=f.rect.top||w.y>=f.rect.bottom||S.y<=p.rect.top||S.y>=p.rect.bottom)continue;if(!Xn(w,S,n,[h,d],1)&&!xT(w,S,e,s,{epsilon:lB})){s.points=[w,S];break}}}}var lB,Vct,Lye,Wct,Mye=F(()=>{"use strict";pc();lB=1e-6,Vct=8,Lye=Vct/2,Wct=3;o(Dye,"pairKey");o(Iye,"straightenCollinearSiblingDetours")});function cB(e,t){let{realNodeRects:h,labelNodeRects:d}=gu(t.values()),f=o((w,S)=>_f(S,.001).map(R=>({...R,edge:w,interior:R.index>=1&&R.index<=S.length-3})),"segmentsFor"),p=o(()=>{let w=[];for(let S of e){if(S.isLayoutOnly)continue;let R=S.points;!R||R.length<2||w.push(...f(S,Jr(R)))}return w},"allSegments"),m=o((w,S)=>w.horizontal&&S.horizontal?ls(w.a.x,w.b.x,S.a.x,S.b.x)>=8&&Math.abs(w.a.y-S.a.y)<7:w.vertical&&S.vertical?ls(w.a.y,w.b.y,S.a.y,S.b.y)>=8&&Math.abs(w.a.x-S.a.x)<7:!1,"hasCrowdedParallelTrack"),g=o((w,S)=>{let R=w.start,L=w.end,N=f(w,S);if(N.length!==S.length-1)return!1;let I=[R,L].filter(A=>!!A),_=w.labelNodeId?[w.labelNodeId]:[];for(let A of N)if(Xn(A.a,A.b,h,I,-2)||Xn(A.a,A.b,d,_,-2))return!1;for(let A of e){if(A===w||A.isLayoutOnly)continue;let M=A.points;if(!(!M||M.length<2)){for(let D of N)for(let P of f(A,Jr(M)))if(m(D,P)||fc(D.a,D.b,P.a,P.b,.001))return!1}}return!0},"candidateIsSafe"),y=o((w,S)=>{let R=Jr(w.edge.points??[]);if(R.length<4||w.index>=R.length-1)return;let L=R.map(N=>({...N}));if(w.horizontal)L[w.index].y+=S,L[w.index+1].y+=S;else if(w.vertical)L[w.index].x+=S,L[w.index+1].x+=S;else return;return f(w.edge,L).length===L.length-1?L:void 0},"shiftedCandidate"),v=o((w,S)=>({x:w.x??(S.left+S.right)/2,y:w.y??(S.top+S.bottom)/2}),"nodeCenter"),x=o(w=>{let S=w.edge,R=Jr(S.points??[]);if(R.length!==4||w.index!==1)return;let L=S.start?t.get(S.start):void 0,N=S.end?t.get(S.end):void 0,I=L?Sa(L):void 0,_=N?Sa(N):void 0,A=R.slice(w.index+2);if(!(!L||!N||!I||!_||A.length===0))return{sourceCenter:v(L,I),targetCenter:v(N,_),sourceRect:I,tail:A}},"sourceDetourContextFor"),b=o((w,S,R,L,N,I)=>{let _=L.y>=R.y,A=_?N.bottom:N.top,M=A+(_?20:-20);if(_&&w.b.y<=M+.001||!_&&w.b.y>=M-.001)return;let D=w.a.x+S;return Jr([{x:R.x,y:A},{x:R.x,y:M},{x:D,y:M},{x:D,y:w.b.y},...I],.001)},"verticalSourceDetour"),T=o((w,S,R,L,N,I)=>{let _=L.x>=R.x,A=_?N.right:N.left,M=A+(_?20:-20);if(_&&w.b.x<=M+.001||!_&&w.b.x>=M-.001)return;let D=w.a.y+S;return Jr([{x:A,y:R.y},{x:M,y:R.y},{x:M,y:D},{x:w.b.x,y:D},...I],.001)},"horizontalSourceDetour"),k=o((w,S)=>{let R=x(w);if(R){if(w.vertical)return b(w,S,R.sourceCenter,R.targetCenter,R.sourceRect,R.tail);if(w.horizontal)return T(w,S,R.sourceCenter,R.targetCenter,R.sourceRect,R.tail)}},"sourceDetourCandidate"),C=[-7,7,-14,14,-21,21];for(let w=0;w<12;w++){let S=p(),R=!1;for(let L=0;LM.interior);for(let M of A){for(let D of C){let P=y(M,D);if(P&&g(M.edge,P)){M.edge.points=P,R=!0;break}let B=k(M,D);if(B&&g(M.edge,B)){M.edge.points=B,R=!0;break}}if(R)break}}if(!R)return}}var Nye=F(()=>{"use strict";pc();o(cB,"nudgeSharedInteriorSubpaths")});function qct(e,t,r,n){let i=t.x-e.x,a=t.y-e.y,s=n.x-r.x,l=n.y-r.y,u=i*l-a*s;if(Math.abs(u)<1e-10)return!1;let h=r.x-e.x,d=r.y-e.y,f=(h*l-d*s)/u,p=(h*a-d*i)/u,m=.01;return f>m&&f<1-m&&p>m&&p<1-m}function uB(e){let t=e.nodes??[],r=e.edges??[],n=[];if(!r.length||!t.length)return n;let i=U0e(t),a=1,s=[];for(let u of r){if(u.isLayoutOnly)continue;let h=u.points;if(!h||h.length<2)continue;let d=u.start,f=u.end,p=u.labelNodeId,m=u.id??`${d}->${f}`;for(let g of i)if(!(g.nodeId===d||g.nodeId===f)&&!(p&&g.nodeId===p)){for(let y=0;y0){let u=n.filter(d=>d.type==="edge-node-overlap").length,h=n.filter(d=>d.type==="edge-edge-crossing").length;Z.warn(`[SWIMLANE_VALIDATE] ${n.length} issue(s) detected: ${u} edge-node overlap(s), ${h} edge crossing(s)`);for(let d of n)Z.warn(`[SWIMLANE_VALIDATE] ${d.type}: ${d.detail}`)}return n}var Pye=F(()=>{"use strict";vt();pc();o(qct,"segmentsIntersect");o(uB,"validateSwimlanesLayout")});function Oye(e,t){let r=e.nodes??[],n=e.edges??[],i=r.filter(l=>!l.isGroup);if((t==="LR"||t==="RL")&&i.length>0&&!hye(e,t)||t==="BT"&&i.length>0&&!uye(e))return;for(let l of n){if(l.isLayoutOnly)continue;let u=l.points;!u||u.length<2||(l.points=Tl(bT(u)))}kye(n,r),Iye(n,r),fye(n,r);let a=new Map;for(let l of r)a.set(String(l.id),l);x5(n,a),iye(n,a),mye(n,a),cB(n,a),yye(n,a),vye(n,a),aB(n,a),xye(n,a);let s=o(()=>{Cye(n,a),bye(n,a),Tye(n,a),x5(n,a),rB(n,a),aB(n,a),x5(n,a),rB(n,a)},"finalizeRenderedEdges");s(),cB(n,a),s(),sB(n,a),oB(n,a),sB(n,a),oB(n,a)}var Bye=F(()=>{"use strict";sye();pc();dye();pye();gye();wye();Sye();_ye();Mye();Nye();Pye();o(Oye,"postProcessSwimlaneLayout")});function po(e){let t=new Map(e.nodeById),r=new Set,n=[];for(let a of e.edges){if(!t.has(a.src)||!t.has(a.dst))continue;let s=`${a.id}:${a.src}->${a.dst}`;r.has(s)||(r.add(s),n.push(a))}return{nodes:[...t.keys()],edges:n,layout:e.layout,nodeById:t}}function b5(e,t){return e.edges.filter(r=>r.dst===t)}function Hct(e){let t=new Map;for(let r of e.nodes)t.set(r,[]);for(let r of e.edges)t.get(r.src).push(r.dst);return t}function hB(e){let t=Hct(e);for(let r of t.values())r.sort((n,i)=>n.localeCompare(i));return t}function dB(e){let t=new Map;for(let r of e.nodes)t.set(r,0);for(let r of e.edges)t.set(r.dst,(t.get(r.dst)??0)+1);return t}function fB(e){return[...e.entries()].filter(([,t])=>t===0).map(([t])=>t).sort((t,r)=>t.localeCompare(r))}function T1(e,t=()=>!0){let r=new Map,n=new Map;for(let i of e.nodes)r.set(i,[]),n.set(i,[]);for(let i of e.edges)t(i)&&(n.get(i.src).push(i.dst),r.get(i.dst).push(i.src));return{preds:r,succs:n}}function T5(e,t,r,n){let i=0;for(let s of e.nodes)n?.skipGroups&&e.nodeById.get(s)?.isGroup||(i=Math.max(i,r[s]??0));let a=Array.from({length:i+1},()=>[]);for(let s of t)n?.skipGroups&&e.nodeById.get(s)?.isGroup||a[Math.max(0,r[s]??0)].push(s);return a}function If(e){let t=dB(e),r=fB(t),n=[],i=hB(e);for(;r.length;){let a=r.shift();n.push(a);for(let s of i.get(a)??[])if(t.set(s,(t.get(s)??0)-1),(t.get(s)??0)===0){let l=0;for(;l{if(i-n<=1)return 0;let a=n+i>>1,s=r(n,a)+r(a,i),l=n,u=a,h=n;for(;l=i||l{"use strict";o(po,"normalizeGraph");o(b5,"incoming");o(Hct,"buildSuccessorMap");o(hB,"buildSortedSuccessorMap");o(dB,"buildInDegreeMap");o(fB,"sortedZeroInDegreeNodes");o(T1,"buildPredecessorSuccessorMaps");o(T5,"buildLayersFromRanks");o(If,"topoSortIfAcyclic");o(Hm,"buildLayerIndex");o(C5,"countInversions")});function $ye(e){let t=po(e),r=new Map;for(let d of t.nodes)r.set(d,[]);for(let d of t.edges)r.get(d.src).push(d);for(let d of r.values())d.sort((f,p)=>f.dst===p.dst?f.id.localeCompare(p.id):f.dst.localeCompare(p.dst));let n=Object.create(null);for(let d of t.nodes)n[d]=0;let i=[],a=o(d=>{n[d]=1;for(let f of r.get(d)??[]){let p=f.dst;n[p]===0?a(p):n[p]===1&&i.push(f)}n[d]=2},"dfs"),s=[...t.nodes].sort((d,f)=>d.localeCompare(f));for(let d of s)n[d]===0&&a(d);let l=new Set(i.map(d=>`${d.id}:${d.src}->${d.dst}`)),u=t.edges.map(d=>l.has(`${d.id}:${d.src}->${d.dst}`)?{id:d.id,src:d.dst,dst:d.src,weight:d.weight,ref:d.ref}:d);return{acyclic:{nodes:[...t.nodes],edges:u,layout:t.layout,nodeById:new Map(t.nodeById)},reversed:i}}var Fye=F(()=>{"use strict";yu();o($ye,"removeCycles_DFS")});function Uct(e){let t=new Map,r=o(n=>{if(t.has(n))return t.get(n);let i=e.nodeById.get(n);if(!i)return t.set(n,null),null;let a=i.parentId;if(!a)return t.set(n,null),null;let l=r(a)??a;return t.set(n,l),l},"resolve");for(let n of e.nodes)r(n);return t}function cs(e){let t=Uct(e);return r=>t.get(r)??null}function w5(e){let t=[];for(let r of e.layout.nodes??[])r.isGroup&&!r.parentId&&t.push(r.id);return[...new Set(t)].reverse()}function k5(e,t){let r=w5(e);if(!t||t.length===0)return r;let n=new Set(r),i=new Set,a=[];for(let s of t)!n.has(s)||i.has(s)||(i.add(s),a.push(s));for(let s of r)i.has(s)||a.push(s);return a}var Dh=F(()=>{"use strict";o(Uct,"buildTopLaneMap");o(cs,"createTopLaneResolver");o(w5,"buildTopLaneOrder");o(k5,"resolveTopLaneOrder")});var zye,Um,pB,C1=F(()=>{"use strict";zye={EPSILON:1e-6},Um={GRAVITY_ITERATIONS:8,MAX_CROSSING_OPTIMIZATION_PASSES:4,DEFAULT_COMPACT_SINGLE_INPUT:!0},pB={DEFAULT_LAYER_GAP:100,DEFAULT_NODE_GAP:40}});function Gye(e,t){let r=po(e),n=t?.laneOf??(()=>null),i=t?.rankHint,{preds:a}=T1(r);for(let C of a.values())C.sort((w,S)=>w.localeCompare(S));let s=If(r)??[...r.nodes].sort((C,w)=>C.localeCompare(w)),l=new Map;for(let[C,w]of s.entries())l.set(w,C);let u=new Map,h=new Map;for(let C of r.nodes)h.set(C,[]);for(let C of s){let w=(a.get(C)??[]).filter(S=>u.has(S));if(w.length>0){let S=Yct(C,w,{laneOf:n,rankHint:i,topoIndex:l});u.set(C,S),h.get(S).push(C)}else u.has(C)||u.set(C,null)}for(let C of r.nodes)u.has(C)||u.set(C,null);let d=new Set;for(let C of r.nodes)(u.get(C)??null)===null&&d.add(C);let f=[...d].sort((C,w)=>{let S=l.get(C)??0,R=l.get(w)??0;return S===R?C.localeCompare(w):S-R}),p=jct(r),m=new Map;for(let[C,w]of p.entries())m.set(C,[...w].sort((S,R)=>S.localeCompare(R)));let g=Xct(m),y=Kct(m),v=new Map;for(let C of r.nodes)v.set(C,[]);for(let C of y)for(let w of C.nodes){let S=v.get(w);S?S.push(C.id):v.set(w,[C.id])}let x=[],b=[],T=new Set,k=o(C=>{if(!T.has(C)){T.add(C),x.push(C);for(let w of h.get(C)??[])k(w);b.push(C)}},"walk");for(let C of f)k(C);for(let C of s)k(C);return{parent:u,children:h,roots:f,componentOf:g,blocks:y,nodeBlocks:v,adjacency:m,preorder:x,postorder:b,topologicalOrder:s}}function Yct(e,t,r){let n=r.laneOf(e);return[...t].sort((a,s)=>{let l=r.laneOf(a),u=r.laneOf(s),h=l!=null&&l===n,d=u!=null&&u===n;if(h!==d)return h?-1:1;let f=r.rankHint?.[a],p=r.rankHint?.[s];if(f!=null&&p!=null&&f!==p)return p-f;let m=r.topoIndex.get(a)??0,g=r.topoIndex.get(s)??0;return m!==g?m-g:a.localeCompare(s)})[0]}function jct(e){let t=new Map;for(let r of e.nodes)t.set(r,new Set);for(let r of e.edges)t.get(r.src).add(r.dst),t.get(r.dst).add(r.src);return t}function Xct(e){let t=new Map,r=0;for(let n of e.keys()){if(t.has(n))continue;let i=[n];for(;i.length>0;){let a=i.pop();if(!t.has(a)){t.set(a,r);for(let s of e.get(a)??[])t.has(s)||i.push(s)}}r++}return t}function Kct(e){let t=new Map,r=new Map,n=[],i=[],a=0,s=o((l,u)=>{t.set(l,++a),r.set(l,a);for(let h of e.get(l)??[])h!==u&&(t.has(h)?(t.get(h)??0)<(t.get(l)??0)&&(n.push([l,h]),r.set(l,Math.min(r.get(l)??a,t.get(h)??a))):(n.push([l,h]),s(h,l),r.set(l,Math.min(r.get(l)??a,r.get(h)??a)),(r.get(h)??0)>=(t.get(l)??0)&&i.push(Zct(l,h,n,i.length))))},"visit");for(let l of e.keys())t.has(l)||s(l,null);return i}function Zct(e,t,r,n){let i=[],a=new Set;for(;r.length>0;){let s=r.pop();if(i.push(s),a.add(s[0]),a.add(s[1]),s[0]===e&&s[1]===t||s[0]===t&&s[1]===e)break}return{id:n,edges:i,nodes:[...a]}}var Vye=F(()=>{"use strict";yu();o(Gye,"buildDrivingTree");o(Yct,"chooseParent");o(jct,"buildAdjacency");o(Xct,"assignComponents");o(Kct,"computeBlocks");o(Zct,"popBlock")});function Wye(e,t,r){let n=[...e.nodes],i=new Map;for(let[b,T]of n.entries())i.set(T,b);let a=n.length,s=new Array(a).fill(-1),l=new Array(a).fill(0),u=[],h=new Set;for(let b of n){let T=r.parent.get(b)??null,k=i.get(b);k!=null&&T==null&&(s[k]=-1,l[k]=0,h.has(b)||(h.add(b),u.push(b)))}for(;u.length>0;){let b=u.shift(),T=i.get(b);if(T==null)continue;let k=r.children.get(b)??[];for(let C of k){if(h.has(C))continue;let w=i.get(C);w!=null&&(s[w]=T,l[w]=l[T]+1,h.add(C),u.push(C))}}for(let b of n){if(h.has(b))continue;let T=i.get(b);T!=null&&(s[T]=-1,l[T]=0,h.add(b))}let d=Math.max(1,Math.ceil(Math.log2(Math.max(1,a)))+1),f=Array.from({length:d},()=>new Array(a).fill(-1));for(let b=0;b{if(b===-1||T===-1)return-1;l[b]>C&1&&(b=f[C][b],b===-1))return-1;if(b===T)return b;for(let C=d-1;C>=0;C--){let w=f[C][b],S=f[C][T];w===-1||S===-1||w!==S&&(b=w,T=S)}return f[0][b]},"lcaIndex"),m=Array.from({length:a},()=>new Map);for(let b of e.edges){let T=b.src,k=b.dst,C=t[T],w=t[k];if(C==null||w==null||(C>w&&([T,k]=[k,T],[C,w]=[w,C]),C==null||w==null||C===w))continue;let S=i.get(T),R=i.get(k);if(S==null||R==null)continue;let L=p(S,R);if(L===-1)continue;let N=m[L];for(let I=C;I{if(T.size!==0)for(let[k,C]of T)b.set(k,(b.get(k)??0)+C)},"mergeInto"),v=new Set,x=o(b=>{let T=i.get(b);v.add(b);let k=T==null?void 0:m[T],C=k?new Map(k):new Map,w=r.children.get(b)??[];for(let S of w){let R=x(S),L=t[b];if(L!=null){let N=g.get(b);N||(N=new Map,g.set(b,N));let I=R.get(L)??0,_=t[S];_!=null&&_>L&&(I+=1),N.set(S,I)}y(C,R)}return C},"dfs");for(let b of r.roots)v.has(b)||x(b);for(let b of n)v.has(b)||x(b);return g}var qye=F(()=>{"use strict";o(Wye,"computeSubtreeCrossCounts")});function Hye(e,t,r){let n=new Map,i=o(a=>{let s=r[a]??0,l=[...t.get(a)??[]];l.sort(mB(r));for(let u of l){i(u);let h=n.get(u);h!=null&&(s=Math.min(s,h))}n.set(a,s)},"annotate");for(let a of e)i(a);return n}function mB(e){return(t,r)=>{let n=e[t]??0,i=e[r]??0;return n===i?t.localeCompare(r):n-i}}function Uye(e,t,r,n){let i=0;for(let u of t){let h=r[u]??0;h>i&&(i=h)}let a=Array.from({length:i+1},()=>[]),s=new Set,l=o(u=>{if(s.has(u))return;s.add(u);let h=r[u]??0;a[h]||(a[h]=[]),a[h].push(u);for(let d of n(u))l(d)},"emit");for(let u of e)l(u);for(let u of t)if(!s.has(u)){let h=r[u]??0;a[h]||(a[h]=[]),a[h].push(u),s.add(u)}return a}function Yye(e){let t=[];for(let r of e){let n=new Set,i=[];for(let a of r)n.has(a)||(n.add(a),i.push(a));t.push(i)}return t}var jye=F(()=>{"use strict";o(Hye,"annotateMinimumLayers");o(mB,"compareByRankThenId");o(Uye,"emitNodesInTreeOrder");o(Yye,"deduplicateLayers")});function Qct(e,t,r,n){return i=>{let a=e.get(i)??[];if(a.length===0)return[];let s=t[i]??0,l=[],u=[],h=r.get(i);for(let d of a){let f=n.get(d)??s;f>s?l.push({child:d,min:f}):u.push(d)}return l.sort((d,f)=>d.min===f.min?d.child.localeCompare(f.child):d.min-f.min),u.sort((d,f)=>{let p=h?.get(d)??0,m=h?.get(f)??0;if(p!==m)return p-m;let g=n.get(d)??s,y=n.get(f)??s;return g!==y?g-y:d.localeCompare(f)}),[...l.map(d=>d.child),...u]}}function TT(e,t,r){let n=Gye(e,{rankHint:t,laneOf:r}),{children:i,roots:a}=n;for(let f of e.nodes)i.has(f)||i.set(f,[]);let s=Wye(e,t,n),l=[...a].sort(mB(t)),u=Hye(l,i,t),h=Qct(i,t,s,u),d=Uye(l,e.nodes,t,h);return d=Yye(d),d}var gB=F(()=>{"use strict";Vye();qye();jye();o(Qct,"createChildOrderer");o(TT,"buildMultitreeLayerOrder")});function Jct(e,t,r){let n=new Set(e),i=new Set(t),a=Hm(t),s=[];for(let l of r)n.has(l.src)&&i.has(l.dst)&&s.push(a.get(l.dst));return C5(s)}function Xye(e,t,r){let n=[];for(let a of t){let s=r[a.src],l=r[a.dst];if(s==null||l==null||s===l)continue;let u=a.src,h=a.dst,d=s,f=l;s>l&&(u=a.dst,h=a.src,d=l,f=s);for(let p=d;p(r[p]??0)-(r[f]??0));for(let f of d){let p=r[f]??0;if(p===0)continue;let m=0;for(let x of n.get(f)??[])m=Math.max(m,(r[x]??0)+1);if(m>=p)continue;let g=p;r[f]=m;let y=TT(e,r,i),v=Xye(y,e.edges,r);v{"use strict";yu();C1();Dh();gB();o(Jct,"countCrossingsBetweenAdjacent");o(Xye,"totalCrossings");o(Kye,"optimizeRanksByCrossings")});function Qye(e,t){let r=cs(e),n=[...e.nodes].sort((i,a)=>(t[i]??0)-(t[a]??0)||i.localeCompare(a));for(let i of n){let a=r(i);if(!a)continue;let s=e.edges.filter(y=>y.src===i);if(s.length===0)continue;let l=!1,u=0;for(let y of s){let v=r(y.dst);v==null||v===a?l=!0:u++}if(u===0||l)continue;let h=0,d=!1;for(let y of e.edges){if(y.dst!==i)continue;let v=r(y.src);v&&(v===a?d=!0:h++)}if(h>0||!d)continue;let f=t[i]??0,p=f+u,m=0;for(let y of e.edges)y.dst===i&&(m=Math.max(m,(t[y.src]??0)+1));let g=Math.max(f,m,p);g!==f&&(t[i]=g)}}var Jye=F(()=>{"use strict";Dh();o(Qye,"adjustCrossLaneSources")});function e1e(e,t){let r=po(e),n=If(r)??[...r.nodes].sort(),i=t?.compactSingleInput??!1,a=cs(r),s=Object.create(null);for(let u of n){let h=b5(r,u),d=t?.ignoreCrossLaneEdges?h.filter(f=>{let p=a(f.src),m=a(u);return!p||!m?!0:p===m}):h;if(d.length===0)s[u]=0;else if(i&&d.length===1){let f=d[0].src,p=a(f),m=a(u);p!==m?s[u]=s[f]??0:s[u]=(s[f]??0)+1}else{let f=-1/0;for(let p of d)f=Math.max(f,(s[p.src]??0)+1);s[u]=f===-1/0?0:f}}return(t?.optimizeRanksByCrossings??!1)&&(s=Kye(r,s)),t?.ignoreCrossLaneEdges&&Qye(r,s),{layers:TT(r,s,a),rankOf:s,dummy:new Set}}var t1e=F(()=>{"use strict";yu();Dh();Zye();Jye();gB();o(e1e,"assignLayers_LongestPath")});function r1e(e,t){let r=po(e),i={...e1e(r,{compactSingleInput:t?.compactSingleInput,ignoreCrossLaneEdges:t?.ignoreCrossLaneEdges,optimizeRanksByCrossings:t?.optimizeRanksByCrossings}).rankOf},a=cs(r),{preds:s,succs:l}=T1(r,g=>{if(t?.ignoreCrossLaneEdges){let y=a(g.src),v=a(g.dst);if(y&&v&&y!==v)return!1}return!0}),u=If(r)??[...r.nodes],h=[...u].reverse(),d=o((g,y)=>{let v=0;for(let T of s.get(g)??[])v=Math.max(v,(i[T]??0)+1);let x=Number.POSITIVE_INFINITY,b=l.get(g)??[];return b.length>0&&(x=Math.min(...b.map(T=>(i[T]??0)-1))),Number.isFinite(x)||(x=Math.max(v,y)),Math.min(Math.max(y,v),x)},"clampFeasible"),f=Um.GRAVITY_ITERATIONS,p=o(g=>{let y=!1;for(let v of g){let x=s.get(v)??[],b=l.get(v)??[];if(x.length===0&&b.length===0)continue;let T=x.length>0?x.reduce((S,R)=>S+(i[R]??0)+1,0)/x.length:i[v]??0,k=b.length>0?b.reduce((S,R)=>S+(i[R]??0)-1,0)/b.length:i[v]??0,C=Math.round((T+k)/2),w=d(v,C);w!==i[v]&&(i[v]=w,y=!0)}return y},"relaxOrder");for(let g=0;g0){let v=Math.min(...y.map(x=>(i[x]??0)-1));(i[g]??0)>v&&(i[g]=v)}}return{layers:T5(r,u,i),rankOf:i,dummy:new Set}}var n1e=F(()=>{"use strict";yu();Dh();C1();t1e();o(r1e,"assignLayers_Gravity")});function eut(e){let t=dB(e),r=hB(e),n=fB(t),i=[];for(;n.length>0;){let a=[];for(let s of n){i.push(s);for(let l of r.get(s)??[])t.set(l,(t.get(l)??0)-1),(t.get(l)??0)===0&&a.push(l)}n=a.sort((s,l)=>s.localeCompare(l))}return i.length===e.nodes.length?i:null}function i1e(e,t){let r=po(e),n=t?.direction==="LR"?eut(r)??[...r.nodes].sort():If(r)??[...r.nodes].sort(),i=cs(r),a=o(d=>i(d)??d,"laneOf"),s=Object.create(null),l=new Map,u=o((d,f)=>t?.ignoreCrossLaneEdges??!0?a(d)===a(f)?1:0:1,"edgeWeight");for(let d of n){if(r.nodeById.get(d)?.isGroup)continue;let p=b5(r,d),m=0;if(p.length>0)for(let x of p){let b=x.src,T=s[b]??0;m=Math.max(m,T+u(b,d))}let g=a(d),y=l.get(g)??0,v=Math.max(m,y);s[d]=v,l.set(g,v+1)}return{layers:T5(r,n,s,{skipGroups:!0}),rankOf:s,dummy:new Set}}var a1e=F(()=>{"use strict";yu();Dh();o(eut,"topoSortByGenerationIfAcyclic");o(i1e,"assignLayers_LaneAwareCompact")});function s1e(e,t){let r=po(t),{rankOf:n}=e,i=e.layers.map(m=>[...m]),a=new Set(e.dummy?[...e.dummy]:[]),s=0,l=new Map(r.nodeById),u=o(m=>{let g=`placeholder-${s++}`,y={id:g,isGroup:!1,isDummy:!0,width:0,height:0};for(l.set(g,y),a.add(g);i.length<=m;)i.push([]);return i[m].push(g),n[g]=m,g},"addDummyAt"),h=[...r.edges].sort((m,g)=>m.id===g.id?m.src===g.src?m.dst.localeCompare(g.dst):m.src.localeCompare(g.src):m.id.localeCompare(g.id)),d=[];for(let m of h){let g=n[m.src]??0,y=n[m.dst]??0;if(y-g<=1){d.push(m);continue}let v=m.src;for(let b=g+1,T=0;b!r.nodes.includes(m))],edges:d,layout:r.layout,nodeById:l};return{layering:{layers:i,rankOf:n,dummy:a},graphWithDummies:p}}var o1e=F(()=>{"use strict";yu();o(s1e,"makeProperLayering")});function l1e(e){let t=e.length;if(t===0)return Number.POSITIVE_INFINITY;let r=[...e].sort((n,i)=>n-i);return t%2===1?r[(t-1)/2]:.5*(r[t/2-1]+r[t/2])}function c1e(e){return e.length===0?Number.POSITIVE_INFINITY:e.reduce((r,n)=>r+n,0)/e.length}function tut(e,t,r,n){let i=new Map;for(let a of e)i.set(a,[]);for(let a of r)n==="down"?t.has(a.src)&&i.has(a.dst)&&i.get(a.dst).push(t.get(a.src)):t.has(a.dst)&&i.has(a.src)&&i.get(a.src).push(t.get(a.dst));return i}function rut(e,t,r){let n=r.get(e)??0,i=r.get(t)??0;return n!==i?n-i:e.localeCompare(t)}function u1e(e,t,r){let n=new Set(e),i=new Set(t),a=Hm(e),s=Hm(t),l=[];for(let h of r)n.has(h.src)&&i.has(h.dst)&&l.push({u:a.get(h.src),v:s.get(h.dst)});l.sort((h,d)=>h.u===d.u?h.v-d.v:h.u-d.u);let u=l.map(h=>h.v);return C5(u)}function yB(e,t,r){return[...e].sort((n,i)=>{let a=l1e(t.get(n)??[]),s=l1e(t.get(i)??[]);return a===s?rut(n,i,r):isFinite(a)?isFinite(s)?a-s:-1:1})}function h1e(e,t,r,n,i,a){let s=Hm(e),l=Hm(t),u=tut(t,s,r,n);if(!i||!a||a.length===0)return yB(t,u,l);let h=new Map;for(let p of t){let m=i(p),g=h.get(m)??[];g.push(p),h.set(m,g)}let d=[];for(let p of a){let m=h.get(p);if(!m||m.length===0)continue;let g=yB(m,u,l);d.push(...g)}let f=h.get(null);if(f&&f.length>0){let p=yB(f,u,l);for(let m of p){let g=c1e(u.get(m)??[]),y=d.length;if(isFinite(g))for(let[v,x]of d.entries()){let b=c1e(u.get(x)??[]);if(gs.has(y.src)&&l.has(y.dst)),d=u?r.filter(y=>l.has(y.src)&&u.has(y.dst)):void 0,f=o(y=>{let v=u1e(e,y,h);return d&&n&&(v+=u1e(y,n,d)),v},"crossingScore"),p=i?new Map:null;if(i&&p)for(let y of t)p.set(y,i(y));let m=!0,g=f(a);for(;m;){m=!1;for(let y=0;y+1[...l]),i=t.edges,a=cs(t),s=k5(t,r?.laneOrder);for(let l=0;l<3;l++){for(let u=1;u=0;u--)n[u]=h1e(n[u+1],n[u],i,"up",a,s),n[u]=d1e(n[u+1],n[u],i,n[u-1],a)}return{layers:n}}var p1e=F(()=>{"use strict";yu();Dh();o(l1e,"median");o(c1e,"barycenter");o(tut,"neighborPositionsFor");o(rut,"currentOrderTieBreak");o(u1e,"countCrossingsBetweenAdjacent");o(yB,"sortByHeuristic");o(h1e,"reorderLayer");o(d1e,"transposeImprove");o(f1e,"orderLayers")});function m1e(e,t,r){let n=r?.layerGap??pB.DEFAULT_LAYER_GAP,i=r?.nodeGap??pB.DEFAULT_NODE_GAP,a=r?.laneGap??i*2,s=r?.direction??"TB",l=s==="LR"||s==="RL",u=e.layers,h=Object.create(null),d=Object.create(null),f=o(N=>t.nodeById.get(N),"getNode"),p=o(N=>f(N)?.width??0,"getWidth"),m=o(N=>f(N)?.height??0,"getHeight"),g=cs(t),y=k5(t,r?.laneOrder),v=u.map(N=>N.reduce((I,_)=>Math.max(I,m(_)),0)),x=[];if(l)for(let N=0;N+1Math.max(O,p($)),0),_=u[N+1].reduce((O,$)=>Math.max(O,p($)),0),A=v[N],M=v[N+1],D=A/2+M/2,P=(I+_)/2,B=Math.max(0,P-D-n);x.push(B)}let b=new Set;for(let N of u)for(let I of N)b.add(g(I));let T=b.has(null),k=y.filter(N=>b.has(N)),C=[...T?[null]:[],...k],w=Object.create(null);for(let N of k)w[N]=0;T&&(w.null=0);for(let N of u){let I=Object.create(null),_=[];for(let A of N){let M=g(A);M===null?_.push(A):(I[M]||=[]).push(A)}for(let[A,M]of Object.entries(I)){let D=M.reduce((P,B)=>P+p(B),0)+i*Math.max(0,M.length-1);w[A]=Math.max(w[A]??0,D)}if(T&&_.length){let A=_.reduce((M,D)=>M+p(D),0)+i*Math.max(0,_.length-1);w.null=Math.max(w.null??0,A)}}let S=new Map;{let N=C.map(A=>(A===null?w.null:w[A])??0),_=-(N.reduce((A,M)=>A+M,0)+a*Math.max(0,C.length-1))/2;for(let A=0;Ap(G)),$=O.reduce((G,z)=>G+z,0)+i*(P.length-1),V=B-$/2;for(let[G,z]of P.entries()){let W=O[G];h[z]=V+W/2,d[z]=R+_/2,V+=W+i}}}let M=x[N]??0;R+=_+n+M}let L=new Map;for(let N of t.edges){let I=N.ref.id;L.has(I)||L.set(I,[]),L.get(I).push(N)}for(let[,N]of L){if(N.length===0)continue;let I=N[0].ref,_=I.start,A=I.end;if(_==null||A==null)continue;let M=Math.round(((h[_]??0)+(h[A]??0))/2),D=new Set;for(let P of N)D.add(P.src),D.add(P.dst);for(let P of D){if(P===_||P===A)continue;t.nodeById.get(P)?.isDummy&&(h[P]=M)}}return{x:h,y:d}}var g1e=F(()=>{"use strict";C1();Dh();o(m1e,"assignCoordinates")});function nut(e){let t=2166136261;for(let r=0;r>>0}function iut(e){let t=e>>>0;return()=>{t+=1831565813;let r=t;return r=Math.imul(r^r>>>15,r|1),r^=r+Math.imul(r^r>>>7,r|61),((r^r>>>14)>>>0)/4294967296}}function aut(e,t){let r=[...e],n=iut(t);for(let i=r.length-1;i>0;i--){let a=Math.floor(n()*(i+1));[r[i],r[a]]=[r[a],r[i]]}return r}function sut(e,t){let r=0;for(let[n,i]of e.entries())r+=Math.abs(n-(t.get(i)??n));return r}function y1e(e,t){let r=new Map;for(let[i,a]of e.entries())r.set(a,i);let n=0;for(let{a:i,b:a,weight:s}of t){let l=r.get(i),u=r.get(a);l==null||u==null||(n+=s*Math.abs(l-u))}return n}function out(e){let t=w5(e);if(t.length<2)return[];let r=new Map(t.map((a,s)=>[a,s])),n=cs(e),i=new Map;for(let a of e.layout.edges??[]){if(a.isLayoutOnly)continue;let s=typeof a.start=="string"?a.start:void 0,l=typeof a.end=="string"?a.end:void 0;if(!s||!l||!e.nodeById.has(s)||!e.nodeById.has(l))continue;let u=n(s),h=n(l);if(!u||!h||u===h)continue;let d=r.get(u),f=r.get(h);if(d==null||f==null)continue;let[p,m]=d<=f?[u,h]:[h,u],g=`${p}\0${m}`,y=i.get(g);y?y.weight++:i.set(g,{a:p,b:m,weight:1})}return[...i.values()]}function v1e(e,t,r){let n=[...e],i=y1e(n,t),a=!0,s=0,l=Math.max(1,n.length);for(;a&&si.a===a.a?i.b.localeCompare(a.b):i.a.localeCompare(a.a)).map(({a:i,b:a,weight:s})=>`${i}:${a}:${s}`).join("|");return nut(`${e.join("|")}#${n}#${r}`)}function x1e(e,t={}){let r=w5(e);if(r.length<2)return r;let n=out(e);if(n.length===0)return r;let i=new Map(r.map((l,u)=>[l,u])),a=v1e(r,n,i),s=Math.max(0,t.restarts??vB);for(let l=0;l{"use strict";Dh();vB=8;o(nut,"hashString");o(iut,"mulberry32");o(aut,"deterministicShuffle");o(sut,"sourceDistance");o(y1e,"laneArrangementCost");o(out,"buildWeightedLaneEdges");o(v1e,"greedySwitch");o(lut,"isBetterCandidate");o(cut,"seedForRestart");o(x1e,"optimizeTopLaneOrder")});function T1e(e,t){let r=t?.ignoreCrossLaneEdges??!0,n=t?.optimizeRanksByCrossings??!0,i=po(e),a=t?.automaticLaneOrdering?x1e(i,{restarts:vB}):void 0,s=$ye(i),l=s.acyclic,u=r?i1e(l,{compactSingleInput:t?.compactSingleInput??Um.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!0,direction:t?.direction}):r1e(l,{compactSingleInput:t?.compactSingleInput??Um.DEFAULT_COMPACT_SINGLE_INPUT,ignoreCrossLaneEdges:!1,optimizeRanksByCrossings:n}),{layering:h,graphWithDummies:d}=s1e(u,l),f=f1e(h,d,{laneOrder:a}),p=m1e(f,d,{layerGap:t?.layerGap,nodeGap:t?.nodeGap,direction:t?.direction,laneOrder:a});return{acyclic:l,reversed:s.reversed,layering:h,ordered:f,coordinates:p}}var C1e=F(()=>{"use strict";yu();Fye();n1e();a1e();o1e();p1e();g1e();C1();b1e();o(T1e,"sugiyamaLayout")});function w1e(e,t,r){let n=e.x??0,i=e.y??0,a=t.x-n,s=t.y-i,l=Math.abs(a),u=Math.abs(s);return lXr&&u*3>=l?s>0?"bottom":"top":l>Xr?a>0?"right":"left":r}function k1e(e,t){return Math.abs(e.to-t.from)re.isGroup&&!re.parentId);for(let re of h){let J={id:re.id},se=o(ge=>{s.set(ge.id,J),r.filter(Te=>Te.parentId===ge.id).forEach(se)},"assignLane");se(re)}let d=r.filter(re=>!re.isGroup&&!re.isEdgeLabel).map(re=>{let J=re.width??10,se=re.height??10,ge=re.x??0,Te=re.y??0,we=uut;return{nodeId:re.id,minX:ge-J/2-we,maxX:ge+J/2+we,minY:Te-se/2-we,maxY:Te+se/2+we,visualXHalfExtent:u?se/2+we:J/2+we}}),f=o((re,J,se,ge)=>{let Te=l.find(we=>we.orientation===re&&Math.abs(we.coord-J)<1);return Te||(Te={id:`pipe-${re}-${J.toFixed(0)}`,orientation:re,coord:J,spanMin:se,spanMax:ge,tracks:[]},l.push(Te)),Te.spanMin=Math.min(Te.spanMin,se),Te.spanMax=Math.max(Te.spanMax,ge),Te},"getOrAddPipe"),p=o((re,J)=>{let se=re.width??10,ge=re.height??10,Te=re.x??0,we=re.y??0;switch(J){case"top":return{x:Te,y:we-ge/2};case"bottom":return{x:Te,y:we+ge/2};case"left":return{x:Te-se/2,y:we};case"right":return{x:Te+se/2,y:we}}},"portForSide"),m=o((re,J,se)=>p(re,w1e(re,J,se?"bottom":"top")),"getOrthogonalPort"),g=[],y=[],v=new Set,x=1e3,b=o((re,J,se)=>{if(g.length===0)return 0;let ge=Math.abs(J.y-se.y)ne||q.from-Xr<=Me&&q.to+Xr>=Me&&(we+=x)}else if(Te){let Me=J.x,ve=Math.min(J.y,se.y)-Xr,ne=Math.max(J.y,se.y)+Xr;if(ne<=ve)return 0;for(let q of g)q.edgeIndex===re||q.orientation!=="horizontal"||q.pipe.coordne||q.from-Xr<=Me&&q.to+Xr>=Me&&(we+=x)}return we},"crossingPenalty"),T=i.map((re,J)=>{if(!re.start||!re.end)return{idx:J,crossLane:0,dx:0,dy:0};let se=a.get(re.start),ge=a.get(re.end),Te=s.get(re.start),we=s.get(re.end),Me=Te&&we&&Te.id!==we.id?1:0,ve=se&&ge?Math.abs((ge.x??0)-(se.x??0)):0,ne=se&&ge?Math.abs((ge.y??0)-(se.y??0)):0;return{idx:J,crossLane:Me,dx:ve,dy:ne}}).sort((re,J)=>{if(re.crossLane!==J.crossLane)return J.crossLane-re.crossLane;let se=re.dx+re.dy,ge=J.dx+J.dy;return Math.abs(se-ge)>1?se-ge:re.idx-J.idx}).map(re=>re.idx),k=o((re,J,se,ge)=>{let Te=Math.min(re.x,J.x),we=Math.max(re.x,J.x),Me=Math.min(re.y,J.y),ve=Math.max(re.y,J.y);return!!d.find(q=>se&&q.nodeId===se||ge&&q.nodeId===ge?!1:Math.abs(re.x-J.x)>Xr?q.minYre.y&&q.maxX>Te&&q.minXre.x&&q.maxY>Me&&q.minYw1e(re,J,"bottom"),"determineSide"),R=new Map;for(let[re,J]of i.entries()){if(!J.start||!J.end||J.start===J.end||J.points&&J.points.length>0)continue;let se=a.get(J.start),ge=a.get(J.end);if(!se||!ge)continue;let Te=(ge.x??0)-(se.x??0),we=(ge.y??0)-(se.y??0);R.set(re,{edgeIdx:re,srcId:J.start,dstId:J.end,srcSide:S(se,{x:ge.x??0,y:ge.y??0}),dstSide:S(ge,{x:se.x??0,y:se.y??0}),absDx:Math.abs(Te),absDy:Math.abs(we),dxSign:Math.sign(Te),dySign:Math.sign(we)})}let L=o(re=>re.srcSide==="top"||re.srcSide==="bottom"?re.absDx===0?1/0:re.absDy/re.absDx:re.absDy===0?1/0:re.absDx/re.absDy,"preferenceStrength"),N=o(re=>re.srcSide==="top"||re.srcSide==="bottom"?re.dxSign>=0?"right":"left":re.dySign>=0?"bottom":"top","secondarySide"),I=new Map;for(let re of R.values()){let J=`${re.srcId}:${re.srcSide}`;I.has(J)||I.set(J,[]),I.get(J).push(re)}let _=new Map,A=o((re,J)=>`${re}:${J}`,"loadKey");for(let re of R.values())_.set(A(re.srcId,re.srcSide),(_.get(A(re.srcId,re.srcSide))??0)+1),_.set(A(re.dstId,re.dstSide),(_.get(A(re.dstId,re.dstSide))??0)+1);for(let re of I.values())if(!(re.length<2)){re.sort((J,se)=>{let ge=L(J),Te=L(se);return Math.abs(ge-Te)>1e-9?Te-ge:J.edgeIdx-se.edgeIdx});for(let J=1;J=Te||(_.set(A(se.srcId,se.srcSide),Te-1),_.set(A(se.srcId,ge),we+1),se.srcSide=ge)}}let M=o(re=>{let J=re?.shape;return J==="question"||J==="diamond"},"isDiamondNode"),D=new Map;for(let re of R.values())D.has(re.dstId)||D.set(re.dstId,new Set),D.get(re.dstId).add(re.dstSide);for(let re of R.values()){if(!M(a.get(re.srcId)))continue;let J=D.get(re.srcId);if(!J?.has(re.srcSide))continue;let se=N(re);if(J.has(se)||(_.get(A(re.srcId,se))??0)>0)continue;let ge=_.get(A(re.srcId,re.srcSide))??0;_.set(A(re.srcId,re.srcSide),Math.max(0,ge-1)),_.set(A(re.srcId,se),1),re.srcSide=se}for(let re of R.values()){let{edgeIdx:J,srcId:se,dstId:ge,srcSide:Te,dstSide:we}=re,Me=a.get(se),ve=a.get(ge),ne=`${se}:${Te}:src`,q=Te==="top"||Te==="bottom"?ve.x??0:ve.y??0;C.has(ne)||C.set(ne,[]),C.get(ne).push({edgeIdx:J,oppositeCoord:q});let he=`${ge}:${we}:dst`,X=we==="top"||we==="bottom"?Me.x??0:Me.y??0;C.has(he)||C.set(he,[]),C.get(he).push({edgeIdx:J,oppositeCoord:X})}let P=new Map,B=8;for(let[re,J]of C){if(J.length<2)continue;J.sort((Be,Ne)=>Be.oppositeCoord-Ne.oppositeCoord);let se=re.split(":"),ge=se.slice(0,-2).join(":"),Te=se[se.length-2],we=se[se.length-1],Me=a.get(ge);if(!Me)continue;let ne=Te==="left"||Te==="right"?Me.height??10:Me.width??10,q=Me.shape,X=q==="question"||q==="diamond"?ne*.3:ne,K=Math.min(20,Math.max(B,X/(J.length+1))),_e=-(K*(J.length-1))/2;for(let[Be,Ne]of J.entries()){let He=_e+Be*K,$e=`${Ne.edgeIdx}:${we}`;P.set($e,He)}}let O=o(re=>!!i[re]?.labelNodeId,"edgeHasLabelNode"),$=o((re,J)=>re?(C.get(`${re}:${J}:src`)??[]).some(({edgeIdx:se})=>O(se))||(C.get(`${re}:${J}:dst`)??[]).some(({edgeIdx:se})=>O(se)):!1,"faceHasLabelNode"),V=o((re,J,se)=>J==="top"||J==="bottom"?{x:re.x+se,y:re.y}:{x:re.x,y:re.y+se},"applyPortOffset"),G=o((re,J,se)=>{let ge=R.get(re),Te={x:se.x??0,y:se.y??0},we={x:J.x??0,y:J.y??0},Me=ge?.srcSide??S(J,Te),ve=ge?.dstSide??S(se,we),ne=ge?p(J,ge.srcSide):m(J,Te,!0),q=ge?p(se,ge.dstSide):m(se,we,!1),he=P.get(`${re}:src`),X=P.get(`${re}:dst`);return he!==void 0&&(ne=V(ne,Me,he)),X!==void 0&&(q=V(q,ve,X)),{pSrcPort:ne,pDstPort:q,srcSide:Me,dstSide:ve}},"portsForEdge");for(let re of T){let J=i[re];if(y[re]=[],!J.start||!J.end||J.points&&J.points.length>0||J.start===J.end)continue;let se=a.get(J.start),ge=a.get(J.end);if(!se||!ge)continue;let{pSrcPort:Te,pDstPort:we,srcSide:Me,dstSide:ve}=G(re,se,ge),ne={...Te},q={...we},he=Me==="top"||Me==="bottom",X=ve==="top"||ve==="bottom";if(he){let We=Te.y>(se.y??0);ne.y=We?Te.y+Cl:Te.y-Cl}else{let We=Te.x>(se.x??0);ne.x=We?Te.x+Cl:Te.x-Cl}if(X){let We=we.y>(ge.y??0);q.y=We?we.y+Cl:we.y-Cl}else{let We=we.x>(ge.x??0);q.x=We?we.x+Cl:we.x-Cl}let fe=o((We,rt)=>{for(let yt of d)if(!rt.includes(yt.nodeId)&&We.x>yt.minX&&We.xyt.minY&&We.y{if(Ht){let Er=We.y>(rt.y??0);return{x:(yt.x??0)>=We.x?Yt.maxX+Ym:Yt.minX-Ym,y:Er?Yt.maxY+w1:Yt.minY-w1,leavesPositiveSide:Er}}let pr=We.x>(rt.x??0),Hr=(yt.y??0)>=We.y;return{x:pr?Yt.maxX+Ym:Yt.minX-Ym,y:Hr?Yt.maxY+w1:Yt.minY-w1,leavesPositiveSide:pr}},"obstacleDetour"),qe=[],_e=[J.start,J.end],Be=fe(ne,_e);if(Be.inside&&Be.obstacle){let We=Be.obstacle;if(he){let rt=K(Te,se,ge,We,!0);ne.x=rt.x,ne.y=rt.y;let yt=rt.leavesPositiveSide?Math.min(We.minY-2,Te.y+Cl):Math.max(We.maxY+2,Te.y-Cl);qe=[{x:Te.x,y:yt},{x:rt.x,y:yt},{x:rt.x,y:rt.y}]}else{let rt=K(Te,se,ge,We,!1),yt=rt.leavesPositiveSide?Math.min(We.minX-2,Te.x+Cl):Math.max(We.maxX+2,Te.x-Cl);ne.x=rt.x,ne.y=rt.y,qe=[{x:yt,y:Te.y},{x:yt,y:rt.y},{x:rt.x,y:rt.y}]}}let Ne=[],He=fe(q,_e);if(He.inside&&He.obstacle){let We=He.obstacle;if(X){let rt=K(we,ge,se,We,!0);q.x=rt.x,q.y=rt.y,Ne=[{x:rt.x,y:rt.y},{x:we.x,y:rt.y}]}else{let rt=K(we,ge,se,We,!1);q.x=rt.x,q.y=rt.y,Ne=[{x:rt.x,y:rt.y},{x:rt.x,y:we.y}]}}if(qe.length===0&&Ne.length===0){let We=Ym,rt=Math.abs(ne.x-q.x)1||pr>1,Er=w.get(J.start??"")??0,kt=w.get(J.end??"")??0,Ct=Ht>1&&$(J.start,Me)||pr>1&&$(J.end,ve),Ot=Ht<=1||Er<=2,Ft=pr<=1||kt<=2;if((rt||yt)&&!Yt&&(!Hr||Hr&&!Ct&&Ot&&Ft)&&!k(Te,we,J.start,J.end)){J.points=[{...Te},{...ne},{...q},{...we}],v.add(re);let Se=yt?"horizontal":"vertical",ri=yt?Te.y:Te.x,Ie=yt?Math.min(Te.x,we.x):Math.min(Te.y,we.y),Nr=yt?Math.max(Te.x,we.x):Math.max(Te.y,we.y),Pa={id:`fast-path-${Se}-${ri.toFixed(0)}-${re}`,orientation:Se,coord:ri,spanMin:Ie,spanMax:Nr,tracks:[]};g.push({edgeIndex:re,segmentIndex:0,orientation:Se,pipe:Pa,trackIndex:0,from:Ie,to:Nr});continue}}let $e=f("vertical",ne.x,ne.y,ne.y);ne.x=$e.coord;let Xe=f("vertical",q.x,q.y,q.y);q.x=Xe.coord;let Fe=Math.min(ne.x,q.x)-50,Ke=Math.max(ne.x,q.x)+50,xe=Math.min(ne.y,q.y)-50,mt=Math.max(ne.y,q.y)+50;for(let We of d){let rt=Math.min(ne.x,q.x),yt=Math.max(ne.x,q.x),Yt=Math.min(ne.y,q.y),Ht=Math.max(ne.y,q.y);We.minXrt&&We.minYYt&&(Fe=Math.min(Fe,We.minX-S5),Ke=Math.max(Ke,We.maxX+S5),xe=Math.min(xe,We.minY-S5),mt=Math.max(mt,We.maxY+S5))}for(let We of d){if(We.maxXKe||We.maxYmt)continue;let rt=Ym;f("horizontal",We.minY-rt,Fe,Ke),f("horizontal",We.maxY+rt,Fe,Ke);let yt=w1;f("vertical",We.minX-yt,xe,mt),f("vertical",We.maxX+yt,xe,mt)}f("horizontal",ne.y,Fe,Ke),f("horizontal",q.y,Fe,Ke);let Le=l.filter(We=>We.orientation==="horizontal"&&We.coord>=xe&&We.coord<=mt),ft=l.filter(We=>We.orientation==="vertical"&&We.coord>=Fe&&We.coord<=Ke),wt=o((We,rt)=>`${We.toFixed(1)},${rt.toFixed(1)}`,"getKey"),zt=wt(ne.x,ne.y),St=wt(q.x,q.y),At=new Map,bt=new Map,me=new Map,lt=new Set,gt=[];At.set(zt,0),me.set(zt,"n"),gt.push({key:zt,f:Math.hypot(q.x-ne.x,q.y-ne.y),pt:ne}),lt.add(zt);let Ze=[],Ee=o((We,rt)=>k(We,rt,J.start,J.end),"checkSegmentBlocked"),tt={x:q.x,y:ne.y},at=Ee(ne,tt),ot=Ee(tt,q),Wt=at||ot,Bt={x:ne.x,y:q.y},qt=Ee(ne,Bt),vr=Ee(Bt,q);if(Wt?qt||vr||(Math.abs(ne.x-q.x)0;){gt.sort((kt,Ct)=>kt.f-Ct.f);let We=gt.shift();if(lt.delete(We.key),We.key===St){let kt=St,Ct=q;for(Ze=[Ct];bt.has(kt);){let Ot=bt.get(kt);Ze.unshift(Ot),Ct=Ot,kt=wt(Ot.x,Ot.y)}break}let rt=We.pt.x,yt=We.pt.y,Yt=ft.sort((kt,Ct)=>kt.coord-Ct.coord),Ht=Yt.findIndex(kt=>Math.abs(kt.coord-rt)<1),pr=Le.sort((kt,Ct)=>kt.coord-Ct.coord),Hr=pr.findIndex(kt=>Math.abs(kt.coord-yt)<1),Er=[];Ht>0&&Er.push({x:Yt[Ht-1].coord,y:yt}),Ht>=0&&Ht0&&Er.push({x:rt,y:pr[Hr-1].coord}),Hr>=0&&Hrjs.nodeId===J.start||js.nodeId===J.end?!1:Ct!==Ot?js.minYyt&&js.maxX>Ct&&js.minXrt&&js.maxY>Ft&&js.minY10&&$0<-5||Xu<-10&&$0>5)&&(Nr=Math.abs($0)*100),(Pa>10&&B0<-5||Pa<-10&&B0>5)&&(Nr+=Math.abs(B0)*50);let dk=0,Pi=me.get(We.key)??"n",Mc=Math.abs(B0)>Xr?"h":"v";Pi!=="n"&&Pi!==Mc&&(dk=50);let Px=ri+Ie+Nr+dk,bd=(At.get(We.key)??1/0)+Px,fk=Math.abs(q.x-kt.x)+Math.abs(q.y-kt.y);if(bd<(At.get(Se)??1/0))if(bt.set(Se,We.pt),At.set(Se,bd),me.set(Se,Mc),!lt.has(Se))gt.push({key:Se,f:bd+fk,pt:kt}),lt.add(Se);else{let js=gt.findIndex(RD=>RD.key===Se);js!==-1&&(gt[js].f=bd+fk)}}}if(Ze.length===0&&(Ze=[ne,{x:ne.x,y:q.y},q]),Ze.length>4){let We=Ze[0],rt=Ze[Ze.length-1],yt=Math.min(We.x,rt.x),Yt=Math.max(We.x,rt.x),Ht=Math.min(We.y,rt.y),pr=Math.max(We.y,rt.y);for(let Ft of Ze)yt=Math.min(yt,Ft.x),Yt=Math.max(Yt,Ft.x),Ht=Math.min(Ht,Ft.y),pr=Math.max(pr,Ft.y);let Hr=Yt>Math.max(We.x,rt.x),Er=ytIe.minXRt&&Ie.minYgr);if(ri.length>0){let Ie=Math.max(We.x,rt.x);for(let Nr of ri){let Pa=(Nr.minX+Nr.maxX)/2;if(Nr.visualXHalfExtent===void 0||isNaN(Nr.visualXHalfExtent))continue;let Xu=Pa+Nr.visualXHalfExtent+Ft;Ie=Math.max(Ie,Xu)}isNaN(Ie)||(Yt=Ie)}}if(Er){let Rt=d.filter(gr=>gr.minXMath.min(We.y,rt.y));if(Rt.length>0){let gr=Math.min(We.x,rt.x);for(let Se of Rt){let Ie=(Se.minX+Se.maxX)/2-Se.visualXHalfExtent-Ft;gr=Math.min(gr,Ie)}yt=gr}}}let kt=o(Ft=>{let Rt=rt.y>We.y,gr=d.filter(Ie=>{let Nr=Math.min(We.x,rt.x)Ie.minX,Pa=Math.min(We.y,rt.y)Ie.minY;return Nr&&Pa}),Se=gr;if(u&&gr.length>0){let Ie=gr.filter(Nr=>Nr.minXFt);Ie.length>0&&(Se=Ie)}if(Se.length===0)return rt.y;let ri=Ym;if(Rt){let Nr=Math.max(...Se.map(Pa=>Pa.maxY))+ri;if(NrPa.minY))-ri;if(Nr>rt.y+Xr)return Nr}return rt.y},"findBestReturnY"),Ct=o(Ft=>{let Rt=kt(Ft),gr={x:Ft,y:We.y},Se={x:Ft,y:Rt},ri={x:rt.x,y:Rt},Ie=Ee(We,gr),Nr=Ee(gr,Se),Pa=Ee(Se,ri),Xu=Rt!==rt.y?Ee(ri,rt):!1;return!Ie&&!Nr&&!Pa&&!Xu?Math.abs(Rt-rt.y)=3){let We=De[De.length-1],rt=De[De.length-2],yt=De[De.length-3],Yt=Math.abs(yt.y-rt.y)Math.abs(We.x-yt.x)&&De.splice(-2,1)}else if(Ht){let pr=Math.sign(rt.y-yt.y),Hr=Math.sign(We.y-yt.y);pr!==0&&pr===Hr&&Math.abs(rt.y-yt.y)>Math.abs(We.y-yt.y)&&De.splice(-2,1)}}let it=[De[0]];for(let We=1;Wert.x,pr=Yt.x>yt.x;if(Ht!==pr){it.push(yt);continue}continue}if(Math.abs(rt.x-yt.x)rt.y,pr=Yt.y>yt.y;if(Ht!==pr){it.push(yt);continue}continue}it.push(yt)}it.push(De[De.length-1]);for(let We=0;Were.from{let Te=!ge.segments.some(Me=>(Me.edgeIndex!==J.edgeIndex||Me.segmentIndex!==J.segmentIndex)&&z(Me,re)),we=!se.segments.some(Me=>(Me.edgeIndex!==re.edgeIndex||Me.segmentIndex!==re.segmentIndex)&&z(Me,J));return Te&&we?(re.trackIndex=ge.index,J.trackIndex=se.index,se.segments=[...se.segments.filter(Me=>Me.edgeIndex!==re.edgeIndex||Me.segmentIndex!==re.segmentIndex),{edgeIndex:J.edgeIndex,segmentIndex:J.segmentIndex,from:J.from,to:J.to}],ge.segments=[...ge.segments.filter(Me=>Me.edgeIndex!==J.edgeIndex||Me.segmentIndex!==J.segmentIndex),{edgeIndex:re.edgeIndex,segmentIndex:re.segmentIndex,from:re.from,to:re.to}],!0):!1},"trySwapSegmentsAcrossTracks"),H=o(re=>{let J=re.tracks.length;return re.tracks[J]={index:J,coord:re.coord,segments:[]},J},"createNewTrack"),j=o((re,J)=>{let se=re.pipe.tracks[re.trackIndex];se.segments=se.segments.filter(Te=>Te.edgeIndex!==re.edgeIndex||Te.segmentIndex!==re.segmentIndex),re.trackIndex=J,re.pipe.tracks[J].segments.push({edgeIndex:re.edgeIndex,segmentIndex:re.segmentIndex,from:re.from,to:re.to})},"moveSegmentToTrack"),Q=o((re,J)=>{let se=y[re.edgeIndex];for(let ge of se){let Te=g[ge];Te.pipe===re.pipe&&j(Te,J)}},"moveSegmentChainToTrack"),U=o(re=>{let J=y[re.edgeIndex],se=J.indexOf(g.indexOf(re)),ge=[];return se>0&&ge.push(g[J[se-1]]),se{if(re.orientation===J.orientation)return!1;let se=re.orientation==="horizontal"?re:J,ge=re.orientation==="horizontal"?J:re;return ge.pipe.coord>se.from&&ge.pipe.coordge.from&&se.pipe.coord{for(let se of re.tracks)if(!se.segments.some(Te=>(Te.edgeIndex!==J.edgeIndex||Te.segmentIndex!==J.segmentIndex)&&z(Te,J)))return se.index;return-1},"findAvailableTrack"),le=o((re,J)=>{if(re.trackIndex===J.trackIndex)return z(re,J);let se=U(re),ge=U(J);return se.some(Te=>ge.some(we=>oe(Te,we)))},"segmentsConflict"),ie=o((re,J,se)=>{if(W(re,J,re.pipe.tracks[re.trackIndex],J.pipe.tracks[J.trackIndex]))return;let ge=te(re.pipe,J);se(J,ge!==-1?ge:H(re.pipe))},"resolveTrackConflict"),ae=o(re=>{let J=0;for(let se=0;se{if(Re.has(re))return Re.get(re);let J=y[re];if(J.length===0){let ve={dest:0,deviation:0,base:0,delta:0};return Re.set(re,ve),ve}let ge=g[J[0]].pipe.coord,Te=ge;for(let ve=1;veMath.abs(he-ge)?q:he;break}}let we=Math.abs(Te-ge),Me={dest:Te,deviation:we,base:ge,delta:Te-ge};return Re.set(re,Me),Me},"getDestInfo"),Pe=o(()=>{let re=0,J=new Map;for(let[ge,Te]of i.entries())y[ge].length!==0&&Te.start&&(J.has(Te.start)||J.set(Te.start,[]),J.get(Te.start).push(ge));let se=o(ge=>{let Te=i[ge];if(!Te.start||!Te.end)return 0;let we=a.get(Te.start),Me=a.get(Te.end);if(!we||!Me)return 0;let ve=(Me.x??0)-(we.x??0),ne=(Me.y??0)-(we.y??0);return Math.abs(ve)+Math.abs(ne)},"getEdgeDistance");for(let ge of J.values()){ge.sort((we,Me)=>{let ve=be(we),ne=be(Me);if(Math.abs(ve.deviation-ne.deviation)>1)return ve.deviation-ne.deviation;if(Math.abs(ve.dest-ne.dest)>1)return ve.dest-ne.dest;let q=se(we),he=se(Me);if(Math.abs(q-he)>1)return he-q;let X=y[we].length,fe=y[Me].length;if(X!==fe)return X-fe;if(X===1){let K=y[we][0],qe=y[Me][0];if(g[K]&&g[qe]){let _e=g[K],Be=g[qe],Ne=Math.abs(_e.to-_e.from),He=Math.abs(Be.to-Be.from);if(Math.abs(Ne-He)>1)return Ne-He}}return 0});let Te=ge.map(we=>g[y[we][0]]);re+=ae(Te)}return re},"fixSourceHandleCrossings"),Ge=o(()=>{let re=0,J=new Map;for(let[se,ge]of i.entries())y[se].length!==0&&ge.end&&(J.has(ge.end)||J.set(ge.end,[]),J.get(ge.end).push(se));for(let se of J.values()){se.sort((Te,we)=>{let Me=o(q=>{let he=y[q];if(he.length<2)return 0;let X=g[he[he.length-2]];return Math.abs(X.to-X.from)},"getDist"),ve=Me(Te),ne=Me(we);return Math.abs(ve-ne)>.1?ve-ne:Te-we});let ge=se.map(Te=>g[y[Te][y[Te].length-1]]);re+=ae(ge)}return re},"fixTargetHandleCrossings"),Oe=o(()=>{let re=0;for(let J of l){let se=[];for(let ge of J.tracks)for(let Te of ge.segments){let we=y[Te.edgeIndex].find(Me=>g[Me].segmentIndex===Te.segmentIndex);we!==void 0&&se.push(g[we])}se.sort((ge,Te)=>ge.edgeIndex-Te.edgeIndex||ge.segmentIndex-Te.segmentIndex);for(let ge=0;ge{ge.segments.forEach(Te=>{J.push({edgeIndex:Te.edgeIndex,segmentIndex:Te.segmentIndex,trackIndex:ge.index,from:Te.from,to:Te.to})})}),J.sort((ge,Te)=>ge.from-Te.from);let se=[];if(J.length>0){let ge=[J[0]],Te=J[0].to;for(let we=1;weTe.add(K.trackIndex));let we=new Map;ge.forEach(K=>{let qe=be(K.edgeIndex);we.set(K.trackIndex,(we.get(K.trackIndex)??0)+qe.delta)});let Me=[...Te].filter(K=>(we.get(K)??0)<-1),ve=[...Te].filter(K=>(we.get(K)??0)>1),ne=[...Te].filter(K=>Math.abs(we.get(K)??0)<=1);Me.sort((K,qe)=>(we.get(qe)??0)-(we.get(K)??0)),ve.sort((K,qe)=>(we.get(K)??0)-(we.get(qe)??0));let q=o((K,qe)=>{ge.filter(_e=>_e.trackIndex===K).forEach(_e=>{let Be=v.has(_e.edgeIndex)?re.coord:qe;ke.set(`${_e.edgeIndex}-${_e.segmentIndex}`,Be)})},"assignCoord"),he=0;for(let K of Me)he++,q(K,re.coord-he*xB);if(ne.length===0&&Te.size>0){let K=[...Te].sort((Be,Ne)=>Math.abs(we.get(Be)??0)-Math.abs(we.get(Ne)??0))[0],qe=Me.indexOf(K);qe!==-1&&Me.splice(qe,1);let _e=ve.indexOf(K);_e!==-1&&ve.splice(_e,1),ne.push(K)}let X=0;for(let K of ne){if(X===0)q(K,re.coord);else{let qe=X%2===1?1:-1,_e=Math.ceil(X/2);q(K,re.coord+qe*_e*xB*.5)}X++}let fe=0;for(let K of ve)fe++,q(K,re.coord+fe*xB)}}for(let[re,J]of i.entries()){let se=y[re]??[];if(se.length===0)continue;let ge=[],Te=a.get(J.start),we=a.get(J.end),{pSrcPort:Me,pDstPort:ve}=G(re,Te,we),ne=se.map(X=>{let fe=g[X],K=ke.get(`${fe.edgeIndex}-${fe.segmentIndex}`)??fe.pipe.coord;return{orient:fe.orientation,coord:K,from:fe.from,to:fe.to}});ge.push(Me);for(let X=0;XXr&&ge.push(k1(fe,qe)),Ne&&Be.orient===fe.orient)if(Math.abs(fe.coord-Be.coord)>Xr){let He=fe.orient==="vertical"?(qe+Be.from)/2:k1e(fe,Be);ge.push(k1(fe,He),k1(Be,He))}else(X===0||X===ne.length-2)&&ge.push(k1(fe,k1e(fe,Be)));else if(Ne)ge.push(k1(fe,Be.coord));else{let He=Math.abs(fe.from-qe)Xr||Math.abs(q.y-ve.y)>Xr)&&ge.push(ve);let he=[];ge.length>0&&he.push(ge[0]);for(let X=1;XXr||Math.abs(fe.y-K.y)>Xr)&&he.push(fe)}J.points=he}for(let re of i){let J=re.__originalEdge;J&&re.points&&(J.points=re.points)}e.edges=(e.edges??[]).filter(re=>!re.isLayoutOnly);let ce=o((re,J)=>{let se=J.x??0,ge=J.y??0,Te=J.width??0,we=J.height??0;if(Te<=0||we<=0)return re;let Me=se-Te/2,ve=se+Te/2,ne=ge-we/2,q=ge+we/2;if(re.xve||re.yq)return re;let he=re.x-Me,X=ve-re.x,fe=re.y-ne,K=q-re.y,qe=Math.min(he,X,fe,K);return qe===he?{x:Me,y:re.y}:qe===X?{x:ve,y:re.y}:qe===fe?{x:re.x,y:ne}:{x:re.x,y:q}},"nodeBoundaryClamp");for(let re of e.edges){let J=re.points;if(!J||J.length<2)continue;let se=re.start,ge=re.end,Te=se?a.get(se):void 0,we=ge?a.get(ge):void 0;Te&&(J[0]=ce(J[0],Te)),we&&(J[J.length-1]=ce(J[J.length-1],we))}return e}var Xr,uut,Ym,w1,S5,Cl,xB,E1e=F(()=>{"use strict";C1();Xr=zye.EPSILON,uut=8,Ym=15,w1=15,S5=25,Cl=20,xB=10;o(w1e,"chooseOrthogonalSide");o(k1e,"sharedLineEndpointCoord");o(k1,"pointOnLine");o(S1e,"routeEdgesOrthogonal")});function hut(e){return e.direction??"TB"}function A1e(e){let t=$0e(e),r=e.config.flowchart?.nodeSpacing??40,n=e.config.flowchart?.rankSpacing??100,i=e.config.swimlane?.ignoreCrossLaneEdges??!0,a=e.config.swimlane?.optimizeRanksByCrossings??!0,s=e.config.swimlane?.automaticLaneOrdering??!1,l=hut(e),{ordered:u,coordinates:h}=T1e(t,{nodeGap:r,layerGap:n,ignoreCrossLaneEdges:i,optimizeRanksByCrossings:a,automaticLaneOrdering:s,direction:l});F0e(t,u,h,{nodeGap:r,layerGap:n});for(let d of e.edges??[])delete d.points;S1e(e,l);for(let d of e.edges??[])(!d.curve||d.curve==="basis")&&(d.curve="rounded");return Oye(e,l),uB(e),l}var R1e=F(()=>{"use strict";Bye();K9();C1e();E1e();o(hut,"getSwimlaneDirection");o(A1e,"runSwimlaneLayoutCore")});var _1e={};ir(_1e,{render:()=>dut});async function dut(e,t){let r=t.select("g");Uy(r,e.markers,e.type,e.diagramId),J4(),X4(),q4(),o5(),B0e(e);let n=z0e(e);e.nodes=n.nodes,e.edges=n.edges;let{groups:i}=await A0e(r,e);A1e(e),await N0e(e,i)}var L1e=F(()=>{"use strict";R0e();Z4();Y9();Lm();Wy();G2();P0e();K9();G0e();R1e();o(dut,"render")});function K$(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}},"n"),e:o(function(u){throw u},"e"),f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a,s=!0,l=!1;return{s:o(function(){r=r.call(e)},"s"),n:o(function(){var u=r.next();return s=u.done,u},"n"),e:o(function(u){l=!0,a=u},"e"),f:o(function(){try{s||r.return==null||r.return()}finally{if(l)throw a}},"f")}}function abe(e,t,r){return(t=sbe(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function gut(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function yut(e,t){var r=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(r!=null){var n,i,a,s,l=[],u=!0,h=!1;try{if(a=(r=r.call(e)).next,t===0){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(l.push(n.value),l.length!==t);u=!0);}catch(d){h=!0,i=d}finally{try{if(!u&&r.return!=null&&(s=r.return(),Object(s)!==s))return}finally{if(h)throw i}}return l}}function vut(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function xut(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ki(e,t){return fut(e)||yut(e,t)||gF(e,t)||vut()}function K5(e){return put(e)||gut(e)||gF(e)||xut()}function but(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}function sbe(e){var t=but(e,"string");return typeof t=="symbol"?t:t+""}function ca(e){"@babel/helpers - typeof";return ca=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ca(e)}function gF(e,t){if(e){if(typeof e=="string")return K$(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?K$(e,t):void 0}}function YT(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function jT(){if(M1e)return bB;M1e=1;function e(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}return o(e,"isObject"),bB=e,bB}function Wut(){if(N1e)return TB;N1e=1;var e=typeof E5=="object"&&E5&&E5.Object===Object&&E5;return TB=e,TB}function hA(){if(P1e)return CB;P1e=1;var e=Wut(),t=typeof self=="object"&&self&&self.Object===Object&&self,r=e||t||Function("return this")();return CB=r,CB}function qut(){if(O1e)return wB;O1e=1;var e=hA(),t=o(function(){return e.Date.now()},"now");return wB=t,wB}function Hut(){if(B1e)return kB;B1e=1;var e=/\s/;function t(r){for(var n=r.length;n--&&e.test(r.charAt(n)););return n}return o(t,"trimmedEndIndex"),kB=t,kB}function Uut(){if($1e)return SB;$1e=1;var e=Hut(),t=/^\s+/;function r(n){return n&&n.slice(0,e(n)+1).replace(t,"")}return o(r,"baseTrim"),SB=r,SB}function xF(){if(F1e)return EB;F1e=1;var e=hA(),t=e.Symbol;return EB=t,EB}function Yut(){if(z1e)return AB;z1e=1;var e=xF(),t=Object.prototype,r=t.hasOwnProperty,n=t.toString,i=e?e.toStringTag:void 0;function a(s){var l=r.call(s,i),u=s[i];try{s[i]=void 0;var h=!0}catch{}var d=n.call(s);return h&&(l?s[i]=u:delete s[i]),d}return o(a,"getRawTag"),AB=a,AB}function jut(){if(G1e)return RB;G1e=1;var e=Object.prototype,t=e.toString;function r(n){return t.call(n)}return o(r,"objectToString"),RB=r,RB}function mbe(){if(V1e)return _B;V1e=1;var e=xF(),t=Yut(),r=jut(),n="[object Null]",i="[object Undefined]",a=e?e.toStringTag:void 0;function s(l){return l==null?l===void 0?i:n:a&&a in Object(l)?t(l):r(l)}return o(s,"baseGetTag"),_B=s,_B}function Xut(){if(W1e)return LB;W1e=1;function e(t){return t!=null&&typeof t=="object"}return o(e,"isObjectLike"),LB=e,LB}function XT(){if(q1e)return DB;q1e=1;var e=mbe(),t=Xut(),r="[object Symbol]";function n(i){return typeof i=="symbol"||t(i)&&e(i)==r}return o(n,"isSymbol"),DB=n,DB}function Kut(){if(H1e)return IB;H1e=1;var e=Uut(),t=jT(),r=XT(),n=NaN,i=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,s=/^0o[0-7]+$/i,l=parseInt;function u(h){if(typeof h=="number")return h;if(r(h))return n;if(t(h)){var d=typeof h.valueOf=="function"?h.valueOf():h;h=t(d)?d+"":d}if(typeof h!="string")return h===0?h:+h;h=e(h);var f=a.test(h);return f||s.test(h)?l(h.slice(2),f?2:8):i.test(h)?n:+h}return o(u,"toNumber"),IB=u,IB}function Zut(){if(U1e)return MB;U1e=1;var e=jT(),t=qut(),r=Kut(),n="Expected a function",i=Math.max,a=Math.min;function s(l,u,h){var d,f,p,m,g,y,v=0,x=!1,b=!1,T=!0;if(typeof l!="function")throw new TypeError(n);u=r(u)||0,e(h)&&(x=!!h.leading,b="maxWait"in h,p=b?i(r(h.maxWait)||0,u):p,T="trailing"in h?!!h.trailing:T);function k(A){var M=d,D=f;return d=f=void 0,v=A,m=l.apply(D,M),m}o(k,"invokeFunc");function C(A){return v=A,g=setTimeout(R,u),x?k(A):m}o(C,"leadingEdge");function w(A){var M=A-y,D=A-v,P=u-M;return b?a(P,p-D):P}o(w,"remainingWait");function S(A){var M=A-y,D=A-v;return y===void 0||M>=u||M<0||b&&D>=p}o(S,"shouldInvoke");function R(){var A=t();if(S(A))return L(A);g=setTimeout(R,w(A))}o(R,"timerExpired");function L(A){return g=void 0,T&&d?k(A):(d=f=void 0,m)}o(L,"trailingEdge");function N(){g!==void 0&&clearTimeout(g),v=0,d=y=f=g=void 0}o(N,"cancel");function I(){return g===void 0?m:L(t())}o(I,"flush");function _(){var A=t(),M=S(A);if(d=arguments,f=this,y=A,M){if(g===void 0)return C(y);if(b)return clearTimeout(g),g=setTimeout(R,u),k(y)}return g===void 0&&(g=setTimeout(R,u)),m}return o(_,"debounced"),_.cancel=N,_.flush=I,_}return o(s,"debounce"),MB=s,MB}function rht(e,t,r,n,i){var a=i*Math.PI/180,s=Math.cos(a)*(e-r)-Math.sin(a)*(t-n)+r,l=Math.sin(a)*(e-r)+Math.cos(a)*(t-n)+n;return{x:s,y:l}}function iht(e,t,r){if(r===0)return e;var n=(t.x1+t.x2)/2,i=(t.y1+t.y2)/2,a=t.w/t.h,s=1/a,l=rht(e.x,e.y,n,i,r),u=nht(l.x,l.y,n,i,a,s);return{x:u.x,y:u.y}}function mht(){return Z1e||(Z1e=1,(function(e,t){(function(){var r,n,i,a,s,l,u,h,d,f,p,m,g,y,v;i=Math.floor,f=Math.min,n=o(function(x,b){return xb?1:0},"defaultCmp"),d=o(function(x,b,T,k,C){var w;if(T==null&&(T=0),C==null&&(C=n),T<0)throw new Error("lo must be non-negative");for(k==null&&(k=x.length);TN;0<=N?L++:L--)R.push(L);return R}).apply(this).reverse(),S=[],k=0,C=w.length;kI;0<=I?++R:--R)_.push(s(x,T));return _},"nsmallest"),y=o(function(x,b,T,k){var C,w,S;for(k==null&&(k=n),C=x[T];T>b;){if(S=T-1>>1,w=x[S],k(C,w)<0){x[T]=w,T=S;continue}break}return x[T]=C},"_siftdown"),v=o(function(x,b,T){var k,C,w,S,R;for(T==null&&(T=n),C=x.length,R=b,w=x[b],k=2*b+1;k-1}return o(t,"listCacheHas"),l$=t,l$}function lft(){if($ve)return c$;$ve=1;var e=yA();function t(r,n){var i=this.__data__,a=e(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return o(t,"listCacheSet"),c$=t,c$}function cft(){if(Fve)return u$;Fve=1;var e=ift(),t=aft(),r=sft(),n=oft(),i=lft();function a(s){var l=-1,u=s==null?0:s.length;for(this.clear();++l-1&&n%1==0&&n0;){var d=i.shift();t(d),a.add(d.id()),l&&n(i,a,d)}return e}function Ube(e,t,r){if(r.isParent())for(var n=r._private.children,i=0;i0&&arguments[0]!==void 0?arguments[0]:xpt,t=arguments.length>1?arguments[1]:void 0,r=0;r0?_=M:I=M;while(Math.abs(A)>s&&++D=a?b(N,D):P===0?D:k(N,I,I+h)}o(C,"getTForX");var w=!1;function S(){w=!0,(e!==t||r!==n)&&T()}o(S,"precompute");var R=o(function(I){return w||S(),e===t&&r===n?I:I===0?0:I===1?1:v(C(I),t,n)},"f");R.getControlPoints=function(){return[{x:e,y:t},{x:r,y:n}]};var L="generateBezier("+[e,t,r,n]+")";return R.toString=function(){return L},R}function Rxe(e,t,r,n,i){if(n===1||t===r)return r;var a=i(t,r,n);return e==null||((e.roundValue||e.color)&&(a=Math.round(a)),e.min!==void 0&&(a=Math.max(a,e.min)),e.max!==void 0&&(a=Math.min(a,e.max))),a}function _xe(e,t){return e.pfValue!=null||e.value!=null?e.pfValue!=null&&(t==null||t.type.units!=="%")?e.pfValue:e.value:e}function A1(e,t,r,n,i){var a=i!=null?i.type:null;r<0?r=0:r>1&&(r=1);var s=_xe(e,i),l=_xe(t,i);if(Gt(s)&&Gt(l))return Rxe(a,s,l,r,n);if(Hn(s)&&Hn(l)){for(var u=[],h=0;h0?(m==="spring"&&g.push(s.duration),s.easingImpl=q5[m].apply(null,g)):s.easingImpl=q5[m]}var y=s.easingImpl,v;if(s.duration===0?v=1:v=(r-u)/s.duration,s.applying&&(v=s.progress),v<0?v=0:v>1&&(v=1),s.delay==null){var x=s.startPosition,b=s.position;if(b&&i&&!e.locked()){var T={};ST(x.x,b.x)&&(T.x=A1(x.x,b.x,v,y)),ST(x.y,b.y)&&(T.y=A1(x.y,b.y,v,y)),e.position(T)}var k=s.startPan,C=s.pan,w=a.pan,S=C!=null&&n;S&&(ST(k.x,C.x)&&(w.x=A1(k.x,C.x,v,y)),ST(k.y,C.y)&&(w.y=A1(k.y,C.y,v,y)),e.emit("pan"));var R=s.startZoom,L=s.zoom,N=L!=null&&n;N&&(ST(R,L)&&(a.zoom=$T(a.minZoom,A1(R,L,v,y),a.maxZoom)),e.emit("zoom")),(S||N)&&e.emit("viewport");var I=s.style;if(I&&I.length>0&&i){for(var _=0;_=0;S--){var R=w[S];R()}w.splice(0,w.length)},"callbacks"),b=m.length-1;b>=0;b--){var T=m[b],k=T._private;if(k.stopped){m.splice(b,1),k.hooked=!1,k.playing=!1,k.started=!1,x(k.frames);continue}!k.playing&&!k.applying||(k.playing&&k.applying&&(k.applying=!1),k.started||Mpt(d,T,e),Ipt(d,T,e,f),k.applying&&(k.applying=!1),x(k.frames),k.step!=null&&k.step(e),T.completed()&&(m.splice(b,1),k.hooked=!1,k.playing=!1,k.started=!1,x(k.completes)),y=!0)}return!f&&m.length===0&&g.length===0&&n.push(d),y}o(i,"stepOne");for(var a=!1,s=0;s0?t.notify("draw",r):t.notify("draw")),r.unmerge(n),t.emit("step")}function u2e(e){this.options=br({},Gpt,Vpt,e)}function h2e(e){this.options=br({},Wpt,e)}function d2e(e){this.options=br({},qpt,e)}function SA(e){this.options=br({},Hpt,e),this.options.layout=this;var t=this.options.eles.nodes(),r=this.options.eles.edges(),n=r.filter(function(i){var a=i.source().data("id"),s=i.target().data("id"),l=t.some(function(h){return h.data("id")===a}),u=t.some(function(h){return h.data("id")===s});return!l||!u});this.options.eles=this.options.eles.not(n)}function g2e(e){this.options=br({},smt,e)}function PF(e){this.options=br({},omt,e)}function y2e(e){this.options=br({},lmt,e)}function v2e(e){this.options=br({},cmt,e)}function x2e(e){this.options=e,this.notifications=0}function C2e(e,t){t.radius===0?e.lineTo(t.cx,t.cy):e.arc(t.cx,t.cy,t.radius,t.startAngle,t.endAngle,t.counterClockwise)}function BF(e,t,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return n===0||t.radius===0?{cx:t.x,cy:t.y,radius:0,startX:t.x,startY:t.y,stopX:t.x,stopY:t.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(dmt(e,t,r,n,i),{cx:oF,cy:lF,radius:Qm,startX:b2e,startY:T2e,stopX:cF,stopY:uF,startAngle:bu.ang+Math.PI/2*eg,endAngle:wl.ang-Math.PI/2*eg,counterClockwise:Y5})}function w2e(e){var t=[];if(e!=null){for(var r=0;r5&&arguments[5]!==void 0?arguments[5]:5,s=Math.min(a,n/2,i/2);e.beginPath(),e.moveTo(t+s,r),e.lineTo(t+n-s,r),e.quadraticCurveTo(t+n,r,t+n,r+s),e.lineTo(t+n,r+i-s),e.quadraticCurveTo(t+n,r+i,t+n-s,r+i),e.lineTo(t+s,r+i),e.quadraticCurveTo(t,r+i,t,r+i-s),e.lineTo(t,r+s),e.quadraticCurveTo(t,r,t+s,r),e.closePath()}function Kxe(e,t,r){var n=e.createShader(t);if(e.shaderSource(n,r),e.compileShader(n),!e.getShaderParameter(n,e.COMPILE_STATUS))throw new Error(e.getShaderInfoLog(n));return n}function ngt(e,t,r){var n=Kxe(e,e.VERTEX_SHADER,t),i=Kxe(e,e.FRAGMENT_SHADER,r),a=e.createProgram();if(e.attachShader(a,n),e.attachShader(a,i),e.linkProgram(a),!e.getProgramParameter(a,e.LINK_STATUS))throw new Error("Could not initialize shaders");return a}function igt(e,t,r){r===void 0&&(r=t);var n=e.makeOffscreenCanvas(t,r),i=n.context=n.getContext("2d");return n.clear=function(){return i.clearRect(0,0,n.width,n.height)},n.clear(),n}function zF(e){var t=e.pixelRatio,r=e.cy.zoom(),n=e.cy.pan();return{zoom:r*t,pan:{x:n.x*t,y:n.y*t}}}function agt(e){var t=e.pixelRatio,r=e.cy.zoom();return r*t}function sgt(e,t,r,n,i){var a=n*r+t.x,s=i*r+t.y;return s=Math.round(e.canvasHeight-s),[a,s]}function ogt(e,t){return t.picking?!0:e.pstyle("background-fill").value!=="solid"||e.pstyle("background-image").strValue!=="none"?!1:e.pstyle("border-width").value===0||e.pstyle("border-opacity").value===0?!0:e.pstyle("border-style").value==="solid"}function lgt(e,t){if(e.length!==t.length)return!1;for(var r=0;r>0&255)/255,r[1]=(e>>8&255)/255,r[2]=(e>>16&255)/255,r[3]=(e>>24&255)/255,r}function cgt(e){return e[0]+(e[1]<<8)+(e[2]<<16)+(e[3]<<24)}function ugt(e,t){var r=e.createTexture();return r.buffer=function(n){e.bindTexture(e.TEXTURE_2D,r),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR_MIPMAP_NEAREST),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n),e.generateMipmap(e.TEXTURE_2D),e.bindTexture(e.TEXTURE_2D,null)},r.deleteTexture=function(){e.deleteTexture(r)},r}function B2e(e,t){switch(t){case"float":return[1,e.FLOAT,4];case"vec2":return[2,e.FLOAT,4];case"vec3":return[3,e.FLOAT,4];case"vec4":return[4,e.FLOAT,4];case"int":return[1,e.INT,4];case"ivec2":return[2,e.INT,4]}}function $2e(e,t,r){switch(t){case e.FLOAT:return new Float32Array(r);case e.INT:return new Int32Array(r)}}function hgt(e,t,r,n,i,a){switch(t){case e.FLOAT:return new Float32Array(r.buffer,a*n,i);case e.INT:return new Int32Array(r.buffer,a*n,i)}}function dgt(e,t,r,n){var i=B2e(e,t),a=Ki(i,2),s=a[0],l=a[1],u=$2e(e,l,n),h=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,h),e.bufferData(e.ARRAY_BUFFER,u,e.STATIC_DRAW),l===e.FLOAT?e.vertexAttribPointer(r,s,l,!1,0,0):l===e.INT&&e.vertexAttribIPointer(r,s,l,0,0),e.enableVertexAttribArray(r),e.bindBuffer(e.ARRAY_BUFFER,null),h}function xu(e,t,r,n){var i=B2e(e,r),a=Ki(i,3),s=a[0],l=a[1],u=a[2],h=$2e(e,l,t*s),d=s*u,f=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,f),e.bufferData(e.ARRAY_BUFFER,t*d,e.DYNAMIC_DRAW),e.enableVertexAttribArray(n),l===e.FLOAT?e.vertexAttribPointer(n,s,l,!1,d,0):l===e.INT&&e.vertexAttribIPointer(n,s,l,d,0),e.vertexAttribDivisor(n,1),e.bindBuffer(e.ARRAY_BUFFER,null);for(var p=new Array(t),m=0;mI2e?(_gt(e),t.call(e,a)):(Lgt(e),V2e(e,a,NT.SCREEN)))}}{var r=e.matchCanvasSize;e.matchCanvasSize=function(a){r.call(e,a),e.pickingFrameBuffer.setFramebufferAttachmentSizes(e.canvasWidth,e.canvasHeight),e.pickingFrameBuffer.needsDraw=!0}}e.findNearestElements=function(a,s,l,u){return Ogt(e,a,s)};{var n=e.invalidateCachedZSortedEles;e.invalidateCachedZSortedEles=function(){n.call(e),e.pickingFrameBuffer.needsDraw=!0}}{var i=e.notify;e.notify=function(a,s){i.call(e,a,s),a==="viewport"||a==="bounds"?e.pickingFrameBuffer.needsDraw=!0:a==="background"&&e.drawing.invalidate(s,{type:"node-body"})}}}function _gt(e){var t=e.data.contexts[e.WEBGL];t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}function Lgt(e){var t=o(function(n){n.save(),n.setTransform(1,0,0,1,0,0),n.clearRect(0,0,e.canvasWidth,e.canvasHeight),n.restore()},"clear");t(e.data.contexts[e.NODE]),t(e.data.contexts[e.DRAG])}function Dgt(e){var t=e.canvasWidth,r=e.canvasHeight,n=zF(e),i=n.pan,a=n.zoom,s=q$();X5(s,s,[i.x,i.y]),dF(s,s,[a,a]);var l=q$();ggt(l,t,r);var u=q$();return mgt(u,l,s),u}function G2e(e,t){var r=e.canvasWidth,n=e.canvasHeight,i=zF(e),a=i.pan,s=i.zoom;t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,r,n),t.translate(a.x,a.y),t.scale(s,s)}function Igt(e,t){e.drawSelectionRectangle(t,function(r){return G2e(e,r)})}function Mgt(e){var t=e.data.contexts[e.NODE];t.save(),G2e(e,t),t.strokeStyle="rgba(0, 0, 0, 0.3)",t.beginPath(),t.moveTo(-1e3,0),t.lineTo(1e3,0),t.stroke(),t.beginPath(),t.moveTo(0,-1e3),t.lineTo(0,1e3),t.stroke(),t.restore()}function Ngt(e){var t=o(function(i,a,s){for(var l=i.atlasManager.getAtlasCollection(a),u=e.data.contexts[e.NODE],h=l.atlases,d=0;d=0&&k.add(S)}return k}function Ogt(e,t,r){var n=Pgt(e,t,r),i=e.getCachedZSortedEles(),a,s,l=yo(n),u;try{for(l.s();!(u=l.n()).done;){var h=u.value,d=i[h];if(!a&&d.isNode()&&(a=d),!s&&d.isEdge()&&(s=d),a&&s)break}}catch(f){l.e(f)}finally{l.f()}return[a,s].filter(Boolean)}function X$(e,t,r){var n=e.drawing;t+=1,r.isNode()?(n.drawNode(r,t,"node-underlay"),n.drawNode(r,t,"node-body"),n.drawTexture(r,t,"label"),n.drawNode(r,t,"node-overlay")):(n.drawEdgeLine(r,t),n.drawEdgeArrow(r,t,"source"),n.drawEdgeArrow(r,t,"target"),n.drawTexture(r,t,"label"),n.drawTexture(r,t,"edge-source-label"),n.drawTexture(r,t,"edge-target-label"))}function V2e(e,t,r){var n;e.webglDebug&&(n=performance.now());var i=e.drawing,a=0;if(r.screen&&e.data.canvasNeedsRedraw[e.SELECT_BOX]&&Igt(e,t),e.data.canvasNeedsRedraw[e.NODE]||r.picking){var s=e.data.contexts[e.WEBGL];r.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=Dgt(e),u=e.getCachedZSortedEles();if(a=u.length,i.startFrame(l,r),r.screen){for(var h=0;h{"use strict";o(K$,"_arrayLikeToArray");o(fut,"_arrayWithHoles");o(put,"_arrayWithoutHoles");o(Yf,"_classCallCheck");o(mut,"_defineProperties");o(jf,"_createClass");o(yo,"_createForOfIteratorHelper");o(abe,"_defineProperty$1");o(gut,"_iterableToArray");o(yut,"_iterableToArrayLimit");o(vut,"_nonIterableRest");o(xut,"_nonIterableSpread");o(Ki,"_slicedToArray");o(K5,"_toConsumableArray");o(but,"_toPrimitive");o(sbe,"_toPropertyKey");o(ca,"_typeof");o(gF,"_unsupportedIterableToArray");oa=typeof window>"u"?null:window,D1e=oa?oa.navigator:null;oa&&oa.document;Tut=ca(""),obe=ca({}),Cut=ca(function(){}),wut=typeof HTMLElement>"u"?"undefined":ca(HTMLElement),HT=o(function(t){return t&&t.instanceString&&Ci(t.instanceString)?t.instanceString():null},"instanceStr"),fr=o(function(t){return t!=null&&ca(t)==Tut},"string"),Ci=o(function(t){return t!=null&&ca(t)===Cut},"fn"),Hn=o(function(t){return!Ho(t)&&(Array.isArray?Array.isArray(t):t!=null&&t instanceof Array)},"array"),cn=o(function(t){return t!=null&&ca(t)===obe&&!Hn(t)&&t.constructor===Object},"plainObject"),kut=o(function(t){return t!=null&&ca(t)===obe},"object"),Gt=o(function(t){return t!=null&&ca(t)===ca(1)&&!isNaN(t)},"number"),Sut=o(function(t){return Gt(t)&&Math.floor(t)===t},"integer"),Z5=o(function(t){if(wut!=="undefined")return t!=null&&t instanceof HTMLElement},"htmlElement"),Ho=o(function(t){return UT(t)||lbe(t)},"elementOrCollection"),UT=o(function(t){return HT(t)==="collection"&&t._private.single},"element"),lbe=o(function(t){return HT(t)==="collection"&&!t._private.single},"collection"),yF=o(function(t){return HT(t)==="core"},"core"),cbe=o(function(t){return HT(t)==="stylesheet"},"stylesheet"),Eut=o(function(t){return HT(t)==="event"},"event"),Gf=o(function(t){return t==null?!0:!!(t===""||t.match(/^\s+$/))},"emptyString"),Aut=o(function(t){return typeof HTMLElement>"u"?!1:t instanceof HTMLElement},"domElement"),Rut=o(function(t){return cn(t)&&Gt(t.x1)&&Gt(t.x2)&&Gt(t.y1)&&Gt(t.y2)},"boundingBox"),_ut=o(function(t){return kut(t)&&Ci(t.then)},"promise"),Lut=o(function(){return D1e&&D1e.userAgent.match(/msie|trident|edge/i)},"ms"),z1=o(function(t,r){r||(r=o(function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var a=[],s=0;sr?1:0},"ascending"),But=o(function(t,r){return-1*hbe(t,r)},"descending"),br=Object.assign!=null?Object.assign.bind(Object):function(e){for(var t=arguments,r=1;r1&&(v-=1),v<1/6?g+(y-g)*6*v:v<1/2?y:v<2/3?g+(y-g)*(2/3-v)*6:g}o(d,"hue2rgb");var f=new RegExp("^"+Mut+"$").exec(t);if(f){if(n=parseInt(f[1]),n<0?n=(360- -1*n%360)%360:n>360&&(n=n%360),n/=360,i=parseFloat(f[2]),i<0||i>100||(i=i/100,a=parseFloat(f[3]),a<0||a>100)||(a=a/100,s=f[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(i===0)l=u=h=Math.round(a*255);else{var p=a<.5?a*(1+i):a+i-a*i,m=2*a-p;l=Math.round(255*d(m,p,n+1/3)),u=Math.round(255*d(m,p,n)),h=Math.round(255*d(m,p,n-1/3))}r=[l,u,h,s]}return r},"hsl2tuple"),zut=o(function(t){var r,n=new RegExp("^"+Dut+"$").exec(t);if(n){r=[];for(var i=[],a=1;a<=3;a++){var s=n[a];if(s[s.length-1]==="%"&&(i[a]=!0),s=parseFloat(s),i[a]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var l=i[1]||i[2]||i[3],u=i[1]&&i[2]&&i[3];if(l&&!u)return;var h=n[4];if(h!==void 0){if(h=parseFloat(h),h<0||h>1)return;r.push(h)}}return r},"rgb2tuple"),Gut=o(function(t){return Vut[t.toLowerCase()]},"colorname2tuple"),dbe=o(function(t){return(Hn(t)?t:null)||Gut(t)||$ut(t)||zut(t)||Fut(t)},"color2tuple"),Vut={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},fbe=o(function(t){for(var r=t.map,n=t.keys,i=n.length,a=0;a1&&arguments[1]!==void 0?arguments[1]:Jm,n=r,i;i=t.next(),!i.done;)n=n*ybe+i.value|0;return n},"hashIterableInts"),PT=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Jm;return r*ybe+t|0},"hashInt"),OT=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:I1;return(r<<5)+r+t|0},"hashIntAlt"),eht=o(function(t,r){return t*2097152+r},"combineHashes"),Mf=o(function(t){return t[0]*2097152+t[1]},"combineHashesArray"),A5=o(function(t,r){return[PT(t[0],r[0]),OT(t[1],r[1])]},"hashArrays"),Y1e=o(function(t,r){var n={value:0,done:!1},i=0,a=t.length,s={next:o(function(){return i=0;i--)t[i]===r&&t.splice(i,1)},"removeFromArray"),CF=o(function(t){t.splice(0,t.length)},"clearArray"),uht=o(function(t,r){for(var n=0;n"u"?"undefined":ca(Set))!==dht?Set:fht,dA=o(function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(t===void 0||r===void 0||!yF(t)){pi("An element must have a core reference and parameters set");return}var i=r.group;if(i==null&&(r.data&&r.data.source!=null&&r.data.target!=null?i="edges":i="nodes"),i!=="nodes"&&i!=="edges"){pi("An element must be of type `nodes` or `edges`; you specified `"+i+"`");return}this.length=1,this[0]=this;var a=this._private={cy:t,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?i==="edges":!!r.pannable,active:!1,classes:new W1,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(a.position.x==null&&(a.position.x=0),a.position.y==null&&(a.position.y=0),r.renderedPosition){var s=r.renderedPosition,l=t.pan(),u=t.zoom();a.position={x:(s.x-l.x)/u,y:(s.y-l.y)/u}}var h=[];Hn(r.classes)?h=r.classes:fr(r.classes)&&(h=r.classes.split(/\s+/));for(var d=0,f=h.length;d0;){var w=b.pop(),S=v(w),R=w.id();if(p[R]=S,S!==1/0)for(var L=w.neighborhood().intersect(g),N=0;N0)for(O.unshift(B);f[V];){var G=f[V];O.unshift(G.edge),O.unshift(G.node),$=G.node,V=$.id()}return l.spawn(O)},"pathTo")}},"dijkstra")},bht={kruskal:o(function(t){t=t||function(T){return 1};for(var r=this.byGroup(),n=r.nodes,i=r.edges,a=n.length,s=new Array(a),l=n,u=o(function(k){for(var C=0;C0;){if(C(),S++,k===d){for(var R=[],L=a,N=d,I=x[N];R.unshift(L),I!=null&&R.unshift(I),L=v[N],L!=null;)N=L.id(),I=x[N];return{found:!0,distance:f[k],path:this.spawn(R),steps:S}}m[k]=!0;for(var _=T._private.edges,A=0;A<_.length;A++){var M=_[A];if(this.hasElementWithId(M.id())&&!(l&&M.data("source")!==k)){var D=M.source(),P=M.target(),B=D.id()!==k?D:P,O=B.id();if(this.hasElementWithId(O)&&!m[O]){var $=f[k]+u(M);if(!w(O)){f[O]=$,p[O]=$+s(B),b(B,O),v[O]=T,x[O]=M;continue}$I&&(g[N]=I,b[N]=L,T[N]=C),!a){var _=L*d+R;!a&&g[_]>I&&(g[_]=I,b[_]=R,T[_]=C)}}}for(var A=0;A1&&arguments[1]!==void 0?arguments[1]:s,ke=T(ue),ce=[],re=ke;;){if(re==null)return r.spawn();var J=b(re),se=J.edge,ge=J.pred;if(ce.unshift(re[0]),re.same(ye)&&ce.length>0)break;se!=null&&ce.unshift(se),re=ge}return u.spawn(ce)},"pathTo"),w=0;w=0;d--){var f=h[d],p=f[1],m=f[2];(r[p]===l&&r[m]===u||r[p]===u&&r[m]===l)&&h.splice(d,1)}for(var g=0;gi;){var a=Math.floor(Math.random()*r.length);r=Rht(a,t,r),n--}return r},"contractUntil"),_ht={kargerStein:o(function(){var t=this,r=this.byGroup(),n=r.nodes,i=r.edges;i.unmergeBy(function(O){return O.isLoop()});var a=n.length,s=i.length,l=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),u=Math.floor(a/Aht);if(a<2){pi("At least 2 nodes are required for Karger-Stein algorithm");return}for(var h=[],d=0;d1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,i=1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,i=-1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,i=0,a=0,s=r;s1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:t.length,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;i?t=t.slice(r,n):(n0&&t.splice(0,r));for(var l=0,u=t.length-1;u>=0;u--){var h=t[u];s?isFinite(h)||(t[u]=-1/0,l++):t.splice(u,1)}a&&t.sort(function(p,m){return p-m});var d=t.length,f=Math.floor(d/2);return d%2!==0?t[f+1+l]:(t[f-1+l]+t[f+l])/2},"median"),Pht=o(function(t){return Math.PI*t/180},"deg2rad"),R5=o(function(t,r){return Math.atan2(r,t)-Math.PI/2},"getAngleFromDisp"),wF=Math.log2||function(e){return Math.log(e)/Math.log(2)},kF=o(function(t){return t>0?1:t<0?-1:0},"signum"),ng=o(function(t,r){return Math.sqrt(Zm(t,r))},"dist"),Zm=o(function(t,r){var n=r.x-t.x,i=r.y-t.y;return n*n+i*i},"sqdist"),Oht=o(function(t){for(var r=t.length,n=0,i=0;i=t.x1&&t.y2>=t.y1)return{x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,w:t.x2-t.x1,h:t.y2-t.y1};if(t.w!=null&&t.h!=null&&t.w>=0&&t.h>=0)return{x1:t.x1,y1:t.y1,x2:t.x1+t.w,y2:t.y1+t.h,w:t.w,h:t.h}}},"makeBoundingBox"),$ht=o(function(t){return{x1:t.x1,x2:t.x2,w:t.w,y1:t.y1,y2:t.y2,h:t.h}},"copyBoundingBox"),Fht=o(function(t){t.x1=1/0,t.y1=1/0,t.x2=-1/0,t.y2=-1/0,t.w=0,t.h=0},"clearBoundingBox"),zht=o(function(t,r){t.x1=Math.min(t.x1,r.x1),t.x2=Math.max(t.x2,r.x2),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,r.y1),t.y2=Math.max(t.y2,r.y2),t.h=t.y2-t.y1},"updateBoundingBox"),Sbe=o(function(t,r,n){t.x1=Math.min(t.x1,r),t.x2=Math.max(t.x2,r),t.w=t.x2-t.x1,t.y1=Math.min(t.y1,n),t.y2=Math.max(t.y2,n),t.h=t.y2-t.y1},"expandBoundingBoxByPoint"),z5=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return t.x1-=r,t.x2+=r,t.y1-=r,t.y2+=r,t.w=t.x2-t.x1,t.h=t.y2-t.y1,t},"expandBoundingBox"),G5=o(function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],n,i,a,s;if(r.length===1)n=i=a=s=r[0];else if(r.length===2)n=a=r[0],s=i=r[1];else if(r.length===4){var l=Ki(r,4);n=l[0],i=l[1],a=l[2],s=l[3]}return t.x1-=s,t.x2+=i,t.y1-=n,t.y2+=a,t.w=t.x2-t.x1,t.h=t.y2-t.y1,t},"expandBoundingBoxSides"),J1e=o(function(t,r){t.x1=r.x1,t.y1=r.y1,t.x2=r.x2,t.y2=r.y2,t.w=t.x2-t.x1,t.h=t.y2-t.y1},"assignBoundingBox"),SF=o(function(t,r){return!(t.x1>r.x2||r.x1>t.x2||t.x2r.y2||r.y1>t.y2)},"boundingBoxesIntersect"),Bf=o(function(t,r,n){return t.x1<=r&&r<=t.x2&&t.y1<=n&&n<=t.y2},"inBoundingBox"),eve=o(function(t,r){return Bf(t,r.x,r.y)},"pointInBoundingBox"),Ebe=o(function(t,r){return Bf(t,r.x1,r.y1)&&Bf(t,r.x2,r.y2)},"boundingBoxInBoundingBox"),Ght=(BB=Math.hypot)!==null&&BB!==void 0?BB:function(e,t){return Math.sqrt(e*e+t*t)};o(Vht,"inflatePolygon");o(Wht,"miterBox");Abe=o(function(t,r,n,i,a,s,l){var u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",h=u==="auto"?Wf(a,s):u,d=a/2,f=s/2;h=Math.min(h,d,f);var p=h!==d,m=h!==f,g;if(p){var y=n-d+h-l,v=i-f-l,x=n+d-h+l,b=v;if(g=$f(t,r,n,i,y,v,x,b,!1),g.length>0)return g}if(m){var T=n+d+l,k=i-f+h-l,C=T,w=i+f-h+l;if(g=$f(t,r,n,i,T,k,C,w,!1),g.length>0)return g}if(p){var S=n-d+h-l,R=i+f+l,L=n+d-h+l,N=R;if(g=$f(t,r,n,i,S,R,L,N,!1),g.length>0)return g}if(m){var I=n-d-l,_=i-f+h-l,A=I,M=i+f-h+l;if(g=$f(t,r,n,i,I,_,A,M,!1),g.length>0)return g}var D;{var P=n-d+h,B=i-f+h;if(D=_T(t,r,n,i,P,B,h+l),D.length>0&&D[0]<=P&&D[1]<=B)return[D[0],D[1]]}{var O=n+d-h,$=i-f+h;if(D=_T(t,r,n,i,O,$,h+l),D.length>0&&D[0]>=O&&D[1]<=$)return[D[0],D[1]]}{var V=n+d-h,G=i+f-h;if(D=_T(t,r,n,i,V,G,h+l),D.length>0&&D[0]>=V&&D[1]>=G)return[D[0],D[1]]}{var z=n-d+h,W=i+f-h;if(D=_T(t,r,n,i,z,W,h+l),D.length>0&&D[0]<=z&&D[1]>=W)return[D[0],D[1]]}return[]},"roundRectangleIntersectLine"),qht=o(function(t,r,n,i,a,s,l){var u=l,h=Math.min(n,a),d=Math.max(n,a),f=Math.min(i,s),p=Math.max(i,s);return h-u<=t&&t<=d+u&&f-u<=r&&r<=p+u},"inLineVicinity"),Hht=o(function(t,r,n,i,a,s,l,u,h){var d={x1:Math.min(n,l,a)-h,x2:Math.max(n,l,a)+h,y1:Math.min(i,u,s)-h,y2:Math.max(i,u,s)+h};return!(td.x2||rd.y2)},"inBezierVicinity"),Uht=o(function(t,r,n,i){n-=i;var a=r*r-4*t*n;if(a<0)return[];var s=Math.sqrt(a),l=2*t,u=(-r+s)/l,h=(-r-s)/l;return[u,h]},"solveQuadratic"),Yht=o(function(t,r,n,i,a){var s=1e-5;t===0&&(t=s),r/=t,n/=t,i/=t;var l,u,h,d,f,p,m,g;if(u=(3*n-r*r)/9,h=-(27*i)+r*(9*n-2*(r*r)),h/=54,l=u*u*u+h*h,a[1]=0,m=r/3,l>0){f=h+Math.sqrt(l),f=f<0?-Math.pow(-f,1/3):Math.pow(f,1/3),p=h-Math.sqrt(l),p=p<0?-Math.pow(-p,1/3):Math.pow(p,1/3),a[0]=-m+f+p,m+=(f+p)/2,a[4]=a[2]=-m,m=Math.sqrt(3)*(-p+f)/2,a[3]=m,a[5]=-m;return}if(a[5]=a[3]=0,l===0){g=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),a[0]=-m+2*g,a[4]=a[2]=-(g+m);return}u=-u,d=u*u*u,d=Math.acos(h/Math.sqrt(d)),g=2*Math.sqrt(u),a[0]=-m+g*Math.cos(d/3),a[2]=-m+g*Math.cos((d+2*Math.PI)/3),a[4]=-m+g*Math.cos((d+4*Math.PI)/3)},"solveCubic"),jht=o(function(t,r,n,i,a,s,l,u){var h=1*n*n-4*n*a+2*n*l+4*a*a-4*a*l+l*l+i*i-4*i*s+2*i*u+4*s*s-4*s*u+u*u,d=9*n*a-3*n*n-3*n*l-6*a*a+3*a*l+9*i*s-3*i*i-3*i*u-6*s*s+3*s*u,f=3*n*n-6*n*a+n*l-n*t+2*a*a+2*a*t-l*t+3*i*i-6*i*s+i*u-i*r+2*s*s+2*s*r-u*r,p=1*n*a-n*n+n*t-a*t+i*s-i*i+i*r-s*r,m=[];Yht(h,d,f,p,m);for(var g=1e-7,y=[],v=0;v<6;v+=2)Math.abs(m[v+1])=0&&m[v]<=1&&y.push(m[v]);y.push(1),y.push(0);for(var x=-1,b,T,k,C=0;C=0?kh?(t-a)*(t-a)+(r-s)*(r-s):d-p},"sqdistToFiniteLine"),go=o(function(t,r,n){for(var i,a,s,l,u,h=0,d=0;d=t&&t>=s||i<=t&&t<=s)u=(t-i)/(s-i)*(l-a)+a,u>r&&h++;else continue;return h%2!==0},"pointInsidePolygonPoints"),Oh=o(function(t,r,n,i,a,s,l,u,h){var d=new Array(n.length),f;u[0]!=null?(f=Math.atan(u[1]/u[0]),u[0]<0?f=f+Math.PI/2:f=-f-Math.PI/2):f=u;for(var p=Math.cos(-f),m=Math.sin(-f),g=0;g0){var v=tA(d,-h);y=eA(v)}else y=d;return go(t,r,y)},"pointInsidePolygon"),Kht=o(function(t,r,n,i,a,s,l,u){for(var h=new Array(n.length*2),d=0;d=0&&v<=1&&b.push(v),x>=0&&x<=1&&b.push(x),b.length===0)return[];var T=b[0]*u[0]+t,k=b[0]*u[1]+r;if(b.length>1){if(b[0]==b[1])return[T,k];var C=b[1]*u[0]+t,w=b[1]*u[1]+r;return[T,k,C,w]}else return[T,k]},"intersectLineCircle"),$B=o(function(t,r,n){return r<=t&&t<=n||n<=t&&t<=r?t:t<=r&&r<=n||n<=r&&r<=t?r:n},"midOfThree"),$f=o(function(t,r,n,i,a,s,l,u,h){var d=t-a,f=n-t,p=l-a,m=r-s,g=i-r,y=u-s,v=p*m-y*d,x=f*m-g*d,b=y*f-p*g;if(b!==0){var T=v/b,k=x/b,C=.001,w=0-C,S=1+C;return w<=T&&T<=S&&w<=k&&k<=S?[t+T*f,r+T*g]:h?[t+T*f,r+T*g]:[]}else return v===0||x===0?$B(t,n,l)===l?[l,u]:$B(t,n,a)===a?[a,s]:$B(a,l,n)===n?[n,i]:[]:[]},"finiteLinesIntersect"),Qht=o(function(t,r,n,i,a){var s=[],l=i/2,u=a/2,h=r,d=n;s.push({x:h+l*t[0],y:d+u*t[1]});for(var f=1;f0){var y=tA(f,-u);m=eA(y)}else m=f}else m=n;for(var v,x,b,T,k=0;k2){for(var g=[d[0],d[1]],y=Math.pow(g[0]-t,2)+Math.pow(g[1]-r,2),v=1;vd&&(d=k)},"set"),get:o(function(T){return h[T]},"get")},p=0;p0?D=M.edgesTo(A)[0]:D=A.edgesTo(M)[0];var P=i(D);A=A.id(),S[A]>S[I]+P&&(S[A]=S[I]+P,R.nodes.indexOf(A)<0?R.push(A):R.updateItem(A),w[A]=0,C[A]=[]),S[A]==S[I]+P&&(w[A]=w[A]+w[I],C[A].push(I))}else for(var B=0;B0;){for(var G=k.pop(),z=0;z0&&l.push(n[u]);l.length!==0&&a.push(i.collection(l))}return a},"assign"),fdt=o(function(t,r){for(var n=0;n5&&arguments[5]!==void 0?arguments[5]:gdt,l=i,u,h,d=0;d=2?CT(t,r,n,0,ave,ydt):CT(t,r,n,0,ive)},"euclidean"),squaredEuclidean:o(function(t,r,n){return CT(t,r,n,0,ave)},"squaredEuclidean"),manhattan:o(function(t,r,n){return CT(t,r,n,0,ive)},"manhattan"),max:o(function(t,r,n){return CT(t,r,n,-1/0,vdt)},"max")};G1["squared-euclidean"]=G1.squaredEuclidean;G1.squaredeuclidean=G1.squaredEuclidean;o(pA,"clusteringDistance");xdt=Va({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),AF=o(function(t){return xdt(t)},"setOptions"),rA=o(function(t,r,n,i,a){var s=a!=="kMedoids",l=s?function(f){return n[f]}:function(f){return i[f](n)},u=o(function(p){return i[p](r)},"getQ"),h=n,d=r;return pA(t,i.length,l,u,h,d)},"getDist"),zB=o(function(t,r,n){for(var i=n.length,a=new Array(i),s=new Array(i),l=new Array(r),u=null,h=0;hn)return!1}return!0},"haveMatricesConverged"),Cdt=o(function(t,r,n){for(var i=0;il&&(l=r[h][d],u=d);a[u].push(t[h])}for(var f=0;f=a.threshold||a.mode==="dendrogram"&&t.length===1)return!1;var g=r[s],y=r[i[s]],v;a.mode==="dendrogram"?v={left:g,right:y,key:g.key}:v={value:g.value.concat(y.value),key:g.key},t[g.index]=v,t.splice(y.index,1),r[g.key]=v;for(var x=0;xn[y.key][b.key]&&(u=n[y.key][b.key])):a.linkage==="max"?(u=n[g.key][b.key],n[g.key][b.key]0&&i.push(a);return i},"findExemplars"),hve=o(function(t,r,n){for(var i=[],a=0;al&&(s=h,l=r[a*t+h])}s>0&&i.push(s)}for(var d=0;dh&&(u=d,h=f)}n[a]=s[u]}return i=hve(t,r,n),i},"assign"),dve=o(function(t){for(var r=this.cy(),n=this.nodes(),i=Ndt(t),a={},s=0;s=I?(_=I,I=M,A=D):M>_&&(_=M);for(var P=0;P0?1:0;S[L%i.minIterations*l+z]=W,G+=W}if(G>0&&(L>=i.minIterations-1||L==i.maxIterations-1)){for(var H=0,j=0;j1||w>1)&&(l=!0),f[T]=[],b.outgoers().forEach(function(R){R.isEdge()&&f[T].push(R.id())})}else p[T]=[void 0,b.target().id()]}):s.forEach(function(b){var T=b.id();if(b.isNode()){var k=b.degree(!0);k%2&&(u?h?l=!0:h=T:u=T),f[T]=[],b.connectedEdges().forEach(function(C){return f[T].push(C.id())})}else p[T]=[b.source().id(),b.target().id()]});var m={found:!1,trail:void 0};if(l)return m;if(h&&u)if(a){if(d&&h!=d)return m;d=h}else{if(d&&h!=d&&u!=d)return m;d||(d=h)}else d||(d=s[0].id());var g=o(function(T){for(var k=T,C=[T],w,S,R;f[k].length;)w=f[k].shift(),S=p[w][0],R=p[w][1],k!=R?(f[R]=f[R].filter(function(L){return L!=w}),k=R):!a&&k!=S&&(f[S]=f[S].filter(function(L){return L!=w}),k=S),C.unshift(w),C.unshift(k);return C},"walk"),y=[],v=[];for(v=g(d);v.length!=1;)f[v[0]].length==0?(y.unshift(s.getElementById(v.shift())),y.unshift(s.getElementById(v.shift()))):v=g(v.shift()).concat(v);y.unshift(s.getElementById(v.shift()));for(var x in f)if(f[x].length)return m;return m.found=!0,m.trail=this.spawn(y,!0),m},"hierholzer")},L5=o(function(){var t=this,r={},n=0,i=0,a=[],s=[],l={},u=o(function(p,m){for(var g=s.length-1,y=[],v=t.spawn();s[g].x!=p||s[g].y!=m;)y.push(s.pop().edge),g--;y.push(s.pop().edge),y.forEach(function(x){var b=x.connectedNodes().intersection(t);v.merge(x),b.forEach(function(T){var k=T.id(),C=T.connectedEdges().intersection(t);v.merge(T),r[k].cutVertex?v.merge(C.filter(function(w){return w.isLoop()})):v.merge(C)})}),a.push(v)},"buildComponent"),h=o(function(p,m,g){p===g&&(i+=1),r[m]={id:n,low:n++,cutVertex:!1};var y=t.getElementById(m).connectedEdges().intersection(t);if(y.size()===0)a.push(t.spawn(t.getElementById(m)));else{var v,x,b,T;y.forEach(function(k){v=k.source().id(),x=k.target().id(),b=v===m?x:v,b!==g&&(T=k.id(),l[T]||(l[T]=!0,s.push({x:m,y:b,edge:k})),b in r?r[m].low=Math.min(r[m].low,r[b].id):(h(p,b,m),r[m].low=Math.min(r[m].low,r[b].low),r[m].id<=r[b].low&&(r[m].cutVertex=!0,u(m,b))))})}},"biconnectedSearch");t.forEach(function(f){if(f.isNode()){var p=f.id();p in r||(i=0,h(p,p),r[p].cutVertex=i>1)}});var d=Object.keys(r).filter(function(f){return r[f].cutVertex}).map(function(f){return t.getElementById(f)});return{cut:t.spawn(d),components:a}},"hopcroftTarjanBiconnected"),Vdt={hopcroftTarjanBiconnected:L5,htbc:L5,htb:L5,hopcroftTarjanBiconnectedComponents:L5},D5=o(function(){var t=this,r={},n=0,i=[],a=[],s=t.spawn(t),l=o(function(h){a.push(h),r[h]={index:n,low:n++,explored:!1};var d=t.getElementById(h).connectedEdges().intersection(t);if(d.forEach(function(y){var v=y.target().id();v!==h&&(v in r||l(v),r[v].explored||(r[h].low=Math.min(r[h].low,r[v].low)))}),r[h].index===r[h].low){for(var f=t.spawn();;){var p=a.pop();if(f.merge(t.getElementById(p)),r[p].low=r[h].index,r[p].explored=!0,p===h)break}var m=f.edgesWith(f),g=f.merge(m);i.push(g),s=s.difference(g)}},"stronglyConnectedSearch");return t.forEach(function(u){if(u.isNode()){var h=u.id();h in r||l(h)}}),{cut:s,components:i}},"tarjanStronglyConnected"),Wdt={tarjanStronglyConnected:D5,tsc:D5,tscc:D5,tarjanStronglyConnectedComponents:D5},Nbe={};[BT,xht,bht,Cht,kht,Eht,_ht,rdt,B1,$1,J$,mdt,Rdt,Idt,Fdt,Gdt,Vdt,Wdt].forEach(function(e){br(Nbe,e)});Pbe=0,Obe=1,Bbe=2,vc=o(function(t){if(!(this instanceof vc))return new vc(t);this.id="Thenable/1.0.7",this.state=Pbe,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof t=="function"&&t.call(this,this.fulfill.bind(this),this.reject.bind(this))},"api");vc.prototype={fulfill:o(function(t){return fve(this,Obe,"fulfillValue",t)},"fulfill"),reject:o(function(t){return fve(this,Bbe,"rejectReason",t)},"reject"),then:o(function(t,r){var n=this,i=new vc;return n.onFulfilled.push(mve(t,i,"fulfill")),n.onRejected.push(mve(r,i,"reject")),$be(n),i.proxy},"then")};fve=o(function(t,r,n,i){return t.state===Pbe&&(t.state=r,t[n]=i,$be(t)),t},"deliver"),$be=o(function(t){t.state===Obe?pve(t,"onFulfilled",t.fulfillValue):t.state===Bbe&&pve(t,"onRejected",t.rejectReason)},"execute"),pve=o(function(t,r,n){if(t[r].length!==0){var i=t[r];t[r]=[];var a=o(function(){for(var l=0;l0},"animatedImpl")},"animated"),clearQueue:o(function(){return o(function(){var r=this,n=r.length!==void 0,i=n?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return this;for(var s=0;s0&&this.spawn(i).updateStyle().emit("class"),r},"classes"),addClass:o(function(t){return this.toggleClass(t,!0)},"addClass"),hasClass:o(function(t){var r=this[0];return r!=null&&r._private.classes.has(t)},"hasClass"),toggleClass:o(function(t,r){Hn(t)||(t=t.match(/\S+/g)||[]);for(var n=this,i=r===void 0,a=[],s=0,l=n.length;s0&&this.spawn(a).updateStyle().emit("class"),n},"toggleClass"),removeClass:o(function(t){return this.toggleClass(t,!1)},"removeClass"),flashClass:o(function(t,r){var n=this;if(r==null)r=250;else if(r===0)return n;return n.addClass(t),setTimeout(function(){n.removeClass(t)},r),n},"flashClass")};V5.className=V5.classNames=V5.classes;ln={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:la,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};ln.variable="(?:[\\w-.]|(?:\\\\"+ln.metaChar+"))+";ln.className="(?:[\\w-]|(?:\\\\"+ln.metaChar+"))+";ln.value=ln.string+"|"+ln.number;ln.id=ln.variable;(function(){var e,t,r;for(e=ln.comparatorOp.split("|"),r=0;r=0)&&t!=="="&&(ln.comparatorOp+="|\\!"+t)})();zn=o(function(){return{checks:[]}},"newQuery"),er={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},nF=[{selector:":selected",matches:o(function(t){return t.selected()},"matches")},{selector:":unselected",matches:o(function(t){return!t.selected()},"matches")},{selector:":selectable",matches:o(function(t){return t.selectable()},"matches")},{selector:":unselectable",matches:o(function(t){return!t.selectable()},"matches")},{selector:":locked",matches:o(function(t){return t.locked()},"matches")},{selector:":unlocked",matches:o(function(t){return!t.locked()},"matches")},{selector:":visible",matches:o(function(t){return t.visible()},"matches")},{selector:":hidden",matches:o(function(t){return!t.visible()},"matches")},{selector:":transparent",matches:o(function(t){return t.transparent()},"matches")},{selector:":grabbed",matches:o(function(t){return t.grabbed()},"matches")},{selector:":free",matches:o(function(t){return!t.grabbed()},"matches")},{selector:":removed",matches:o(function(t){return t.removed()},"matches")},{selector:":inside",matches:o(function(t){return!t.removed()},"matches")},{selector:":grabbable",matches:o(function(t){return t.grabbable()},"matches")},{selector:":ungrabbable",matches:o(function(t){return!t.grabbable()},"matches")},{selector:":animated",matches:o(function(t){return t.animated()},"matches")},{selector:":unanimated",matches:o(function(t){return!t.animated()},"matches")},{selector:":parent",matches:o(function(t){return t.isParent()},"matches")},{selector:":childless",matches:o(function(t){return t.isChildless()},"matches")},{selector:":child",matches:o(function(t){return t.isChild()},"matches")},{selector:":orphan",matches:o(function(t){return t.isOrphan()},"matches")},{selector:":nonorphan",matches:o(function(t){return t.isChild()},"matches")},{selector:":compound",matches:o(function(t){return t.isNode()?t.isParent():t.source().isParent()||t.target().isParent()},"matches")},{selector:":loop",matches:o(function(t){return t.isLoop()},"matches")},{selector:":simple",matches:o(function(t){return t.isSimple()},"matches")},{selector:":active",matches:o(function(t){return t.active()},"matches")},{selector:":inactive",matches:o(function(t){return!t.active()},"matches")},{selector:":backgrounding",matches:o(function(t){return t.backgrounding()},"matches")},{selector:":nonbackgrounding",matches:o(function(t){return!t.backgrounding()},"matches")}].sort(function(e,t){return But(e.selector,t.selector)}),zft=(function(){for(var e={},t,r=0;r0&&d.edgeCount>0)return In("The selector `"+t+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(d.edgeCount>1)return In("The selector `"+t+"` is invalid because it uses multiple edge selectors"),!1;d.edgeCount===1&&In("The selector `"+t+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},"parse"),Uft=o(function(){if(this.toStringCache!=null)return this.toStringCache;for(var t=o(function(d){return d??""},"clean"),r=o(function(d){return fr(d)?'"'+d+'"':t(d)},"cleanVal"),n=o(function(d){return" "+d+" "},"space"),i=o(function(d,f){var p=d.type,m=d.value;switch(p){case er.GROUP:{var g=t(m);return g.substring(0,g.length-1)}case er.DATA_COMPARE:{var y=d.field,v=d.operator;return"["+y+n(t(v))+r(m)+"]"}case er.DATA_BOOL:{var x=d.operator,b=d.field;return"["+t(x)+b+"]"}case er.DATA_EXIST:{var T=d.field;return"["+T+"]"}case er.META_COMPARE:{var k=d.operator,C=d.field;return"[["+C+n(t(k))+r(m)+"]]"}case er.STATE:return m;case er.ID:return"#"+m;case er.CLASS:return"."+m;case er.PARENT:case er.CHILD:return a(d.parent,f)+n(">")+a(d.child,f);case er.ANCESTOR:case er.DESCENDANT:return a(d.ancestor,f)+" "+a(d.descendant,f);case er.COMPOUND_SPLIT:{var w=a(d.left,f),S=a(d.subject,f),R=a(d.right,f);return w+(w.length>0?" ":"")+S+R}case er.TRUE:return""}},"checkToString"),a=o(function(d,f){return d.checks.reduce(function(p,m,g){return p+(f===d&&g===0?"$":"")+i(m,f)},"")},"queryToString"),s="",l=0;l1&&l=0&&(r=r.replace("!",""),f=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),d=!0),(a||l||d)&&(u=!a&&!s?"":""+t,h=""+n),d&&(t=u=u.toLowerCase(),n=h=h.toLowerCase()),r){case"*=":i=u.indexOf(h)>=0;break;case"$=":i=u.indexOf(h,u.length-h.length)>=0;break;case"^=":i=u.indexOf(h)===0;break;case"=":i=t===n;break;case">":p=!0,i=t>n;break;case">=":p=!0,i=t>=n;break;case"<":p=!0,i=t1&&arguments[1]!==void 0?arguments[1]:!0;return DF(this,e,t,Ube)};o(Ybe,"addParent");V1.forEachUp=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return DF(this,e,t,Ybe)};o(ept,"addParentAndChildren");V1.forEachUpAndDown=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return DF(this,e,t,ept)};V1.ancestors=V1.parents;zT=jbe={data:Dn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Dn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Dn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Dn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Dn.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Dn.removeData({field:"rscratch",triggerEvent:!1}),id:o(function(){var t=this[0];if(t)return t._private.data.id},"id")};zT.attr=zT.data;zT.removeAttr=zT.removeData;tpt=jbe,xA={};o($$,"defineDegreeFunction");br(xA,{degree:$$(function(e,t){return t.source().same(t.target())?2:1}),indegree:$$(function(e,t){return t.target().same(e)?1:0}),outdegree:$$(function(e,t){return t.source().same(e)?1:0})});o(E1,"defineDegreeBoundsFunction");br(xA,{minDegree:E1("degree",function(e,t){return et}),minIndegree:E1("indegree",function(e,t){return et}),minOutdegree:E1("outdegree",function(e,t){return et})});br(xA,{totalDegree:o(function(t){for(var r=0,n=this.nodes(),i=0;i0,p=f;f&&(d=d[0]);var m=p?d.position():{x:0,y:0};r!==void 0?h.position(t,r+m[t]):a!==void 0&&h.position({x:a.x+m.x,y:a.y+m.y})}else{var g=n.position(),y=l?n.parent():null,v=y&&y.length>0,x=v;v&&(y=y[0]);var b=x?y.position():{x:0,y:0};return a={x:g.x-b.x,y:g.y-b.y},t===void 0?a:a[t]}else if(!s)return;return this},"relativePosition")};yc.modelPosition=yc.point=yc.position;yc.modelPositions=yc.points=yc.positions;yc.renderedPoint=yc.renderedPosition;yc.relativePoint=yc.relativePosition;rpt=Xbe;F1=Xf={};Xf.renderedBoundingBox=function(e){var t=this.boundingBox(e),r=this.cy(),n=r.zoom(),i=r.pan(),a=t.x1*n+i.x,s=t.x2*n+i.x,l=t.y1*n+i.y,u=t.y2*n+i.y;return{x1:a,x2:s,y1:l,y2:u,w:s-a,h:u-l}};Xf.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.cy();return!t.styleEnabled()||!t.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var n=r._private;n.compoundBoundsClean=!1,n.bbCache=null,e||r.emitAndNotify("bounds")}}),this)};Xf.updateCompoundBounds=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function r(s){if(!s.isParent())return;var l=s._private,u=s.children(),h=s.pstyle("compound-sizing-wrt-labels").value==="include",d={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},f=u.boundingBox({includeLabels:h,includeOverlays:!1,useCache:!1}),p=l.position;(f.w===0||f.h===0)&&(f={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},f.x1=p.x-f.w/2,f.x2=p.x+f.w/2,f.y1=p.y-f.h/2,f.y2=p.y+f.h/2);function m(L,N,I){var _=0,A=0,M=N+I;return L>0&&M>0&&(_=N/M*L,A=I/M*L),{biasDiff:_,biasComplementDiff:A}}o(m,"computeBiasValues");function g(L,N,I,_){if(I.units==="%")switch(_){case"width":return L>0?I.pfValue*L:0;case"height":return N>0?I.pfValue*N:0;case"average":return L>0&&N>0?I.pfValue*(L+N)/2:0;case"min":return L>0&&N>0?L>N?I.pfValue*N:I.pfValue*L:0;case"max":return L>0&&N>0?L>N?I.pfValue*L:I.pfValue*N:0;default:return 0}else return I.units==="px"?I.pfValue:0}o(g,"computePaddingValues");var y=d.width.left.value;d.width.left.units==="px"&&d.width.val>0&&(y=y*100/d.width.val);var v=d.width.right.value;d.width.right.units==="px"&&d.width.val>0&&(v=v*100/d.width.val);var x=d.height.top.value;d.height.top.units==="px"&&d.height.val>0&&(x=x*100/d.height.val);var b=d.height.bottom.value;d.height.bottom.units==="px"&&d.height.val>0&&(b=b*100/d.height.val);var T=m(d.width.val-f.w,y,v),k=T.biasDiff,C=T.biasComplementDiff,w=m(d.height.val-f.h,x,b),S=w.biasDiff,R=w.biasComplementDiff;l.autoPadding=g(f.w,f.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),l.autoWidth=Math.max(f.w,d.width.val),p.x=(-k+f.x1+f.x2+C)/2,l.autoHeight=Math.max(f.h,d.height.val),p.y=(-S+f.y1+f.y2+R)/2}o(r,"update");for(var n=0;nt.x2?i:t.x2,t.y1=nt.y2?a:t.y2,t.w=t.x2-t.x1,t.h=t.y2-t.y1)},"updateBounds"),Pf=o(function(t,r){return r==null?t:gc(t,r.x1,r.y1,r.x2,r.y2)},"updateBoundsFromBox"),wT=o(function(t,r,n){return mo(t,r,n)},"prefixedProperty"),I5=o(function(t,r,n){if(!r.cy().headless()){var i=r._private,a=i.rstyle,s=a.arrowWidth/2,l=r.pstyle(n+"-arrow-shape").value,u,h;if(l!=="none"){n==="source"?(u=a.srcX,h=a.srcY):n==="target"?(u=a.tgtX,h=a.tgtY):(u=a.midX,h=a.midY);var d=i.arrowBounds=i.arrowBounds||{},f=d[n]=d[n]||{};f.x1=u-s,f.y1=h-s,f.x2=u+s,f.y2=h+s,f.w=f.x2-f.x1,f.h=f.y2-f.y1,z5(f,1),gc(t,f.x1,f.y1,f.x2,f.y2)}}},"updateBoundsFromArrow"),F$=o(function(t,r,n){if(!r.cy().headless()){var i;n?i=n+"-":i="";var a=r._private,s=a.rstyle,l=r.pstyle(i+"label").strValue;if(l){var u=r.pstyle("text-halign"),h=r.pstyle("text-valign"),d=wT(s,"labelWidth",n),f=wT(s,"labelHeight",n),p=wT(s,"labelX",n),m=wT(s,"labelY",n),g=r.pstyle(i+"text-margin-x").pfValue,y=r.pstyle(i+"text-margin-y").pfValue,v=r.isEdge(),x=r.pstyle(i+"text-rotation"),b=r.pstyle("text-outline-width").pfValue,T=r.pstyle("text-border-width").pfValue,k=T/2,C=r.pstyle("text-background-padding").pfValue,w=2,S=f,R=d,L=R/2,N=S/2,I,_,A,M;if(v)I=p-L,_=p+L,A=m-N,M=m+N;else{switch(u.value){case"left":I=p-R,_=p;break;case"center":I=p-L,_=p+L;break;case"right":I=p,_=p+R;break}switch(h.value){case"top":A=m-S,M=m;break;case"center":A=m-N,M=m+N;break;case"bottom":A=m,M=m+S;break}}var D=g-Math.max(b,k)-C-w,P=g+Math.max(b,k)+C+w,B=y-Math.max(b,k)-C-w,O=y+Math.max(b,k)+C+w;I+=D,_+=P,A+=B,M+=O;var $=n||"main",V=a.labelBounds,G=V[$]=V[$]||{};G.x1=I,G.y1=A,G.x2=_,G.y2=M,G.w=_-I,G.h=M-A,G.leftPad=D,G.rightPad=P,G.topPad=B,G.botPad=O;var z=v&&x.strValue==="autorotate",W=x.pfValue!=null&&x.pfValue!==0;if(z||W){var H=z?wT(a.rstyle,"labelAngle",n):x.pfValue,j=Math.cos(H),Q=Math.sin(H),U=(I+_)/2,oe=(A+M)/2;if(!v){switch(u.value){case"left":U=_;break;case"right":U=I;break}switch(h.value){case"top":oe=M;break;case"bottom":oe=A;break}}var te=o(function(Oe,ue){return Oe=Oe-U,ue=ue-oe,{x:Oe*j-ue*Q+U,y:Oe*Q+ue*j+oe}},"rotate"),le=te(I,A),ie=te(I,M),ae=te(_,A),Re=te(_,M);I=Math.min(le.x,ie.x,ae.x,Re.x),_=Math.max(le.x,ie.x,ae.x,Re.x),A=Math.min(le.y,ie.y,ae.y,Re.y),M=Math.max(le.y,ie.y,ae.y,Re.y)}var be=$+"Rot",Pe=V[be]=V[be]||{};Pe.x1=I,Pe.y1=A,Pe.x2=_,Pe.y2=M,Pe.w=_-I,Pe.h=M-A,gc(t,I,A,_,M),gc(a.labelBounds.all,I,A,_,M)}return t}},"updateBoundsFromLabel"),pxe=o(function(t,r){if(!r.cy().headless()){var n=r.pstyle("outline-opacity").value,i=r.pstyle("outline-width").value,a=r.pstyle("outline-offset").value,s=i+a;Zbe(t,r,n,s,"outside",s/2)}},"updateBoundsFromOutline"),Zbe=o(function(t,r,n,i,a,s){if(!(n===0||i<=0||a==="inside")){var l=r.cy(),u=l.renderer(),h=u.nodeShapes[u.getNodeShape(r)];if(h){var d=r.position(),f=d.x,p=d.y,m=r.width(),g=r.height();if(h.hasMiterBounds){a==="center"&&(i/=2);var y=h.miterBounds(f,p,m,g,i);Pf(t,y)}else s!=null&&s>0&&G5(t,[s,s,s,s])}}},"updateBoundsFromMiter"),npt=o(function(t,r){if(!r.cy().headless()){var n=r.pstyle("border-opacity").value,i=r.pstyle("border-width").pfValue,a=r.pstyle("border-position").value;Zbe(t,r,n,i,a)}},"updateBoundsFromMiterBorder"),ipt=o(function(t,r){var n=t._private.cy,i=n.styleEnabled(),a=n.headless(),s=Ns(),l=t._private,u=t.isNode(),h=t.isEdge(),d,f,p,m,g,y,v=l.rstyle,x=u&&i?t.pstyle("bounds-expansion").pfValue:[0],b=o(function(Ge){return Ge.pstyle("display").value!=="none"},"isDisplayed"),T=!i||b(t)&&(!h||b(t.source())&&b(t.target()));if(T){var k=0,C=0;i&&r.includeOverlays&&(k=t.pstyle("overlay-opacity").value,k!==0&&(C=t.pstyle("overlay-padding").value));var w=0,S=0;i&&r.includeUnderlays&&(w=t.pstyle("underlay-opacity").value,w!==0&&(S=t.pstyle("underlay-padding").value));var R=Math.max(C,S),L=0,N=0;if(i&&(L=t.pstyle("width").pfValue,N=L/2),u&&r.includeNodes){var I=t.position();g=I.x,y=I.y;var _=t.outerWidth(),A=_/2,M=t.outerHeight(),D=M/2;d=g-A,f=g+A,p=y-D,m=y+D,gc(s,d,p,f,m),i&&pxe(s,t),i&&r.includeOutlines&&!a&&pxe(s,t),i&&npt(s,t)}else if(h&&r.includeEdges)if(i&&!a){var P=t.pstyle("curve-style").strValue;if(d=Math.min(v.srcX,v.midX,v.tgtX),f=Math.max(v.srcX,v.midX,v.tgtX),p=Math.min(v.srcY,v.midY,v.tgtY),m=Math.max(v.srcY,v.midY,v.tgtY),d-=N,f+=N,p-=N,m+=N,gc(s,d,p,f,m),P==="haystack"){var B=v.haystackPts;if(B&&B.length===2){if(d=B[0].x,p=B[0].y,f=B[1].x,m=B[1].y,d>f){var O=d;d=f,f=O}if(p>m){var $=p;p=m,m=$}gc(s,d-N,p-N,f+N,m+N)}}else if(P==="bezier"||P==="unbundled-bezier"||Of(P,"segments")||Of(P,"taxi")){var V;switch(P){case"bezier":case"unbundled-bezier":V=v.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":V=v.linePts;break}if(V!=null)for(var G=0;Gf){var U=d;d=f,f=U}if(p>m){var oe=p;p=m,m=oe}d-=N,f+=N,p-=N,m+=N,gc(s,d,p,f,m)}if(i&&r.includeEdges&&h&&(I5(s,t,"mid-source"),I5(s,t,"mid-target"),I5(s,t,"source"),I5(s,t,"target")),i){var te=t.pstyle("ghost").value==="yes";if(te){var le=t.pstyle("ghost-offset-x").pfValue,ie=t.pstyle("ghost-offset-y").pfValue;gc(s,s.x1+le,s.y1+ie,s.x2+le,s.y2+ie)}}var ae=l.bodyBounds=l.bodyBounds||{};J1e(ae,s),G5(ae,x),z5(ae,1),i&&(d=s.x1,f=s.x2,p=s.y1,m=s.y2,gc(s,d-R,p-R,f+R,m+R));var Re=l.overlayBounds=l.overlayBounds||{};J1e(Re,s),G5(Re,x),z5(Re,1);var be=l.labelBounds=l.labelBounds||{};be.all!=null?Fht(be.all):be.all=Ns(),i&&r.includeLabels&&(r.includeMainLabels&&F$(s,t,null),h&&(r.includeSourceLabels&&F$(s,t,"source"),r.includeTargetLabels&&F$(s,t,"target")))}return s.x1=kl(s.x1),s.y1=kl(s.y1),s.x2=kl(s.x2),s.y2=kl(s.y2),s.w=kl(s.x2-s.x1),s.h=kl(s.y2-s.y1),s.w>0&&s.h>0&&T&&(G5(s,x),z5(s,1)),s},"boundingBoxImpl"),Qbe=o(function(t){var r=0,n=o(function(s){return(s?1:0)<=0;l--)s(l);return this};Uf.removeAllListeners=function(){return this.removeListener("*")};Uf.emit=Uf.trigger=function(e,t,r){var n=this.listeners,i=n.length;return this.emitting++,Hn(t)||(t=[t]),bpt(this,function(a,s){r!=null&&(n=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],i=n.length);for(var l=o(function(){var d=n[u];if(d.type===s.type&&(!d.namespace||d.namespace===s.namespace||d.namespace===vpt)&&a.eventMatches(a.context,d,s)){var f=[s];t!=null&&uht(f,t),a.beforeEmit(a.context,d,s),d.conf&&d.conf.one&&(a.listeners=a.listeners.filter(function(g){return g!==d}));var p=a.callbackContext(a.context,d,s),m=d.callback.apply(p,f);a.afterEmit(a.context,d,s),m===!1&&(s.stopPropagation(),s.preventDefault())}},"_loop2"),u=0;u1&&!s){var l=this.length-1,u=this[l],h=u._private.data.id;this[l]=void 0,this[t]=u,a.set(h,{ele:u,index:t})}return this.length--,this},"unmergeAt"),unmergeOne:o(function(t){t=t[0];var r=this._private,n=t._private.data.id,i=r.map,a=i.get(n);if(!a)return this;var s=a.index;return this.unmergeAt(s),this},"unmergeOne"),unmerge:o(function(t){var r=this._private.cy;if(!t)return this;if(t&&fr(t)){var n=t;t=r.mutableElements().filter(n)}for(var i=0;i=0;r--){var n=this[r];t(n)&&this.unmergeAt(r)}return this},"unmergeBy"),map:o(function(t,r){for(var n=[],i=this,a=0;an&&(n=u,i=l)}return{value:n,ele:i}},"max"),min:o(function(t,r){for(var n=1/0,i,a=this,s=0;s=0&&a"u"?"undefined":ca(Symbol))!=t&&ca(Symbol.iterator)!=t;r&&(nA[Symbol.iterator]=function(){var n=this,i={value:void 0,done:!1},a=0,s=this.length;return abe({next:o(function(){return a1&&arguments[1]!==void 0?arguments[1]:!0,n=this[0],i=n.cy();if(i.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,i.style().apply(n));var a=n._private.style[t];return a??(r?i.style().getDefaultProperty(t):null)}},"parsedStyle"),numericStyle:o(function(t){var r=this[0];if(r.cy().styleEnabled()&&r){var n=r.pstyle(t);return n.pfValue!==void 0?n.pfValue:n.value}},"numericStyle"),numericStyleUnits:o(function(t){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(t).units},"numericStyleUnits"),renderedStyle:o(function(t){var r=this.cy();if(!r.styleEnabled())return this;var n=this[0];if(n)return r.style().getRenderedStyle(n,t)},"renderedStyle"),style:o(function(t,r){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,a=n.style();if(cn(t)){var s=t;a.applyBypass(this,s,i),this.emitAndNotify("style")}else if(fr(t))if(r===void 0){var l=this[0];return l?a.getStylePropertyValue(l,t):void 0}else a.applyBypass(this,t,r,i),this.emitAndNotify("style");else if(t===void 0){var u=this[0];return u?a.getRawStyle(u):void 0}return this},"style"),removeStyle:o(function(t){var r=this.cy();if(!r.styleEnabled())return this;var n=!1,i=r.style(),a=this;if(t===void 0)for(var s=0;s0&&t.push(d[0]),t.push(l[0])}return this.spawn(t,!0).filter(e)},"neighborhood"),closedNeighborhood:o(function(t){return this.neighborhood().add(this).filter(t)},"closedNeighborhood"),openNeighborhood:o(function(t){return this.neighborhood(t)},"openNeighborhood")});us.neighbourhood=us.neighborhood;us.closedNeighbourhood=us.closedNeighborhood;us.openNeighbourhood=us.openNeighborhood;br(us,{source:Sl(o(function(t){var r=this[0],n;return r&&(n=r._private.source||r.cy().collection()),n&&t?n.filter(t):n},"sourceImpl"),"source"),target:Sl(o(function(t){var r=this[0],n;return r&&(n=r._private.target||r.cy().collection()),n&&t?n.filter(t):n},"targetImpl"),"target"),sources:Sxe({attr:"source"}),targets:Sxe({attr:"target"})});o(Sxe,"defineSourceFunction");br(us,{edgesWith:Sl(Exe(),"edgesWith"),edgesTo:Sl(Exe({thisIsSrc:!0}),"edgesTo")});o(Exe,"defineEdgesWithFunction");br(us,{connectedEdges:Sl(function(e){for(var t=[],r=this,n=0;n0);return s},"components"),component:o(function(){var t=this[0];return t.cy().mutableElements().components(t)[0]},"component")});us.componentsOf=us.components;Ga=o(function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(t===void 0){pi("A collection must have a reference to the core");return}var a=new Nh,s=!1;if(!r)r=[];else if(r.length>0&&cn(r[0])&&!UT(r[0])){s=!0;for(var l=[],u=new W1,h=0,d=r.length;h0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=r.cy(),i=n._private,a=[],s=[],l,u=0,h=r.length;u0){for(var $=l.length===r.length?r:new Ga(n,l),V=0;V<$.length;V++){var G=$[V];G.isNode()||(G.parallelEdges().clearTraversalCache(),G.source().clearTraversalCache(),G.target().clearTraversalCache())}var z;i.hasCompoundNodes?z=n.collection().merge($).merge($.connectedNodes()).merge($.parent()):z=$,z.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(e),e?$.emitAndNotify("add"):t&&$.emit("add")}return r};Zn.removed=function(){var e=this[0];return e&&e._private.removed};Zn.inside=function(){var e=this[0];return e&&!e._private.removed};Zn.remove=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=[],i={},a=r._private.cy;function s(M){for(var D=M._private.edges,P=0;P0&&(e?I.emitAndNotify("remove"):t&&I.emit("remove"));for(var _=0;_d&&Math.abs(g.v)>d;);return p?function(y){return u[y*(u.length-1)|0]}:h},"springRK4Factory")})(),Kn=o(function(t,r,n,i){var a=Lpt(t,r,n,i);return function(s,l,u){return s+(l-s)*a(u)}},"cubicBezier"),q5={linear:o(function(t,r,n){return t+(r-t)*n},"linear"),ease:Kn(.25,.1,.25,1),"ease-in":Kn(.42,0,1,1),"ease-out":Kn(0,0,.58,1),"ease-in-out":Kn(.42,0,.58,1),"ease-in-sine":Kn(.47,0,.745,.715),"ease-out-sine":Kn(.39,.575,.565,1),"ease-in-out-sine":Kn(.445,.05,.55,.95),"ease-in-quad":Kn(.55,.085,.68,.53),"ease-out-quad":Kn(.25,.46,.45,.94),"ease-in-out-quad":Kn(.455,.03,.515,.955),"ease-in-cubic":Kn(.55,.055,.675,.19),"ease-out-cubic":Kn(.215,.61,.355,1),"ease-in-out-cubic":Kn(.645,.045,.355,1),"ease-in-quart":Kn(.895,.03,.685,.22),"ease-out-quart":Kn(.165,.84,.44,1),"ease-in-out-quart":Kn(.77,0,.175,1),"ease-in-quint":Kn(.755,.05,.855,.06),"ease-out-quint":Kn(.23,1,.32,1),"ease-in-out-quint":Kn(.86,0,.07,1),"ease-in-expo":Kn(.95,.05,.795,.035),"ease-out-expo":Kn(.19,1,.22,1),"ease-in-out-expo":Kn(1,0,0,1),"ease-in-circ":Kn(.6,.04,.98,.335),"ease-out-circ":Kn(.075,.82,.165,1),"ease-in-out-circ":Kn(.785,.135,.15,.86),spring:o(function(t,r,n){if(n===0)return q5.linear;var i=Dpt(t,r,n);return function(a,s,l){return a+(s-a)*i(l)}},"spring"),"cubic-bezier":Kn};o(Rxe,"getEasedValue");o(_xe,"getValue");o(A1,"ease");o(Ipt,"step$1");o(ST,"valid");o(Mpt,"startAnimation");o(Lxe,"stepAll");Npt={animate:Dn.animate(),animation:Dn.animation(),animated:Dn.animated(),clearQueue:Dn.clearQueue(),delay:Dn.delay(),delayAnimation:Dn.delayAnimation(),stop:Dn.stop(),addToAnimationPool:o(function(t){var r=this;r.styleEnabled()&&r._private.aniEles.merge(t)},"addToAnimationPool"),stopAnimationLoop:o(function(){this._private.animationsRunning=!1},"stopAnimationLoop"),startAnimationLoop:o(function(){var t=this;if(t._private.animationsRunning=!0,!t.styleEnabled())return;function r(){t._private.animationsRunning&&Q5(o(function(a){Lxe(a,t),r()},"animationStep"))}o(r,"headlessStep");var n=t.renderer();n&&n.beforeRender?n.beforeRender(o(function(a,s){Lxe(s,t)},"rendererAnimationStep"),n.beforeRenderPriorities.animations):r()},"startAnimationLoop")},Ppt={qualifierCompare:o(function(t,r){return t==null||r==null?t==null&&r==null:t.sameText(r)},"qualifierCompare"),eventMatches:o(function(t,r,n){var i=r.qualifier;return i!=null?t!==n.target&&UT(n.target)&&i.matches(n.target):!0},"eventMatches"),addEventFields:o(function(t,r){r.cy=t,r.target=t},"addEventFields"),callbackContext:o(function(t,r,n){return r.qualifier!=null?n.target:t},"callbackContext")},P5=o(function(t){return fr(t)?new qf(t):t},"argSelector"),c2e={createEmitter:o(function(){var t=this._private;return t.emitter||(t.emitter=new bA(Ppt,this)),this},"createEmitter"),emitter:o(function(){return this._private.emitter},"emitter"),on:o(function(t,r,n){return this.emitter().on(t,P5(r),n),this},"on"),removeListener:o(function(t,r,n){return this.emitter().removeListener(t,P5(r),n),this},"removeListener"),removeAllListeners:o(function(){return this.emitter().removeAllListeners(),this},"removeAllListeners"),one:o(function(t,r,n){return this.emitter().one(t,P5(r),n),this},"one"),once:o(function(t,r,n){return this.emitter().one(t,P5(r),n),this},"once"),emit:o(function(t,r){return this.emitter().emit(t,r),this},"emit"),emitAndNotify:o(function(t,r){return this.emit(t),this.notify(t,r),this},"emitAndNotify")};Dn.eventAliasesOn(c2e);aF={png:o(function(t){var r=this._private.renderer;return t=t||{},r.png(t)},"png"),jpg:o(function(t){var r=this._private.renderer;return t=t||{},t.bg=t.bg||"#fff",r.jpg(t)},"jpg")};aF.jpeg=aF.jpg;H5={layout:o(function(t){var r=this;if(t==null){pi("Layout options must be specified to make a layout");return}if(t.name==null){pi("A `name` must be specified to make a layout");return}var n=t.name,i=r.extension("layout",n);if(i==null){pi("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var a;fr(t.eles)?a=r.$(t.eles):a=t.eles!=null?t.eles:r.$();var s=new i(br({},t,{cy:r,eles:a}));return s},"layout")};H5.createLayout=H5.makeLayout=H5.layout;Opt={notify:o(function(t,r){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var i=n.batchNotifications[t]=n.batchNotifications[t]||this.collection();r!=null&&i.merge(r);return}if(n.notificationsEnabled){var a=this.renderer();this.destroyed()||!a||a.notify(t,r)}},"notify"),notifications:o(function(t){var r=this._private;return t===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!t,this)},"notifications"),noNotifications:o(function(t){this.notifications(!1),t(),this.notifications(!0)},"noNotifications"),batching:o(function(){return this._private.batchCount>0},"batching"),startBatch:o(function(){var t=this._private;return t.batchCount==null&&(t.batchCount=0),t.batchCount===0&&(t.batchStyleEles=this.collection(),t.batchNotifications={}),t.batchCount++,this},"startBatch"),endBatch:o(function(){var t=this._private;if(t.batchCount===0)return this;if(t.batchCount--,t.batchCount===0){t.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(t.batchNotifications).forEach(function(n){var i=t.batchNotifications[n];i.empty()?r.notify(n):r.notify(n,i)})}return this},"endBatch"),batch:o(function(t){return this.startBatch(),t(),this.endBatch(),this},"batch"),batchData:o(function(t){var r=this;return this.batch(function(){for(var n=Object.keys(t),i=0;i0;)r.removeChild(r.childNodes[0]);t._private.renderer=null,t.mutableElements().forEach(function(n){var i=n._private;i.rscratch={},i.rstyle={},i.animation.current=[],i.animation.queue=[]})},"destroyRenderer"),onRender:o(function(t){return this.on("render",t)},"onRender"),offRender:o(function(t){return this.off("render",t)},"offRender")};sF.invalidateDimensions=sF.resize;U5={collection:o(function(t,r){return fr(t)?this.$(t):Ho(t)?t.collection():Hn(t)?(r||(r={}),new Ga(this,t,r.unique,r.removed)):new Ga(this)},"collection"),nodes:o(function(t){var r=this.$(function(n){return n.isNode()});return t?r.filter(t):r},"nodes"),edges:o(function(t){var r=this.$(function(n){return n.isEdge()});return t?r.filter(t):r},"edges"),$:o(function(t){var r=this._private.elements;return t?r.filter(t):r.spawnSelf()},"$"),mutableElements:o(function(){return this._private.elements},"mutableElements")};U5.elements=U5.filter=U5.$;_a={},IT="t",$pt="f";_a.apply=function(e){for(var t=this,r=t._private,n=r.cy,i=n.collection(),a=0;a0;if(p||f&&m){var g=void 0;p&&m||p?g=h.properties:m&&(g=h.mappedProperties);for(var y=0;y1&&(k=1),l.color){var w=n.valueMin[0],S=n.valueMax[0],R=n.valueMin[1],L=n.valueMax[1],N=n.valueMin[2],I=n.valueMax[2],_=n.valueMin[3]==null?1:n.valueMin[3],A=n.valueMax[3]==null?1:n.valueMax[3],M=[Math.round(w+(S-w)*k),Math.round(R+(L-R)*k),Math.round(N+(I-N)*k),Math.round(_+(A-_)*k)];a={bypass:n.bypass,name:n.name,value:M,strValue:"rgb("+M[0]+", "+M[1]+", "+M[2]+")"}}else if(l.number){var D=n.valueMin+(n.valueMax-n.valueMin)*k;a=this.parse(n.name,D,n.bypass,p)}else return!1;if(!a)return y(),!1;a.mapping=n,n=a;break}case s.data:{for(var P=n.field.split("."),B=f.data,O=0;O0&&a>0){for(var l={},u=!1,h=0;h0?e.delayAnimation(s).play().promise().then(T):T()}).then(function(){return e.animation({style:l,duration:a,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(e,i),e.emitAndNotify("style"),n.transitioning=!1})}else n.transitioning&&(this.removeBypasses(e,i),e.emitAndNotify("style"),n.transitioning=!1)};_a.checkTrigger=function(e,t,r,n,i,a){var s=this.properties[t],l=i(s);e.removed()||l!=null&&l(r,n,e)&&a(s)};_a.checkZOrderTrigger=function(e,t,r,n){var i=this;this.checkTrigger(e,t,r,n,function(a){return a.triggersZOrder},function(){i._private.cy.notify("zorder",e)})};_a.checkBoundsTrigger=function(e,t,r,n){this.checkTrigger(e,t,r,n,function(i){return i.triggersBounds},function(i){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache()})};_a.checkConnectedEdgesBoundsTrigger=function(e,t,r,n){this.checkTrigger(e,t,r,n,function(i){return i.triggersBoundsOfConnectedEdges},function(i){e.connectedEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};_a.checkParallelEdgesBoundsTrigger=function(e,t,r,n){this.checkTrigger(e,t,r,n,function(i){return i.triggersBoundsOfParallelEdges},function(i){e.parallelEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};_a.checkTriggers=function(e,t,r,n){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,r,n),this.checkBoundsTrigger(e,t,r,n),this.checkConnectedEdgesBoundsTrigger(e,t,r,n),this.checkParallelEdgesBoundsTrigger(e,t,r,n)};JT={};JT.applyBypass=function(e,t,r,n){var i=this,a=[],s=!0;if(t==="*"||t==="**"){if(r!==void 0)for(var l=0;li.length?n=n.substr(i.length):n=""}o(l,"removeSelAndBlockFromRemaining");function u(){a.length>s.length?a=a.substr(s.length):a=""}for(o(u,"removePropAndValFromRem");;){var h=n.match(/^\s*$/);if(h)break;var d=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!d){In("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}i=d[0];var f=d[1];if(f!=="core"){var p=new qf(f);if(p.invalid){In("Skipping parsing of block: Invalid selector found in string stylesheet: "+f),l();continue}}var m=d[2],g=!1;a=m;for(var y=[];;){var v=a.match(/^\s*$/);if(v)break;var x=a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!x){In("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+m),g=!0;break}s=x[0];var b=x[1],T=x[2],k=t.properties[b];if(!k){In("Skipping property: Invalid property name in: "+s),u();continue}var C=r.parse(b,T);if(!C){In("Skipping property: Invalid property definition in: "+s),u();continue}y.push({name:b,val:T}),u()}if(g){l();break}r.selector(f);for(var w=0;w=7&&t[0]==="d"&&(d=new RegExp(l.data.regex).exec(t))){if(r)return!1;var p=l.data;return{name:e,value:d,strValue:""+t,mapped:p,field:d[1],bypass:r}}else if(t.length>=10&&t[0]==="m"&&(f=new RegExp(l.mapData.regex).exec(t))){if(r||h.multiple)return!1;var m=l.mapData;if(!(h.color||h.number))return!1;var g=this.parse(e,f[4]);if(!g||g.mapped)return!1;var y=this.parse(e,f[5]);if(!y||y.mapped)return!1;if(g.pfValue===y.pfValue||g.strValue===y.strValue)return In("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+g.strValue+"`"),this.parse(e,g.strValue);if(h.color){var v=g.value,x=y.value,b=v[0]===x[0]&&v[1]===x[1]&&v[2]===x[2]&&(v[3]===x[3]||(v[3]==null||v[3]===1)&&(x[3]==null||x[3]===1));if(b)return!1}return{name:e,value:f,strValue:""+t,mapped:m,field:f[1],fieldMin:parseFloat(f[2]),fieldMax:parseFloat(f[3]),valueMin:g.value,valueMax:y.value,bypass:r}}}if(h.multiple&&n!=="multiple"){var T;if(u?T=t.split(/\s+/):Hn(t)?T=t:T=[t],h.evenMultiple&&T.length%2!==0)return null;for(var k=[],C=[],w=[],S="",R=!1,L=0;L0?" ":"")+N.strValue}return h.validate&&!h.validate(k,C)?null:h.singleEnum&&R?k.length===1&&fr(k[0])?{name:e,value:k[0],strValue:k[0],bypass:r}:null:{name:e,value:k,pfValue:w,strValue:S,bypass:r,units:C}}var I=o(function(){for(var te=0;teh.max||h.strictMax&&t===h.max))return null;var P={name:e,value:t,strValue:""+t+(_||""),units:_,bypass:r};return h.unitless||_!=="px"&&_!=="em"?P.pfValue=t:P.pfValue=_==="px"||!_?t:this.getEmSizeInPixels()*t,(_==="ms"||_==="s")&&(P.pfValue=_==="ms"?t:1e3*t),(_==="deg"||_==="rad")&&(P.pfValue=_==="rad"?t:Pht(t)),_==="%"&&(P.pfValue=t/100),P}else if(h.propList){var B=[],O=""+t;if(O!=="none"){for(var $=O.split(/\s*,\s*|\s+/),V=0;V<$.length;V++){var G=$[V].trim();i.properties[G]?B.push(G):In("`"+G+"` is not a valid property name")}if(B.length===0)return null}return{name:e,value:B,strValue:B.length===0?"none":B.join(" "),bypass:r}}else if(h.color){var z=dbe(t);return z?{name:e,value:z,pfValue:z,strValue:"rgb("+z[0]+","+z[1]+","+z[2]+")",bypass:r}:null}else if(h.regex||h.regexes){if(h.enums){var W=I();if(W)return W}for(var H=h.regexes?h.regexes:[h.regex],j=0;j0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0){u=Math.min((s-2*r)/n.w,(l-2*r)/n.h),u=u>this._private.maxZoom?this._private.maxZoom:u,u=u=n.minZoom&&(n.maxZoom=r),this},"zoomRange"),minZoom:o(function(t){return t===void 0?this._private.minZoom:this.zoomRange({min:t})},"minZoom"),maxZoom:o(function(t){return t===void 0?this._private.maxZoom:this.zoomRange({max:t})},"maxZoom"),getZoomedViewport:o(function(t){var r=this._private,n=r.pan,i=r.zoom,a,s,l=!1;if(r.zoomingEnabled||(l=!0),Gt(t)?s=t:cn(t)&&(s=t.level,t.position!=null?a=fA(t.position,i,n):t.renderedPosition!=null&&(a=t.renderedPosition),a!=null&&!r.panningEnabled&&(l=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=u,a.push("zoom"))}if(i&&(!s||!t.cancelOnFailedZoom)&&r.panningEnabled){var h=t.pan;Gt(h.x)&&(r.pan.x=h.x,l=!1),Gt(h.y)&&(r.pan.y=h.y,l=!1),l||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},"viewport"),center:o(function(t){var r=this.getCenterPan(t);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},"center"),getCenterPan:o(function(t,r){if(this._private.panningEnabled){if(fr(t)){var n=t;t=this.mutableElements().filter(n)}else Ho(t)||(t=this.mutableElements());if(t.length!==0){var i=t.boundingBox(),a=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var l={x:(a-r*(i.x1+i.x2))/2,y:(s-r*(i.y1+i.y2))/2};return l}}},"getCenterPan"),reset:o(function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},"reset"),invalidateSize:o(function(){this._private.sizeCache=null},"invalidateSize"),size:o(function(){var t=this._private,r=t.container,n=this;return t.sizeCache=t.sizeCache||(r?(function(){var i=n.window().getComputedStyle(r),a=o(function(l){return parseFloat(i.getPropertyValue(l))},"val");return{width:r.clientWidth-a("padding-left")-a("padding-right"),height:r.clientHeight-a("padding-top")-a("padding-bottom")}})():{width:1,height:1})},"size"),width:o(function(){return this.size().width},"width"),height:o(function(){return this.size().height},"height"),extent:o(function(){var t=this._private.pan,r=this._private.zoom,n=this.renderedExtent(),i={x1:(n.x1-t.x)/r,x2:(n.x2-t.x)/r,y1:(n.y1-t.y)/r,y2:(n.y2-t.y)/r};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},"extent"),renderedExtent:o(function(){var t=this.width(),r=this.height();return{x1:0,y1:0,x2:t,y2:r,w:t,h:r}},"renderedExtent"),multiClickDebounceTime:o(function(t){if(t)this._private.multiClickDebounceTime=t;else return this._private.multiClickDebounceTime;return this},"multiClickDebounceTime")};ag.centre=ag.center;ag.autolockNodes=ag.autolock;ag.autoungrabifyNodes=ag.autoungrabify;VT={data:Dn.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Dn.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Dn.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Dn.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};VT.attr=VT.data;VT.removeAttr=VT.removeData;WT=o(function(t){var r=this;t=br({},t);var n=t.container;n&&!Z5(n)&&Z5(n[0])&&(n=n[0]);var i=n?n._cyreg:null;i=i||{},i&&i.cy&&(i.cy.destroy(),i={});var a=i.readies=i.readies||[];n&&(n._cyreg=i),i.cy=r;var s=oa!==void 0&&n!==void 0&&!t.headless,l=t;l.layout=br({name:s?"grid":"null"},l.layout),l.renderer=br({name:s?"canvas":"null"},l.renderer);var u=o(function(g,y,v){return y!==void 0?y:v!==void 0?v:g},"defVal"),h=this._private={container:n,ready:!1,options:l,elements:new Ga(this),listeners:[],aniEles:new Ga(this),data:l.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:u(!0,l.zoomingEnabled),userZoomingEnabled:u(!0,l.userZoomingEnabled),panningEnabled:u(!0,l.panningEnabled),userPanningEnabled:u(!0,l.userPanningEnabled),boxSelectionEnabled:u(!0,l.boxSelectionEnabled),autolock:u(!1,l.autolock,l.autolockNodes),autoungrabify:u(!1,l.autoungrabify,l.autoungrabifyNodes),autounselectify:u(!1,l.autounselectify),styleEnabled:l.styleEnabled===void 0?s:l.styleEnabled,zoom:Gt(l.zoom)?l.zoom:1,pan:{x:cn(l.pan)&&Gt(l.pan.x)?l.pan.x:0,y:cn(l.pan)&&Gt(l.pan.y)?l.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:u(250,l.multiClickDebounceTime)};this.createEmitter(),this.selectionType(l.selectionType),this.zoomRange({min:l.minZoom,max:l.maxZoom});var d=o(function(g,y){var v=g.some(_ut);if(v)return q1.all(g).then(y);y(g)},"loadExtData");h.styleEnabled&&r.setStyle([]);var f=br({},l,l.renderer);r.initRenderer(f);var p=o(function(g,y,v){r.notifications(!1);var x=r.mutableElements();x.length>0&&x.remove(),g!=null&&(cn(g)||Hn(g))&&r.add(g),r.one("layoutready",function(T){r.notifications(!0),r.emit(T),r.one("load",y),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",v),r.emit("done")});var b=br({},r._private.options.layout);b.eles=r.elements(),r.layout(b).run()},"setElesAndLayout");d([l.style,l.elements],function(m){var g=m[0],y=m[1];h.styleEnabled&&r.style().append(g),p(y,function(){r.startAnimationLoop(),h.ready=!0,Ci(l.ready)&&r.on("ready",l.ready);for(var v=0;v0,l=!!e.boundingBox,u=Ns(l?e.boundingBox:structuredClone(t.extent())),h;if(Ho(e.roots))h=e.roots;else if(Hn(e.roots)){for(var d=[],f=0;f0;){var M=A(),D=L(M,I);if(D)M.outgoers().filter(function(ye){return ye.isNode()&&r.has(ye)}).forEach(_);else if(D===null){In("Detected double maximal shift for node `"+M.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var P=0;if(e.avoidOverlap)for(var B=0;B0&&x[0].length<=3?se/2:0),Te=2*Math.PI/x[re].length*J;return re===0&&x[0].length===1&&(ge=1),{x:ae.x+ge*Math.cos(Te),y:ae.y+ge*Math.sin(Te)}}else{var we=x[re].length,Me=Math.max(we===1?0:l?(u.w-e.padding*2-Re.w)/((e.grid?Pe:we)-1):(u.w-e.padding*2-Re.w)/((e.grid?Pe:we)+1),P),ve={x:ae.x+(J+1-(we+1)/2)*Me,y:ae.y+(re+1-(j+1)/2)*be};return ve}},"getPositionTopBottom"),Oe={downward:0,leftward:90,upward:180,rightward:-90};Object.keys(Oe).indexOf(e.direction)===-1&&pi("Invalid direction '".concat(e.direction,"' specified for breadthfirst layout. Valid values are: ").concat(Object.keys(Oe).join(", ")));var ue=o(function(ke){return iht(Ge(ke),u,Oe[e.direction])},"getPosition");return r.nodes().layoutPositions(this,e,ue),this};Wpt={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(h2e,"CircleLayout");h2e.prototype.run=function(){var e=this.options,t=e,r=e.cy,n=t.eles,i=t.counterclockwise!==void 0?!t.counterclockwise:t.clockwise,a=n.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));for(var s=Ns(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=t.sweep===void 0?2*Math.PI-2*Math.PI/a.length:t.sweep,h=u/Math.max(1,a.length-1),d,f=0,p=0;p1&&t.avoidOverlap){f*=1.75;var x=Math.cos(h)-Math.cos(0),b=Math.sin(h)-Math.sin(0),T=Math.sqrt(f*f/(x*x+b*b));d=Math.max(T,d)}var k=o(function(w,S){var R=t.startAngle+S*h*(i?1:-1),L=d*Math.cos(R),N=d*Math.sin(R),I={x:l.x+L,y:l.y+N};return I},"getPos");return n.nodes().layoutPositions(this,t,k),this};qpt={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:o(function(t){return t.degree()},"concentric"),levelWidth:o(function(t){return t.maxDegree()/4},"levelWidth"),animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(d2e,"ConcentricLayout");d2e.prototype.run=function(){for(var e=this.options,t=e,r=t.counterclockwise!==void 0?!t.counterclockwise:t.clockwise,n=e.cy,i=t.eles,a=i.nodes().not(":parent"),s=Ns(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l={x:s.x1+s.w/2,y:s.y1+s.h/2},u=[],h=0,d=0;d0){var C=Math.abs(b[0].value-k.value);C>=v&&(b=[],x.push(b))}b.push(k)}var w=h+t.minNodeSpacing;if(!t.avoidOverlap){var S=x.length>0&&x[0].length>1,R=Math.min(s.w,s.h)/2-w,L=R/(x.length+S?1:0);w=Math.min(w,L)}for(var N=0,I=0;I1&&t.avoidOverlap){var D=Math.cos(M)-Math.cos(0),P=Math.sin(M)-Math.sin(0),B=Math.sqrt(w*w/(D*D+P*P));N=Math.max(B,N)}_.r=N,N+=w}if(t.equidistant){for(var O=0,$=0,V=0;V=e.numIter||(Zpt(n,e),n.temperature=n.temperature*e.coolingFactor,n.temperature=e.animationThreshold&&a(),Q5(d)}},"frame");d()}else{for(;h;)h=s(u),u++;Mxe(n,e),l()}return this};SA.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};SA.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};Upt=o(function(t,r,n){for(var i=n.eles.edges(),a=n.eles.nodes(),s=Ns(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()}),l={isCompound:t.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:n.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},u=n.eles.components(),h={},d=0;d0){l.graphSet.push(R);for(var d=0;di.count?0:i.graph},"findLCA"),f2e=o(function(t,r,n,i){var a=i.graphSet[n];if(-10)var f=i.nodeOverlap*d,p=Math.sqrt(l*l+u*u),m=f*l/p,g=f*u/p;else var y=aA(t,l,u),v=aA(r,-1*l,-1*u),x=v.x-y.x,b=v.y-y.y,T=x*x+b*b,p=Math.sqrt(T),f=(t.nodeRepulsion+r.nodeRepulsion)/T,m=f*x/p,g=f*b/p;t.isLocked||(t.offsetX-=m,t.offsetY-=g),r.isLocked||(r.offsetX+=m,r.offsetY+=g)}},"nodeRepulsion"),emt=o(function(t,r,n,i){if(n>0)var a=t.maxX-r.minX;else var a=r.maxX-t.minX;if(i>0)var s=t.maxY-r.minY;else var s=r.maxY-t.minY;return a>=0&&s>=0?Math.sqrt(a*a+s*s):0},"nodesOverlap"),aA=o(function(t,r,n){var i=t.positionX,a=t.positionY,s=t.height||1,l=t.width||1,u=n/r,h=s/l,d={};return r===0&&0n?(d.x=i,d.y=a+s/2,d):0r&&-1*h<=u&&u<=h?(d.x=i-l/2,d.y=a-l*n/2/r,d):0=h)?(d.x=i+s*r/2/n,d.y=a+s/2,d):(0>n&&(u<=-1*h||u>=h)&&(d.x=i-s*r/2/n,d.y=a-s/2),d)},"findClippingPoint"),tmt=o(function(t,r){for(var n=0;nn){var v=r.gravity*m/y,x=r.gravity*g/y;p.offsetX+=v,p.offsetY+=x}}}}},"calculateGravityForces"),nmt=o(function(t,r){var n=[],i=0,a=-1;for(n.push.apply(n,t.graphSet[0]),a+=t.graphSet[0].length;i<=a;){var s=n[i++],l=t.idToIndex[s],u=t.layoutNodes[l],h=u.children;if(0n)var a={x:n*t/i,y:n*r/i};else var a={x:t,y:r};return a},"limitForce"),m2e=o(function(t,r){var n=t.parentId;if(n!=null){var i=r.layoutNodes[r.idToIndex[n]],a=!1;if((i.maxX==null||t.maxX+i.padRight>i.maxX)&&(i.maxX=t.maxX+i.padRight,a=!0),(i.minX==null||t.minX-i.padLefti.maxY)&&(i.maxY=t.maxY+i.padBottom,a=!0),(i.minY==null||t.minY-i.padTopx&&(g+=v+r.componentSpacing,m=0,y=0,v=0)}}},"separateComponents"),smt={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:o(function(t){},"position"),sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:o(function(t,r){return!0},"animateFilter"),ready:void 0,stop:void 0,transform:o(function(t,r){return r},"transform")};o(g2e,"GridLayout");g2e.prototype.run=function(){var e=this.options,t=e,r=e.cy,n=t.eles,i=n.nodes().not(":parent");t.sort&&(i=i.sort(t.sort));var a=Ns(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(a.h===0||a.w===0)n.nodes().layoutPositions(this,t,function(W){return{x:a.x1,y:a.y1}});else{var s=i.size(),l=Math.sqrt(s*a.h/a.w),u=Math.round(l),h=Math.round(a.w/a.h*l),d=o(function(H){if(H==null)return Math.min(u,h);var j=Math.min(u,h);j==u?u=H:h=H},"small"),f=o(function(H){if(H==null)return Math.max(u,h);var j=Math.max(u,h);j==u?u=H:h=H},"large"),p=t.rows,m=t.cols!=null?t.cols:t.columns;if(p!=null&&m!=null)u=p,h=m;else if(p!=null&&m==null)u=p,h=Math.ceil(s/u);else if(p==null&&m!=null)h=m,u=Math.ceil(s/h);else if(h*u>s){var g=d(),y=f();(g-1)*y>=s?d(g-1):(y-1)*g>=s&&f(y-1)}else for(;h*u=s?f(x+1):d(v+1)}var b=a.w/h,T=a.h/u;if(t.condense&&(b=0,T=0),t.avoidOverlap)for(var k=0;k=h&&(D=0,M++)},"moveToNextCell"),B={},O=0;O(D=Xht(e,t,P[B],P[B+1],P[B+2],P[B+3])))return v(S,D),!0}else if(L.edgeType==="bezier"||L.edgeType==="multibezier"||L.edgeType==="self"||L.edgeType==="compound"){for(var P=L.allpts,B=0;B+5(D=jht(e,t,P[B],P[B+1],P[B+2],P[B+3],P[B+4],P[B+5])))return v(S,D),!0}for(var O=O||R.source,$=$||R.target,V=i.getArrowWidth(N,I),G=[{name:"source",x:L.arrowStartX,y:L.arrowStartY,angle:L.srcArrowAngle},{name:"target",x:L.arrowEndX,y:L.arrowEndY,angle:L.tgtArrowAngle},{name:"mid-source",x:L.midX,y:L.midY,angle:L.midsrcArrowAngle},{name:"mid-target",x:L.midX,y:L.midY,angle:L.midtgtArrowAngle}],B=0;B0&&(x(O),x($))}o(b,"checkEdge");function T(S,R,L){return mo(S,R,L)}o(T,"preprop");function k(S,R){var L=S._private,N=p,I;R?I=R+"-":I="",S.boundingBox();var _=L.labelBounds[R||"main"],A=S.pstyle(I+"label").value,M=S.pstyle("text-events").strValue==="yes";if(!(!M||!A)){var D=T(L.rscratch,"labelX",R),P=T(L.rscratch,"labelY",R),B=T(L.rscratch,"labelAngle",R),O=S.pstyle(I+"text-margin-x").pfValue,$=S.pstyle(I+"text-margin-y").pfValue,V=_.x1-N-O,G=_.x2+N-O,z=_.y1-N-$,W=_.y2+N-$;if(B){var H=Math.cos(B),j=Math.sin(B),Q=o(function(Re,be){return Re=Re-D,be=be-P,{x:Re*H-be*j+D,y:Re*j+be*H+P}},"rotate"),U=Q(V,z),oe=Q(V,W),te=Q(G,z),le=Q(G,W),ie=[U.x+O,U.y+$,te.x+O,te.y+$,le.x+O,le.y+$,oe.x+O,oe.y+$];if(go(e,t,ie))return v(S),!0}else if(Bf(_,e,t))return v(S),!0}}o(k,"checkLabel");for(var C=s.length-1;C>=0;C--){var w=s[C];w.isNode()?x(w)||k(w):b(w)||k(w)||k(w,"source")||k(w,"target")}return l};og.getAllInBox=function(e,t,r,n){var i=this.getCachedZSortedEles().interactive,a=this.cy.zoom(),s=2/a,l=[],u=Math.min(e,r),h=Math.max(e,r),d=Math.min(t,n),f=Math.max(t,n);e=u,r=h,t=d,n=f;var p=Ns({x1:e,y1:t,x2:r,y2:n}),m=[{x:p.x1,y:p.y1},{x:p.x2,y:p.y1},{x:p.x2,y:p.y2},{x:p.x1,y:p.y2}],g=[[m[0],m[1]],[m[1],m[2]],[m[2],m[3]],[m[3],m[0]]];function y(Re,be,Pe){return mo(Re,be,Pe)}o(y,"preprop");function v(Re,be){var Pe=Re._private,Ge=s,Oe="";Re.boundingBox();var ue=Pe.labelBounds.main;if(!ue)return null;var ye=y(Pe.rscratch,"labelX",be),ke=y(Pe.rscratch,"labelY",be),ce=y(Pe.rscratch,"labelAngle",be),re=Re.pstyle(Oe+"text-margin-x").pfValue,J=Re.pstyle(Oe+"text-margin-y").pfValue,se=ue.x1-Ge-re,ge=ue.x2+Ge-re,Te=ue.y1-Ge-J,we=ue.y2+Ge-J;if(ce){var Me=Math.cos(ce),ve=Math.sin(ce),ne=o(function(he,X){return he=he-ye,X=X-ke,{x:he*Me-X*ve+ye,y:he*ve+X*Me+ke}},"rotate");return[ne(se,Te),ne(ge,Te),ne(ge,we),ne(se,we)]}else return[{x:se,y:Te},{x:ge,y:Te},{x:ge,y:we},{x:se,y:we}]}o(v,"getRotatedLabelBox");function x(Re,be,Pe,Ge){function Oe(ue,ye,ke){return(ke.y-ue.y)*(ye.x-ue.x)>(ye.y-ue.y)*(ke.x-ue.x)}return o(Oe,"ccw"),Oe(Re,Pe,Ge)!==Oe(be,Pe,Ge)&&Oe(Re,be,Pe)!==Oe(Re,be,Ge)}o(x,"doLinesIntersect");for(var b=0;b0?-(Math.PI-t.ang):Math.PI+t.ang},"invertVec"),dmt=o(function(t,r,n,i,a){if(t!==$xe?Fxe(r,t,bu):hmt(wl,bu),Fxe(r,n,wl),Oxe=bu.nx*wl.ny-bu.ny*wl.nx,Bxe=bu.nx*wl.nx-bu.ny*-wl.ny,Ih=Math.asin(Math.max(-1,Math.min(1,Oxe))),Math.abs(Ih)<1e-6){oF=r.x,lF=r.y,Qm=_1=0;return}eg=1,Y5=!1,Bxe<0?Ih<0?Ih=Math.PI+Ih:(Ih=Math.PI-Ih,eg=-1,Y5=!0):Ih>0&&(eg=-1,Y5=!0),r.radius!==void 0?_1=r.radius:_1=i,jm=Ih/2,O5=Math.min(bu.len/2,wl.len/2),a?(vu=Math.abs(Math.cos(jm)*_1/Math.sin(jm)),vu>O5?(vu=O5,Qm=Math.abs(vu*Math.sin(jm)/Math.cos(jm))):Qm=_1):(vu=Math.min(O5,_1),Qm=Math.abs(vu*Math.sin(jm)/Math.cos(jm))),cF=r.x+wl.nx*vu,uF=r.y+wl.ny*vu,oF=cF-wl.ny*Qm*eg,lF=uF+wl.nx*Qm*eg,b2e=r.x+bu.nx*vu,T2e=r.y+bu.ny*vu,$xe=r},"calcCornerArc");o(C2e,"drawPreparedRoundCorner");o(BF,"getRoundCorner");qT=.01,fmt=Math.sqrt(2*qT),ds={};ds.findMidptPtsEtc=function(e,t){var r=t.posPts,n=t.intersectionPts,i=t.vectorNormInverse,a,s=e.pstyle("source-endpoint"),l=e.pstyle("target-endpoint"),u=s.units!=null&&l.units!=null,h=o(function(C,w,S,R){var L=R-w,N=S-C,I=Math.sqrt(N*N+L*L);return{x:-L/I,y:N/I}},"recalcVectorNormInverse"),d=e.pstyle("edge-distances").value;switch(d){case"node-position":a=r;break;case"intersection":a=n;break;case"endpoints":{if(u){var f=this.manualEndptToPx(e.source()[0],s),p=Ki(f,2),m=p[0],g=p[1],y=this.manualEndptToPx(e.target()[0],l),v=Ki(y,2),x=v[0],b=v[1],T={x1:m,y1:g,x2:x,y2:b};i=h(m,g,x,b),a=T}else In("Edge ".concat(e.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),a=n;break}}return{midptPts:a,vectorNormInverse:i}};ds.findHaystackPoints=function(e){for(var t=0;t0?Math.max(X-fe,0):Math.min(X+fe,0)},"subDWH"),A=_(N,R),M=_(I,L),D=!1;b===h?x=Math.abs(A)>Math.abs(M)?i:n:b===u||b===l?(x=n,D=!0):(b===a||b===s)&&(x=i,D=!0);var P=x===n,B=P?M:A,O=P?I:N,$=kF(O),V=!1;!(D&&(k||w))&&(b===l&&O<0||b===u&&O>0||b===a&&O>0||b===s&&O<0)&&($*=-1,B=$*Math.abs(B),V=!0);var G;if(k){var z=C<0?1+C:C;G=z*B}else{var W=C<0?B:0;G=W+C*$}var H=o(function(X){return Math.abs(X)=Math.abs(B)},"getIsTooClose"),j=H(G),Q=H(Math.abs(B)-Math.abs(G)),U=j||Q;if(U&&!V)if(P){var oe=Math.abs(O)<=p/2,te=Math.abs(N)<=m/2;if(oe){var le=(d.x1+d.x2)/2,ie=d.y1,ae=d.y2;r.segpts=[le,ie,le,ae]}else if(te){var Re=(d.y1+d.y2)/2,be=d.x1,Pe=d.x2;r.segpts=[be,Re,Pe,Re]}else r.segpts=[d.x1,d.y2]}else{var Ge=Math.abs(O)<=f/2,Oe=Math.abs(I)<=g/2;if(Ge){var ue=(d.y1+d.y2)/2,ye=d.x1,ke=d.x2;r.segpts=[ye,ue,ke,ue]}else if(Oe){var ce=(d.x1+d.x2)/2,re=d.y1,J=d.y2;r.segpts=[ce,re,ce,J]}else r.segpts=[d.x2,d.y1]}else if(P){var se=d.y1+G+(v?p/2*$:0),ge=d.x1,Te=d.x2;r.segpts=[ge,se,Te,se]}else{var we=d.x1+G+(v?f/2*$:0),Me=d.y1,ve=d.y2;r.segpts=[we,Me,we,ve]}if(r.isRound){var ne=e.pstyle("taxi-radius").value,q=e.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(ne),r.isArcRadius=new Array(r.segpts.length/2).fill(q)}};ds.tryToCorrectInvalidPoints=function(e,t){var r=e._private.rscratch;if(r.edgeType==="bezier"){var n=t.srcPos,i=t.tgtPos,a=t.srcW,s=t.srcH,l=t.tgtW,u=t.tgtH,h=t.srcShape,d=t.tgtShape,f=t.srcCornerRadius,p=t.tgtCornerRadius,m=t.srcRs,g=t.tgtRs,y=!Gt(r.startX)||!Gt(r.startY),v=!Gt(r.arrowStartX)||!Gt(r.arrowStartY),x=!Gt(r.endX)||!Gt(r.endY),b=!Gt(r.arrowEndX)||!Gt(r.arrowEndY),T=3,k=this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth,C=T*k,w=ng({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),S=wO.poolIndex()){var $=B;B=O,O=$}var V=A.srcPos=B.position(),G=A.tgtPos=O.position(),z=A.srcW=B.outerWidth(),W=A.srcH=B.outerHeight(),H=A.tgtW=O.outerWidth(),j=A.tgtH=O.outerHeight(),Q=A.srcShape=r.nodeShapes[t.getNodeShape(B)],U=A.tgtShape=r.nodeShapes[t.getNodeShape(O)],oe=A.srcCornerRadius=B.pstyle("corner-radius").value==="auto"?"auto":B.pstyle("corner-radius").pfValue,te=A.tgtCornerRadius=O.pstyle("corner-radius").value==="auto"?"auto":O.pstyle("corner-radius").pfValue,le=A.tgtRs=O._private.rscratch,ie=A.srcRs=B._private.rscratch;A.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var ae=0;ae=fmt||(Te=Math.sqrt(Math.max(ge*ge,qT)+Math.max(se*se,qT)));var we=A.vector={x:ge,y:se},Me=A.vectorNorm={x:we.x/Te,y:we.y/Te},ve={x:-Me.y,y:Me.x};A.nodesOverlap=!Gt(Te)||U.checkPoint(ue[0],ue[1],0,H,j,G.x,G.y,te,le)||Q.checkPoint(ke[0],ke[1],0,z,W,V.x,V.y,oe,ie),A.vectorNormInverse=ve,M={nodesOverlap:A.nodesOverlap,dirCounts:A.dirCounts,calculatedIntersection:!0,hasBezier:A.hasBezier,hasUnbundled:A.hasUnbundled,eles:A.eles,srcPos:G,srcRs:le,tgtPos:V,tgtRs:ie,srcW:H,srcH:j,tgtW:z,tgtH:W,srcIntn:ce,tgtIntn:ye,srcShape:U,tgtShape:Q,posPts:{x1:J.x2,y1:J.y2,x2:J.x1,y2:J.y1},intersectionPts:{x1:re.x2,y1:re.y2,x2:re.x1,y2:re.y1},vector:{x:-we.x,y:-we.y},vectorNorm:{x:-Me.x,y:-Me.y},vectorNormInverse:{x:-ve.x,y:-ve.y}}}var ne=Oe?M:A;be.nodesOverlap=ne.nodesOverlap,be.srcIntn=ne.srcIntn,be.tgtIntn=ne.tgtIntn,be.isRound=Pe.startsWith("round"),i&&(B.isParent()||B.isChild()||O.isParent()||O.isChild())&&(B.parents().anySame(O)||O.parents().anySame(B)||B.same(O)&&B.isParent())?t.findCompoundLoopPoints(Re,ne,ae,Ge):B===O?t.findLoopPoints(Re,ne,ae,Ge):Pe.endsWith("segments")?t.findSegmentsPoints(Re,ne):Pe.endsWith("taxi")?t.findTaxiPoints(Re,ne):Pe==="straight"||!Ge&&A.eles.length%2===1&&ae===Math.floor(A.eles.length/2)?t.findStraightEdgePoints(Re):t.findBezierPoints(Re,ne,ae,Ge,Oe),t.findEndpoints(Re),t.tryToCorrectInvalidPoints(Re,ne),t.checkForInvalidEdgeWarning(Re),t.storeAllpts(Re),t.storeEdgeProjections(Re),t.calculateArrowAngles(Re),t.recalculateEdgeLabelProjections(Re),t.calculateLabelAngles(Re)}},"_loop"),S=0;S0){var ue=h,ye=Zm(ue,M1(s)),ke=Zm(ue,M1(Oe)),ce=ye;if(ke2){var re=Zm(ue,{x:Oe[2],y:Oe[3]});re0){var K=d,qe=Zm(K,M1(s)),_e=Zm(K,M1(fe)),Be=qe;if(_e2){var Ne=Zm(K,{x:fe[2],y:fe[3]});Ne=g||S){v={cp:k,segment:w};break}}if(v)break}var R=v.cp,L=v.segment,N=(g-x)/L.length,I=L.t1-L.t0,_=m?L.t0+I*N:L.t1-I*N;_=$T(0,_,1),t=O1(R.p0,R.p1,R.p2,_),p=mmt(R.p0,R.p1,R.p2,_);break}case"straight":case"segments":case"haystack":{for(var A=0,M,D,P,B,O=n.allpts.length,$=0;$+3=g));$+=2);var V=g-D,G=V/M;G=$T(0,G,1),t=Bht(P,B,G),p=S2e(P,B);break}}s("labelX",f,t.x),s("labelY",f,t.y),s("labelAutoAngle",f,p)}},"calculateEndProjection");h("source"),h("target"),this.applyLabelDimensions(e)}};wu.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))};wu.applyPrefixedLabelDimensions=function(e,t){var r=e._private,n=this.getLabelText(e,t),i=rg(n,e._private.labelDimsKey);if(mo(r.rscratch,"prefixedLabelDimsKey",t)!==i){Mh(r.rscratch,"prefixedLabelDimsKey",t,i);var a=this.calculateLabelDimensions(e,n),s=e.pstyle("line-height").pfValue,l=e.pstyle("text-wrap").strValue,u=mo(r.rscratch,"labelWrapCachedLines",t)||[],h=l!=="wrap"?1:Math.max(u.length,1),d=a.height/h,f=d*s,p=a.width,m=a.height+(h-1)*(s-1)*d;Mh(r.rstyle,"labelWidth",t,p),Mh(r.rscratch,"labelWidth",t,p),Mh(r.rstyle,"labelHeight",t,m),Mh(r.rscratch,"labelHeight",t,m),Mh(r.rscratch,"labelLineHeight",t,f)}};wu.getLabelText=function(e,t){var r=e._private,n=t?t+"-":"",i=e.pstyle(n+"label").strValue,a=e.pstyle("text-transform").value,s=o(function(W,H){return H?(Mh(r.rscratch,W,t,H),H):mo(r.rscratch,W,t)},"rscratch");if(!i)return"";a=="none"||(a=="uppercase"?i=i.toUpperCase():a=="lowercase"&&(i=i.toLowerCase()));var l=e.pstyle("text-wrap").value;if(l==="wrap"){var u=s("labelKey");if(u!=null&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var h="\u200B",d=i.split(` +`),f=e.pstyle("text-max-width").pfValue,p=e.pstyle("text-overflow-wrap").value,m=p==="anywhere",g=[],y=/[\s\u200b]+|$/g,v=0;vf){var C=x.matchAll(y),w="",S=0,R=yo(C),L;try{for(R.s();!(L=R.n()).done;){var N=L.value,I=N[0],_=x.substring(S,N.index);S=N.index+I.length;var A=w.length===0?_:w+_+I,M=this.calculateLabelDimensions(e,A),D=M.width;D<=f?w+=_+I:(w&&g.push(w),w=_+I)}}catch(z){R.e(z)}finally{R.f()}w.match(/^[\s\u200b]+$/)||g.push(w)}else g.push(x)}s("labelWrapCachedLines",g),i=s("labelWrapCachedText",g.join(` +`)),s("labelWrapKey",u)}else if(l==="ellipsis"){var P=e.pstyle("text-max-width").pfValue,B="",O="\u2026",$=!1;if(this.calculateLabelDimensions(e,i).widthP)break;B+=i[V],V===i.length-1&&($=!0)}return $||(B+=O),B}return i};wu.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,r=e.pstyle("text-halign").strValue;if(t==="auto")if(e.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return t};wu.calculateLabelDimensions=function(e,t){var r=this,n=r.cy.window(),i=n.document,a=0,s=e.pstyle("font-style").strValue,l=e.pstyle("font-size").pfValue,u=e.pstyle("font-family").strValue,h=e.pstyle("font-weight").strValue,d=this.labelCalcCanvas,f=this.labelCalcCanvasContext;if(!d){d=this.labelCalcCanvas=i.createElement("canvas"),f=this.labelCalcCanvasContext=d.getContext("2d");var p=d.style;p.position="absolute",p.left="-9999px",p.top="-9999px",p.zIndex="-1",p.visibility="hidden",p.pointerEvents="none"}f.font="".concat(s," ").concat(h," ").concat(l,"px ").concat(u);for(var m=0,g=0,y=t.split(` +`),v=0;v1&&arguments[1]!==void 0?arguments[1]:!0;if(t.merge(s),l)for(var u=0;u=e.desktopTapThreshold2}var At=a(q);mt&&(e.hoverData.tapholdCancelled=!0);var bt=o(function(){var qt=e.hoverData.dragDelta=e.hoverData.dragDelta||[];qt.length===0?(qt.push(Ke[0]),qt.push(Ke[1])):(qt[0]+=Ke[0],qt[1]+=Ke[1])},"updateDragDelta");X=!0,i($e,["mousemove","vmousemove","tapdrag"],q,{x:_e[0],y:_e[1]});var me=o(function(qt){return{originalEvent:q,type:qt,position:{x:_e[0],y:_e[1]}}},"makeEvent"),lt=o(function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||fe.emit(me("boxstart")),He[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()},"goIntoBoxMode");if(e.hoverData.which===3){if(mt){var gt=me("cxtdrag");Fe?Fe.emit(gt):fe.emit(gt),e.hoverData.cxtDragged=!0,(!e.hoverData.cxtOver||$e!==e.hoverData.cxtOver)&&(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit(me("cxtdragout")),e.hoverData.cxtOver=$e,$e&&$e.emit(me("cxtdragover")))}}else if(e.hoverData.dragging){if(X=!0,fe.panningEnabled()&&fe.userPanningEnabled()){var Ze;if(e.hoverData.justStartedPan){var Ee=e.hoverData.mdownPos;Ze={x:(_e[0]-Ee[0])*K,y:(_e[1]-Ee[1])*K},e.hoverData.justStartedPan=!1}else Ze={x:Ke[0]*K,y:Ke[1]*K};fe.panBy(Ze),fe.emit(me("dragpan")),e.hoverData.dragged=!0}_e=e.projectIntoViewport(q.clientX,q.clientY)}else if(He[4]==1&&(Fe==null||Fe.pannable())){if(mt){if(!e.hoverData.dragging&&fe.boxSelectionEnabled()&&(At||!fe.panningEnabled()||!fe.userPanningEnabled()))lt();else if(!e.hoverData.selecting&&fe.panningEnabled()&&fe.userPanningEnabled()){var tt=s(Fe,e.hoverData.downs);tt&&(e.hoverData.dragging=!0,e.hoverData.justStartedPan=!0,He[4]=0,e.data.bgActivePosistion=M1(Be),e.redrawHint("select",!0),e.redraw())}Fe&&Fe.pannable()&&Fe.active()&&Fe.unactivate()}}else{if(Fe&&Fe.pannable()&&Fe.active()&&Fe.unactivate(),(!Fe||!Fe.grabbed())&&$e!=Xe&&(Xe&&i(Xe,["mouseout","tapdragout"],q,{x:_e[0],y:_e[1]}),$e&&i($e,["mouseover","tapdragover"],q,{x:_e[0],y:_e[1]}),e.hoverData.last=$e),Fe)if(mt){if(fe.boxSelectionEnabled()&&At)Fe&&Fe.grabbed()&&(y(xe),Fe.emit(me("freeon")),xe.emit(me("free")),e.dragData.didDrag&&(Fe.emit(me("dragfreeon")),xe.emit(me("dragfree")))),lt();else if(Fe&&Fe.grabbed()&&e.nodeIsDraggable(Fe)){var at=!e.dragData.didDrag;at&&e.redrawHint("eles",!0),e.dragData.didDrag=!0,e.hoverData.draggingEles||m(xe,{inDragLayer:!0});var ot={x:0,y:0};if(Gt(Ke[0])&&Gt(Ke[1])&&(ot.x+=Ke[0],ot.y+=Ke[1],at)){var Wt=e.hoverData.dragDelta;Wt&&Gt(Wt[0])&&Gt(Wt[1])&&(ot.x+=Wt[0],ot.y+=Wt[1])}e.hoverData.draggingEles=!0,xe.silentShift(ot).emit(me("position")).emit(me("drag")),e.redrawHint("drag",!0),e.redraw()}}else bt();X=!0}if(He[2]=_e[0],He[3]=_e[1],X)return q.stopPropagation&&q.stopPropagation(),q.preventDefault&&q.preventDefault(),!1}},"mousemoveHandler"),!1);var N,I,_;e.registerBinding(t,"mouseup",o(function(q){if(!(e.hoverData.which===1&&q.which!==1&&e.hoverData.capture)){var he=e.hoverData.capture;if(he){e.hoverData.capture=!1;var X=e.cy,fe=e.projectIntoViewport(q.clientX,q.clientY),K=e.selection,qe=e.findNearestElement(fe[0],fe[1],!0,!1),_e=e.dragData.possibleDragElements,Be=e.hoverData.down,Ne=a(q);e.data.bgActivePosistion&&(e.redrawHint("select",!0),e.redraw()),e.hoverData.tapholdCancelled=!0,e.data.bgActivePosistion=void 0,Be&&Be.unactivate();var He=o(function(Le){return{originalEvent:q,type:Le,position:{x:fe[0],y:fe[1]}}},"makeEvent");if(e.hoverData.which===3){var $e=He("cxttapend");if(Be?Be.emit($e):X.emit($e),!e.hoverData.cxtDragged){var Xe=He("cxttap");Be?Be.emit(Xe):X.emit(Xe)}e.hoverData.cxtDragged=!1,e.hoverData.which=null}else if(e.hoverData.which===1){if(i(qe,["mouseup","tapend","vmouseup"],q,{x:fe[0],y:fe[1]}),!e.dragData.didDrag&&!e.hoverData.dragged&&!e.hoverData.selecting&&!e.hoverData.isOverThresholdDrag&&(i(Be,["click","tap","vclick"],q,{x:fe[0],y:fe[1]}),I=!1,q.timeStamp-_<=X.multiClickDebounceTime()?(N&&clearTimeout(N),I=!0,_=null,i(Be,["dblclick","dbltap","vdblclick"],q,{x:fe[0],y:fe[1]})):(N=setTimeout(function(){I||i(Be,["oneclick","onetap","voneclick"],q,{x:fe[0],y:fe[1]})},X.multiClickDebounceTime()),_=q.timeStamp)),Be==null&&!e.dragData.didDrag&&!e.hoverData.selecting&&!e.hoverData.dragged&&!a(q)&&(X.$(r).unselect(["tapunselect"]),_e.length>0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=_e=X.collection()),qe==Be&&!e.dragData.didDrag&&!e.hoverData.selecting&&qe!=null&&qe._private.selectable&&(e.hoverData.dragging||(X.selectionType()==="additive"||Ne?qe.selected()?qe.unselect(["tapunselect"]):qe.select(["tapselect"]):Ne||(X.$(r).unmerge(qe).unselect(["tapunselect"]),qe.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var Fe=X.collection(e.getAllInBox(K[0],K[1],K[2],K[3]));e.redrawHint("select",!0),Fe.length>0&&e.redrawHint("eles",!0),X.emit(He("boxend"));var Ke=o(function(Le){return Le.selectable()&&!Le.selected()},"eleWouldBeSelected");X.selectionType()==="additive"||Ne||X.$(r).unmerge(Fe).unselect(),Fe.emit(He("box")).stdFilter(Ke).select().emit(He("boxselect")),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!K[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var xe=Be&&Be.grabbed();y(_e),xe&&(Be.emit(He("freeon")),_e.emit(He("free")),e.dragData.didDrag&&(Be.emit(He("dragfreeon")),_e.emit(He("dragfree"))))}}K[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null,e.hoverData.which=null}}},"mouseupHandler"),!1);var A=[],M=4,D,P=1e5,B=o(function(q,he){for(var X=0;X=M){var fe=A;if(D=B(fe,5),!D){var K=Math.abs(fe[0]);D=O(fe)&&K>5}if(D)for(var qe=0;qe5&&(X=kF(X)*5),Xe=X/-250,D&&(Xe/=P,Xe*=3),Xe=Xe*e.wheelSensitivity;var Fe=q.deltaMode===1;Fe&&(Xe*=33);var Ke=_e.zoom()*Math.pow(10,Xe);q.type==="gesturechange"&&(Ke=e.gestureStartZoom*q.scale),_e.zoom({level:Ke,renderedPosition:{x:$e[0],y:$e[1]}}),_e.emit({type:q.type==="gesturechange"?"pinchzoom":"scrollzoom",originalEvent:q,position:{x:He[0],y:He[1]}})}}}},"wheelHandler");e.registerBinding(e.container,"wheel",$,!0),e.registerBinding(t,"scroll",o(function(q){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout(function(){e.scrollingPage=!1},250)},"scrollHandler"),!0),e.registerBinding(e.container,"gesturestart",o(function(q){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||q.preventDefault()},"gestureStartHandler"),!0),e.registerBinding(e.container,"gesturechange",function(ne){e.hasTouchStarted||$(ne)},!0),e.registerBinding(e.container,"mouseout",o(function(q){var he=e.projectIntoViewport(q.clientX,q.clientY);e.cy.emit({originalEvent:q,type:"mouseout",position:{x:he[0],y:he[1]}})},"mouseOutHandler"),!1),e.registerBinding(e.container,"mouseover",o(function(q){var he=e.projectIntoViewport(q.clientX,q.clientY);e.cy.emit({originalEvent:q,type:"mouseover",position:{x:he[0],y:he[1]}})},"mouseOverHandler"),!1);var V,G,z,W,H,j,Q,U,oe,te,le,ie,ae,Re=o(function(q,he,X,fe){return Math.sqrt((X-q)*(X-q)+(fe-he)*(fe-he))},"distance"),be=o(function(q,he,X,fe){return(X-q)*(X-q)+(fe-he)*(fe-he)},"distanceSq"),Pe;e.registerBinding(e.container,"touchstart",Pe=o(function(q){if(e.hasTouchStarted=!0,!!R(q)){x(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var he=e.cy,X=e.touchData.now,fe=e.touchData.earlier;if(q.touches[0]){var K=e.projectIntoViewport(q.touches[0].clientX,q.touches[0].clientY);X[0]=K[0],X[1]=K[1]}if(q.touches[1]){var K=e.projectIntoViewport(q.touches[1].clientX,q.touches[1].clientY);X[2]=K[0],X[3]=K[1]}if(q.touches[2]){var K=e.projectIntoViewport(q.touches[2].clientX,q.touches[2].clientY);X[4]=K[0],X[5]=K[1]}var qe=o(function(At){return{originalEvent:q,type:At,position:{x:X[0],y:X[1]}}},"makeEvent");if(q.touches[1]){e.touchData.singleTouchMoved=!0,y(e.dragData.touchDragEles);var _e=e.findContainerClientCoords();oe=_e[0],te=_e[1],le=_e[2],ie=_e[3],V=q.touches[0].clientX-oe,G=q.touches[0].clientY-te,z=q.touches[1].clientX-oe,W=q.touches[1].clientY-te,ae=0<=V&&V<=le&&0<=z&&z<=le&&0<=G&&G<=ie&&0<=W&&W<=ie;var Be=he.pan(),Ne=he.zoom();H=Re(V,G,z,W),j=be(V,G,z,W),Q=[(V+z)/2,(G+W)/2],U=[(Q[0]-Be.x)/Ne,(Q[1]-Be.y)/Ne];var He=200,$e=He*He;if(j<$e&&!q.touches[2]){var Xe=e.findNearestElement(X[0],X[1],!0,!0),Fe=e.findNearestElement(X[2],X[3],!0,!0);Xe&&Xe.isNode()?(Xe.activate().emit(qe("cxttapstart")),e.touchData.start=Xe):Fe&&Fe.isNode()?(Fe.activate().emit(qe("cxttapstart")),e.touchData.start=Fe):he.emit(qe("cxttapstart")),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,e.redraw();return}}if(q.touches[2])he.boxSelectionEnabled()&&q.preventDefault();else if(!q.touches[1]){if(q.touches[0]){var Ke=e.findNearestElements(X[0],X[1],!0,!0),xe=Ke[0];if(xe!=null&&(xe.activate(),e.touchData.start=xe,e.touchData.starts=Ke,e.nodeIsGrabbable(xe))){var mt=e.dragData.touchDragEles=he.collection(),Le=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),xe.selected()?(Le=he.$(function(St){return St.selected()&&e.nodeIsGrabbable(St)}),m(Le,{addToList:mt})):g(xe,{addToList:mt}),h(xe),xe.emit(qe("grabon")),Le?Le.forEach(function(St){St.emit(qe("grab"))}):xe.emit(qe("grab"))}i(xe,["touchstart","tapstart","vmousedown"],q,{x:X[0],y:X[1]}),xe==null&&(e.data.bgActivePosistion={x:K[0],y:K[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout(function(){e.touchData.singleTouchMoved===!1&&!e.pinching&&!e.touchData.selecting&&i(e.touchData.start,["taphold"],q,{x:X[0],y:X[1]})},e.tapholdDuration)}}if(q.touches.length>=1){for(var ft=e.touchData.startPosition=[null,null,null,null,null,null],wt=0;wt=e.touchTapThreshold2}if(he&&e.touchData.cxt){q.preventDefault();var wt=q.touches[0].clientX-oe,zt=q.touches[0].clientY-te,St=q.touches[1].clientX-oe,At=q.touches[1].clientY-te,bt=be(wt,zt,St,At),me=bt/j,lt=150,gt=lt*lt,Ze=1.5,Ee=Ze*Ze;if(me>=Ee||bt>=gt){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var tt=Ne("cxttapend");e.touchData.start?(e.touchData.start.unactivate().emit(tt),e.touchData.start=null):fe.emit(tt)}}if(he&&e.touchData.cxt){var tt=Ne("cxtdrag");e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(tt):fe.emit(tt),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var at=e.findNearestElement(K[0],K[1],!0,!0);(!e.touchData.cxtOver||at!==e.touchData.cxtOver)&&(e.touchData.cxtOver&&e.touchData.cxtOver.emit(Ne("cxtdragout")),e.touchData.cxtOver=at,at&&at.emit(Ne("cxtdragover")))}else if(he&&q.touches[2]&&fe.boxSelectionEnabled())q.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||fe.emit(Ne("boxstart")),e.touchData.selecting=!0,e.touchData.didSelect=!0,X[4]=1,!X||X.length===0||X[0]===void 0?(X[0]=(K[0]+K[2]+K[4])/3,X[1]=(K[1]+K[3]+K[5])/3,X[2]=(K[0]+K[2]+K[4])/3+1,X[3]=(K[1]+K[3]+K[5])/3+1):(X[2]=(K[0]+K[2]+K[4])/3,X[3]=(K[1]+K[3]+K[5])/3),e.redrawHint("select",!0),e.redraw();else if(he&&q.touches[1]&&!e.touchData.didSelect&&fe.zoomingEnabled()&&fe.panningEnabled()&&fe.userZoomingEnabled()&&fe.userPanningEnabled()){q.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var ot=e.dragData.touchDragEles;if(ot){e.redrawHint("drag",!0);for(var Wt=0;Wt0&&!e.hoverData.draggingEles&&!e.swipePanning&&e.data.bgActivePosistion!=null&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},"touchmoveHandler"),!1);var Oe;e.registerBinding(t,"touchcancel",Oe=o(function(q){var he=e.touchData.start;e.touchData.capture=!1,he&&he.unactivate()},"touchcancelHandler"));var ue,ye,ke,ce;if(e.registerBinding(t,"touchend",ue=o(function(q){var he=e.touchData.start,X=e.touchData.capture;if(X)q.touches.length===0&&(e.touchData.capture=!1),q.preventDefault();else return;var fe=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var K=e.cy,qe=K.zoom(),_e=e.touchData.now,Be=e.touchData.earlier;if(q.touches[0]){var Ne=e.projectIntoViewport(q.touches[0].clientX,q.touches[0].clientY);_e[0]=Ne[0],_e[1]=Ne[1]}if(q.touches[1]){var Ne=e.projectIntoViewport(q.touches[1].clientX,q.touches[1].clientY);_e[2]=Ne[0],_e[3]=Ne[1]}if(q.touches[2]){var Ne=e.projectIntoViewport(q.touches[2].clientX,q.touches[2].clientY);_e[4]=Ne[0],_e[5]=Ne[1]}var He=o(function(gt){return{originalEvent:q,type:gt,position:{x:_e[0],y:_e[1]}}},"makeEvent");he&&he.unactivate();var $e;if(e.touchData.cxt){if($e=He("cxttapend"),he?he.emit($e):K.emit($e),!e.touchData.cxtDragged){var Xe=He("cxttap");he?he.emit(Xe):K.emit(Xe)}e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,e.redraw();return}if(!q.touches[2]&&K.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var Fe=K.collection(e.getAllInBox(fe[0],fe[1],fe[2],fe[3]));fe[0]=void 0,fe[1]=void 0,fe[2]=void 0,fe[3]=void 0,fe[4]=0,e.redrawHint("select",!0),K.emit(He("boxend"));var Ke=o(function(gt){return gt.selectable()&&!gt.selected()},"eleWouldBeSelected");Fe.emit(He("box")).stdFilter(Ke).select().emit(He("boxselect")),Fe.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(he?.unactivate(),q.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(!q.touches[1]){if(!q.touches[0]){if(!q.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var xe=e.dragData.touchDragEles;if(he!=null){var mt=he._private.grabbed;y(xe),e.redrawHint("drag",!0),e.redrawHint("eles",!0),mt&&(he.emit(He("freeon")),xe.emit(He("free")),e.dragData.didDrag&&(he.emit(He("dragfreeon")),xe.emit(He("dragfree")))),i(he,["touchend","tapend","vmouseup","tapdragout"],q,{x:_e[0],y:_e[1]}),he.unactivate(),e.touchData.start=null}else{var Le=e.findNearestElement(_e[0],_e[1],!0,!0);i(Le,["touchend","tapend","vmouseup","tapdragout"],q,{x:_e[0],y:_e[1]})}var ft=e.touchData.startPosition[0]-_e[0],wt=ft*ft,zt=e.touchData.startPosition[1]-_e[1],St=zt*zt,At=wt+St,bt=At*qe*qe;e.touchData.singleTouchMoved||(he||K.$(":selected").unselect(["tapunselect"]),i(he,["tap","vclick"],q,{x:_e[0],y:_e[1]}),ye=!1,q.timeStamp-ce<=K.multiClickDebounceTime()?(ke&&clearTimeout(ke),ye=!0,ce=null,i(he,["dbltap","vdblclick"],q,{x:_e[0],y:_e[1]})):(ke=setTimeout(function(){ye||i(he,["onetap","voneclick"],q,{x:_e[0],y:_e[1]})},K.multiClickDebounceTime()),ce=q.timeStamp)),he!=null&&!e.dragData.didDrag&&he._private.selectable&&bt"u"){var re=[],J=o(function(q){return{clientX:q.clientX,clientY:q.clientY,force:1,identifier:q.pointerId,pageX:q.pageX,pageY:q.pageY,radiusX:q.width/2,radiusY:q.height/2,screenX:q.screenX,screenY:q.screenY,target:q.target}},"makeTouch"),se=o(function(q){return{event:q,touch:J(q)}},"makePointer"),ge=o(function(q){re.push(se(q))},"addPointer"),Te=o(function(q){for(var he=0;he0)return z[0]}return null},"getCurveT"),g=Object.keys(p),y=0;y0?m:Abe(a,s,t,r,n,i,l,u)},"intersectLine"),checkPoint:o(function(t,r,n,i,a,s,l,u){u=u==="auto"?Wf(i,a):u;var h=2*u;if(Oh(t,r,this.points,s,l,i,a-h,[0,-1],n)||Oh(t,r,this.points,s,l,i-h,a,[0,-1],n))return!0;var d=i/2+2*n,f=a/2+2*n,p=[s-d,l-f,s-d,l,s+d,l,s+d,l-f];return!!(go(t,r,p)||tg(t,r,h,h,s+i/2-u,l+a/2-u,n)||tg(t,r,h,h,s-i/2+u,l+a/2-u,n))},"checkPoint")}};Bh.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",Ms(3,0)),this.generateRoundPolygon("round-triangle",Ms(3,0)),this.generatePolygon("rectangle",Ms(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",Ms(5,0)),this.generateRoundPolygon("round-pentagon",Ms(5,0)),this.generatePolygon("hexagon",Ms(6,0)),this.generateRoundPolygon("round-hexagon",Ms(6,0)),this.generatePolygon("heptagon",Ms(7,0)),this.generateRoundPolygon("round-heptagon",Ms(7,0)),this.generatePolygon("octagon",Ms(8,0)),this.generateRoundPolygon("round-octagon",Ms(8,0));var n=new Array(20);{var i=Z$(5,0),a=Z$(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var l=0;l=t.deqFastCost*k)break}else if(h){if(b>=t.deqCost*m||b>=t.deqAvgCost*p)break}else if(T>=t.deqNoDrawCost*V$)break;var C=t.deq(n,v,y);if(C.length>0)for(var w=0;w0&&(t.onDeqd(n,g),!h&&t.shouldRedraw(n,g,v,y)&&a())},"dequeue"),l=t.priority||TF;i.beforeRender(s,l(n))}},"setupDequeueingImpl")},"setupDequeueing")},xmt=(function(){function e(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:J5;Yf(this,e),this.idsByKey=new Nh,this.keyForId=new Nh,this.cachesByLvl=new Nh,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=r}return o(e,"ElementTextureCacheLookup"),jf(e,[{key:"getIdsFor",value:o(function(r){r==null&&pi("Can not get id list for null key");var n=this.idsByKey,i=this.idsByKey.get(r);return i||(i=new W1,n.set(r,i)),i},"getIdsFor")},{key:"addIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).add(n)},"addIdForKey")},{key:"deleteIdForKey",value:o(function(r,n){r!=null&&this.getIdsFor(r).delete(n)},"deleteIdForKey")},{key:"getNumberOfIdsForKey",value:o(function(r){return r==null?0:this.getIdsFor(r).size},"getNumberOfIdsForKey")},{key:"updateKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);this.deleteIdForKey(i,n),this.addIdForKey(a,n),this.keyForId.set(n,a)},"updateKeyMappingFor")},{key:"deleteKeyMappingFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteIdForKey(i,n),this.keyForId.delete(n)},"deleteKeyMappingFor")},{key:"keyHasChangedFor",value:o(function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);return i!==a},"keyHasChangedFor")},{key:"isInvalid",value:o(function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)},"isInvalid")},{key:"getCachesAt",value:o(function(r){var n=this.cachesByLvl,i=this.lvls,a=n.get(r);return a||(a=new Nh,n.set(r,a),i.push(r)),a},"getCachesAt")},{key:"getCache",value:o(function(r,n){return this.getCachesAt(n).get(r)},"getCache")},{key:"get",value:o(function(r,n){var i=this.getKey(r),a=this.getCache(i,n);return a!=null&&this.updateKeyMappingFor(r),a},"get")},{key:"getForCachedKey",value:o(function(r,n){var i=this.keyForId.get(r.id()),a=this.getCache(i,n);return a},"getForCachedKey")},{key:"hasCache",value:o(function(r,n){return this.getCachesAt(n).has(r)},"hasCache")},{key:"has",value:o(function(r,n){var i=this.getKey(r);return this.hasCache(i,n)},"has")},{key:"setCache",value:o(function(r,n,i){i.key=r,this.getCachesAt(n).set(r,i)},"setCache")},{key:"set",value:o(function(r,n,i){var a=this.getKey(r);this.setCache(a,n,i),this.updateKeyMappingFor(r)},"set")},{key:"deleteCache",value:o(function(r,n){this.getCachesAt(n).delete(r)},"deleteCache")},{key:"delete",value:o(function(r,n){var i=this.getKey(r);this.deleteCache(i,n)},"_delete")},{key:"invalidateKey",value:o(function(r){var n=this;this.lvls.forEach(function(i){return n.deleteCache(r,i)})},"invalidateKey")},{key:"invalidate",value:o(function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteKeyMappingFor(r);var a=this.doesEleInvalidateKey(r);return a&&this.invalidateKey(i),a||this.getNumberOfIdsForKey(i)===0},"invalidate")}])})(),Wxe=25,B5=50,j5=-4,hF=3,I2e=7.99,bmt=8,Tmt=1024,Cmt=1024,wmt=1024,kmt=.2,Smt=.8,Emt=10,Amt=.15,Rmt=.1,_mt=.9,Lmt=.9,Dmt=100,Imt=1,P1={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Mmt=Va({getKey:null,doesEleInvalidateKey:J5,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:bbe,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),DT=o(function(t,r){var n=this;n.renderer=t,n.onDequeues=[];var i=Mmt(r);br(n,i),n.lookup=new xmt(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},"ElementTextureCache"),ua=DT.prototype;ua.reasons=P1;ua.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]};ua.getRetiredTextureQueue=function(e){var t=this,r=t.eleImgCaches.retired=t.eleImgCaches.retired||{},n=r[e]=r[e]||[];return n};ua.getElementQueue=function(){var e=this,t=e.eleCacheQueue=e.eleCacheQueue||new ZT(function(r,n){return n.reqs-r.reqs});return t};ua.getElementKeyToQueue=function(){var e=this,t=e.eleKeyToCacheQueue=e.eleKeyToCacheQueue||{};return t};ua.getElement=function(e,t,r,n,i){var a=this,s=this.renderer,l=s.cy.zoom(),u=this.lookup;if(!t||t.w===0||t.h===0||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed()||!a.allowEdgeTxrCaching&&e.isEdge()||!a.allowParentTxrCaching&&e.isParent())return null;if(n==null&&(n=Math.ceil(wF(l*r))),n=I2e||n>hF)return null;var h=Math.pow(2,n),d=t.h*h,f=t.w*h,p=s.eleTextBiggerThanMin(e,h);if(!this.isVisible(e,p))return null;var m=u.get(e,n);if(m&&m.invalidated&&(m.invalidated=!1,m.texture.invalidatedWidth-=m.width),m)return m;var g;if(d<=Wxe?g=Wxe:d<=B5?g=B5:g=Math.ceil(d/B5)*B5,d>wmt||f>Cmt)return null;var y=a.getTextureQueue(g),v=y[y.length-2],x=o(function(){return a.recycleTexture(g,f)||a.addTexture(g,f)},"addNewTxr");v||(v=y[y.length-1]),v||(v=x()),v.width-v.usedWidthn;I--)L=a.getElement(e,t,r,I,P1.downscale);N()}else return a.queueElement(e,w.level-1),w;else{var _;if(!T&&!k&&!C)for(var A=n-1;A>=j5;A--){var M=u.get(e,A);if(M){_=M;break}}if(b(_))return a.queueElement(e,n),_;v.context.translate(v.usedWidth,0),v.context.scale(h,h),this.drawElement(v.context,e,t,p,!1),v.context.scale(1/h,1/h),v.context.translate(-v.usedWidth,0)}return m={x:v.usedWidth,texture:v,level:n,scale:h,width:f,height:d,scaledLabelShown:p},v.usedWidth+=Math.ceil(f+bmt),v.eleCaches.push(m),u.set(e,n,m),a.checkTextureFullness(v),m};ua.invalidateElements=function(e){for(var t=0;t=kmt*e.width&&this.retireTexture(e)};ua.checkTextureFullness=function(e){var t=this,r=t.getTextureQueue(e.height);e.usedWidth/e.width>Smt&&e.fullnessChecks>=Emt?Vf(r,e):e.fullnessChecks++};ua.retireTexture=function(e){var t=this,r=e.height,n=t.getTextureQueue(r),i=this.lookup;Vf(n,e),e.retired=!0;for(var a=e.eleCaches,s=0;s=t)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,CF(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),Vf(i,s),n.push(s),s}};ua.queueElement=function(e,t){var r=this,n=r.getElementQueue(),i=r.getElementKeyToQueue(),a=this.getKey(e),s=i[a];if(s)s.level=Math.max(s.level,t),s.eles.merge(e),s.reqs++,n.updateItem(s);else{var l={eles:e.spawn().merge(e),level:t,reqs:1,key:a};n.push(l),i[a]=l}};ua.dequeue=function(e){for(var t=this,r=t.getElementQueue(),n=t.getElementKeyToQueue(),i=[],a=t.lookup,s=0;s0;s++){var l=r.pop(),u=l.key,h=l.eles[0],d=a.hasCache(h,l.level);if(n[u]=null,d)continue;i.push(l);var f=t.getBoundingBox(h);t.getElement(h,f,e,l.level,P1.dequeue)}return i};ua.removeFromQueue=function(e){var t=this,r=t.getElementQueue(),n=t.getElementKeyToQueue(),i=this.getKey(e),a=n[i];a!=null&&(a.eles.length===1?(a.reqs=bF,r.updateItem(a),r.pop(),n[i]=null):a.eles.unmerge(e))};ua.onDequeue=function(e){this.onDequeues.push(e)};ua.offDequeue=function(e){Vf(this.onDequeues,e)};ua.setupDequeueing=D2e.setupDequeueing({deqRedrawThreshold:Dmt,deqCost:Amt,deqAvgCost:Rmt,deqNoDrawCost:_mt,deqFastCost:Lmt,deq:o(function(t,r,n){return t.dequeue(r,n)},"deq"),onDeqd:o(function(t,r){for(var n=0;n=Pmt||r>oA)return null}n.validateLayersElesOrdering(r,e);var u=n.layersByLevel,h=Math.pow(2,r),d=u[r]=u[r]||[],f,p=n.levelIsComplete(r,e),m,g=o(function(){var N=o(function(D){if(n.validateLayersElesOrdering(D,e),n.levelIsComplete(D,e))return m=u[D],!0},"canUseAsTmpLvl"),I=o(function(D){if(!m)for(var P=r+D;MT<=P&&P<=oA&&!N(P);P+=D);},"checkLvls");I(1),I(-1);for(var _=d.length-1;_>=0;_--){var A=d[_];A.invalid&&Vf(d,A)}},"checkTempLevels");if(!p)g();else return d;var y=o(function(){if(!f){f=Ns();for(var N=0;NHxe||A>Hxe)return null;var M=_*A;if(M>Wmt)return null;var D=n.makeLayer(f,r);if(I!=null){var P=d.indexOf(I)+1;d.splice(P,0,D)}else(N.insert===void 0||N.insert)&&d.unshift(D);return D},"makeLayer");if(n.skipping&&!l)return null;for(var x=null,b=e.length/Nmt,T=!l,k=0;k=b||!Ebe(x.bb,C.boundingBox()))&&(x=v({insert:!0,after:x}),!x))return null;m||T?n.queueLayer(x,C):n.drawEleInLayer(x,C,r,t),x.eles.push(C),S[r]=x}return m||(T?null:d)};Wa.getEleLevelForLayerLevel=function(e,t){return e};Wa.drawEleInLayer=function(e,t,r,n){var i=this,a=this.renderer,s=e.context,l=t.boundingBox();l.w===0||l.h===0||!t.visible()||(r=i.getEleLevelForLayerLevel(r,n),a.setImgSmoothing(s,!1),a.drawCachedElement(s,t,null,null,r,qmt),a.setImgSmoothing(s,!0))};Wa.levelIsComplete=function(e,t){var r=this,n=r.layersByLevel[e];if(!n||n.length===0)return!1;for(var i=0,a=0;a0||s.invalid)return!1;i+=s.eles.length}return i===t.length};Wa.validateLayersElesOrdering=function(e,t){var r=this.layersByLevel[e];if(r)for(var n=0;n0){t=!0;break}}return t};Wa.invalidateElements=function(e){var t=this;e.length!==0&&(t.lastInvalidationTime=Ph(),!(e.length===0||!t.haveLayers())&&t.updateElementsInLayers(e,o(function(n,i,a){t.invalidateLayer(n)},"invalAssocLayers")))};Wa.invalidateLayer=function(e){if(this.lastInvalidationTime=Ph(),!e.invalid){var t=e.level,r=e.eles,n=this.layersByLevel[t];Vf(n,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var i=0;i3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l=t._private.rscratch;if(!(a&&!t.visible())&&!(l.badLine||l.allpts==null||isNaN(l.allpts[0]))){var u;r&&(u=r,e.translate(-u.x1,-u.y1));var h=a?t.pstyle("opacity").value:1,d=a?t.pstyle("line-opacity").value:1,f=t.pstyle("curve-style").value,p=t.pstyle("line-style").value,m=t.pstyle("width").pfValue,g=t.pstyle("line-cap").value,y=t.pstyle("line-outline-width").value,v=t.pstyle("line-outline-color").value,x=h*d,b=h*d,T=o(function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;f==="straight-triangle"?(s.eleStrokeStyle(e,t,D),s.drawEdgeTrianglePath(t,e,l.allpts)):(e.lineWidth=m,e.lineCap=g,s.eleStrokeStyle(e,t,D),s.drawEdgePath(t,e,l.allpts,p),e.lineCap="butt")},"drawLine"),k=o(function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;if(e.lineWidth=m+y,e.lineCap=g,y>0)s.colorStrokeStyle(e,v[0],v[1],v[2],D);else{e.lineCap="butt";return}f==="straight-triangle"?s.drawEdgeTrianglePath(t,e,l.allpts):(s.drawEdgePath(t,e,l.allpts,p),e.lineCap="butt")},"drawLineOutline"),C=o(function(){i&&s.drawEdgeOverlay(e,t)},"drawOverlay"),w=o(function(){i&&s.drawEdgeUnderlay(e,t)},"drawUnderlay"),S=o(function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;s.drawArrowheads(e,t,D)},"drawArrows"),R=o(function(){s.drawElementText(e,t,null,n)},"drawText");e.lineJoin="round";var L=t.pstyle("ghost").value==="yes";if(L){var N=t.pstyle("ghost-offset-x").pfValue,I=t.pstyle("ghost-offset-y").pfValue,_=t.pstyle("ghost-opacity").value,A=x*_;e.translate(N,I),T(A),S(A),e.translate(-N,-I)}else k();w(),T(),S(),C(),R(),r&&e.translate(u.x1,u.y1)}};P2e=o(function(t){if(!["overlay","underlay"].includes(t))throw new Error("Invalid state");return function(r,n){if(n.visible()){var i=n.pstyle("".concat(t,"-opacity")).value;if(i!==0){var a=this,s=a.usePaths(),l=n._private.rscratch,u=n.pstyle("".concat(t,"-padding")).pfValue,h=2*u,d=n.pstyle("".concat(t,"-color")).value;r.lineWidth=h,l.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",a.colorStrokeStyle(r,d[0],d[1],d[2],i),a.drawEdgePath(n,r,l.allpts,"solid")}}}},"drawEdgeOverlayUnderlay");$h.drawEdgeOverlay=P2e("overlay");$h.drawEdgeUnderlay=P2e("underlay");$h.drawEdgePath=function(e,t,r,n){var i=e._private.rscratch,a=t,s,l=!1,u=this.usePaths(),h=e.pstyle("line-dash-pattern").pfValue,d=e.pstyle("line-dash-offset").pfValue;if(u){var f=r.join("$"),p=i.pathCacheKey&&i.pathCacheKey===f;p?(s=t=i.pathCache,l=!0):(s=t=new Path2D,i.pathCacheKey=f,i.pathCache=s)}if(a.setLineDash)switch(n){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash(h),a.lineDashOffset=d;break;case"solid":a.setLineDash([]);break}if(!l&&!i.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(r[0],r[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var m=2;m+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(n==null){if(a&&!s.eleTextBiggerThanMin(t))return}else if(n===!1)return;if(t.isNode()){var l=t.pstyle("label");if(!l||!l.value)return;var u=s.getLabelJustification(t);e.textAlign=u,e.textBaseline="bottom"}else{var h=t.element()._private.rscratch.badLine,d=t.pstyle("label"),f=t.pstyle("source-label"),p=t.pstyle("target-label");if(h||(!d||!d.value)&&(!f||!f.value)&&(!p||!p.value))return;e.textAlign="center",e.textBaseline="bottom"}var m=!r,g;r&&(g=r,e.translate(-g.x1,-g.y1)),i==null?(s.drawText(e,t,null,m,a),t.isEdge()&&(s.drawText(e,t,"source",m,a),s.drawText(e,t,"target",m,a))):s.drawText(e,t,i,m,a),r&&e.translate(g.x1,g.y1)};lg.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,n=t.pstyle("font-style").strValue,i=t.pstyle("font-size").pfValue+"px",a=t.pstyle("font-family").strValue,s=t.pstyle("font-weight").strValue,l=r?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,u=t.pstyle("text-outline-opacity").value*l,h=t.pstyle("color").value,d=t.pstyle("text-outline-color").value;e.font=n+" "+s+" "+i+" "+a,e.lineJoin="round",this.colorFillStyle(e,h[0],h[1],h[2],l),this.colorStrokeStyle(e,d[0],d[1],d[2],u)};o(tgt,"circle");o(Xxe,"roundRect");lg.getTextAngle=function(e,t){var r,n=e._private,i=n.rscratch,a=t?t+"-":"",s=e.pstyle(a+"text-rotation");if(s.strValue==="autorotate"){var l=mo(i,"labelAngle",t);r=e.isEdge()?l:0}else s.strValue==="none"?r=0:r=s.pfValue;return r};lg.drawText=function(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=t._private,s=a.rscratch,l=i?t.effectiveOpacity():1;if(!(i&&(l===0||t.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var u=mo(s,"labelX",r),h=mo(s,"labelY",r),d,f,p=this.getLabelText(t,r);if(p!=null&&p!==""&&!isNaN(u)&&!isNaN(h)){this.setupTextStyle(e,t,i);var m=r?r+"-":"",g=mo(s,"labelWidth",r),y=mo(s,"labelHeight",r),v=t.pstyle(m+"text-margin-x").pfValue,x=t.pstyle(m+"text-margin-y").pfValue,b=t.isEdge(),T=t.pstyle("text-halign").value,k=t.pstyle("text-valign").value;b&&(T="center",k="center"),u+=v,h+=x;var C;switch(n?C=this.getTextAngle(t,r):C=0,C!==0&&(d=u,f=h,e.translate(d,f),e.rotate(C),u=0,h=0),k){case"top":break;case"center":h+=y/2;break;case"bottom":h+=y;break}var w=t.pstyle("text-background-opacity").value,S=t.pstyle("text-border-opacity").value,R=t.pstyle("text-border-width").pfValue,L=t.pstyle("text-background-padding").pfValue,N=t.pstyle("text-background-shape").strValue,I=N==="round-rectangle"||N==="roundrectangle",_=N==="circle",A=2;if(w>0||R>0&&S>0){var M=e.fillStyle,D=e.strokeStyle,P=e.lineWidth,B=t.pstyle("text-background-color").value,O=t.pstyle("text-border-color").value,$=t.pstyle("text-border-style").value,V=w>0,G=R>0&&S>0,z=u-L;switch(T){case"left":z-=g;break;case"center":z-=g/2;break}var W=h-y-L,H=g+2*L,j=y+2*L;if(V&&(e.fillStyle="rgba(".concat(B[0],",").concat(B[1],",").concat(B[2],",").concat(w*l,")")),G&&(e.strokeStyle="rgba(".concat(O[0],",").concat(O[1],",").concat(O[2],",").concat(S*l,")"),e.lineWidth=R,e.setLineDash))switch($){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=R/4,e.setLineDash([]);break;case"solid":default:e.setLineDash([]);break}if(I?(e.beginPath(),Xxe(e,z,W,H,j,A)):_?(e.beginPath(),tgt(e,z,W,H,j)):(e.beginPath(),e.rect(z,W,H,j)),V&&e.fill(),G&&e.stroke(),G&&$==="double"){var Q=R/2;e.beginPath(),I?Xxe(e,z+Q,W+Q,H-2*Q,j-2*Q,A):e.rect(z+Q,W+Q,H-2*Q,j-2*Q),e.stroke()}e.fillStyle=M,e.strokeStyle=D,e.lineWidth=P,e.setLineDash&&e.setLineDash([])}var U=2*t.pstyle("text-outline-width").pfValue;if(U>0&&(e.lineWidth=U),t.pstyle("text-wrap").value==="wrap"){var oe=mo(s,"labelWrapCachedLines",r),te=mo(s,"labelLineHeight",r),le=g/2,ie=this.getLabelJustification(t);switch(ie==="auto"||(T==="left"?ie==="left"?u+=-g:ie==="center"&&(u+=-le):T==="center"?ie==="left"?u+=-le:ie==="right"&&(u+=le):T==="right"&&(ie==="center"?u+=le:ie==="right"&&(u+=g))),k){case"top":h-=(oe.length-1)*te;break;case"center":case"bottom":h-=(oe.length-1)*te;break}for(var ae=0;ae0&&e.strokeText(oe[ae],u,h),e.fillText(oe[ae],u,h),h+=te}else U>0&&e.strokeText(p,u,h),e.fillText(p,u,h);C!==0&&(e.rotate(-C),e.translate(-d,-f))}}};Kf={};Kf.drawNode=function(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,l,u,h=t._private,d=h.rscratch,f=t.position();if(!(!Gt(f.x)||!Gt(f.y))&&!(a&&!t.visible())){var p=a?t.effectiveOpacity():1,m=s.usePaths(),g,y=!1,v=t.padding();l=t.width()+2*v,u=t.height()+2*v;var x;r&&(x=r,e.translate(-x.x1,-x.y1));for(var b=t.pstyle("background-image"),T=b.value,k=new Array(T.length),C=new Array(T.length),w=0,S=0;S0&&arguments[0]!==void 0?arguments[0]:A;s.eleFillStyle(e,t,q)},"setupShapeColor"),te=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:G;s.colorStrokeStyle(e,M[0],M[1],M[2],q)},"setupBorderColor"),le=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:j;s.colorStrokeStyle(e,W[0],W[1],W[2],q)},"setupOutlineColor"),ie=o(function(q,he,X,fe){var K=s.nodePathCache=s.nodePathCache||[],qe=xbe(X==="polygon"?X+","+fe.join(","):X,""+he,""+q,""+U),_e=K[qe],Be,Ne=!1;return _e!=null?(Be=_e,Ne=!0,d.pathCache=Be):(Be=new Path2D,K[qe]=d.pathCache=Be),{path:Be,cacheHit:Ne}},"getPath"),ae=t.pstyle("shape").strValue,Re=t.pstyle("shape-polygon-points").pfValue;if(m){e.translate(f.x,f.y);var be=ie(l,u,ae,Re);g=be.path,y=be.cacheHit}var Pe=o(function(){if(!y){var q=f;m&&(q={x:0,y:0}),s.nodeShapes[s.getNodeShape(t)].draw(g||e,q.x,q.y,l,u,U,d)}m?e.fill(g):e.fill()},"drawShape"),Ge=o(function(){for(var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,X=h.backgrounding,fe=0,K=0;K0&&arguments[0]!==void 0?arguments[0]:!1,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasPie(t)&&(s.drawPie(e,t,he),q&&(m||s.nodeShapes[s.getNodeShape(t)].draw(e,f.x,f.y,l,u,U,d)))},"drawPie"),ue=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,he=arguments.length>1&&arguments[1]!==void 0?arguments[1]:p;s.hasStripe(t)&&(e.save(),m?e.clip(d.pathCache):(s.nodeShapes[s.getNodeShape(t)].draw(e,f.x,f.y,l,u,U,d),e.clip()),s.drawStripe(e,t,he),e.restore(),q&&(m||s.nodeShapes[s.getNodeShape(t)].draw(e,f.x,f.y,l,u,U,d)))},"drawStripe"),ye=o(function(){var q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p,he=(I>0?I:-I)*q,X=I>0?0:255;I!==0&&(s.colorFillStyle(e,X,X,X,he),m?e.fill(g):e.fill())},"darken"),ke=o(function(){if(_>0){if(e.lineWidth=_,e.lineCap=B,e.lineJoin=P,e.setLineDash)switch(D){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash($),e.lineDashOffset=V;break;case"solid":case"double":e.setLineDash([]);break}if(O!=="center"){if(e.save(),e.lineWidth*=2,O==="inside")m?e.clip(g):e.clip();else{var q=new Path2D;q.rect(-l/2-_,-u/2-_,l+2*_,u+2*_),q.addPath(g),e.clip(q,"evenodd")}m?e.stroke(g):e.stroke(),e.restore()}else m?e.stroke(g):e.stroke();if(D==="double"){e.lineWidth=_/3;var he=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",m?e.stroke(g):e.stroke(),e.globalCompositeOperation=he}e.setLineDash&&e.setLineDash([])}},"drawBorder"),ce=o(function(){if(z>0){if(e.lineWidth=z,e.lineCap="butt",e.setLineDash)switch(H){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([]);break}var q=f;m&&(q={x:0,y:0});var he=s.getNodeShape(t),X=_;O==="inside"&&(X=0),O==="outside"&&(X*=2);var fe=(l+X+(z+Q))/l,K=(u+X+(z+Q))/u,qe=l*fe,_e=u*K,Be=s.nodeShapes[he].points,Ne;if(m){var He=ie(qe,_e,he,Be);Ne=He.path}if(he==="ellipse")s.drawEllipsePath(Ne||e,q.x,q.y,qe,_e);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(he)){var $e=0,Xe=0,Fe=0;he==="round-diamond"?$e=(X+Q+z)*1.4:he==="round-heptagon"?($e=(X+Q+z)*1.075,Fe=-(X/2+Q+z)/35):he==="round-hexagon"?$e=(X+Q+z)*1.12:he==="round-pentagon"?($e=(X+Q+z)*1.13,Fe=-(X/2+Q+z)/15):he==="round-tag"?($e=(X+Q+z)*1.12,Xe=(X/2+z+Q)*.07):he==="round-triangle"&&($e=(X+Q+z)*(Math.PI/2),Fe=-(X+Q/2+z)/Math.PI),$e!==0&&(fe=(l+$e)/l,qe=l*fe,["round-hexagon","round-tag"].includes(he)||(K=(u+$e)/u,_e=u*K)),U=U==="auto"?_be(qe,_e):U;for(var Ke=qe/2,xe=_e/2,mt=U+(X+z+Q)/2,Le=new Array(Be.length/2),ft=new Array(Be.length/2),wt=0;wt0){if(i=i||n.position(),a==null||s==null){var m=n.padding();a=n.width()+2*m,s=n.height()+2*m}l.colorFillStyle(r,d[0],d[1],d[2],h),l.nodeShapes[f].draw(r,i.x,i.y,a+u*2,s+u*2,p),r.fill()}}}},"drawNodeOverlayUnderlay");Kf.drawNodeOverlay=O2e("overlay");Kf.drawNodeUnderlay=O2e("underlay");Kf.hasPie=function(e){return e=e[0],e._private.hasPie};Kf.hasStripe=function(e){return e=e[0],e._private.hasStripe};Kf.drawPie=function(e,t,r,n){t=t[0],n=n||t.position();var i=t.cy().style(),a=t.pstyle("pie-size"),s=t.pstyle("pie-hole"),l=t.pstyle("pie-start-angle").pfValue,u=n.x,h=n.y,d=t.width(),f=t.height(),p=Math.min(d,f)/2,m,g=0,y=this.usePaths();if(y&&(u=0,h=0),a.units==="%"?p=p*a.pfValue:a.pfValue!==void 0&&(p=a.pfValue/2),s.units==="%"?m=p*s.pfValue:s.pfValue!==void 0&&(m=s.pfValue/2),!(m>=p))for(var v=1;v<=i.pieBackgroundN;v++){var x=t.pstyle("pie-"+v+"-background-size").value,b=t.pstyle("pie-"+v+"-background-color").value,T=t.pstyle("pie-"+v+"-background-opacity").value*r,k=x/100;k+g>1&&(k=1-g);var C=1.5*Math.PI+2*Math.PI*g;C+=l;var w=2*Math.PI*k,S=C+w;x===0||g>=1||g+k>1||(m===0?(e.beginPath(),e.moveTo(u,h),e.arc(u,h,p,C,S),e.closePath()):(e.beginPath(),e.arc(u,h,p,C,S),e.arc(u,h,m,S,C,!0),e.closePath()),this.colorFillStyle(e,b[0],b[1],b[2],T),e.fill(),g+=k)}};Kf.drawStripe=function(e,t,r,n){t=t[0],n=n||t.position();var i=t.cy().style(),a=n.x,s=n.y,l=t.width(),u=t.height(),h=0,d=this.usePaths();e.save();var f=t.pstyle("stripe-direction").value,p=t.pstyle("stripe-size");switch(f){case"vertical":break;case"righward":e.rotate(-Math.PI/2);break}var m=l,g=u;p.units==="%"?(m=m*p.pfValue,g=g*p.pfValue):p.pfValue!==void 0&&(m=p.pfValue,g=p.pfValue),d&&(a=0,s=0),s-=m/2,a-=g/2;for(var y=1;y<=i.stripeBackgroundN;y++){var v=t.pstyle("stripe-"+y+"-background-size").value,x=t.pstyle("stripe-"+y+"-background-color").value,b=t.pstyle("stripe-"+y+"-background-opacity").value*r,T=v/100;T+h>1&&(T=1-h),!(v===0||h>=1||h+T>1)&&(e.beginPath(),e.rect(a,s+g*h,m,g*T),e.closePath(),this.colorFillStyle(e,x[0],x[1],x[2],b),e.fill(),h+=T)}e.restore()};Ps={},rgt=100;Ps.getPixelRatio=function(){var e=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var t=this.cy.window(),r=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(t.devicePixelRatio||1)/r};Ps.paintCache=function(e){for(var t=this.paintCaches=this.paintCaches||[],r=!0,n,i=0;it.minMbLowQualFrames&&(t.motionBlurPxRatio=t.mbPxRBlurry)),t.clearingMotionBlur&&(t.motionBlurPxRatio=1),t.textureDrawLastFrame&&!f&&(d[t.NODE]=!0,d[t.SELECT_BOX]=!0);var b=r.style(),T=r.zoom(),k=s!==void 0?s:T,C=r.pan(),w={x:C.x,y:C.y},S={zoom:T,pan:{x:C.x,y:C.y}},R=t.prevViewport,L=R===void 0||S.zoom!==R.zoom||S.pan.x!==R.pan.x||S.pan.y!==R.pan.y;!L&&!(y&&!g)&&(t.motionBlurPxRatio=1),l&&(w=l),k*=u,w.x*=u,w.y*=u;var N=t.getCachedZSortedEles();function I(te,le,ie,ae,Re){var be=te.globalCompositeOperation;te.globalCompositeOperation="destination-out",t.colorFillStyle(te,255,255,255,t.motionBlurTransparency),te.fillRect(le,ie,ae,Re),te.globalCompositeOperation=be}o(I,"mbclear");function _(te,le){var ie,ae,Re,be;!t.clearingMotionBlur&&(te===h.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]||te===h.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG])?(ie={x:C.x*m,y:C.y*m},ae=T*m,Re=t.canvasWidth*m,be=t.canvasHeight*m):(ie=w,ae=k,Re=t.canvasWidth,be=t.canvasHeight),te.setTransform(1,0,0,1,0,0),le==="motionBlur"?I(te,0,0,Re,be):!n&&(le===void 0||le)&&te.clearRect(0,0,Re,be),i||(te.translate(ie.x,ie.y),te.scale(ae,ae)),l&&te.translate(l.x,l.y),s&&te.scale(s,s)}if(o(_,"setContextTransform"),f||(t.textureDrawLastFrame=!1),f){if(t.textureDrawLastFrame=!0,!t.textureCache){t.textureCache={},t.textureCache.bb=r.mutableElements().boundingBox(),t.textureCache.texture=t.data.bufferCanvases[t.TEXTURE_BUFFER];var A=t.data.bufferContexts[t.TEXTURE_BUFFER];A.setTransform(1,0,0,1,0,0),A.clearRect(0,0,t.canvasWidth*t.textureMult,t.canvasHeight*t.textureMult),t.render({forcedContext:A,drawOnlyNodeLayer:!0,forcedPxRatio:u*t.textureMult});var S=t.textureCache.viewport={zoom:r.zoom(),pan:r.pan(),width:t.canvasWidth,height:t.canvasHeight};S.mpan={x:(0-S.pan.x)/S.zoom,y:(0-S.pan.y)/S.zoom}}d[t.DRAG]=!1,d[t.NODE]=!1;var M=h.contexts[t.NODE],D=t.textureCache.texture,S=t.textureCache.viewport;M.setTransform(1,0,0,1,0,0),p?I(M,0,0,S.width,S.height):M.clearRect(0,0,S.width,S.height);var P=b.core("outside-texture-bg-color").value,B=b.core("outside-texture-bg-opacity").value;t.colorFillStyle(M,P[0],P[1],P[2],B),M.fillRect(0,0,S.width,S.height);var T=r.zoom();_(M,!1),M.clearRect(S.mpan.x,S.mpan.y,S.width/S.zoom/u,S.height/S.zoom/u),M.drawImage(D,S.mpan.x,S.mpan.y,S.width/S.zoom/u,S.height/S.zoom/u)}else t.textureOnViewport&&!n&&(t.textureCache=null);var O=r.extent(),$=t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming||t.hoverData.draggingEles||t.cy.animated(),V=t.hideEdgesOnViewport&&$,G=[];if(G[t.NODE]=!d[t.NODE]&&p&&!t.clearedForMotionBlur[t.NODE]||t.clearingMotionBlur,G[t.NODE]&&(t.clearedForMotionBlur[t.NODE]=!0),G[t.DRAG]=!d[t.DRAG]&&p&&!t.clearedForMotionBlur[t.DRAG]||t.clearingMotionBlur,G[t.DRAG]&&(t.clearedForMotionBlur[t.DRAG]=!0),d[t.NODE]||i||a||G[t.NODE]){var z=p&&!G[t.NODE]&&m!==1,M=n||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]:h.contexts[t.NODE]),W=p&&!z?"motionBlur":void 0;_(M,W),V?t.drawCachedNodes(M,N.nondrag,u,O):t.drawLayeredElements(M,N.nondrag,u,O),t.debug&&t.drawDebugPoints(M,N.nondrag),!i&&!p&&(d[t.NODE]=!1)}if(!a&&(d[t.DRAG]||i||G[t.DRAG])){var z=p&&!G[t.DRAG]&&m!==1,M=n||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]:h.contexts[t.DRAG]);_(M,p&&!z?"motionBlur":void 0),V?t.drawCachedNodes(M,N.drag,u,O):t.drawCachedElements(M,N.drag,u,O),t.debug&&t.drawDebugPoints(M,N.drag),!i&&!p&&(d[t.DRAG]=!1)}if(this.drawSelectionRectangle(e,_),p&&m!==1){var H=h.contexts[t.NODE],j=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE],Q=h.contexts[t.DRAG],U=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG],oe=o(function(le,ie,ae){le.setTransform(1,0,0,1,0,0),ae||!x?le.clearRect(0,0,t.canvasWidth,t.canvasHeight):I(le,0,0,t.canvasWidth,t.canvasHeight);var Re=m;le.drawImage(ie,0,0,t.canvasWidth*Re,t.canvasHeight*Re,0,0,t.canvasWidth,t.canvasHeight)},"drawMotionBlur");(d[t.NODE]||G[t.NODE])&&(oe(H,j,G[t.NODE]),d[t.NODE]=!1),(d[t.DRAG]||G[t.DRAG])&&(oe(Q,U,G[t.DRAG]),d[t.DRAG]=!1)}t.prevViewport=S,t.clearingMotionBlur&&(t.clearingMotionBlur=!1,t.motionBlurCleared=!0,t.motionBlur=!0),p&&(t.motionBlurTimeout=setTimeout(function(){t.motionBlurTimeout=null,t.clearedForMotionBlur[t.NODE]=!1,t.clearedForMotionBlur[t.DRAG]=!1,t.motionBlur=!1,t.clearingMotionBlur=!f,t.mbFrames=0,d[t.NODE]=!0,d[t.DRAG]=!0,t.redraw()},rgt)),n||r.emit("render")};Ps.drawSelectionRectangle=function(e,t){var r=this,n=r.cy,i=r.data,a=n.style(),s=e.drawOnlyNodeLayer,l=e.drawAllLayers,u=i.canvasNeedsRedraw,h=e.forcedContext;if(r.showFps||!s&&u[r.SELECT_BOX]&&!l){var d=h||i.contexts[r.SELECT_BOX];if(t(d),r.selection[4]==1&&(r.hoverData.selecting||r.touchData.selecting)){var f=r.cy.zoom(),p=a.core("selection-box-border-width").value/f;d.lineWidth=p,d.fillStyle="rgba("+a.core("selection-box-color").value[0]+","+a.core("selection-box-color").value[1]+","+a.core("selection-box-color").value[2]+","+a.core("selection-box-opacity").value+")",d.fillRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]),p>0&&(d.strokeStyle="rgba("+a.core("selection-box-border-color").value[0]+","+a.core("selection-box-border-color").value[1]+","+a.core("selection-box-border-color").value[2]+","+a.core("selection-box-opacity").value+")",d.strokeRect(r.selection[0],r.selection[1],r.selection[2]-r.selection[0],r.selection[3]-r.selection[1]))}if(i.bgActivePosistion&&!r.hoverData.selecting){var f=r.cy.zoom(),m=i.bgActivePosistion;d.fillStyle="rgba("+a.core("active-bg-color").value[0]+","+a.core("active-bg-color").value[1]+","+a.core("active-bg-color").value[2]+","+a.core("active-bg-opacity").value+")",d.beginPath(),d.arc(m.x,m.y,a.core("active-bg-size").pfValue/f,0,2*Math.PI),d.fill()}var g=r.lastRedrawTime;if(r.showFps&&g){g=Math.round(g);var y=Math.round(1e3/g),v="1 frame = "+g+" ms = "+y+" fps";if(d.setTransform(1,0,0,1,0,0),d.fillStyle="rgba(255, 0, 0, 0.75)",d.strokeStyle="rgba(255, 0, 0, 0.75)",d.font="30px Arial",!ET){var x=d.measureText(v);ET=x.actualBoundingBoxAscent}d.fillText(v,0,ET);var b=60;d.strokeRect(0,ET+10,250,20),d.fillRect(0,ET+10,250*Math.min(y/b,1),20)}l||(u[r.SELECT_BOX]=!1)}};o(Kxe,"compileShader");o(ngt,"createProgram");o(igt,"createTextureCanvas");o(zF,"getEffectivePanZoom");o(agt,"getEffectiveZoom");o(sgt,"modelToRenderedPosition");o(ogt,"isSimpleShape");o(lgt,"arrayEqual");o(Xm,"toWebGLColor");o(L1,"indexToVec4");o(cgt,"vec4ToIndex");o(ugt,"createTexture");o(B2e,"getTypeInfo");o($2e,"createTypedArray");o(hgt,"createTypedArrayView");o(dgt,"createBufferStaticDraw");o(xu,"createBufferDynamicDraw");o(fgt,"create3x3MatrixBufferDynamicDraw");o(pgt,"createPickingFrameBuffer");Zxe=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});o(q$,"create");o(Qxe,"identity");o(mgt,"multiply");o(X5,"translate");o(Jxe,"rotate");o(dF,"scale");o(ggt,"projection");ygt=(function(){function e(t,r,n,i){Yf(this,e),this.debugID=Math.floor(Math.random()*1e4),this.r=t,this.texSize=r,this.texRows=n,this.texHeight=Math.floor(r/n),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=i(t,r,r),this.scratch=i(t,r,this.texHeight,"scratch")}return o(e,"Atlas"),jf(e,[{key:"lock",value:o(function(){this.locked=!0},"lock")},{key:"getKeys",value:o(function(){return new Set(this.keyToLocation.keys())},"getKeys")},{key:"getScale",value:o(function(r){var n=r.w,i=r.h,a=this.texHeight,s=this.texSize,l=a/i,u=n*l,h=i*l;return u>s&&(l=s/n,u=n*l,h=i*l),{scale:l,texW:u,texH:h}},"getScale")},{key:"draw",value:o(function(r,n,i){var a=this;if(this.locked)throw new Error("can't draw, atlas is locked");var s=this.texSize,l=this.texRows,u=this.texHeight,h=this.getScale(n),d=h.scale,f=h.texW,p=h.texH,m=o(function(T,k){if(i&&k){var C=k.context,w=T.x,S=T.row,R=w,L=u*S;C.save(),C.translate(R,L),C.scale(d,d),i(C,n),C.restore()}},"drawAt"),g=[null,null],y=o(function(){m(a.freePointer,a.canvas),g[0]={x:a.freePointer.x,y:a.freePointer.row*u,w:f,h:p},g[1]={x:a.freePointer.x+f,y:a.freePointer.row*u,w:0,h:p},a.freePointer.x+=f,a.freePointer.x==s&&(a.freePointer.x=0,a.freePointer.row++)},"drawNormal"),v=o(function(){var T=a.scratch,k=a.canvas;T.clear(),m({x:0,row:0},T);var C=s-a.freePointer.x,w=f-C,S=u;{var R=a.freePointer.x,L=a.freePointer.row*u,N=C;k.context.drawImage(T,0,0,N,S,R,L,N,S),g[0]={x:R,y:L,w:N,h:p}}{var I=C,_=(a.freePointer.row+1)*u,A=w;k&&k.context.drawImage(T,I,0,A,S,0,_,A,S),g[1]={x:0,y:_,w:A,h:p}}a.freePointer.x=w,a.freePointer.row++},"drawWrapped"),x=o(function(){a.freePointer.x=0,a.freePointer.row++},"moveToStartOfNextRow");if(this.freePointer.x+f<=s)y();else{if(this.freePointer.row>=l-1)return!1;this.freePointer.x===s?(x(),y()):this.enableWrapping?v():(x(),y())}return this.keyToLocation.set(r,g),this.needsBuffer=!0,g},"draw")},{key:"getOffsets",value:o(function(r){return this.keyToLocation.get(r)},"getOffsets")},{key:"isEmpty",value:o(function(){return this.freePointer.x===0&&this.freePointer.row===0},"isEmpty")},{key:"canFit",value:o(function(r){if(this.locked)return!1;var n=this.texSize,i=this.texRows,a=this.getScale(r),s=a.texW;return this.freePointer.x+s>n?this.freePointer.row1&&arguments[1]!==void 0?arguments[1]:{},a=i.forceRedraw,s=a===void 0?!1:a,l=i.filterEle,u=l===void 0?function(){return!0}:l,h=i.filterType,d=h===void 0?function(){return!0}:h,f=!1,p=!1,m=yo(r),g;try{for(m.s();!(g=m.n()).done;){var y=g.value;if(u(y)){var v=yo(this.renderTypes.values()),x;try{var b=o(function(){var k=x.value,C=k.type;if(d(C)){var w=n.collections.get(k.collection),S=k.getKey(y),R=Array.isArray(S)?S:[S];if(s)R.forEach(function(_){return w.markKeyForGC(_)}),p=!0;else{var L=k.getID?k.getID(y):y.id(),N=n._key(C,L),I=n.typeAndIdToKey.get(N);I!==void 0&&!lgt(R,I)&&(f=!0,n.typeAndIdToKey.delete(N),I.forEach(function(_){return w.markKeyForGC(_)}))}}},"_loop2");for(v.s();!(x=v.n()).done;)b()}catch(T){v.e(T)}finally{v.f()}}}}catch(T){m.e(T)}finally{m.f()}return p&&(this.gc(),f=!1),f},"invalidate")},{key:"gc",value:o(function(){var r=yo(this.collections.values()),n;try{for(r.s();!(n=r.n()).done;){var i=n.value;i.gc()}}catch(a){r.e(a)}finally{r.f()}},"gc")},{key:"getOrCreateAtlas",value:o(function(r,n,i,a){var s=this.renderTypes.get(n),l=this.collections.get(s.collection),u=!1,h=l.draw(a,i,function(p){s.drawClipped?(p.save(),p.beginPath(),p.rect(0,0,i.w,i.h),p.clip(),s.drawElement(p,r,i,!0,!0),p.restore()):s.drawElement(p,r,i,!0,!0),u=!0});if(u){var d=s.getID?s.getID(r):r.id(),f=this._key(n,d);this.typeAndIdToKey.has(f)?this.typeAndIdToKey.get(f).push(a):this.typeAndIdToKey.set(f,[a])}return h},"getOrCreateAtlas")},{key:"getAtlasInfo",value:o(function(r,n){var i=this,a=this.renderTypes.get(n),s=a.getKey(r),l=Array.isArray(s)?s:[s];return l.map(function(u){var h=a.getBoundingBox(r,u),d=i.getOrCreateAtlas(r,n,h,u),f=d.getOffsets(u),p=Ki(f,2),m=p[0],g=p[1];return{atlas:d,tex:m,tex1:m,tex2:g,bb:h}})},"getAtlasInfo")},{key:"getDebugInfo",value:o(function(){var r=[],n=yo(this.collections),i;try{for(n.s();!(i=n.n()).done;){var a=Ki(i.value,2),s=a[0],l=a[1],u=l.getCounts(),h=u.keyCount,d=u.atlasCount;r.push({type:s,keyCount:h,atlasCount:d})}}catch(f){n.e(f)}finally{n.f()}return r},"getDebugInfo")}])})(),Tgt=(function(){function e(t){Yf(this,e),this.globalOptions=t,this.atlasSize=t.webglTexSize,this.maxAtlasesPerBatch=t.webglTexPerBatch,this.batchAtlases=[]}return o(e,"AtlasBatchManager"),jf(e,[{key:"getMaxAtlasesPerBatch",value:o(function(){return this.maxAtlasesPerBatch},"getMaxAtlasesPerBatch")},{key:"getAtlasSize",value:o(function(){return this.atlasSize},"getAtlasSize")},{key:"getIndexArray",value:o(function(){return Array.from({length:this.maxAtlasesPerBatch},function(r,n){return n})},"getIndexArray")},{key:"startBatch",value:o(function(){this.batchAtlases=[]},"startBatch")},{key:"getAtlasCount",value:o(function(){return this.batchAtlases.length},"getAtlasCount")},{key:"getAtlases",value:o(function(){return this.batchAtlases},"getAtlases")},{key:"canAddToCurrentBatch",value:o(function(r){return this.batchAtlases.length===this.maxAtlasesPerBatch?this.batchAtlases.includes(r):!0},"canAddToCurrentBatch")},{key:"getAtlasIndexForBatch",value:o(function(r){var n=this.batchAtlases.indexOf(r);if(n<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(r),n=this.batchAtlases.length-1}return n},"getAtlasIndexForBatch")}])})(),Cgt=` + float circleSD(vec2 p, float r) { + return distance(vec2(0), p) - r; // signed distance + } +`,wgt=` + float rectangleSD(vec2 p, vec2 b) { + vec2 d = abs(p)-b; + return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0); + } +`,kgt=` + float roundRectangleSD(vec2 p, vec2 b, vec4 cr) { + cr.xy = (p.x > 0.0) ? cr.xy : cr.zw; + cr.x = (p.y > 0.0) ? cr.x : cr.y; + vec2 q = abs(p) - b + cr.x; + return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x; + } +`,Sgt=` + float ellipseSD(vec2 p, vec2 ab) { + p = abs( p ); // symmetry + + // find root with Newton solver + vec2 q = ab*(p-ab); + float w = (q.x1.0) ? d : -d; + } +`,NT={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},lA={IGNORE:1,USE_BB:2},H$=0,ebe=1,tbe=2,U$=3,D1=4,$5=5,AT=6,RT=7,Egt=(function(){function e(t,r,n){Yf(this,e),this.r=t,this.gl=r,this.maxInstances=n.webglBatchSize,this.atlasSize=n.webglTexSize,this.bgColor=n.bgColor,this.debug=n.webglDebug,this.batchDebugInfo=[],n.enableWrapping=!0,n.createTextureCanvas=igt,this.atlasManager=new bgt(t,n),this.batchManager=new Tgt(n),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(NT.SCREEN),this.pickingProgram=this._createShaderProgram(NT.PICKING),this.vao=this._createVAO()}return o(e,"ElementDrawingWebGL"),jf(e,[{key:"addAtlasCollection",value:o(function(r,n){this.atlasManager.addAtlasCollection(r,n)},"addAtlasCollection")},{key:"addTextureAtlasRenderType",value:o(function(r,n){this.atlasManager.addRenderType(r,n)},"addTextureAtlasRenderType")},{key:"addSimpleShapeRenderType",value:o(function(r,n){this.simpleShapeOptions.set(r,n)},"addSimpleShapeRenderType")},{key:"invalidate",value:o(function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.type,a=this.atlasManager;return i?a.invalidate(r,{filterType:o(function(l){return l===i},"filterType"),forceRedraw:!0}):a.invalidate(r)},"invalidate")},{key:"gc",value:o(function(){this.atlasManager.gc()},"gc")},{key:"_createShaderProgram",value:o(function(r){var n=this.gl,i=`#version 300 es + precision highp float; + + uniform mat3 uPanZoomMatrix; + uniform int uAtlasSize; + + // instanced + in vec2 aPosition; // a vertex from the unit square + + in mat3 aTransform; // used to transform verticies, eg into a bounding box + in int aVertType; // the type of thing we are rendering + + // the z-index that is output when using picking mode + in vec4 aIndex; + + // For textures + in int aAtlasId; // which shader unit/atlas to use + in vec4 aTex; // x/y/w/h of texture in atlas + + // for edges + in vec4 aPointAPointB; + in vec4 aPointCPointD; + in vec2 aLineWidth; // also used for node border width + + // simple shapes + in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left] + in vec4 aColor; // also used for edges + in vec4 aBorderColor; // aLineWidth is used for border width + + // output values passed to the fragment shader + out vec2 vTexCoord; + out vec4 vColor; + out vec2 vPosition; + // flat values are not interpolated + flat out int vAtlasId; + flat out int vVertType; + flat out vec2 vTopRight; + flat out vec2 vBotLeft; + flat out vec4 vCornerRadius; + flat out vec4 vBorderColor; + flat out vec2 vBorderWidth; + flat out vec4 vIndex; + + void main(void) { + int vid = gl_VertexID; + vec2 position = aPosition; // TODO make this a vec3, simplifies some code below + + if(aVertType == `.concat(H$,`) { + float texX = aTex.x; // texture coordinates + float texY = aTex.y; + float texW = aTex.z; + float texH = aTex.w; + + if(vid == 1 || vid == 2 || vid == 4) { + texX += texW; + } + if(vid == 2 || vid == 4 || vid == 5) { + texY += texH; + } + + float d = float(uAtlasSize); + vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1 + + gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); + } + else if(aVertType == `).concat(D1," || aVertType == ").concat(RT,` + || aVertType == `).concat($5," || aVertType == ").concat(AT,`) { // simple shapes + + // the bounding box is needed by the fragment shader + vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat + vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat + vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated + + // calculations are done in the fragment shader, just pass these along + vColor = aColor; + vCornerRadius = aCornerRadius; + vBorderColor = aBorderColor; + vBorderWidth = aLineWidth; + + gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); + } + else if(aVertType == `).concat(ebe,`) { + vec2 source = aPointAPointB.xy; + vec2 target = aPointAPointB.zw; + + // adjust the geometry so that the line is centered on the edge + position.y = position.y - 0.5; + + // stretch the unit square into a long skinny rectangle + vec2 xBasis = target - source; + vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x)); + vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y; + + gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0); + vColor = aColor; + } + else if(aVertType == `).concat(tbe,`) { + vec2 pointA = aPointAPointB.xy; + vec2 pointB = aPointAPointB.zw; + vec2 pointC = aPointCPointD.xy; + vec2 pointD = aPointCPointD.zw; + + // adjust the geometry so that the line is centered on the edge + position.y = position.y - 0.5; + + vec2 p0, p1, p2, pos; + if(position.x == 0.0) { // The left side of the unit square + p0 = pointA; + p1 = pointB; + p2 = pointC; + pos = position; + } else { // The right side of the unit square, use same approach but flip the geometry upside down + p0 = pointD; + p1 = pointC; + p2 = pointB; + pos = vec2(0.0, -position.y); + } + + vec2 p01 = p1 - p0; + vec2 p12 = p2 - p1; + vec2 p21 = p1 - p2; + + // Find the normal vector. + vec2 tangent = normalize(normalize(p12) + normalize(p01)); + vec2 normal = vec2(-tangent.y, tangent.x); + + // Find the vector perpendicular to p0 -> p1. + vec2 p01Norm = normalize(vec2(-p01.y, p01.x)); + + // Determine the bend direction. + float sigma = sign(dot(p01 + p21, normal)); + float width = aLineWidth[0]; + + if(sign(pos.y) == -sigma) { + // This is an intersecting vertex. Adjust the position so that there's no overlap. + vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } else { + // This is a non-intersecting vertex. Treat it like a mitre join. + vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm); + gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0); + } + + vColor = aColor; + } + else if(aVertType == `).concat(U$,` && vid < 3) { + // massage the first triangle into an edge arrow + if(vid == 0) + position = vec2(-0.15, -0.3); + if(vid == 1) + position = vec2( 0.0, 0.0); + if(vid == 2) + position = vec2( 0.15, -0.3); + + gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0); + vColor = aColor; + } + else { + gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space + } + + vAtlasId = aAtlasId; + vVertType = aVertType; + vIndex = aIndex; + } + `),a=this.batchManager.getIndexArray(),s=`#version 300 es + precision highp float; + + // declare texture unit for each texture atlas in the batch + `.concat(a.map(function(h){return"uniform sampler2D uTexture".concat(h,";")}).join(` + `),` + + uniform vec4 uBGColor; + uniform float uZoom; + + in vec2 vTexCoord; + in vec4 vColor; + in vec2 vPosition; // model coordinates + + flat in int vAtlasId; + flat in vec4 vIndex; + flat in int vVertType; + flat in vec2 vTopRight; + flat in vec2 vBotLeft; + flat in vec4 vCornerRadius; + flat in vec4 vBorderColor; + flat in vec2 vBorderWidth; + + out vec4 outColor; + + `).concat(Cgt,` + `).concat(wgt,` + `).concat(kgt,` + `).concat(Sgt,` + + vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha + return vec4( + top.rgb + (bot.rgb * (1.0 - top.a)), + top.a + (bot.a * (1.0 - top.a)) + ); + } + + vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance + // scale to the zoom level so that borders don't look blurry when zoomed in + // note 1.5 is an aribitrary value chosen because it looks good + return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); + } + + void main(void) { + if(vVertType == `).concat(H$,`) { + // look up the texel from the texture unit + `).concat(a.map(function(h){return"if(vAtlasId == ".concat(h,") outColor = texture(uTexture").concat(h,", vTexCoord);")}).join(` + else `),` + } + else if(vVertType == `).concat(U$,`) { + // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out'; + outColor = blend(vColor, uBGColor); + outColor.a = 1.0; // make opaque, masks out line under arrow + } + else if(vVertType == `).concat(D1,` && vBorderWidth == vec2(0.0)) { // simple rectangle with no border + outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done + } + else if(vVertType == `).concat(D1," || vVertType == ").concat(RT,` + || vVertType == `).concat($5," || vVertType == ").concat(AT,`) { // use SDF + + float outerBorder = vBorderWidth[0]; + float innerBorder = vBorderWidth[1]; + float borderPadding = outerBorder * 2.0; + float w = vTopRight.x - vBotLeft.x - borderPadding; + float h = vTopRight.y - vBotLeft.y - borderPadding; + vec2 b = vec2(w/2.0, h/2.0); // half width, half height + vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center + + float d; // signed distance + if(vVertType == `).concat(D1,`) { + d = rectangleSD(p, b); + } else if(vVertType == `).concat(RT,` && w == h) { + d = circleSD(p, b.x); // faster than ellipse + } else if(vVertType == `).concat(RT,`) { + d = ellipseSD(p, b); + } else { + d = roundRectangleSD(p, b, vCornerRadius.wzyx); + } + + // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling + // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box + if(d > 0.0) { + if(d > outerBorder) { + discard; + } else { + outColor = distInterp(vBorderColor, vec4(0), d - outerBorder); + } + } else { + if(d > innerBorder) { + vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor; + vec4 innerBorderColor = blend(vBorderColor, vColor); + outColor = distInterp(innerBorderColor, outerColor, d); + } + else { + vec4 outerColor; + if(innerBorder == 0.0 && outerBorder == 0.0) { + outerColor = vec4(0); + } else if(innerBorder == 0.0) { + outerColor = vBorderColor; + } else { + outerColor = blend(vBorderColor, vColor); + } + outColor = distInterp(vColor, outerColor, d - innerBorder); + } + } + } + else { + outColor = vColor; + } + + `).concat(r.picking?`if(outColor.a == 0.0) discard; + else outColor = vIndex;`:"",` + } + `),l=ngt(n,i,s);l.aPosition=n.getAttribLocation(l,"aPosition"),l.aIndex=n.getAttribLocation(l,"aIndex"),l.aVertType=n.getAttribLocation(l,"aVertType"),l.aTransform=n.getAttribLocation(l,"aTransform"),l.aAtlasId=n.getAttribLocation(l,"aAtlasId"),l.aTex=n.getAttribLocation(l,"aTex"),l.aPointAPointB=n.getAttribLocation(l,"aPointAPointB"),l.aPointCPointD=n.getAttribLocation(l,"aPointCPointD"),l.aLineWidth=n.getAttribLocation(l,"aLineWidth"),l.aColor=n.getAttribLocation(l,"aColor"),l.aCornerRadius=n.getAttribLocation(l,"aCornerRadius"),l.aBorderColor=n.getAttribLocation(l,"aBorderColor"),l.uPanZoomMatrix=n.getUniformLocation(l,"uPanZoomMatrix"),l.uAtlasSize=n.getUniformLocation(l,"uAtlasSize"),l.uBGColor=n.getUniformLocation(l,"uBGColor"),l.uZoom=n.getUniformLocation(l,"uZoom"),l.uTextures=[];for(var u=0;u1&&arguments[1]!==void 0?arguments[1]:NT.SCREEN;this.panZoomMatrix=r,this.renderTarget=n,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()},"startFrame")},{key:"startBatch",value:o(function(){this.instanceCount=0,this.batchManager.startBatch()},"startBatch")},{key:"endFrame",value:o(function(){this.endBatch()},"endFrame")},{key:"_isVisible",value:o(function(r,n){return r.visible()?n&&n.isVisible?n.isVisible(r):!0:!1},"_isVisible")},{key:"drawTexture",value:o(function(r,n,i){var a=this.atlasManager,s=this.batchManager,l=a.getRenderTypeOpts(i);if(this._isVisible(r,l)&&!(r.isEdge()&&!this._isValidEdge(r))){if(this.renderTarget.picking&&l.getTexPickingMode){var u=l.getTexPickingMode(r);if(u===lA.IGNORE)return;if(u==lA.USE_BB){this.drawPickingRectangle(r,n,i);return}}var h=a.getAtlasInfo(r,i),d=yo(h),f;try{for(d.s();!(f=d.n()).done;){var p=f.value,m=p.atlas,g=p.tex1,y=p.tex2;s.canAddToCurrentBatch(m)||this.endBatch();for(var v=s.getAtlasIndexForBatch(m),x=0,b=[[g,!0],[y,!1]];x=this.maxInstances&&this.endBatch()}}}}catch(I){d.e(I)}finally{d.f()}}},"drawTexture")},{key:"setTransformMatrix",value:o(function(r,n,i,a){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,l=0;if(i.shapeProps&&i.shapeProps.padding&&(l=r.pstyle(i.shapeProps.padding).pfValue),a){var u=a.bb,h=a.tex1,d=a.tex2,f=h.w/(h.w+d.w);s||(f=1-f);var p=this._getAdjustedBB(u,l,s,f);this._applyTransformMatrix(n,p,i,r)}else{var m=i.getBoundingBox(r),g=this._getAdjustedBB(m,l,!0,1);this._applyTransformMatrix(n,g,i,r)}},"setTransformMatrix")},{key:"_applyTransformMatrix",value:o(function(r,n,i,a){var s,l;Qxe(r);var u=i.getRotation?i.getRotation(a):0;if(u!==0){var h=i.getRotationPoint(a),d=h.x,f=h.y;X5(r,r,[d,f]),Jxe(r,r,u);var p=i.getRotationOffset(a);s=p.x+(n.xOffset||0),l=p.y+(n.yOffset||0)}else s=n.x1,l=n.y1;X5(r,r,[s,l]),dF(r,r,[n.w,n.h])},"_applyTransformMatrix")},{key:"_getAdjustedBB",value:o(function(r,n,i,a){var s=r.x1,l=r.y1,u=r.w,h=r.h,d=r.yOffset;n&&(s-=n,l-=n,u+=2*n,h+=2*n);var f=0,p=u*a;return i&&a<1?u=p:!i&&a<1&&(f=u-p,s+=f,u=p),{x1:s,y1:l,w:u,h,xOffset:f,yOffset:d}},"_getAdjustedBB")},{key:"drawPickingRectangle",value:o(function(r,n,i){var a=this.atlasManager.getRenderTypeOpts(i),s=this.instanceCount;this.vertTypeBuffer.getView(s)[0]=D1;var l=this.indexBuffer.getView(s);L1(n,l);var u=this.colorBuffer.getView(s);Xm([0,0,0],1,u);var h=this.transformBuffer.getMatrixView(s);this.setTransformMatrix(r,h,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()},"drawPickingRectangle")},{key:"drawNode",value:o(function(r,n,i){var a=this.simpleShapeOptions.get(i);if(this._isVisible(r,a)){var s=a.shapeProps,l=this._getVertTypeForShape(r,s.shape);if(l===void 0||a.isSimple&&!a.isSimple(r,this.renderTarget)){this.drawTexture(r,n,i);return}var u=this.instanceCount;if(this.vertTypeBuffer.getView(u)[0]=l,l===$5||l===AT){var h=a.getBoundingBox(r),d=this._getCornerRadius(r,s.radius,h),f=this.cornerRadiusBuffer.getView(u);f[0]=d,f[1]=d,f[2]=d,f[3]=d,l===AT&&(f[0]=0,f[2]=0)}var p=this.indexBuffer.getView(u);L1(n,p);var m=this.renderTarget.picking?1:i==="node-body"?r.effectiveOpacity():1,g=this.renderTarget.picking?1:r.pstyle(s.opacity).value*m,y=r.pstyle(s.color).value,v=this.colorBuffer.getView(u);Xm(y,g,v);var x=this.lineWidthBuffer.getView(u);if(x[0]=0,x[1]=0,s.border){var b=r.pstyle("border-width").value;if(b>0){var T=r.pstyle("border-color").value,k=m*r.pstyle("border-opacity").value,C=this.borderColorBuffer.getView(u);Xm(T,k,C);var w=r.pstyle("border-position").value;if(w==="inside")x[0]=0,x[1]=-b;else if(w==="outside")x[0]=b,x[1]=0;else{var S=b/2;x[0]=S,x[1]=-S}}}var R=this.transformBuffer.getMatrixView(u);this.setTransformMatrix(r,R,a),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},"drawNode")},{key:"_getVertTypeForShape",value:o(function(r,n){var i=r.pstyle(n).value;switch(i){case"rectangle":return D1;case"ellipse":return RT;case"roundrectangle":case"round-rectangle":return $5;case"bottom-round-rectangle":return AT;default:return}},"_getVertTypeForShape")},{key:"_getCornerRadius",value:o(function(r,n,i){var a=i.w,s=i.h;if(r.pstyle(n).value==="auto")return Wf(a,s);var l=r.pstyle(n).pfValue,u=a/2,h=s/2;return Math.min(l,h,u)},"_getCornerRadius")},{key:"drawEdgeArrow",value:o(function(r,n,i){if(r.visible()){var a=r._private.rscratch,s,l,u;if(i==="source"?(s=a.arrowStartX,l=a.arrowStartY,u=a.srcArrowAngle):(s=a.arrowEndX,l=a.arrowEndY,u=a.tgtArrowAngle),!(isNaN(s)||s==null||isNaN(l)||l==null||isNaN(u)||u==null)){var h=r.pstyle(i+"-arrow-shape").value;if(h!=="none"){var d=r.pstyle(i+"-arrow-color").value,f=r.pstyle("opacity").value,p=r.pstyle("line-opacity").value,m=f*p,g=r.pstyle("width").pfValue,y=r.pstyle("arrow-scale").value,v=this.r.getArrowWidth(g,y),x=this.instanceCount,b=this.transformBuffer.getMatrixView(x);Qxe(b),X5(b,b,[s,l]),dF(b,b,[v,v]),Jxe(b,b,u),this.vertTypeBuffer.getView(x)[0]=U$;var T=this.indexBuffer.getView(x);L1(n,T);var k=this.colorBuffer.getView(x);Xm(d,m,k),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},"drawEdgeArrow")},{key:"drawEdgeLine",value:o(function(r,n){if(r.visible()){var i=this._getEdgePoints(r);if(i){var a=r.pstyle("opacity").value,s=r.pstyle("line-opacity").value,l=r.pstyle("width").pfValue,u=r.pstyle("line-color").value,h=a*s;if(i.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),i.length==4){var d=this.instanceCount;this.vertTypeBuffer.getView(d)[0]=ebe;var f=this.indexBuffer.getView(d);L1(n,f);var p=this.colorBuffer.getView(d);Xm(u,h,p);var m=this.lineWidthBuffer.getView(d);m[0]=l;var g=this.pointAPointBBuffer.getView(d);g[0]=i[0],g[1]=i[1],g[2]=i[2],g[3]=i[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var y=0;y=this.maxInstances&&this.endBatch()}}}},"drawEdgeLine")},{key:"_isValidEdge",value:o(function(r){var n=r._private.rscratch;return!(n.badLine||n.allpts==null||isNaN(n.allpts[0]))},"_isValidEdge")},{key:"_getEdgePoints",value:o(function(r){var n=r._private.rscratch;if(this._isValidEdge(r)){var i=n.allpts;if(i.length==4)return i;var a=this._getNumSegments(r);return this._getCurveSegmentPoints(i,a)}},"_getEdgePoints")},{key:"_getNumSegments",value:o(function(r){var n=15;return Math.min(Math.max(n,5),this.maxInstances)},"_getNumSegments")},{key:"_getCurveSegmentPoints",value:o(function(r,n){if(r.length==4)return r;for(var i=Array((n+1)*2),a=0;a<=n;a++)if(a==0)i[0]=r[0],i[1]=r[1];else if(a==n)i[a*2]=r[r.length-2],i[a*2+1]=r[r.length-1];else{var s=a/n;this._setCurvePoint(r,s,i,a*2)}return i},"_getCurveSegmentPoints")},{key:"_setCurvePoint",value:o(function(r,n,i,a){if(r.length<=2)i[a]=r[0],i[a+1]=r[1];else{for(var s=Array(r.length-2),l=0;l0}},"isLayerVisible"),l=o(function(f){var p=f.pstyle("text-events").strValue==="yes";return p?lA.USE_BB:lA.IGNORE},"getTexPickingMode"),u=o(function(f){var p=f.position(),m=p.x,g=p.y,y=f.outerWidth(),v=f.outerHeight();return{w:y,h:v,x1:m-y/2,y1:g-v/2}},"getBBForSimpleShape");r.drawing.addAtlasCollection("node",{texRows:e.webglTexRowsNodes}),r.drawing.addAtlasCollection("label",{texRows:e.webglTexRows}),r.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:t.getStyleKey,getBoundingBox:t.getElementBox,drawElement:t.drawElement}),r.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:u,isSimple:ogt,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),r.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:u,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),r.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:u,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),r.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:l,getKey:Y$(t.getLabelKey,null),getBoundingBox:j$(t.getLabelBox,null),drawClipped:!0,drawElement:t.drawLabel,getRotation:i(null),getRotationPoint:t.getLabelRotationPoint,getRotationOffset:t.getLabelRotationOffset,isVisible:a("label")}),r.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:l,getKey:Y$(t.getSourceLabelKey,"source"),getBoundingBox:j$(t.getSourceLabelBox,"source"),drawClipped:!0,drawElement:t.drawSourceLabel,getRotation:i("source"),getRotationPoint:t.getSourceLabelRotationPoint,getRotationOffset:t.getSourceLabelRotationOffset,isVisible:a("source-label")}),r.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:l,getKey:Y$(t.getTargetLabelKey,"target"),getBoundingBox:j$(t.getTargetLabelBox,"target"),drawClipped:!0,drawElement:t.drawTargetLabel,getRotation:i("target"),getRotationPoint:t.getTargetLabelRotationPoint,getRotationOffset:t.getTargetLabelRotationOffset,isVisible:a("target-label")});var h=KT(function(){console.log("garbage collect flag set"),r.data.gc=!0},1e4);r.onUpdateEleCalcs(function(d,f){var p=!1;f&&f.length>0&&(p|=r.drawing.invalidate(f)),p&&h()}),Rgt(r)};o(Agt,"getBGColor");o(z2e,"getLabelLines");Y$=o(function(t,r){return function(n){var i=t(n),a=z2e(n,r);return a.length>1?a.map(function(s,l){return"".concat(i,"_").concat(l)}):i}},"getStyleKeysForLabel"),j$=o(function(t,r){return function(n,i){var a=t(n);if(typeof i=="string"){var s=i.indexOf("_");if(s>0){var l=Number(i.substring(s+1)),u=z2e(n,r),h=a.h/u.length,d=h*l,f=a.y1+d;return{x1:a.x1,w:a.w,y1:f,h,yOffset:d}}}return a}},"getBoundingBoxForLabel");o(Rgt,"overrideCanvasRendererFunctions");o(_gt,"clearWebgl");o(Lgt,"clearCanvas");o(Dgt,"createPanZoomMatrix");o(G2e,"setContextTransform");o(Igt,"drawSelectionRectangle");o(Mgt,"drawAxes");o(Ngt,"drawAtlases");o(Pgt,"getPickingIndexes");o(Ogt,"findNearestElementsWebgl");o(X$,"drawEle");o(V2e,"renderWebgl");Zf={};Zf.drawPolygonPath=function(e,t,r,n,i,a){var s=n/2,l=i/2;e.beginPath&&e.beginPath(),e.moveTo(t+s*a[0],r+l*a[1]);for(var u=1;u0&&s>0){m.clearRect(0,0,a,s),m.globalCompositeOperation="source-over";var g=this.getCachedZSortedEles();if(e.full)m.translate(-n.x1*h,-n.y1*h),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(n.x1*h,n.y1*h);else{var y=t.pan(),v={x:y.x*h,y:y.y*h};h*=t.zoom(),m.translate(v.x,v.y),m.scale(h,h),this.drawElements(m,g),m.scale(1/h,1/h),m.translate(-v.x,-v.y)}e.bg&&(m.globalCompositeOperation="destination-over",m.fillStyle=e.bg,m.rect(0,0,a,s),m.fill())}return p};o(Bgt,"b64ToBlob");o(ibe,"b64UriToB64");o(q2e,"output");rC.png=function(e){return q2e(e,this.bufferCanvasImage(e),"image/png")};rC.jpg=function(e){return q2e(e,this.bufferCanvasImage(e),"image/jpeg")};H2e={};H2e.nodeShapeImpl=function(e,t,r,n,i,a,s,l){switch(e){case"ellipse":return this.drawEllipsePath(t,r,n,i,a);case"polygon":return this.drawPolygonPath(t,r,n,i,a,s);case"round-polygon":return this.drawRoundPolygonPath(t,r,n,i,a,s,l);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,r,n,i,a,l);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,r,n,i,a,s,l);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,r,n,i,a,l);case"barrel":return this.drawBarrelPath(t,r,n,i,a)}};$gt=U2e,Kr=U2e.prototype;Kr.CANVAS_LAYERS=3;Kr.SELECT_BOX=0;Kr.DRAG=1;Kr.NODE=2;Kr.WEBGL=3;Kr.CANVAS_TYPES=["2d","2d","2d","webgl2"];Kr.BUFFER_COUNT=3;Kr.TEXTURE_BUFFER=0;Kr.MOTIONBLUR_BUFFER_NODE=1;Kr.MOTIONBLUR_BUFFER_DRAG=2;o(U2e,"CanvasRenderer");Kr.redrawHint=function(e,t){var r=this;switch(e){case"eles":r.data.canvasNeedsRedraw[Kr.NODE]=t;break;case"drag":r.data.canvasNeedsRedraw[Kr.DRAG]=t;break;case"select":r.data.canvasNeedsRedraw[Kr.SELECT_BOX]=t;break;case"gc":r.data.gc=!0;break}};Fgt=typeof Path2D<"u";Kr.path2dEnabled=function(e){if(e===void 0)return this.pathsEnabled;this.pathsEnabled=!!e};Kr.usePaths=function(){return Fgt&&this.pathsEnabled};Kr.setImgSmoothing=function(e,t){e.imageSmoothingEnabled!=null?e.imageSmoothingEnabled=t:(e.webkitImageSmoothingEnabled=t,e.mozImageSmoothingEnabled=t,e.msImageSmoothingEnabled=t)};Kr.getImgSmoothing=function(e){return e.imageSmoothingEnabled!=null?e.imageSmoothingEnabled:e.webkitImageSmoothingEnabled||e.mozImageSmoothingEnabled||e.msImageSmoothingEnabled};Kr.makeOffscreenCanvas=function(e,t){var r;if((typeof OffscreenCanvas>"u"?"undefined":ca(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(e,t);else{var n=this.cy.window(),i=n.document;r=i.createElement("canvas"),r.width=e,r.height=t}return r};[N2e,ku,$h,FF,lg,Kf,Ps,F2e,Zf,rC,H2e].forEach(function(e){br(Kr,e)});zgt=[{name:"null",impl:x2e},{name:"base",impl:L2e},{name:"canvas",impl:$gt}],Ggt=[{type:"layout",extensions:umt},{type:"renderer",extensions:zgt}],Y2e={},j2e={};o(X2e,"setExtension");o(K2e,"getExtension");o(Vgt,"setModule");o(Wgt,"getModule");mF=o(function(){if(arguments.length===2)return K2e.apply(null,arguments);if(arguments.length===3)return X2e.apply(null,arguments);if(arguments.length===4)return Wgt.apply(null,arguments);if(arguments.length===5)return Vgt.apply(null,arguments);pi("Invalid extension access syntax")},"extension");WT.prototype.extension=mF;Ggt.forEach(function(e){e.extensions.forEach(function(t){X2e(e.type,t.name,t.impl)})});cA=o(function(){if(!(this instanceof cA))return new cA;this.length=0},"Stylesheet"),sg=cA.prototype;sg.instanceString=function(){return"stylesheet"};sg.selector=function(e){var t=this.length++;return this[t]={selector:e,properties:[]},this};sg.css=function(e,t){var r=this.length-1;if(fr(e))this[r].properties.push({name:e,value:t});else if(cn(e))for(var n=e,i=Object.keys(n),a=0;a{"use strict";o((function(t,r){typeof nC=="object"&&typeof VF=="object"?VF.exports=r():typeof define=="function"&&define.amd?define([],r):typeof nC=="object"?nC.layoutBase=r():t.layoutBase=r()}),"webpackUniversalModuleDefinition")(nC,function(){return(function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=e,r.c=t,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=26)})([(function(e,t,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,d){n.call(this,d),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=d,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var d=this.getOtherEnd(u),f=h.getGraphManager().getRoot();;){if(d.getOwner()==h)return d;if(d.getOwner()==f)break;d=d.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},e.exports=s}),(function(e,t,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(4);function h(f,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),f.graphManager!=null&&(f=f.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=f,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var d in n)h[d]=n[d];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(f){this.rect.width=f},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(f){this.rect.height=f},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(f,p){this.rect.x=f.x,this.rect.y=f.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(f,p){this.rect.x=f-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(f,p){this.rect.x=f,this.rect.y=p},h.prototype.moveBy=function(f,p){this.rect.x+=f,this.rect.y+=p},h.prototype.getEdgeListToNode=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==f){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==f||y.source==f)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var f=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)f.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";f.add(m.source)}}),f},h.prototype.withChildren=function(){var f=new Set,p,m;if(f.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp&&(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)),this.labelHeight>m&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-m)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-m),this.setHeight(this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(f){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=f.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},e.exports=h}),(function(e,t,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(6),l=r(3),u=r(1),h=r(13),d=r(12),f=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T-1&&w>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(C,1),x.target!=x.source&&x.target.edges.splice(w,1);var k=x.source.owner.getEdges().indexOf(x);if(k==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(k,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,T=this.getNodes(),k=T.length,C=0;Cv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new d(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,k,C,w,S,R=this.nodes,L=R.length,N=0;NT&&(y=T),vC&&(x=C),bT&&(y=T),vC&&(x=C),b=this.nodes.length){var L=0;v.forEach(function(N){N.owner==g&&L++}),L==this.nodes.length&&(this.isConnected=!0)}},e.exports=p}),(function(e,t,r){"use strict";var n,i=r(1);function a(s){n=r(5),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,d){if(u==null&&h==null&&d==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{d=u,h=l,u=s;var f=h.getOwner(),p=d.getOwner();if(!(f!=null&&f.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(f==p)return u.isInterGraph=!1,f.add(u,h,d);if(u.isInterGraph=!0,u.source=h,u.target=d,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,d=u.length,f=0;f=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var d=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(d=1);var f=d*l[0],p=l[1]/d;l[0]f)return l[0]=u,l[1]=m,l[2]=d,l[3]=R,!1;if(hd)return l[0]=p,l[1]=h,l[2]=w,l[3]=f,!1;if(ud?(l[0]=y,l[1]=v,_=!0):(l[0]=g,l[1]=m,_=!0):M===P&&(u>d?(l[0]=p,l[1]=m,_=!0):(l[0]=x,l[1]=v,_=!0)),-D===P?d>u?(l[2]=S,l[3]=R,A=!0):(l[2]=w,l[3]=C,A=!0):D===P&&(d>u?(l[2]=k,l[3]=C,A=!0):(l[2]=L,l[3]=R,A=!0)),_&&A)return!1;if(u>d?h>f?(B=this.getCardinalDirection(M,P,4),O=this.getCardinalDirection(D,P,2)):(B=this.getCardinalDirection(-M,P,3),O=this.getCardinalDirection(-D,P,1)):h>f?(B=this.getCardinalDirection(-M,P,1),O=this.getCardinalDirection(-D,P,3)):(B=this.getCardinalDirection(M,P,2),O=this.getCardinalDirection(D,P,4)),!_)switch(B){case 1:V=m,$=u+-T/P,l[0]=$,l[1]=V;break;case 2:$=x,V=h+b*P,l[0]=$,l[1]=V;break;case 3:V=v,$=u+T/P,l[0]=$,l[1]=V;break;case 4:$=y,V=h+-b*P,l[0]=$,l[1]=V;break}if(!A)switch(O){case 1:z=C,G=d+-I/P,l[2]=G,l[3]=z;break;case 2:G=L,z=f+N*P,l[2]=G,l[3]=z;break;case 3:z=R,G=d+I/P,l[2]=G,l[3]=z;break;case 4:G=S,z=f+-N*P,l[2]=G,l[3]=z;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,d=a.y,f=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,k=void 0,C=void 0,w=void 0,S=void 0,R=void 0,L=void 0;return T=p-d,C=h-f,S=f*d-h*p,k=v-g,w=m-y,R=y*g-m*v,L=T*w-k*C,L===0?null:(x=(C*R-w*S)/L,b=(k*S-T*R)/L,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},e.exports=n}),(function(e,t,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,e.exports=n}),(function(e,t,r){"use strict";var n=(function(){function h(d,f){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},e.exports=i}),(function(e,t,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(T.push(C[0]);T.length>0&&g;){var w=T[0];T.splice(0,1),b.add(w);for(var S=w.getEdges(),x=0;x-1&&C.splice(I,1)}b=new Set,k=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(R,1);var L=k.getNeighborsList();L.forEach(function(_){if(y.indexOf(_)<0){var A=v.get(_),M=A-1;M==1&&w.push(_),v.set(_,M)}})}y=y.concat(w),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},e.exports=p}),(function(e,t,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},e.exports=n}),(function(e,t,r){"use strict";var n=r(4);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},e.exports=i}),(function(e,t,r){"use strict";function n(f){if(Array.isArray(f)){for(var p=0,m=Array(f.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(f>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var f=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&f&&this.updateGrid(),b=new Set,m=0;mT||b>T)&&(f.gravitationForceX=-this.gravityConstant*y,f.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(f.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,f.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var f,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),f=this.totalDisplacement=x.length||T>=x[0].length)){for(var k=0;kh},"_defaultCompareFunction")}]),l})();e.exports=s}),(function(e,t,r){"use strict";var n=(function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,f=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=d,this.gap_penalty=f,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o((function(t,r){typeof iC=="object"&&typeof qF=="object"?qF.exports=r(WF()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof iC=="object"?iC.coseBase=r(WF()):t.coseBase=r(t.layoutBase)}),"webpackUniversalModuleDefinition")(iC,function(e){return(function(t){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=t,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=7)})([(function(t,r){t.exports=e}),(function(t,r,n){"use strict";var i=n(0).FDLayoutConstants;function a(){}o(a,"CoSEConstants");for(var s in i)a[s]=i[s];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TREE_REDUCTION_ON_INCREMENTAL=!1,t.exports=a}),(function(t,r,n){"use strict";var i=n(0).FDLayoutEdge;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEEdge"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];t.exports=a}),(function(t,r,n){"use strict";var i=n(0).LGraph;function a(l,u,h){i.call(this,l,u,h)}o(a,"CoSEGraph"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];t.exports=a}),(function(t,r,n){"use strict";var i=n(0).LGraphManager;function a(l){i.call(this,l)}o(a,"CoSEGraphManager"),a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];t.exports=a}),(function(t,r,n){"use strict";var i=n(0).FDLayoutNode,a=n(0).IMath;function s(u,h,d,f){i.call(this,u,h,d,f)}o(s,"CoSENode"),s.prototype=Object.create(i.prototype);for(var l in i)s[l]=i[l];s.prototype.move=function(){var u=this.graphManager.getLayout();this.displacementX=u.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=u.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementX=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>u.coolingFactor*u.maxNodeDisplacement&&(this.displacementY=u.coolingFactor*u.maxNodeDisplacement*a.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),u.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},s.prototype.propogateDisplacementToChildren=function(u,h){for(var d=this.getChild().getNodes(),f,p=0;p0)this.positionNodesRadially(C);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var w=new Set(this.getAllNodes()),S=this.nodesWithGravity.filter(function(R){return w.has(R)});this.graphManager.setAllNodesToApplyGravitation(S),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},T.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%d.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var C=new Set(this.getAllNodes()),w=this.nodesWithGravity.filter(function(L){return C.has(L)});this.graphManager.setAllNodesToApplyGravitation(w),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var S=!this.isTreeGrowing&&!this.isGrowthFinished,R=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(S,R),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},T.prototype.getPositionsData=function(){for(var C=this.graphManager.getAllNodes(),w={},S=0;S1){var _;for(_=0;_R&&(R=Math.floor(I.y)),N=Math.floor(I.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new m(f.WORLD_CENTER_X-I.x/2,f.WORLD_CENTER_Y-I.y/2))},T.radialLayout=function(C,w,S){var R=Math.max(this.maxDiagonalInTree(C),h.DEFAULT_RADIAL_SEPARATION);T.branchRadialLayout(w,null,0,359,0,R);var L=x.calculateBounds(C),N=new b;N.setDeviceOrgX(L.getMinX()),N.setDeviceOrgY(L.getMinY()),N.setWorldOrgX(S.x),N.setWorldOrgY(S.y);for(var I=0;I1;){var W=z[0];z.splice(0,1);var H=B.indexOf(W);H>=0&&B.splice(H,1),V--,O--}w!=null?G=(B.indexOf(z[0])+1)%V:G=0;for(var j=Math.abs(R-S)/O,Q=G;$!=O;Q=++Q%V){var U=B[Q].getOtherEnd(C);if(U!=w){var oe=(S+$*j)%360,te=(oe+j)%360;T.branchRadialLayout(U,C,oe,te,L+N,N),$++}}},T.maxDiagonalInTree=function(C){for(var w=y.MIN_VALUE,S=0;Sw&&(w=L)}return w},T.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},T.prototype.groupZeroDegreeMembers=function(){var C=this,w={};this.memberGroups={},this.idToDummyNode={};for(var S=[],R=this.graphManager.getAllNodes(),L=0;L"u"&&(w[_]=[]),w[_]=w[_].concat(N)}Object.keys(w).forEach(function(A){if(w[A].length>1){var M="DummyCompound_"+A;C.memberGroups[M]=w[A];var D=w[A][0].getParent(),P=new l(C.graphManager);P.id=M,P.paddingLeft=D.paddingLeft||0,P.paddingRight=D.paddingRight||0,P.paddingBottom=D.paddingBottom||0,P.paddingTop=D.paddingTop||0,C.idToDummyNode[M]=P;var B=C.getGraphManager().add(C.newGraph(),P),O=D.getChild();O.add(P);for(var $=0;$=0;C--){var w=this.compoundOrder[C],S=w.id,R=w.paddingLeft,L=w.paddingTop;this.adjustLocations(this.tiledMemberPack[S],w.rect.x,w.rect.y,R,L)}},T.prototype.repopulateZeroDegreeMembers=function(){var C=this,w=this.tiledZeroDegreePack;Object.keys(w).forEach(function(S){var R=C.idToDummyNode[S],L=R.paddingLeft,N=R.paddingTop;C.adjustLocations(w[S],R.rect.x,R.rect.y,L,N)})},T.prototype.getToBeTiled=function(C){var w=C.id;if(this.toBeTiled[w]!=null)return this.toBeTiled[w];var S=C.getChild();if(S==null)return this.toBeTiled[w]=!1,!1;for(var R=S.getNodes(),L=0;L0)return this.toBeTiled[w]=!1,!1;if(N.getChild()==null){this.toBeTiled[N.id]=!1;continue}if(!this.getToBeTiled(N))return this.toBeTiled[w]=!1,!1}return this.toBeTiled[w]=!0,!0},T.prototype.getNodeDegree=function(C){for(var w=C.id,S=C.getEdges(),R=0,L=0;LA&&(A=D.rect.height)}S+=A+C.verticalPadding}},T.prototype.tileCompoundMembers=function(C,w){var S=this;this.tiledMemberPack=[],Object.keys(C).forEach(function(R){var L=w[R];S.tiledMemberPack[R]=S.tileNodes(C[R],L.paddingLeft+L.paddingRight),L.rect.width=S.tiledMemberPack[R].width,L.rect.height=S.tiledMemberPack[R].height})},T.prototype.tileNodes=function(C,w){var S=h.TILING_PADDING_VERTICAL,R=h.TILING_PADDING_HORIZONTAL,L={rows:[],rowWidth:[],rowHeight:[],width:0,height:w,verticalPadding:S,horizontalPadding:R};C.sort(function(_,A){return _.rect.width*_.rect.height>A.rect.width*A.rect.height?-1:_.rect.width*_.rect.height0&&(I+=C.horizontalPadding),C.rowWidth[S]=I,C.width0&&(_+=C.verticalPadding);var A=0;_>C.rowHeight[S]&&(A=C.rowHeight[S],C.rowHeight[S]=_,A=C.rowHeight[S]-A),C.height+=A,C.rows[S].push(w)},T.prototype.getShortestRowIndex=function(C){for(var w=-1,S=Number.MAX_VALUE,R=0;RS&&(w=R,S=C.rowWidth[R]);return w},T.prototype.canAddHorizontal=function(C,w,S){var R=this.getShortestRowIndex(C);if(R<0)return!0;var L=C.rowWidth[R];if(L+C.horizontalPadding+w<=C.width)return!0;var N=0;C.rowHeight[R]0&&(N=S+C.verticalPadding-C.rowHeight[R]);var I;C.width-L>=w+C.horizontalPadding?I=(C.height+N)/(L+w+C.horizontalPadding):I=(C.height+N)/C.width,N=S+C.verticalPadding;var _;return C.widthN&&w!=S){R.splice(-1,1),C.rows[S].push(L),C.rowWidth[w]=C.rowWidth[w]-N,C.rowWidth[S]=C.rowWidth[S]+N,C.width=C.rowWidth[instance.getLongestRowIndex(C)];for(var I=Number.MIN_VALUE,_=0;_I&&(I=R[_].height);w>0&&(I+=C.verticalPadding);var A=C.rowHeight[w]+C.rowHeight[S];C.rowHeight[w]=I,C.rowHeight[S]0)for(var O=L;O<=N;O++)B[0]+=this.grid[O][I-1].length+this.grid[O][I].length-1;if(N0)for(var O=I;O<=_;O++)B[3]+=this.grid[L-1][O].length+this.grid[L][O].length-1;for(var $=y.MAX_VALUE,V,G,z=0;z{"use strict";o((function(t,r){typeof aC=="object"&&typeof UF=="object"?UF.exports=r(HF()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof aC=="object"?aC.cytoscapeCoseBilkent=r(HF()):t.cytoscapeCoseBilkent=r(t.coseBase)}),"webpackUniversalModuleDefinition")(aC,function(e){return(function(t){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return o(n,"__webpack_require__"),n.m=t,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?o(function(){return i.default},"getDefault"):o(function(){return i},"getModuleExports");return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=1)})([(function(t,r){t.exports=e}),(function(t,r,n){"use strict";var i=n(0).layoutBase.LayoutConstants,a=n(0).layoutBase.FDLayoutConstants,s=n(0).CoSEConstants,l=n(0).CoSELayout,u=n(0).CoSENode,h=n(0).layoutBase.PointD,d=n(0).layoutBase.DimensionD,f={ready:o(function(){},"ready"),stop:o(function(){},"stop"),quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function p(v,x){var b={};for(var T in v)b[T]=v[T];for(var T in x)b[T]=x[T];return b}o(p,"extend");function m(v){this.options=p(f,v),g(this.options)}o(m,"_CoSELayout");var g=o(function(x){x.nodeRepulsion!=null&&(s.DEFAULT_REPULSION_STRENGTH=a.DEFAULT_REPULSION_STRENGTH=x.nodeRepulsion),x.idealEdgeLength!=null&&(s.DEFAULT_EDGE_LENGTH=a.DEFAULT_EDGE_LENGTH=x.idealEdgeLength),x.edgeElasticity!=null&&(s.DEFAULT_SPRING_STRENGTH=a.DEFAULT_SPRING_STRENGTH=x.edgeElasticity),x.nestingFactor!=null&&(s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=x.nestingFactor),x.gravity!=null&&(s.DEFAULT_GRAVITY_STRENGTH=a.DEFAULT_GRAVITY_STRENGTH=x.gravity),x.numIter!=null&&(s.MAX_ITERATIONS=a.MAX_ITERATIONS=x.numIter),x.gravityRange!=null&&(s.DEFAULT_GRAVITY_RANGE_FACTOR=a.DEFAULT_GRAVITY_RANGE_FACTOR=x.gravityRange),x.gravityCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=x.gravityCompound),x.gravityRangeCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=x.gravityRangeCompound),x.initialEnergyOnIncremental!=null&&(s.DEFAULT_COOLING_FACTOR_INCREMENTAL=a.DEFAULT_COOLING_FACTOR_INCREMENTAL=x.initialEnergyOnIncremental),x.quality=="draft"?i.QUALITY=0:x.quality=="proof"?i.QUALITY=2:i.QUALITY=1,s.NODE_DIMENSIONS_INCLUDE_LABELS=a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=x.nodeDimensionsIncludeLabels,s.DEFAULT_INCREMENTAL=a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=!x.randomize,s.ANIMATE=a.ANIMATE=i.ANIMATE=x.animate,s.TILE=x.tile,s.TILING_PADDING_VERTICAL=typeof x.tilingPaddingVertical=="function"?x.tilingPaddingVertical.call():x.tilingPaddingVertical,s.TILING_PADDING_HORIZONTAL=typeof x.tilingPaddingHorizontal=="function"?x.tilingPaddingHorizontal.call():x.tilingPaddingHorizontal},"getUserOptions");m.prototype.run=function(){var v,x,b=this.options,T=this.idToLNode={},k=this.layout=new l,C=this;C.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var w=k.newGraphManager();this.gm=w;var S=this.options.eles.nodes(),R=this.options.eles.edges();this.root=w.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(S),k);for(var L=0;L0){var _;_=b.getGraphManager().add(b.newGraph(),S),this.processChildrenList(_,w,b)}}},m.prototype.stop=function(){return this.stopped=!0,this};var y=o(function(x){x("layout","cose-bilkent",m)},"register");typeof cytoscape<"u"&&y(cytoscape),t.exports=y})])})});function Hgt(e,t){e.forEach(r=>{let n={id:r.id,labelText:r.label,height:r.height,width:r.width,padding:r.padding??0};Object.keys(r).forEach(i=>{["id","label","height","width","padding","x","y"].includes(i)||(n[i]=r[i])}),t.add({group:"nodes",data:n,position:{x:r.x??0,y:r.y??0}})})}function Ugt(e,t){e.forEach(r=>{let n={id:r.id,source:r.start,target:r.end};Object.keys(r).forEach(i=>{["id","start","end"].includes(i)||(n[i]=r[i])}),t.add({group:"edges",data:n})})}function J2e(e){return new Promise(t=>{let r=et("body").append("div").attr("id","cy").attr("style","display:none"),n=El({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});r.remove(),Hgt(e.nodes,n),Ugt(e.edges,n),n.nodes().forEach(function(a){a.layoutDimensions=()=>{let s=a.data();return{w:s.width,h:s.height}}});let i={name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1};n.layout(i).run(),n.ready(a=>{Z.info("Cytoscape ready",a),t(n)})})}function eTe(e){return e.nodes().map(t=>{let r=t.data(),n=t.position(),i={id:r.id,x:n.x,y:n.y};return Object.keys(r).forEach(a=>{a!=="id"&&(i[a]=r[a])}),i})}function tTe(e){return e.edges().map(t=>{let r=t.data(),n=t._private.rscratch,i={id:r.id,source:r.source,target:r.target,startX:n.startX,startY:n.startY,midX:n.midX,midY:n.midY,endX:n.endX,endY:n.endY};return Object.keys(r).forEach(a=>{["id","source","target"].includes(a)||(i[a]=r[a])}),i})}var Q2e,rTe=F(()=>{"use strict";GF();Q2e=Xs(Z2e(),1);$r();vt();El.use(Q2e.default);o(Hgt,"addNodes");o(Ugt,"addEdges");o(J2e,"createCytoscapeInstance");o(eTe,"extractPositionedNodes");o(tTe,"extractPositionedEdges")});async function nTe(e,t){Z.debug("Starting cose-bilkent layout algorithm");try{Ygt(e);let r=await J2e(e),n=eTe(r),i=tTe(r);return Z.debug(`Layout completed: ${n.length} nodes, ${i.length} edges`),{nodes:n,edges:i}}catch(r){throw Z.error("Error in cose-bilkent layout algorithm:",r),r}}function Ygt(e){if(!e)throw new Error("Layout data is required");if(!e.config)throw new Error("Configuration is required in layout data");if(!e.rootNode)throw new Error("Root node is required");if(!e.nodes||!Array.isArray(e.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(e.edges))throw new Error("Edges array is required in layout data");return!0}var iTe=F(()=>{"use strict";vt();rTe();o(nTe,"executeCoseBilkentLayout");o(Ygt,"validateLayoutData")});var aTe,sTe=F(()=>{"use strict";iTe();aTe=o(async(e,t,{insertCluster:r,insertEdge:n,insertEdgeLabel:i,insertMarkers:a,insertNode:s,log:l,positionEdgeLabel:u},{algorithm:h})=>{let d={},f={},p=t.select("g");a(p,e.markers,e.type,e.diagramId);let m=p.insert("g").attr("class","subgraphs"),g=p.insert("g").attr("class","edgePaths"),y=p.insert("g").attr("class","edgeLabels"),v=p.insert("g").attr("class","nodes");l.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(e.nodes.map(async T=>{if(T.isGroup){let k={...T};f[T.id]=k,d[T.id]=k,await r(m,T)}else{let k={...T};d[T.id]=k;let C=await s(v,T,{config:e.config,dir:e.direction||"TB"}),w=C.node().getBBox();k.width=w.width,k.height=w.height,k.domId=C,l.debug(`Node ${T.id} dimensions: ${w.width}x${w.height}`)}})),l.debug("Running cose-bilkent layout algorithm");let x={...e,nodes:e.nodes.map(T=>{let k=d[T.id];return{...T,width:k.width,height:k.height}})},b=await nTe(x,e.config);l.debug("Positioning nodes based on layout results"),b.nodes.forEach(T=>{let k=d[T.id];k?.domId&&(k.domId.attr("transform",`translate(${T.x}, ${T.y})`),k.x=T.x,k.y=T.y,l.debug(`Positioned node ${k.id} at center (${T.x}, ${T.y})`))}),b.edges.forEach(T=>{let k=e.edges.find(C=>C.id===T.id);k&&(k.points=[{x:T.startX,y:T.startY},{x:T.midX,y:T.midY},{x:T.endX,y:T.endY}])}),l.debug("Inserting and positioning edges"),await Promise.all(e.edges.map(async T=>{let k=await i(y,T),C=d[T.start??""],w=d[T.end??""];if(C&&w){let S=b.edges.find(R=>R.id===T.id);if(S){l.debug("APA01 positionedEdge",S);let R={...T},L=n(g,R,f,e.type,C,w,e.diagramId);u(R,L)}else{let R={...T,points:[{x:C.x||0,y:C.y||0},{x:w.x||0,y:w.y||0}]},L=n(g,R,f,e.type,C,w,e.diagramId);u(R,L)}}})),l.debug("Cose-bilkent rendering completed")},"render")});var oTe={};ir(oTe,{render:()=>jgt});var jgt,lTe=F(()=>{"use strict";sTe();jgt=aTe});var sC,YF,Xgt,Al,Su,Qf=F(()=>{"use strict";Qce();vt();sC={},YF=o(e=>{for(let t of e)sC[t.name]=t},"registerLayoutLoaders"),Xgt=o(()=>{YF([{name:"dagre",loader:o(async()=>await Promise.resolve().then(()=>(C0e(),T0e)),"loader")},{name:"swimlane",loader:o(async()=>await Promise.resolve().then(()=>(L1e(),_1e)),"loader")},{name:"cose-bilkent",loader:o(async()=>await Promise.resolve().then(()=>(lTe(),oTe)),"loader")}])},"registerDefaultLayoutLoaders");Xgt();Al=o(async(e,t,r)=>{if(!(e.layoutAlgorithm in sC))throw new Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);if(e.diagramId)for(let f of e.nodes){let p=f.domId||f.id;f.domId=`${e.diagramId}-${p}`}let n=sC[e.layoutAlgorithm],i=await n.loader(),{theme:a,themeVariables:s}=e.config,{useGradient:l,gradientStart:u,gradientStop:h}=s,d=t.attr("id");if(t.append("defs").append("filter").attr("id",`${d}-drop-shadow`).attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${a?.includes("dark")?"#FFFFFF":"#000000"}`),t.append("defs").append("filter").attr("id",`${d}-drop-shadow-small`).attr("height","150%").attr("width","150%").append("feDropShadow").attr("dx","2").attr("dy","2").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${a?.includes("dark")?"#FFFFFF":"#000000"}`),l){let f=t.append("linearGradient").attr("id",t.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");f.append("svg:stop").attr("offset","0%").attr("stop-color",u).attr("stop-opacity",1),f.append("svg:stop").attr("offset","100%").attr("stop-color",h).attr("stop-opacity",1)}return i.render(e,t,Zce,{algorithm:n.algorithm},r)},"render"),Su=o((e="",{fallback:t="dagre"}={})=>{if(e in sC)return e;if(t in sC)return Z.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw new Error(`Both layout algorithms ${e} and ${t} are not registered.`)},"getRegisteredLayoutAlgorithm")});var vo,Kgt,Zgt,Jf=F(()=>{"use strict";$n();vt();vo=o((e,t,r,n)=>{e.attr("class",r);let{width:i,height:a,x:s,y:l}=Kgt(e,t);Wr(e,a,i,n);let u=Zgt(s,l,i,a,t);e.attr("viewBox",u),Z.debug(`viewBox configured: ${u} with padding: ${t}`)},"setupViewPortForSVG"),Kgt=o((e,t)=>{let r=e.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+t*2,height:r.height+t*2,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),Zgt=o((e,t,r,n,i)=>`${e-i} ${t-i} ${r} ${n}`,"createViewBox")});var Qgt,Jgt,cTe,uTe=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();Qgt=o(function(e,t){return t.db.getClasses()},"getClasses"),Jgt=o(async function(e,t,r,n,i){Z.info("REF0:"),Z.info("Drawing state diagram (v2)",t);let{securityLevel:a,flowchart:s,layout:l}=Ae();n.db.setDiagramId(t),Z.debug("Before getData: ");let u=n.db.getData();Z.debug("Data: ",u);let h=pl(t,a),d=n.db.getDirection();u.type=n.type,u.layoutAlgorithm=Su(l),u.layoutAlgorithm==="dagre"&&l==="elk"&&Z.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),u.direction=d,u.nodeSpacing=s?.nodeSpacing||50,u.rankSpacing=s?.rankSpacing||50,u.markers=["point","circle","cross"],u.diagramId=t,Z.debug("REF1:",u),await Al(u,h,i);let f=u.config.flowchart?.diagramPadding??8;Zt.insertTitle(h,"flowchartTitleText",s?.titleTopMargin||0,n.db.getDiagramTitle()),vo(h,f,"flowchart",s?.useMaxWidth||!1)},"draw"),cTe={getClasses:Qgt,draw:Jgt}});var jF,XF,hTe=F(()=>{"use strict";jF=(function(){var e=o(function(kt,Ct,Ot,Ft){for(Ot=Ot||{},Ft=kt.length;Ft--;Ot[kt[Ft]]=Ct);return Ot},"o"),t=[1,4],r=[1,3],n=[1,5],i=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],a=[2,2],s=[1,13],l=[1,14],u=[1,15],h=[1,16],d=[1,23],f=[1,25],p=[1,26],m=[1,27],g=[1,50],y=[1,49],v=[1,29],x=[1,30],b=[1,31],T=[1,32],k=[1,33],C=[1,45],w=[1,47],S=[1,43],R=[1,48],L=[1,44],N=[1,51],I=[1,46],_=[1,52],A=[1,53],M=[1,34],D=[1,35],P=[1,36],B=[1,37],O=[1,38],$=[1,58],V=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],G=[1,62],z=[1,61],W=[1,63],H=[8,9,11,75,77,78],j=[1,79],Q=[1,92],U=[1,97],oe=[1,96],te=[1,93],le=[1,89],ie=[1,95],ae=[1,91],Re=[1,98],be=[1,94],Pe=[1,99],Ge=[1,90],Oe=[8,9,10,11,40,75,77,78],ue=[8,9,10,11,40,46,75,77,78],ye=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],ke=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],ce=[44,60,89,102,105,106,109,111,114,115,116],re=[1,122],J=[1,123],se=[1,125],ge=[1,124],Te=[44,60,62,74,89,102,105,106,109,111,114,115,116],we=[1,134],Me=[1,148],ve=[1,149],ne=[1,150],q=[1,151],he=[1,136],X=[1,138],fe=[1,142],K=[1,143],qe=[1,144],_e=[1,145],Be=[1,146],Ne=[1,147],He=[1,152],$e=[1,153],Xe=[1,132],Fe=[1,133],Ke=[1,140],xe=[1,135],mt=[1,139],Le=[1,137],ft=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124,125],wt=[1,155],zt=[1,157],St=[8,9,11],At=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],bt=[1,177],me=[1,173],lt=[1,174],gt=[1,178],Ze=[1,175],Ee=[1,176],tt=[77,116,119],at=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],ot=[10,106],Wt=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],Bt=[1,248],qt=[1,246],vr=[1,250],Tt=[1,244],De=[1,245],it=[1,247],We=[1,249],rt=[1,251],yt=[1,269],Yt=[8,9,11,106],Ht=[8,9,10,11,60,84,105,106,109,110,111,112],pr={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,direction_td:125,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr",125:"direction_td"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1],[33,1]],performAction:o(function(Ct,Ot,Ft,Rt,gr,Se,ri){var Ie=Se.length-1;switch(gr){case 2:this.$=[];break;case 3:(!Array.isArray(Se[Ie])||Se[Ie].length>0)&&Se[Ie-1].push(Se[Ie]),this.$=Se[Ie-1];break;case 4:case 183:this.$=Se[Ie];break;case 11:Rt.setDirection("TB"),this.$="TB";break;case 12:Rt.setDirection(Se[Ie-1]),this.$=Se[Ie-1];break;case 27:this.$=Se[Ie-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=Rt.addSubGraph(Se[Ie-6],Se[Ie-1],Se[Ie-4]);break;case 34:this.$=Rt.addSubGraph(Se[Ie-3],Se[Ie-1],Se[Ie-3]);break;case 35:this.$=Rt.addSubGraph(void 0,Se[Ie-1],void 0);break;case 37:this.$=Se[Ie].trim(),Rt.setAccTitle(this.$);break;case 38:case 39:this.$=Se[Ie].trim(),Rt.setAccDescription(this.$);break;case 43:this.$=Se[Ie-1]+Se[Ie];break;case 44:this.$=Se[Ie];break;case 45:Rt.addVertex(Se[Ie-1][Se[Ie-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,Se[Ie]),Rt.addLink(Se[Ie-3].stmt,Se[Ie-1],Se[Ie-2]),this.$={stmt:Se[Ie-1],nodes:Se[Ie-1].concat(Se[Ie-3].nodes)};break;case 46:Rt.addLink(Se[Ie-2].stmt,Se[Ie],Se[Ie-1]),this.$={stmt:Se[Ie],nodes:Se[Ie].concat(Se[Ie-2].nodes)};break;case 47:Rt.addLink(Se[Ie-3].stmt,Se[Ie-1],Se[Ie-2]),this.$={stmt:Se[Ie-1],nodes:Se[Ie-1].concat(Se[Ie-3].nodes)};break;case 48:this.$={stmt:Se[Ie-1],nodes:Se[Ie-1]};break;case 49:Rt.addVertex(Se[Ie-1][Se[Ie-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,Se[Ie]),this.$={stmt:Se[Ie-1],nodes:Se[Ie-1],shapeData:Se[Ie]};break;case 50:this.$={stmt:Se[Ie],nodes:Se[Ie]};break;case 51:this.$=[Se[Ie]];break;case 52:Rt.addVertex(Se[Ie-5][Se[Ie-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,Se[Ie-4]),this.$=Se[Ie-5].concat(Se[Ie]);break;case 53:this.$=Se[Ie-4].concat(Se[Ie]);break;case 54:this.$=Se[Ie];break;case 55:this.$=Se[Ie-2],Rt.setClass(Se[Ie-2],Se[Ie]);break;case 56:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"square");break;case 57:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"doublecircle");break;case 58:this.$=Se[Ie-5],Rt.addVertex(Se[Ie-5],Se[Ie-2],"circle");break;case 59:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"ellipse");break;case 60:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"stadium");break;case 61:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"subroutine");break;case 62:this.$=Se[Ie-7],Rt.addVertex(Se[Ie-7],Se[Ie-1],"rect",void 0,void 0,void 0,Object.fromEntries([[Se[Ie-5],Se[Ie-3]]]));break;case 63:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"cylinder");break;case 64:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"round");break;case 65:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"diamond");break;case 66:this.$=Se[Ie-5],Rt.addVertex(Se[Ie-5],Se[Ie-2],"hexagon");break;case 67:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"odd");break;case 68:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"trapezoid");break;case 69:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"inv_trapezoid");break;case 70:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"lean_right");break;case 71:this.$=Se[Ie-3],Rt.addVertex(Se[Ie-3],Se[Ie-1],"lean_left");break;case 72:this.$=Se[Ie],Rt.addVertex(Se[Ie]);break;case 73:Se[Ie-1].text=Se[Ie],this.$=Se[Ie-1];break;case 74:case 75:Se[Ie-2].text=Se[Ie-1],this.$=Se[Ie-2];break;case 76:this.$=Se[Ie];break;case 77:var Nr=Rt.destructLink(Se[Ie],Se[Ie-2]);this.$={type:Nr.type,stroke:Nr.stroke,length:Nr.length,text:Se[Ie-1]};break;case 78:var Nr=Rt.destructLink(Se[Ie],Se[Ie-2]);this.$={type:Nr.type,stroke:Nr.stroke,length:Nr.length,text:Se[Ie-1],id:Se[Ie-3]};break;case 79:this.$={text:Se[Ie],type:"text"};break;case 80:this.$={text:Se[Ie-1].text+""+Se[Ie],type:Se[Ie-1].type};break;case 81:this.$={text:Se[Ie],type:"string"};break;case 82:this.$={text:Se[Ie],type:"markdown"};break;case 83:var Nr=Rt.destructLink(Se[Ie]);this.$={type:Nr.type,stroke:Nr.stroke,length:Nr.length};break;case 84:var Nr=Rt.destructLink(Se[Ie]);this.$={type:Nr.type,stroke:Nr.stroke,length:Nr.length,id:Se[Ie-1]};break;case 85:this.$=Se[Ie-1];break;case 86:this.$={text:Se[Ie],type:"text"};break;case 87:this.$={text:Se[Ie-1].text+""+Se[Ie],type:Se[Ie-1].type};break;case 88:this.$={text:Se[Ie],type:"string"};break;case 89:case 104:this.$={text:Se[Ie],type:"markdown"};break;case 101:this.$={text:Se[Ie],type:"text"};break;case 102:this.$={text:Se[Ie-1].text+""+Se[Ie],type:Se[Ie-1].type};break;case 103:this.$={text:Se[Ie],type:"text"};break;case 105:this.$=Se[Ie-4],Rt.addClass(Se[Ie-2],Se[Ie]);break;case 106:this.$=Se[Ie-4],Rt.setClass(Se[Ie-2],Se[Ie]);break;case 107:case 115:this.$=Se[Ie-1],Rt.setClickEvent(Se[Ie-1],Se[Ie]);break;case 108:case 116:this.$=Se[Ie-3],Rt.setClickEvent(Se[Ie-3],Se[Ie-2]),Rt.setTooltip(Se[Ie-3],Se[Ie]);break;case 109:this.$=Se[Ie-2],Rt.setClickEvent(Se[Ie-2],Se[Ie-1],Se[Ie]);break;case 110:this.$=Se[Ie-4],Rt.setClickEvent(Se[Ie-4],Se[Ie-3],Se[Ie-2]),Rt.setTooltip(Se[Ie-4],Se[Ie]);break;case 111:this.$=Se[Ie-2],Rt.setLink(Se[Ie-2],Se[Ie]);break;case 112:this.$=Se[Ie-4],Rt.setLink(Se[Ie-4],Se[Ie-2]),Rt.setTooltip(Se[Ie-4],Se[Ie]);break;case 113:this.$=Se[Ie-4],Rt.setLink(Se[Ie-4],Se[Ie-2],Se[Ie]);break;case 114:this.$=Se[Ie-6],Rt.setLink(Se[Ie-6],Se[Ie-4],Se[Ie]),Rt.setTooltip(Se[Ie-6],Se[Ie-2]);break;case 117:this.$=Se[Ie-1],Rt.setLink(Se[Ie-1],Se[Ie]);break;case 118:this.$=Se[Ie-3],Rt.setLink(Se[Ie-3],Se[Ie-2]),Rt.setTooltip(Se[Ie-3],Se[Ie]);break;case 119:this.$=Se[Ie-3],Rt.setLink(Se[Ie-3],Se[Ie-2],Se[Ie]);break;case 120:this.$=Se[Ie-5],Rt.setLink(Se[Ie-5],Se[Ie-4],Se[Ie]),Rt.setTooltip(Se[Ie-5],Se[Ie-2]);break;case 121:this.$=Se[Ie-4],Rt.addVertex(Se[Ie-2],void 0,void 0,Se[Ie]);break;case 122:this.$=Se[Ie-4],Rt.updateLink([Se[Ie-2]],Se[Ie]);break;case 123:this.$=Se[Ie-4],Rt.updateLink(Se[Ie-2],Se[Ie]);break;case 124:this.$=Se[Ie-8],Rt.updateLinkInterpolate([Se[Ie-6]],Se[Ie-2]),Rt.updateLink([Se[Ie-6]],Se[Ie]);break;case 125:this.$=Se[Ie-8],Rt.updateLinkInterpolate(Se[Ie-6],Se[Ie-2]),Rt.updateLink(Se[Ie-6],Se[Ie]);break;case 126:this.$=Se[Ie-6],Rt.updateLinkInterpolate([Se[Ie-4]],Se[Ie]);break;case 127:this.$=Se[Ie-6],Rt.updateLinkInterpolate(Se[Ie-4],Se[Ie]);break;case 128:case 130:this.$=[Se[Ie]];break;case 129:case 131:Se[Ie-2].push(Se[Ie]),this.$=Se[Ie-2];break;case 133:this.$=Se[Ie-1]+Se[Ie];break;case 181:this.$=Se[Ie];break;case 182:this.$=Se[Ie-1]+""+Se[Ie];break;case 184:this.$=Se[Ie-1]+""+Se[Ie];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"};break;case 189:this.$={stmt:"dir",value:"TD"};break}},"anonymous"),table:[{3:1,4:2,9:t,10:r,12:n},{1:[3]},e(i,a,{5:6}),{4:7,9:t,10:r,12:n},{4:8,9:t,10:r,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:k,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A,121:M,122:D,123:P,124:B,125:O},e(i,[2,9]),e(i,[2,10]),e(i,[2,11]),{8:[1,55],9:[1,56],10:$,15:54,18:57},e(V,[2,3]),e(V,[2,4]),e(V,[2,5]),e(V,[2,6]),e(V,[2,7]),e(V,[2,8]),{8:G,9:z,11:W,21:59,41:60,72:64,75:[1,65],77:[1,67],78:[1,66]},{8:G,9:z,11:W,21:68},{8:G,9:z,11:W,21:69},{8:G,9:z,11:W,21:70},{8:G,9:z,11:W,21:71},{8:G,9:z,11:W,21:72},{8:G,9:z,10:[1,73],11:W,21:74},e(V,[2,36]),{35:[1,75]},{37:[1,76]},e(V,[2,39]),e(H,[2,50],{18:77,39:78,10:$,40:j}),{10:[1,80]},{10:[1,81]},{10:[1,82]},{10:[1,83]},{14:Q,44:U,60:oe,80:[1,87],89:te,95:[1,84],97:[1,85],101:86,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge,120:88},e(V,[2,185]),e(V,[2,186]),e(V,[2,187]),e(V,[2,188]),e(V,[2,189]),e(Oe,[2,51]),e(Oe,[2,54],{46:[1,100]}),e(ue,[2,72],{113:113,29:[1,101],44:g,48:[1,102],50:[1,103],52:[1,104],54:[1,105],56:[1,106],58:[1,107],60:y,63:[1,108],65:[1,109],67:[1,110],68:[1,111],70:[1,112],89:C,102:w,105:S,106:R,109:L,111:N,114:I,115:_,116:A}),e(ye,[2,181]),e(ye,[2,142]),e(ye,[2,143]),e(ye,[2,144]),e(ye,[2,145]),e(ye,[2,146]),e(ye,[2,147]),e(ye,[2,148]),e(ye,[2,149]),e(ye,[2,150]),e(ye,[2,151]),e(ye,[2,152]),e(i,[2,12]),e(i,[2,18]),e(i,[2,19]),{9:[1,114]},e(ke,[2,26],{18:115,10:$}),e(V,[2,27]),{42:116,43:39,44:g,45:40,47:41,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},e(V,[2,40]),e(V,[2,41]),e(V,[2,42]),e(ce,[2,76],{73:117,62:[1,119],74:[1,118]}),{76:120,79:121,80:re,81:J,116:se,119:ge},{75:[1,126],77:[1,127]},e(Te,[2,83]),e(V,[2,28]),e(V,[2,29]),e(V,[2,30]),e(V,[2,31]),e(V,[2,32]),{10:we,12:Me,14:ve,27:ne,28:128,32:q,44:he,60:X,75:fe,80:[1,130],81:[1,131],83:141,84:K,85:qe,86:_e,87:Be,88:Ne,89:He,90:$e,91:129,105:Xe,109:Fe,111:Ke,114:xe,115:mt,116:Le},e(ft,a,{5:154}),e(V,[2,37]),e(V,[2,38]),e(H,[2,48],{44:wt}),e(H,[2,49],{18:156,10:$,40:zt}),e(Oe,[2,44]),{44:g,47:158,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},{102:[1,159],103:160,105:[1,161]},{44:g,47:162,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},{44:g,47:163,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},e(St,[2,107],{10:[1,164],96:[1,165]}),{80:[1,166]},e(St,[2,115],{120:168,10:[1,167],14:Q,44:U,60:oe,89:te,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge}),e(St,[2,117],{10:[1,169]}),e(At,[2,183]),e(At,[2,170]),e(At,[2,171]),e(At,[2,172]),e(At,[2,173]),e(At,[2,174]),e(At,[2,175]),e(At,[2,176]),e(At,[2,177]),e(At,[2,178]),e(At,[2,179]),e(At,[2,180]),{44:g,47:170,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},{30:171,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:179,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:181,50:[1,180],67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:182,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:183,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:184,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{109:[1,185]},{30:186,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:187,65:[1,188],67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:189,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:190,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{30:191,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},e(ye,[2,182]),e(i,[2,20]),e(ke,[2,25]),e(H,[2,46],{39:192,18:193,10:$,40:j}),e(ce,[2,73],{10:[1,194]}),{10:[1,195]},{30:196,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{77:[1,197],79:198,116:se,119:ge},e(tt,[2,79]),e(tt,[2,81]),e(tt,[2,82]),e(tt,[2,168]),e(tt,[2,169]),{76:199,79:121,80:re,81:J,116:se,119:ge},e(Te,[2,84]),{8:G,9:z,10:we,11:W,12:Me,14:ve,21:201,27:ne,29:[1,200],32:q,44:he,60:X,75:fe,83:141,84:K,85:qe,86:_e,87:Be,88:Ne,89:He,90:$e,91:202,105:Xe,109:Fe,111:Ke,114:xe,115:mt,116:Le},e(at,[2,101]),e(at,[2,103]),e(at,[2,104]),e(at,[2,157]),e(at,[2,158]),e(at,[2,159]),e(at,[2,160]),e(at,[2,161]),e(at,[2,162]),e(at,[2,163]),e(at,[2,164]),e(at,[2,165]),e(at,[2,166]),e(at,[2,167]),e(at,[2,90]),e(at,[2,91]),e(at,[2,92]),e(at,[2,93]),e(at,[2,94]),e(at,[2,95]),e(at,[2,96]),e(at,[2,97]),e(at,[2,98]),e(at,[2,99]),e(at,[2,100]),{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,32:[1,203],33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:k,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A,121:M,122:D,123:P,124:B,125:O},{10:$,18:204},{44:[1,205]},e(Oe,[2,43]),{10:[1,206],44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:113,114:I,115:_,116:A},{10:[1,207]},{10:[1,208],106:[1,209]},e(ot,[2,128]),{10:[1,210],44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:113,114:I,115:_,116:A},{10:[1,211],44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:113,114:I,115:_,116:A},{80:[1,212]},e(St,[2,109],{10:[1,213]}),e(St,[2,111],{10:[1,214]}),{80:[1,215]},e(At,[2,184]),{80:[1,216],98:[1,217]},e(Oe,[2,55],{113:113,44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,114:I,115:_,116:A}),{31:[1,218],67:bt,82:219,116:gt,117:Ze,118:Ee},e(Wt,[2,86]),e(Wt,[2,88]),e(Wt,[2,89]),e(Wt,[2,153]),e(Wt,[2,154]),e(Wt,[2,155]),e(Wt,[2,156]),{49:[1,220],67:bt,82:219,116:gt,117:Ze,118:Ee},{30:221,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{51:[1,222],67:bt,82:219,116:gt,117:Ze,118:Ee},{53:[1,223],67:bt,82:219,116:gt,117:Ze,118:Ee},{55:[1,224],67:bt,82:219,116:gt,117:Ze,118:Ee},{57:[1,225],67:bt,82:219,116:gt,117:Ze,118:Ee},{60:[1,226]},{64:[1,227],67:bt,82:219,116:gt,117:Ze,118:Ee},{66:[1,228],67:bt,82:219,116:gt,117:Ze,118:Ee},{30:229,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},{31:[1,230],67:bt,82:219,116:gt,117:Ze,118:Ee},{67:bt,69:[1,231],71:[1,232],82:219,116:gt,117:Ze,118:Ee},{67:bt,69:[1,234],71:[1,233],82:219,116:gt,117:Ze,118:Ee},e(H,[2,45],{18:156,10:$,40:zt}),e(H,[2,47],{44:wt}),e(ce,[2,75]),e(ce,[2,74]),{62:[1,235],67:bt,82:219,116:gt,117:Ze,118:Ee},e(ce,[2,77]),e(tt,[2,80]),{77:[1,236],79:198,116:se,119:ge},{30:237,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},e(ft,a,{5:238}),e(at,[2,102]),e(V,[2,35]),{43:239,44:g,45:40,47:41,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},{10:$,18:240},{10:Bt,60:qt,84:vr,92:241,105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{10:Bt,60:qt,84:vr,92:252,104:[1,253],105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{10:Bt,60:qt,84:vr,92:254,104:[1,255],105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{105:[1,256]},{10:Bt,60:qt,84:vr,92:257,105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{44:g,47:258,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},e(St,[2,108]),{80:[1,259]},{80:[1,260],98:[1,261]},e(St,[2,116]),e(St,[2,118],{10:[1,262]}),e(St,[2,119]),e(ue,[2,56]),e(Wt,[2,87]),e(ue,[2,57]),{51:[1,263],67:bt,82:219,116:gt,117:Ze,118:Ee},e(ue,[2,64]),e(ue,[2,59]),e(ue,[2,60]),e(ue,[2,61]),{109:[1,264]},e(ue,[2,63]),e(ue,[2,65]),{66:[1,265],67:bt,82:219,116:gt,117:Ze,118:Ee},e(ue,[2,67]),e(ue,[2,68]),e(ue,[2,70]),e(ue,[2,69]),e(ue,[2,71]),e([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),e(ce,[2,78]),{31:[1,266],67:bt,82:219,116:gt,117:Ze,118:Ee},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,32:[1,267],33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:k,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A,121:M,122:D,123:P,124:B,125:O},e(Oe,[2,53]),{43:268,44:g,45:40,47:41,60:y,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A},e(St,[2,121],{106:yt}),e(Yt,[2,130],{108:270,10:Bt,60:qt,84:vr,105:Tt,109:De,110:it,111:We,112:rt}),e(Ht,[2,132]),e(Ht,[2,134]),e(Ht,[2,135]),e(Ht,[2,136]),e(Ht,[2,137]),e(Ht,[2,138]),e(Ht,[2,139]),e(Ht,[2,140]),e(Ht,[2,141]),e(St,[2,122],{106:yt}),{10:[1,271]},e(St,[2,123],{106:yt}),{10:[1,272]},e(ot,[2,129]),e(St,[2,105],{106:yt}),e(St,[2,106],{113:113,44:g,60:y,89:C,102:w,105:S,106:R,109:L,111:N,114:I,115:_,116:A}),e(St,[2,110]),e(St,[2,112],{10:[1,273]}),e(St,[2,113]),{98:[1,274]},{51:[1,275]},{62:[1,276]},{66:[1,277]},{8:G,9:z,11:W,21:278},e(V,[2,34]),e(Oe,[2,52]),{10:Bt,60:qt,84:vr,105:Tt,107:279,108:243,109:De,110:it,111:We,112:rt},e(Ht,[2,133]),{14:Q,44:U,60:oe,89:te,101:280,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge,120:88},{14:Q,44:U,60:oe,89:te,101:281,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge,120:88},{98:[1,282]},e(St,[2,120]),e(ue,[2,58]),{30:283,67:bt,80:me,81:lt,82:172,116:gt,117:Ze,118:Ee},e(ue,[2,66]),e(ft,a,{5:284}),e(Yt,[2,131],{108:270,10:Bt,60:qt,84:vr,105:Tt,109:De,110:it,111:We,112:rt}),e(St,[2,126],{120:168,10:[1,285],14:Q,44:U,60:oe,89:te,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge}),e(St,[2,127],{120:168,10:[1,286],14:Q,44:U,60:oe,89:te,105:le,106:ie,109:ae,111:Re,114:be,115:Pe,116:Ge}),e(St,[2,114]),{31:[1,287],67:bt,82:219,116:gt,117:Ze,118:Ee},{6:11,7:12,8:s,9:l,10:u,11:h,20:17,22:18,23:19,24:20,25:21,26:22,27:d,32:[1,288],33:24,34:f,36:p,38:m,42:28,43:39,44:g,45:40,47:41,60:y,84:v,85:x,86:b,87:T,88:k,89:C,102:w,105:S,106:R,109:L,111:N,113:42,114:I,115:_,116:A,121:M,122:D,123:P,124:B,125:O},{10:Bt,60:qt,84:vr,92:289,105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},{10:Bt,60:qt,84:vr,92:290,105:Tt,107:242,108:243,109:De,110:it,111:We,112:rt},e(ue,[2,62]),e(V,[2,33]),e(St,[2,124],{106:yt}),e(St,[2,125],{106:yt})],defaultActions:{},parseError:o(function(Ct,Ot){if(Ot.recoverable)this.trace(Ct);else{var Ft=new Error(Ct);throw Ft.hash=Ot,Ft}},"parseError"),parse:o(function(Ct){var Ot=this,Ft=[0],Rt=[],gr=[null],Se=[],ri=this.table,Ie="",Nr=0,Pa=0,Xu=0,B0=2,$0=1,dk=Se.slice.call(arguments,1),Pi=Object.create(this.lexer),Mc={yy:{}};for(var Px in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Px)&&(Mc.yy[Px]=this.yy[Px]);Pi.setInput(Ct,Mc.yy),Mc.yy.lexer=Pi,Mc.yy.parser=this,typeof Pi.yylloc>"u"&&(Pi.yylloc={});var bd=Pi.yylloc;Se.push(bd);var fk=Pi.options&&Pi.options.ranges;typeof Mc.yy.parseError=="function"?this.parseError=Mc.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function js(Do){Ft.length=Ft.length-2*Do,gr.length=gr.length-Do,Se.length=Se.length-Do}o(js,"popStack");function RD(){var Do;return Do=Rt.pop()||Pi.lex()||$0,typeof Do!="number"&&(Do instanceof Array&&(Rt=Do,Do=Rt.pop()),Do=Ot.symbols_[Do]||Do),Do}o(RD,"lex");for(var ys,_D,Op,nl,rOt,LD,F0={},pk,Ku,OX,mk;;){if(Op=Ft[Ft.length-1],this.defaultActions[Op]?nl=this.defaultActions[Op]:((ys===null||typeof ys>"u")&&(ys=RD()),nl=ri[Op]&&ri[Op][ys]),typeof nl>"u"||!nl.length||!nl[0]){var DD="";mk=[];for(pk in ri[Op])this.terminals_[pk]&&pk>B0&&mk.push("'"+this.terminals_[pk]+"'");Pi.showPosition?DD="Parse error on line "+(Nr+1)+`: +`+Pi.showPosition()+` +Expecting `+mk.join(", ")+", got '"+(this.terminals_[ys]||ys)+"'":DD="Parse error on line "+(Nr+1)+": Unexpected "+(ys==$0?"end of input":"'"+(this.terminals_[ys]||ys)+"'"),this.parseError(DD,{text:Pi.match,token:this.terminals_[ys]||ys,line:Pi.yylineno,loc:bd,expected:mk})}if(nl[0]instanceof Array&&nl.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Op+", token: "+ys);switch(nl[0]){case 1:Ft.push(ys),gr.push(Pi.yytext),Se.push(Pi.yylloc),Ft.push(nl[1]),ys=null,_D?(ys=_D,_D=null):(Pa=Pi.yyleng,Ie=Pi.yytext,Nr=Pi.yylineno,bd=Pi.yylloc,Xu>0&&Xu--);break;case 2:if(Ku=this.productions_[nl[1]][1],F0.$=gr[gr.length-Ku],F0._$={first_line:Se[Se.length-(Ku||1)].first_line,last_line:Se[Se.length-1].last_line,first_column:Se[Se.length-(Ku||1)].first_column,last_column:Se[Se.length-1].last_column},fk&&(F0._$.range=[Se[Se.length-(Ku||1)].range[0],Se[Se.length-1].range[1]]),LD=this.performAction.apply(F0,[Ie,Pa,Nr,Mc.yy,nl[1],gr,Se].concat(dk)),typeof LD<"u")return LD;Ku&&(Ft=Ft.slice(0,-1*Ku*2),gr=gr.slice(0,-1*Ku),Se=Se.slice(0,-1*Ku)),Ft.push(this.productions_[nl[1]][0]),gr.push(F0.$),Se.push(F0._$),OX=ri[Ft[Ft.length-2]][Ft[Ft.length-1]],Ft.push(OX);break;case 3:return!0}}return!0},"parse")},Hr=(function(){var kt={EOF:1,parseError:o(function(Ot,Ft){if(this.yy.parser)this.yy.parser.parseError(Ot,Ft);else throw new Error(Ot)},"parseError"),setInput:o(function(Ct,Ot){return this.yy=Ot||this.yy||{},this._input=Ct,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Ct=this._input[0];this.yytext+=Ct,this.yyleng++,this.offset++,this.match+=Ct,this.matched+=Ct;var Ot=Ct.match(/(?:\r\n?|\n).*/g);return Ot?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ct},"input"),unput:o(function(Ct){var Ot=Ct.length,Ft=Ct.split(/(?:\r\n?|\n)/g);this._input=Ct+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ot),this.offset-=Ot;var Rt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Ft.length-1&&(this.yylineno-=Ft.length-1);var gr=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Ft?(Ft.length===Rt.length?this.yylloc.first_column:0)+Rt[Rt.length-Ft.length].length-Ft[0].length:this.yylloc.first_column-Ot},this.options.ranges&&(this.yylloc.range=[gr[0],gr[0]+this.yyleng-Ot]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Ct){this.unput(this.match.slice(Ct))},"less"),pastInput:o(function(){var Ct=this.matched.substr(0,this.matched.length-this.match.length);return(Ct.length>20?"...":"")+Ct.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Ct=this.match;return Ct.length<20&&(Ct+=this._input.substr(0,20-Ct.length)),(Ct.substr(0,20)+(Ct.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Ct=this.pastInput(),Ot=new Array(Ct.length+1).join("-");return Ct+this.upcomingInput()+` +`+Ot+"^"},"showPosition"),test_match:o(function(Ct,Ot){var Ft,Rt,gr;if(this.options.backtrack_lexer&&(gr={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(gr.yylloc.range=this.yylloc.range.slice(0))),Rt=Ct[0].match(/(?:\r\n?|\n).*/g),Rt&&(this.yylineno+=Rt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Rt?Rt[Rt.length-1].length-Rt[Rt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ct[0].length},this.yytext+=Ct[0],this.match+=Ct[0],this.matches=Ct,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ct[0].length),this.matched+=Ct[0],Ft=this.performAction.call(this,this.yy,this,Ot,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ft)return Ft;if(this._backtrack){for(var Se in gr)this[Se]=gr[Se];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ct,Ot,Ft,Rt;this._more||(this.yytext="",this.match="");for(var gr=this._currentRules(),Se=0;SeOt[0].length)){if(Ot=Ft,Rt=Se,this.options.backtrack_lexer){if(Ct=this.test_match(Ft,gr[Se]),Ct!==!1)return Ct;if(this._backtrack){Ot=!1;continue}else return!1}else if(!this.options.flex)break}return Ot?(Ct=this.test_match(Ot,gr[Rt]),Ct!==!1?Ct:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Ot=this.next();return Ot||this.lex()},"lex"),begin:o(function(Ot){this.conditionStack.push(Ot)},"begin"),popState:o(function(){var Ot=this.conditionStack.length-1;return Ot>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Ot){return Ot=this.conditionStack.length-1-Math.abs(Ot||0),Ot>=0?this.conditionStack[Ot]:"INITIAL"},"topState"),pushState:o(function(Ot){this.begin(Ot)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(Ot,Ft,Rt,gr){var Se=gr;switch(Rt){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),Ft.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let ri=/\n\s*/g;return Ft.yytext=Ft.yytext.replace(ri,"
    "),40;break;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 17:this.popState();break;case 18:return 96;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 88;case 35:return Ot.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return Ot.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return Ot.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return Ot.lex.firstGraph()&&this.begin("dir"),12;break;case 39:return 27;case 40:return 32;case 41:return 98;case 42:return 98;case 43:return 98;case 44:return 98;case 45:return this.popState(),13;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;case 55:return this.popState(),14;break;case 56:return 121;case 57:return 122;case 58:return 123;case 59:return 124;case 60:return 125;case 61:return 78;case 62:return 105;case 63:return 111;case 64:return 46;case 65:return 60;case 66:return 44;case 67:return 8;case 68:return 106;case 69:return 115;case 70:return this.popState(),77;break;case 71:return this.pushState("edgeText"),75;break;case 72:return 119;case 73:return this.popState(),77;break;case 74:return this.pushState("thickEdgeText"),75;break;case 75:return 119;case 76:return this.popState(),77;break;case 77:return this.pushState("dottedEdgeText"),75;break;case 78:return 119;case 79:return 77;case 80:return this.popState(),53;break;case 81:return"TEXT";case 82:return this.pushState("ellipseText"),52;break;case 83:return this.popState(),55;break;case 84:return this.pushState("text"),54;break;case 85:return this.popState(),57;break;case 86:return this.pushState("text"),56;break;case 87:return 58;case 88:return this.pushState("text"),67;break;case 89:return this.popState(),64;break;case 90:return this.pushState("text"),63;break;case 91:return this.popState(),49;break;case 92:return this.pushState("text"),48;break;case 93:return this.popState(),69;break;case 94:return this.popState(),71;break;case 95:return 117;case 96:return this.pushState("trapText"),68;break;case 97:return this.pushState("trapText"),70;break;case 98:return 118;case 99:return 67;case 100:return 90;case 101:return"SEP";case 102:return 89;case 103:return 115;case 104:return 111;case 105:return 44;case 106:return 109;case 107:return 114;case 108:return 116;case 109:return this.popState(),62;break;case 110:return this.pushState("text"),62;break;case 111:return this.popState(),51;break;case 112:return this.pushState("text"),50;break;case 113:return this.popState(),31;break;case 114:return this.pushState("text"),29;break;case 115:return this.popState(),66;break;case 116:return this.pushState("text"),65;break;case 117:return"TEXT";case 118:return"QUOTE";case 119:return 9;case 120:return 10;case 121:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:swimlane-beta\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:.*direction\s+TD[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},shapeData:{rules:[8,11,12,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},callbackargs:{rules:[17,18,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},callbackname:{rules:[14,15,16,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},href:{rules:[21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},click:{rules:[21,24,33,34,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},dottedEdgeText:{rules:[21,24,76,78,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},thickEdgeText:{rules:[21,24,73,75,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},edgeText:{rules:[21,24,70,72,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},trapText:{rules:[21,24,79,82,84,86,90,92,93,94,95,96,97,110,112,114,116],inclusive:!1},ellipseText:{rules:[21,24,79,80,81,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},text:{rules:[21,24,79,82,83,84,85,86,89,90,91,92,96,97,109,110,111,112,113,114,115,116,117],inclusive:!1},vertex:{rules:[21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},dir:{rules:[21,24,45,46,47,48,49,50,51,52,53,54,55,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},acc_descr:{rules:[3,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},acc_title:{rules:[1,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},md_string:{rules:[19,20,21,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},string:{rules:[21,22,23,24,79,82,84,86,90,92,96,97,110,112,114,116],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,44,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,74,76,77,79,82,84,86,87,88,90,92,96,97,98,99,100,101,102,103,104,105,106,107,108,110,112,114,116,118,119,120,121],inclusive:!0}}};return kt})();pr.lexer=Hr;function Er(){this.yy={}}return o(Er,"Parser"),Er.prototype=pr,pr.Parser=Er,new Er})();jF.parser=jF;XF=jF});var dTe,fTe,pTe=F(()=>{"use strict";hTe();dTe=Object.assign({},XF);dTe.parse=e=>{let t=e.replace(/}\s*\n/g,`} +`);return XF.parse(t)};fTe=dTe});var Eu,X1=F(()=>{"use strict";Eu=o(()=>` + /* Font Awesome icon styling - consolidated */ + .label-icon { + display: inline-block; + height: 1em; + overflow: visible; + vertical-align: -0.125em; + } + + .node .label-icon path { + fill: currentColor; + stroke: revert; + stroke-width: revert; + } +`,"getIconStyles")});var e0t,t0t,RA,KF=F(()=>{"use strict";zi();X1();e0t=o((e,t)=>{let r=$p,n=r(e,"r"),i=r(e,"g"),a=r(e,"b");return Oi(n,i,a,t)},"fade"),t0t=o(e=>`.label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span { + color: ${e.titleColor}; + } + .cluster-label span p { + background-color: transparent; + } + + .label text,span { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: ${e.strokeWidth??1}px; + } + .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label { + text-anchor: middle; + } + + .node .katex path { + fill: #000; + stroke: #000; + stroke-width: 1px; + } + + .rough-node .label,.node .label, .image-shape .label, .icon-shape .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + + .root .anchor path { + fill: ${e.lineColor} !important; + stroke-width: 0; + stroke: ${e.lineColor}; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: ${e.strokeWidth??2}px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + p { + background-color: ${e.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${e0t(e.edgeLabelBackground,.5)}; + // background-color: + } + + .cluster rect { + fill: ${e.clusterBkg}; + stroke: ${e.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span { + color: ${e.titleColor}; + } + /* .cluster div { + color: ${e.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } + + rect.text { + fill: none; + stroke-width: 0; + } + + .icon-shape, .image-shape { + background-color: ${e.edgeLabelBackground}; + p { + background-color: ${e.edgeLabelBackground}; + padding: 2px; + } + .label rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + ${Eu()} +`,"getStyles"),RA=t0t});var LA={};ir(LA,{createFlowDiagram:()=>_A,diagram:()=>r0t});var _A,r0t,oC=F(()=>{"use strict";ur();Xt();Fce();uTe();pTe();KF();_A=o(({defaultLayout:e,styles:t=RA}={})=>({parser:fTe,get db(){return new W4},renderer:cTe,styles:t,init:o(r=>{r.flowchart||(r.flowchart={});let n=Lk().layout??e??r.layout;n&&cb({layout:n}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,cb({flowchart:{arrowMarkerAbsolute:r.arrowMarkerAbsolute}})},"init")}),"createFlowDiagram"),r0t=_A()});var c0t,xTe,bTe=F(()=>{"use strict";KF();c0t=o(e=>`${RA(e)} + .swimlane.cluster rect { + stroke: ${e.clusterBorder} !important; + } + [data-look="neo"].cluster rect { + filter: none; + } +`,"getStyles"),xTe=c0t});var TTe={};ir(TTe,{diagram:()=>u0t});var u0t,CTe=F(()=>{"use strict";oC();bTe();u0t=_A({defaultLayout:"swimlane",styles:xTe})});var ZF,STe,ETe=F(()=>{"use strict";ZF=(function(){var e=o(function(Pe,Ge,Oe,ue){for(Oe=Oe||{},ue=Pe.length;ue--;Oe[Pe[ue]]=Ge);return Oe},"o"),t=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52],r=[1,10],n=[1,11],i=[1,12],a=[1,13],s=[1,23],l=[1,24],u=[1,25],h=[1,26],d=[1,27],f=[1,19],p=[1,28],m=[1,29],g=[1,20],y=[1,18],v=[1,21],x=[1,22],b=[1,36],T=[1,37],k=[1,38],C=[1,39],w=[1,40],S=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,48,50,51,52,66,67,68,69,70],R=[1,45],L=[1,46],N=[1,55],I=[40,48,50,51,52,71,72],_=[1,66],A=[1,64],M=[1,61],D=[1,65],P=[1,67],B=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,51,52,66,67,68,69,70],O=[66,67,68,69,70],$=[1,85],V=[1,84],G=[1,82],z=[1,83],W=[6,10,42,47],H=[6,10,13,41,42,47,48,49],j=[1,93],Q=[1,92],U=[1,91],oe=[19,58],te=[1,102],le=[1,101],ie=[19,58,61,63],ae={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,DECIMAL_NUM:51,ENTITY_ONE:52,attribute:53,attributeType:54,attributeName:55,attributeKeyTypeList:56,attributeComment:57,ATTRIBUTE_WORD:58,"?":59,attributeKeyType:60,",":61,ATTRIBUTE_KEY:62,COMMENT:63,cardinality:64,relType:65,ZERO_OR_ONE:66,ZERO_OR_MORE:67,ONE_OR_MORE:68,ONLY_ONE:69,MD_PARENT:70,NON_IDENTIFYING:71,IDENTIFYING:72,WORD:73,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",51:"DECIMAL_NUM",52:"ENTITY_ONE",58:"ATTRIBUTE_WORD",59:"?",61:",",62:"ATTRIBUTE_KEY",63:"COMMENT",66:"ZERO_OR_ONE",67:"ZERO_OR_MORE",68:"ONE_OR_MORE",69:"ONLY_ONE",70:"MD_PARENT",71:"NON_IDENTIFYING",72:"IDENTIFYING",73:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[11,1],[11,1],[11,1],[18,1],[18,2],[53,2],[53,3],[53,3],[53,4],[54,1],[54,2],[55,1],[56,1],[56,3],[60,1],[57,1],[12,3],[64,1],[64,1],[64,1],[64,1],[64,1],[65,1],[65,1],[14,1],[14,1],[14,1]],performAction:o(function(Ge,Oe,ue,ye,ke,ce,re){var J=ce.length-1;switch(ke){case 1:break;case 2:this.$=[];break;case 3:ce[J-1].push(ce[J]),this.$=ce[J-1];break;case 4:case 5:this.$=ce[J];break;case 6:case 7:this.$=[];break;case 8:ye.addEntity(ce[J-4]),ye.addEntity(ce[J-2]),ye.addRelationship(ce[J-4],ce[J],ce[J-2],ce[J-3]);break;case 9:ye.addEntity(ce[J-8]),ye.addEntity(ce[J-4]),ye.addRelationship(ce[J-8],ce[J],ce[J-4],ce[J-5]),ye.setClass([ce[J-8]],ce[J-6]),ye.setClass([ce[J-4]],ce[J-2]);break;case 10:ye.addEntity(ce[J-6]),ye.addEntity(ce[J-2]),ye.addRelationship(ce[J-6],ce[J],ce[J-2],ce[J-3]),ye.setClass([ce[J-6]],ce[J-4]);break;case 11:ye.addEntity(ce[J-6]),ye.addEntity(ce[J-4]),ye.addRelationship(ce[J-6],ce[J],ce[J-4],ce[J-5]),ye.setClass([ce[J-4]],ce[J-2]);break;case 12:ye.addEntity(ce[J-3]),ye.addAttributes(ce[J-3],ce[J-1]);break;case 13:ye.addEntity(ce[J-5]),ye.addAttributes(ce[J-5],ce[J-1]),ye.setClass([ce[J-5]],ce[J-3]);break;case 14:ye.addEntity(ce[J-2]);break;case 15:ye.addEntity(ce[J-4]),ye.setClass([ce[J-4]],ce[J-2]);break;case 16:ye.addEntity(ce[J]);break;case 17:ye.addEntity(ce[J-2]),ye.setClass([ce[J-2]],ce[J]);break;case 18:ye.addEntity(ce[J-6],ce[J-4]),ye.addAttributes(ce[J-6],ce[J-1]);break;case 19:ye.addEntity(ce[J-8],ce[J-6]),ye.addAttributes(ce[J-8],ce[J-1]),ye.setClass([ce[J-8]],ce[J-3]);break;case 20:ye.addEntity(ce[J-5],ce[J-3]);break;case 21:ye.addEntity(ce[J-7],ce[J-5]),ye.setClass([ce[J-7]],ce[J-2]);break;case 22:ye.addEntity(ce[J-3],ce[J-1]);break;case 23:ye.addEntity(ce[J-5],ce[J-3]),ye.setClass([ce[J-5]],ce[J]);break;case 24:case 25:this.$=ce[J].trim(),ye.setAccTitle(this.$);break;case 26:case 27:this.$=ce[J].trim(),ye.setAccDescription(this.$);break;case 32:ye.setDirection("TB");break;case 33:ye.setDirection("BT");break;case 34:ye.setDirection("RL");break;case 35:ye.setDirection("LR");break;case 36:this.$=ce[J-3],ye.addClass(ce[J-2],ce[J-1]);break;case 37:case 38:case 59:case 68:this.$=[ce[J]];break;case 39:case 40:this.$=ce[J-2].concat([ce[J]]);break;case 41:this.$=ce[J-2],ye.setClass(ce[J-1],ce[J]);break;case 42:this.$=ce[J-3],ye.addCssStyles(ce[J-2],ce[J-1]);break;case 43:this.$=[ce[J]];break;case 44:ce[J-2].push(ce[J]),this.$=ce[J-2];break;case 46:this.$=ce[J-1]+ce[J];break;case 54:case 80:case 81:this.$=ce[J].replace(/"/g,"");break;case 55:case 56:case 57:case 58:case 82:this.$=ce[J];break;case 60:ce[J].push(ce[J-1]),this.$=ce[J];break;case 61:this.$={type:ce[J-1],name:ce[J]};break;case 62:this.$={type:ce[J-2],name:ce[J-1],keys:ce[J]};break;case 63:this.$={type:ce[J-2],name:ce[J-1],comment:ce[J]};break;case 64:this.$={type:ce[J-3],name:ce[J-2],keys:ce[J-1],comment:ce[J]};break;case 65:case 67:case 70:this.$=ce[J];break;case 66:this.$=ce[J-1]+ce[J];break;case 69:ce[J-2].push(ce[J]),this.$=ce[J-2];break;case 71:this.$=ce[J].replace(/"/g,"");break;case 72:this.$={cardA:ce[J],relType:ce[J-1],cardB:ce[J-2]};break;case 73:this.$=ye.Cardinality.ZERO_OR_ONE;break;case 74:this.$=ye.Cardinality.ZERO_OR_MORE;break;case 75:this.$=ye.Cardinality.ONE_OR_MORE;break;case 76:this.$=ye.Cardinality.ONLY_ONE;break;case 77:this.$=ye.Cardinality.MD_PARENT;break;case 78:this.$=ye.Identification.NON_IDENTIFYING;break;case 79:this.$=ye.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:d,40:f,43:p,44:m,48:g,50:y,51:v,52:x},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:30,11:9,22:r,24:n,26:i,28:a,29:14,30:15,31:16,32:17,33:s,34:l,35:u,36:h,37:d,40:f,43:p,44:m,48:g,50:y,51:v,52:x},e(t,[2,5]),e(t,[2,6]),e(t,[2,16],{12:31,64:35,15:[1,32],17:[1,33],20:[1,34],66:b,67:T,68:k,69:C,70:w}),{23:[1,41]},{25:[1,42]},{27:[1,43]},e(t,[2,27]),e(t,[2,28]),e(t,[2,29]),e(t,[2,30]),e(t,[2,31]),e(S,[2,54]),e(S,[2,55]),e(S,[2,56]),e(S,[2,57]),e(S,[2,58]),e(t,[2,32]),e(t,[2,33]),e(t,[2,34]),e(t,[2,35]),{16:44,40:R,41:L},{16:47,40:R,41:L},{16:48,40:R,41:L},e(t,[2,4]),{11:49,40:f,48:g,50:y,51:v,52:x},{16:50,40:R,41:L},{18:51,19:[1,52],53:53,54:54,58:N},{11:56,40:f,48:g,50:y,51:v,52:x},{65:57,71:[1,58],72:[1,59]},e(I,[2,73]),e(I,[2,74]),e(I,[2,75]),e(I,[2,76]),e(I,[2,77]),e(t,[2,24]),e(t,[2,25]),e(t,[2,26]),{13:_,38:60,41:A,42:M,45:62,46:63,48:D,49:P},e(B,[2,37]),e(B,[2,38]),{16:68,40:R,41:L,42:M},{13:_,38:69,41:A,42:M,45:62,46:63,48:D,49:P},{13:[1,70],15:[1,71]},e(t,[2,17],{64:35,12:72,17:[1,73],42:M,66:b,67:T,68:k,69:C,70:w}),{19:[1,74]},e(t,[2,14]),{18:75,19:[2,59],53:53,54:54,58:N},{55:76,58:[1,77]},{58:[2,65],59:[1,78]},{21:[1,79]},{64:80,66:b,67:T,68:k,69:C,70:w},e(O,[2,78]),e(O,[2,79]),{6:$,10:V,39:81,42:G,47:z},{40:[1,86],41:[1,87]},e(W,[2,43],{46:88,13:_,41:A,48:D,49:P}),e(H,[2,45]),e(H,[2,50]),e(H,[2,51]),e(H,[2,52]),e(H,[2,53]),e(t,[2,41],{42:M}),{6:$,10:V,39:89,42:G,47:z},{14:90,40:j,50:Q,73:U},{16:94,40:R,41:L},{11:95,40:f,48:g,50:y,51:v,52:x},{18:96,19:[1,97],53:53,54:54,58:N},e(t,[2,12]),{19:[2,60]},e(oe,[2,61],{56:98,57:99,60:100,62:te,63:le}),e([19,58,62,63],[2,67]),{58:[2,66]},e(t,[2,22],{15:[1,104],17:[1,103]}),e([40,48,50,51,52],[2,72]),e(t,[2,36]),{13:_,41:A,45:105,46:63,48:D,49:P},e(t,[2,47]),e(t,[2,48]),e(t,[2,49]),e(B,[2,39]),e(B,[2,40]),e(H,[2,46]),e(t,[2,42]),e(t,[2,8]),e(t,[2,80]),e(t,[2,81]),e(t,[2,82]),{13:[1,106],42:M},{13:[1,108],15:[1,107]},{19:[1,109]},e(t,[2,15]),e(oe,[2,62],{57:110,61:[1,111],63:le}),e(oe,[2,63]),e(ie,[2,68]),e(oe,[2,71]),e(ie,[2,70]),{18:112,19:[1,113],53:53,54:54,58:N},{16:114,40:R,41:L},e(W,[2,44],{46:88,13:_,41:A,48:D,49:P}),{14:115,40:j,50:Q,73:U},{16:116,40:R,41:L},{14:117,40:j,50:Q,73:U},e(t,[2,13]),e(oe,[2,64]),{60:118,62:te},{19:[1,119]},e(t,[2,20]),e(t,[2,23],{17:[1,120],42:M}),e(t,[2,11]),{13:[1,121],42:M},e(t,[2,10]),e(ie,[2,69]),e(t,[2,18]),{18:122,19:[1,123],53:53,54:54,58:N},{14:124,40:j,50:Q,73:U},{19:[1,125]},e(t,[2,21]),e(t,[2,9]),e(t,[2,19])],defaultActions:{75:[2,60],78:[2,66]},parseError:o(function(Ge,Oe){if(Oe.recoverable)this.trace(Ge);else{var ue=new Error(Ge);throw ue.hash=Oe,ue}},"parseError"),parse:o(function(Ge){var Oe=this,ue=[0],ye=[],ke=[null],ce=[],re=this.table,J="",se=0,ge=0,Te=0,we=2,Me=1,ve=ce.slice.call(arguments,1),ne=Object.create(this.lexer),q={yy:{}};for(var he in this.yy)Object.prototype.hasOwnProperty.call(this.yy,he)&&(q.yy[he]=this.yy[he]);ne.setInput(Ge,q.yy),q.yy.lexer=ne,q.yy.parser=this,typeof ne.yylloc>"u"&&(ne.yylloc={});var X=ne.yylloc;ce.push(X);var fe=ne.options&&ne.options.ranges;typeof q.yy.parseError=="function"?this.parseError=q.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function K(wt){ue.length=ue.length-2*wt,ke.length=ke.length-wt,ce.length=ce.length-wt}o(K,"popStack");function qe(){var wt;return wt=ye.pop()||ne.lex()||Me,typeof wt!="number"&&(wt instanceof Array&&(ye=wt,wt=ye.pop()),wt=Oe.symbols_[wt]||wt),wt}o(qe,"lex");for(var _e,Be,Ne,He,$e,Xe,Fe={},Ke,xe,mt,Le;;){if(Ne=ue[ue.length-1],this.defaultActions[Ne]?He=this.defaultActions[Ne]:((_e===null||typeof _e>"u")&&(_e=qe()),He=re[Ne]&&re[Ne][_e]),typeof He>"u"||!He.length||!He[0]){var ft="";Le=[];for(Ke in re[Ne])this.terminals_[Ke]&&Ke>we&&Le.push("'"+this.terminals_[Ke]+"'");ne.showPosition?ft="Parse error on line "+(se+1)+`: +`+ne.showPosition()+` +Expecting `+Le.join(", ")+", got '"+(this.terminals_[_e]||_e)+"'":ft="Parse error on line "+(se+1)+": Unexpected "+(_e==Me?"end of input":"'"+(this.terminals_[_e]||_e)+"'"),this.parseError(ft,{text:ne.match,token:this.terminals_[_e]||_e,line:ne.yylineno,loc:X,expected:Le})}if(He[0]instanceof Array&&He.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ne+", token: "+_e);switch(He[0]){case 1:ue.push(_e),ke.push(ne.yytext),ce.push(ne.yylloc),ue.push(He[1]),_e=null,Be?(_e=Be,Be=null):(ge=ne.yyleng,J=ne.yytext,se=ne.yylineno,X=ne.yylloc,Te>0&&Te--);break;case 2:if(xe=this.productions_[He[1]][1],Fe.$=ke[ke.length-xe],Fe._$={first_line:ce[ce.length-(xe||1)].first_line,last_line:ce[ce.length-1].last_line,first_column:ce[ce.length-(xe||1)].first_column,last_column:ce[ce.length-1].last_column},fe&&(Fe._$.range=[ce[ce.length-(xe||1)].range[0],ce[ce.length-1].range[1]]),Xe=this.performAction.apply(Fe,[J,ge,se,q.yy,He[1],ke,ce].concat(ve)),typeof Xe<"u")return Xe;xe&&(ue=ue.slice(0,-1*xe*2),ke=ke.slice(0,-1*xe),ce=ce.slice(0,-1*xe)),ue.push(this.productions_[He[1]][0]),ke.push(Fe.$),ce.push(Fe._$),mt=re[ue[ue.length-2]][ue[ue.length-1]],ue.push(mt);break;case 3:return!0}}return!0},"parse")},Re=(function(){var Pe={EOF:1,parseError:o(function(Oe,ue){if(this.yy.parser)this.yy.parser.parseError(Oe,ue);else throw new Error(Oe)},"parseError"),setInput:o(function(Ge,Oe){return this.yy=Oe||this.yy||{},this._input=Ge,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Ge=this._input[0];this.yytext+=Ge,this.yyleng++,this.offset++,this.match+=Ge,this.matched+=Ge;var Oe=Ge.match(/(?:\r\n?|\n).*/g);return Oe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ge},"input"),unput:o(function(Ge){var Oe=Ge.length,ue=Ge.split(/(?:\r\n?|\n)/g);this._input=Ge+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Oe),this.offset-=Oe;var ye=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ue.length-1&&(this.yylineno-=ue.length-1);var ke=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ue?(ue.length===ye.length?this.yylloc.first_column:0)+ye[ye.length-ue.length].length-ue[0].length:this.yylloc.first_column-Oe},this.options.ranges&&(this.yylloc.range=[ke[0],ke[0]+this.yyleng-Oe]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Ge){this.unput(this.match.slice(Ge))},"less"),pastInput:o(function(){var Ge=this.matched.substr(0,this.matched.length-this.match.length);return(Ge.length>20?"...":"")+Ge.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Ge=this.match;return Ge.length<20&&(Ge+=this._input.substr(0,20-Ge.length)),(Ge.substr(0,20)+(Ge.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Ge=this.pastInput(),Oe=new Array(Ge.length+1).join("-");return Ge+this.upcomingInput()+` +`+Oe+"^"},"showPosition"),test_match:o(function(Ge,Oe){var ue,ye,ke;if(this.options.backtrack_lexer&&(ke={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ke.yylloc.range=this.yylloc.range.slice(0))),ye=Ge[0].match(/(?:\r\n?|\n).*/g),ye&&(this.yylineno+=ye.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ye?ye[ye.length-1].length-ye[ye.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ge[0].length},this.yytext+=Ge[0],this.match+=Ge[0],this.matches=Ge,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ge[0].length),this.matched+=Ge[0],ue=this.performAction.call(this,this.yy,this,Oe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ue)return ue;if(this._backtrack){for(var ce in ke)this[ce]=ke[ce];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ge,Oe,ue,ye;this._more||(this.yytext="",this.match="");for(var ke=this._currentRules(),ce=0;ceOe[0].length)){if(Oe=ue,ye=ce,this.options.backtrack_lexer){if(Ge=this.test_match(ue,ke[ce]),Ge!==!1)return Ge;if(this._backtrack){Oe=!1;continue}else return!1}else if(!this.options.flex)break}return Oe?(Ge=this.test_match(Oe,ke[ye]),Ge!==!1?Ge:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var Oe=this.next();return Oe||this.lex()},"lex"),begin:o(function(Oe){this.conditionStack.push(Oe)},"begin"),popState:o(function(){var Oe=this.conditionStack.length-1;return Oe>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(Oe){return Oe=this.conditionStack.length-1-Math.abs(Oe||0),Oe>=0?this.conditionStack[Oe]:"INITIAL"},"topState"),pushState:o(function(Oe){this.begin(Oe)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(Oe,ue,ye,ke){var ce=ke;switch(ye){case 0:return this.begin("acc_title"),24;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),26;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:break;case 13:return 8;case 14:return 50;case 15:return 73;case 16:return 4;case 17:return this.begin("block"),17;break;case 18:return 49;case 19:return 49;case 20:return 42;case 21:return 15;case 22:return 13;case 23:break;case 24:return 62;case 25:return 58;case 26:return 58;case 27:this.begin("block_bq");break;case 28:return 58;case 29:this.popState();break;case 30:return 63;case 31:break;case 32:return this.popState(),19;break;case 33:return ue.yytext[0];case 34:return 20;case 35:return 21;case 36:return this.begin("style"),44;break;case 37:return this.popState(),10;break;case 38:break;case 39:return 13;case 40:return 42;case 41:return 49;case 42:return this.begin("style"),37;break;case 43:return 43;case 44:return 66;case 45:return 68;case 46:return 68;case 47:return 68;case 48:return 66;case 49:return 66;case 50:return 67;case 51:return 67;case 52:return 67;case 53:return 67;case 54:return 67;case 55:return 68;case 56:return 67;case 57:return 68;case 58:return 69;case 59:return 69;case 60:return 51;case 61:return 69;case 62:return 69;case 63:return 69;case 64:return 52;case 65:return 48;case 66:return 69;case 67:return 66;case 68:return 67;case 69:return 68;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 72;case 74:return 71;case 75:return 71;case 76:return 71;case 77:return 41;case 78:return 47;case 79:return 40;case 80:return ue.yytext[0];case 81:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\.,\u00C0-\uFFFF\*]*))/i,/^(?:[`])/i,/^(?:[^`]+)/i,/^(?:[`])/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:[0-9]+\.[0-9]+)/i,/^(?:1(?=\s+[A-Za-z_"']))/i,/^(?:1(?=\s+[0-9]))/i,/^(?:1(?=(--|\.\.|\.-|-\.)))/i,/^(?:1\b)/i,/^(?:[0-9]+)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:u(?=[\.\-\|]))/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*|\.)+)/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[37,38,39,40,41,77,78],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block_bq:{rules:[28,29],inclusive:!1},block:{rules:[23,24,25,26,27,30,31,32,33],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,34,35,36,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,79,80,81],inclusive:!0}}};return Pe})();ae.lexer=Re;function be(){this.yy={}}return o(be,"Parser"),be.prototype=ae,ae.Parser=be,new be})();ZF.parser=ZF;STe=ZF});var DA,ATe=F(()=>{"use strict";vt();Xt();Nn();Qt();DA=class{constructor(){this.entities=new Map;this.relationships=[];this.classes=new Map;this.direction="TB";this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"};this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"};this.setAccTitle=kr;this.getAccTitle=Ar;this.setAccDescription=Rr;this.getAccDescription=_r;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getConfig=o(()=>Ae().er,"getConfig");this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"ErDB")}addEntity(t,r=""){return this.entities.has(t)?!this.entities.get(t)?.alias&&r&&(this.entities.get(t).alias=r,Z.info(`Add alias '${r}' to entity '${t}'`)):(this.entities.set(t,{id:`entity-${t}-${this.entities.size}`,label:t,attributes:[],alias:r,shape:"erBox",look:Ae().look??"default",cssClasses:"default",cssStyles:[],labelType:"markdown"}),Z.info("Added new entity :",t)),this.entities.get(t)}getEntity(t){return this.entities.get(t)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(t,r){let n=this.addEntity(t),i;for(i=r.length-1;i>=0;i--)r[i].keys||(r[i].keys=[]),r[i].comment||(r[i].comment=""),n.attributes.push(r[i]),Z.debug("Added attribute ",r[i].name)}addRelationship(t,r,n,i){let a=this.entities.get(t),s=this.entities.get(n);if(!a||!s)return;let l={entityA:a.id,roleA:r,entityB:s.id,relSpec:i};this.relationships.push(l),Z.debug("Added new relationship :",l)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(t){this.direction=t}getCompiledStyles(t){let r=[];for(let n of t){let i=this.classes.get(n);i?.styles&&(r=[...r,...i.styles??[]].map(a=>a.trim())),i?.textStyles&&(r=[...r,...i.textStyles??[]].map(a=>a.trim()))}return r}addCssStyles(t,r){for(let n of t){let i=this.entities.get(n);if(!r||!i)return;for(let a of r)i.cssStyles.push(a)}}addClass(t,r){t.forEach(n=>{let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)})})}setClass(t,r){for(let n of t){let i=this.entities.get(n);if(i)for(let a of r)i.cssClasses+=" "+a}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],yr()}getData(){let t=[],r=[],n=Ae(),i=0;for(let s of this.entities.keys()){let l=this.entities.get(s);l&&(l.cssCompiledStyles=this.getCompiledStyles(l.cssClasses.split(" ")),l.colorIndex=i++,t.push(l))}let a=0;for(let s of this.relationships){let l={id:eu(s.entityA,s.entityB,{prefix:"id",counter:a++}),type:"normal",curve:"basis",start:s.entityA,end:s.entityB,label:s.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:s.relSpec.cardB.toLowerCase(),arrowTypeEnd:s.relSpec.cardA.toLowerCase(),pattern:s.relSpec.relType=="IDENTIFYING"?"solid":"dashed",look:n.look,labelType:"markdown"};r.push(l)}return{nodes:t,edges:r,other:{},config:n,direction:"TB"}}}});var QF={};ir(QF,{draw:()=>p0t});var p0t,RTe=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();$r();p0t=o(async function(e,t,r,n){Z.info("REF0:"),Z.info("Drawing er diagram (unified)",t);let{securityLevel:i,er:a,layout:s}=Ae(),l=n.db.getData(),u=pl(t,i);l.type=n.type,l.layoutAlgorithm=Su(s),l.config.flowchart.nodeSpacing=a?.nodeSpacing||140,l.config.flowchart.rankSpacing=a?.rankSpacing||80,l.direction=n.db.getDirection();let{config:h}=l,{look:d}=h;d==="neo"?l.markers=["only_one_neo","zero_or_one_neo","one_or_more_neo","zero_or_more_neo"]:l.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],l.diagramId=t,await Al(l,u),l.layoutAlgorithm==="elk"&&u.select(".edges").lower();let f=u.selectAll('[id*="-background"]');Array.from(f).length>0&&f.each(function(){let m=et(this),y=m.attr("id").replace("-background",""),v=u.select(`#${CSS.escape(y)}`);if(!v.empty()){let x=v.attr("transform");m.attr("transform",x)}});let p=8;Zt.insertTitle(u,"erDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),vo(u,p,"erDiagram",a?.useMaxWidth??!0)},"draw")});var _Te,IA,m0t,g0t,LTe,DTe=F(()=>{"use strict";zi();_Te=o((e,t)=>{let r=$p,n=r(e,"r"),i=r(e,"g"),a=r(e,"b");return Oi(n,i,a,t)},"fade"),IA=new Set(["redux-color","redux-dark-color"]),m0t=o(e=>{let{theme:t,look:r,bkgColorArray:n,borderColorArray:i}=e;if(!IA.has(t))return"";let a=n?.length>0,s="";for(let l=0;l{let{look:t,theme:r,erEdgeLabelBackground:n,strokeWidth:i}=e;return` + ${m0t(e)} + .entityBox { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${e.tertiaryColor}; + opacity: 0.7; + background-color: ${e.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .labelBkg { + background-color: ${IA.has(r)&&n?n:_Te(e.tertiaryColor,.5)}; + } + + .edgeLabel { + background-color: ${IA.has(r)&&n?n:e.edgeLabelBackground}; + } + .edgeLabel .label rect { + fill: ${IA.has(r)&&n?n:e.edgeLabelBackground}; + } + .edgeLabel .label text { + fill: ${e.textColor}; + } + + .edgeLabel .label { + fill: ${e.nodeBorder}; + font-size: 14px; + } + + .label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + + .edge-pattern-dashed { + stroke-dasharray: 8,8; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon + { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: ${t==="neo"?i:"1px"}; + } + + .relationshipLine { + stroke: ${e.lineColor}; + stroke-width: ${t==="neo"?i:"1px"}; + fill: none; + } + + .marker { + fill: none !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; + } + [data-look=neo].labelBkg { + background-color: ${_Te(e.tertiaryColor,.5)}; + } +`},"getStyles"),LTe=g0t});var ITe={};ir(ITe,{diagram:()=>y0t});var y0t,MTe=F(()=>{"use strict";ETe();ATe();RTe();DTe();y0t={parser:STe,get db(){return new DA},renderer:QF,styles:LTe}});function Zi(e){return typeof e=="object"&&e!==null&&typeof e.$type=="string"}function Bs(e){return typeof e=="object"&&e!==null&&typeof e.$refText=="string"&&"ref"in e}function Ou(e){return typeof e=="object"&&e!==null&&typeof e.$refText=="string"&&"items"in e}function iW(e){return typeof e=="object"&&e!==null&&typeof e.name=="string"&&typeof e.type=="string"&&typeof e.path=="string"}function Tg(e){return typeof e=="object"&&e!==null&&typeof e.info=="object"&&typeof e.message=="string"}function Hh(e){return typeof e=="object"&&e!==null&&Array.isArray(e.content)}function Jg(e){return typeof e=="object"&&e!==null&&typeof e.tokenType=="object"}function vR(e){return Hh(e)&&typeof e.fullText=="string"}function Owe(e){return typeof e=="string"?e:typeof e>"u"?"undefined":typeof e.toString=="function"?e.toString():Object.prototype.toString.call(e)}function YC(e){return!!e&&typeof e[Symbol.iterator]=="function"}function Bn(...e){if(e.length===1){let t=e[0];if(t instanceof Nu)return t;if(YC(t))return new Nu(()=>t[Symbol.iterator](),r=>r.next());if(typeof t.length=="number")return new Nu(()=>({index:0}),r=>r.index1?new Nu(()=>({collIndex:0,arrIndex:0}),t=>{do{if(t.iterator){let r=t.iterator.next();if(!r.done)return r;t.iterator=void 0}if(t.array){if(t.arrIndex{Zi(i)&&(i.$container=e,i.$containerProperty=r,i.$containerIndex=a,t.deep&&wv(i,t))}):Zi(n)&&(n.$container=e,n.$containerProperty=r,t.deep&&wv(n,t)))}function e0(e,t){let r=e;for(;r;){if(t(r))return r;r=r.$container}}function Bwe(e,t){let r=e;for(;r;){if(t(r))return!0;r=r.$container}return!1}function wc(e){let r=yv(e).$document;if(!r)throw new Error("AST node has no document.");return r}function yv(e){for(;e.$container;)e=e.$container;return e}function A6(e){return Bs(e)?e.ref?[e.ref]:[]:Ou(e)?e.items.map(t=>t.ref):[]}function fw(e,t){if(!e)throw new Error("Node must be an AstNode.");let r=t?.range;return new Nu(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexfw(r,t))}function kc(e,t){if(e){if(t?.range&&!R6(e,t.range))return new Cv(e,()=>[])}else throw new Error("Root node must be an AstNode.");return new Cv(e,r=>fw(r,t),{includeRoot:!0})}function R6(e,t){if(!t)return!0;let r=e.$cstNode?.range;return r?LW(r,t):!1}function kv(e){return new Nu(()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0}),t=>{for(;t.keyIndexHh(t)?t.content:[],{includeRoot:!0})}function rke(e){return Ev(e).filter(Jg)}function RW(e,t){for(;e.container;)if(e=e.container,e===t)return!0;return!1}function XC(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function Av(e){if(!e)return;let{offset:t,end:r,range:n}=e;return{range:n,offset:t,end:r,length:r-t}}function _W(e,t){if(e.end.linet.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return Mu.After;let r=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,n=e.end.lineMu.After}function nke(e,t,r=DW){if(e){if(t>0){let n=t-e.offset,i=e.text.charAt(n);r.test(i)||t--}return SR(e,t)}}function IW(e,t){if(e){let r=PW(e,!0);if(r&&W6(r,t))return r;if(vR(e)){let n=e.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let a=e.content[i];if(W6(a,t))return a}}}}function W6(e,t){return Jg(e)&&t.includes(e.tokenType.name)}function SR(e,t){if(Jg(e))return e;if(Hh(e)){let r=NW(e,t,!1);if(r)return SR(r,t)}}function MW(e,t){if(Jg(e))return e;if(Hh(e)){let r=NW(e,t,!0);if(r)return MW(r,t)}}function NW(e,t,r){let n=0,i=e.content.length-1,a;for(;n<=i;){let s=Math.floor((n+i)/2),l=e.content[s];if(l.offset<=t&&l.end>t)return l;l.end<=t?(a=r?l:void 0,n=s+1):i=s-1}return a}function PW(e,t=!0){for(;e.container;){let r=e.container,n=r.content.indexOf(e);for(;n>0;){n--;let i=r.content[n];if(t||!i.hidden)return i}e=r}}function ike(e,t=!0){for(;e.container;){let r=e.container,n=r.content.indexOf(e),i=r.content.length-1;for(;nt.test(r))}function Nv(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function zW(e,t){let r=GW(e),n=t.match(r);return!!n&&n[0].length>0}function GW(e){typeof e=="string"&&(e=new RegExp(e));let t=e,r=e.source,n=0;function i(){let a="",s;function l(h){a+=r.substr(n,h),n+=h}o(l,"appendRaw"),E(l,"appendRaw");function u(h){a+="(?:"+r.substr(n,h)+"|$)",n+=h}for(o(u,"appendOptional"),E(u,"appendOptional");n",n)-n+1);break;default:u(2);break}break;case"[":s=/\[(?:\\.|.)*?\]/g,s.lastIndex=n,s=s.exec(r)||[],u(s[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":l(1);break;case"{":s=/\{\d+,?\d*\}/g,s.lastIndex=n,s=s.exec(r),s?l(s[0].length):u(1);break;case"(":if(r[n+1]==="?")switch(r[n+2]){case":":a+="(?:",n+=3,a+=i()+"|$)";break;case"=":a+="(?=",n+=3,a+=i()+")";break;case"!":s=n,n+=3,i(),a+=r.substr(s,n-s);break;case"<":switch(r[n+3]){case"=":case"!":s=n,n+=4,i(),a+=r.substr(s,n-s);break;default:l(r.indexOf(">",n)-n+1),a+=i()+"|$)";break}break}else l(1),a+=i()+"|$)";break;case")":return++n,a;default:u(1);break}return a}return o(i,"process2"),E(i,"process"),new RegExp(i(),e.flags)}function VW(e){return e.rules.find(t=>zs(t)&&t.entry)}function WW(e){return e.rules.filter(t=>Il(t)&&t.hidden)}function _R(e,t){let r=new Set,n=VW(e);if(!n)return new Set(e.rules);let i=[n].concat(WW(e));for(let s of i)qW(s,r,t);let a=new Set;for(let s of e.rules)(r.has(s.name)||Il(s)&&s.hidden)&&a.add(s);return a}function qW(e,t,r){t.add(e.name),td(e).forEach(n=>{if(jh(n)||r&&CR(n)){let i=n.rule.ref;i&&!t.has(i.name)&&qW(i,t,r)}})}function fke(e){let t=new Set;return td(e).forEach(r=>{r0(r)&&(zs(r.type.ref)&&t.add(r.type.ref),pw(r.type.ref)&&zs(r.type.ref.$container)&&t.add(r.type.ref.$container))}),t}function HW(e){if(e.terminal)return e.terminal;if(e.type.ref)return MR(e.type.ref)?.terminal}function UW(e){return e.hidden&&!RR(yw(e))}function YW(e,t){return!e||!t?[]:DR(e,t,e.astNode,!0)}function LR(e,t,r){if(!e||!t)return;let n=DR(e,t,e.astNode,!0);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function DR(e,t,r,n){if(!n){let i=e0(e.grammarSource,Uh);if(i&&i.feature===t)return[e]}return Hh(e)&&e.astNode===r?e.content.flatMap(i=>DR(i,t,r,!1)):[]}function pke(e,t){return e?IR(e,t,e?.astNode):[]}function jW(e,t,r){if(!e)return;let n=IR(e,t,e?.astNode);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function IR(e,t,r){if(e.astNode!==r)return[];if(Yh(e.grammarSource)&&e.grammarSource.value===t)return[e];let n=Ev(e).iterator(),i,a=[];do if(i=n.next(),!i.done){let s=i.value;s.astNode===r?Yh(s.grammarSource)&&s.grammarSource.value===t&&a.push(s):n.prune()}while(!i.done);return a}function XW(e){let t=e.astNode;for(;t===e.container?.astNode;){let r=e0(e.grammarSource,Uh);if(r)return r;e=e.container}}function MR(e){let t=e;return pw(t)&&(dp(t.$container)?t=t.$container.$container:t0(t.$container)?t=t.$container:vp(t.$container)),KW(e,t,new Map)}function KW(e,t,r){function n(i,a){let s;return e0(i,Uh)||(s=KW(a,a,r)),r.set(e,s),s}if(o(n,"go"),E(n,"go"),r.has(e))return r.get(e);r.set(e,void 0);for(let i of td(t)){if(Uh(i)&&i.feature.toLowerCase()==="name")return r.set(e,i),i;if(jh(i)&&zs(i.rule.ref))return n(i,i.rule.ref);if(TR(i)&&i.typeRef?.ref)return n(i,i.typeRef.ref)}}function ZW(e){let t=e.$container;if(n0(t)){let r=t.elements,n=r.indexOf(e);for(let i=n-1;i>=0;i--){let a=r[i];if(dp(a))return a;{let s=td(r[i]).find(dp);if(s)return s}}}if(xR(t))return ZW(t)}function mke(e,t){return e==="?"||e==="*"||n0(t)&&!!t.guardCondition}function gke(e){return e==="*"||e==="+"}function yke(e){return e==="+="}function mw(e){return QW(e,new Set)}function QW(e,t){if(t.has(e))return!0;t.add(e);for(let r of td(e))if(jh(r)){if(!r.rule.ref||zs(r.rule.ref)&&!QW(r.rule.ref,t)||Sv(r.rule.ref))return!1}else{if(Uh(r))return!1;if(dp(r))return!1}return!!e.definition}function vke(e){return U6(e.type,new Set)}function U6(e,t){if(t.has(e))return!0;if(t.add(e),cW(e))return!1;if(xW(e))return!1;if(kW(e))return e.types.every(r=>U6(r,t));if(TR(e)){if(e.primitiveType!==void 0)return!0;if(e.stringType!==void 0)return!0;if(e.typeRef!==void 0){let r=e.typeRef.ref;return wR(r)?U6(r.type,t):!1}else return!1}else return!1}function gw(e){if(!Il(e)){if(e.inferredType)return e.inferredType.name;if(e.dataType)return e.dataType;if(e.returnType){let t=e.returnType.ref;if(t)return t.name}}}function jg(e){if(t0(e))return zs(e)&&mw(e)?e.name:gw(e)??e.name;if(mW(e)||wR(e)||TW(e))return e.name;if(dp(e)){let t=JW(e);if(t)return t}else if(pw(e))return e.name;throw new Error("Cannot get name of Unknown Type")}function JW(e){if(e.inferredType)return e.inferredType.name;if(e.type?.ref)return jg(e.type.ref)}function xke(e){return Il(e)?e.type?.name??"string":zs(e)&&mw(e)?e.name:gw(e)??e.name}function eq(e){return Il(e)?e.type?.name??"string":gw(e)??e.name}function yw(e){let t={s:!1,i:!1,u:!1},r=i0(e.definition,t),n=Object.entries(t).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(r,n)}function i0(e,t){if(CW(e))return bke(e);if(wW(e))return Tke(e);if(hW(e))return kke(e);if(CR(e)){let r=e.rule.ref;if(!r)throw new Error("Missing rule reference.");return Bu(i0(r.definition),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}else{if(gW(e))return wke(e);if(SW(e))return Cke(e);if(bW(e)){let r=e.regex.lastIndexOf("/"),n=e.regex.substring(1,r),i=e.regex.substring(r+1);return t&&(t.i=i.includes("i"),t.s=i.includes("s"),t.u=i.includes("u")),Bu(n,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}else{if(EW(e))return Bu(tq,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized});throw new Error(`Invalid terminal element: ${e?.$type}, ${e?.$cstNode?.text}`)}}}function bke(e){return Bu(e.elements.map(t=>i0(t)).join("|"),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function Tke(e){return Bu(e.elements.map(t=>i0(t)).join(""),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function Cke(e){return Bu(`${tq}*?${i0(e.terminal)}`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}function wke(e){return Bu(`(?!${i0(e.terminal)})${tq}*?`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized})}function kke(e){return e.right?Bu(`[${s6(e.left)}-${s6(e.right)}]`,{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1}):Bu(s6(e.left),{cardinality:e.cardinality,lookahead:e.lookahead,parenthesized:e.parenthesized,wrap:!1})}function s6(e){return Nv(e.value)}function Bu(e,t){return(t.parenthesized||t.lookahead||t.wrap!==!1)&&(e=`(${t.lookahead??(t.parenthesized?"":"?:")}${e})`),t.cardinality?`${e}${t.cardinality}`:e}function rq(e){let t=[],r=e.Grammar;for(let n of r.rules)Il(n)&&UW(n)&&FW(yw(n))&&t.push(n.name);return{multilineCommentRules:t,nameRegexp:DW}}function Ake(e){var t=dyt.call(e,cC),r=e[cC];try{e[cC]=void 0;var n=!0}catch{}var i=fyt.call(e);return n&&(t?e[cC]=r:delete e[cC]),i}function Rke(e){return gyt.call(e)}function _ke(e){return e==null?e===void 0?xyt:vyt:$Te&&$Te in Object(e)?pyt(e):yyt(e)}function Lke(e){return e!=null&&typeof e=="object"}function Dke(e){return typeof e=="symbol"||Ac(e)&&xp(e)==byt}function Ike(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r0){if(++t>=n1t)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Kke(e){return function(){return e}}function Zke(e,t){for(var r=-1,n=e==null?0:e.length;++r-1}function sSe(e,t){var r=typeof e;return t=t??m1t,!!t&&(r=="number"||r!="symbol"&&g1t.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=b1t}function pSe(e){return e!=null&&oq(e.length)&&!rd(e)}function mSe(e,t,r){if(!Dl(r))return!1;var n=typeof t;return(n=="number"?zu(r)&&PR(t,r.length):n=="string"&&t in r)?Tw(r[t],e):!1}function gSe(e){return sq(function(t,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=e.length>3&&typeof a=="function"?(i--,a):void 0,s&&BR(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),t=Object(t);++n-1}function YSe(e,t){var r=this.__data__,n=zR(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function l0(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t0&&r(l)?t>1?dq(l,t-1,r,n,i):hq(i,l):n||(i[i.length]=l)}return i}function cEe(e){var t=e==null?0:e.length;return t?fq(e,1):[]}function hEe(e,t,r){var n=-1,i=e.length;t<0&&(t=-t>i?0:i+t),r=r>i?i:r,r<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var a=Array(i);++nl))return!1;var h=a.get(e),d=a.get(t);if(h&&d)return h==t&&d==e;var f=-1,p=!0,m=r&Xbt?new yq:void 0;for(a.set(e,t),a.set(t,e);++f=V2t&&(a=vq,s=!1,t=new yq(t));e:for(;++i-1?i[a?t[s]:s]:void 0}}function Y4e(e,t,r){var n=e==null?0:e.length;if(!n)return-1;var i=r==null?0:xw(r);return i<0&&(i=X2t(n+i,0)),eSe(e,Gu(t,3),i)}function j4e(e){return e&&e.length?e[0]:void 0}function X4e(e,t){var r=-1,n=zu(e)?Array(e.length):[];return h0(e,function(i,a,s){n[++r]=t(i,a,s)}),n}function K4e(e,t){var r=un(e)?vw:Q2t;return r(e,Gu(t,3))}function Z4e(e,t){return fq(hr(e,t),1)}function Q4e(e,t){return e!=null&&iTt.call(e,t)}function J4e(e,t){return e!=null&&y4e(e,t,aTt)}function e3e(e){return typeof e=="string"||!un(e)&&Ac(e)&&xp(e)==sTt}function t3e(e,t){return vw(t,function(r){return e[r]})}function r3e(e){return e==null?[]:oTt(e,jo(e))}function n3e(e,t,r,n){e=zu(e)?e:ha(e),r=r&&!n?xw(r):0;var i=e.length;return r<0&&(r=lTt(i+r,0)),To(e)?r<=i&&e.indexOf(t,r)>-1:!!i&&iq(e,t,r)>-1}function i3e(e,t,r){var n=e==null?0:e.length;if(!n)return-1;var i=r==null?0:xw(r);return i<0&&(i=cTt(n+i,0)),iq(e,t,i)}function a3e(e){if(e==null)return!0;if(zu(e)&&(un(e)||typeof e=="string"||typeof e.splice=="function"||KC(e)||lq(e)||$R(e)))return!e.length;var t=Rv(e);if(t==uTt||t==hTt)return!e.size;if(ww(e))return!DSe(e).length;for(var r in e)if(fTt.call(e,r))return!1;return!0}function s3e(e){return Ac(e)&&xp(e)==pTt}function o3e(e){return e===void 0}function l3e(e){if(typeof e!="function")throw new TypeError(yTt);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}function c3e(e,t,r,n){if(!Dl(e))return e;t=HR(t,e);for(var i=-1,a=t.length,s=a-1,l=e;l!=null&&++i=ETt){var h=t?null:STt(e);if(h)return xq(h);s=!1,i=vq,u=new yq}else u=t?[]:l;e:for(;++ntw(n,t)):e instanceof Gs&&qs(t,e)?!1:e instanceof Vu?(e instanceof Gs&&t.push(e),Ec(e.definition,n=>tw(n,t))):!1}function k3e(e){return e instanceof ko}function Tc(e){if(e instanceof Gs)return"SUBRULE";if(e instanceof Ua)return"OPTION";if(e instanceof ko)return"OR";if(e instanceof Zo)return"AT_LEAST_ONE";if(e instanceof Qo)return"AT_LEAST_ONE_SEP";if(e instanceof wo)return"MANY_SEP";if(e instanceof Mi)return"MANY";if(e instanceof ci)return"CONSUME";throw Error("non exhaustive match")}function RG(e,t,r){return[new Ua({definition:[new ci({terminalType:e.separator})].concat(e.definition)})].concat(t,r)}function Bv(e){if(e instanceof Gs)return Bv(e.referencedRule);if(e instanceof ci)return A3e(e);if(w3e(e))return S3e(e);if(k3e(e))return E3e(e);throw Error("non exhaustive match")}function S3e(e){let t=[],r=e.definition,n=0,i=r.length>n,a,s=!0;for(;i&&s;)a=r[n],s=tw(a),t=t.concat(Bv(a)),n=n+1,i=r.length>n;return Cq(t)}function E3e(e){let t=hr(e.definition,r=>Bv(r));return Cq(Sc(t))}function A3e(e){return[e.terminalType]}function _3e(e){let t={};return Ir(e,r=>{let n=new RTt(r).startWalking();Xo(t,n)}),t}function L3e(e,t){return e.name+t+R3e}function Aw(e){let t=e.toString();if(o6.hasOwnProperty(t))return o6[t];{let r=_Tt.pattern(t);return o6[t]=r,r}}function D3e(){o6={}}function M3e(e,t=!1){try{let r=Aw(e);return Z6(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===I3e)t&&wq(`${K6} Unable to optimize: < ${e.toString()} > + Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";t&&(n=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),X6(`${K6} + Failed parsing: < ${e.toString()} > + Using the @chevrotain/regexp-to-ast library + Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function Z6(e,t,r){switch(e.type){case"Disjunction":for(let i=0;i{if(typeof u=="number")SC(u,t,r);else{let h=u;if(r===!0)for(let d=h.from;d<=h.to;d++)SC(d,t,r);else{for(let d=h.from;d<=h.to&&d=AC){let d=h.from>=AC?h.from:AC,f=h.to,p=Zh(d),m=Zh(f);for(let g=p;g<=m;g++)t[g]=g}}}});break;case"Group":Z6(s.value,t,r);break;default:throw Error("Non Exhaustive Match")}let l=s.quantifier!==void 0&&s.quantifier.atLeast===0;if(s.type==="Group"&&Q6(s)===!1||s.type!=="Group"&&l===!1)break}break;default:throw Error("non exhaustive match!")}return ha(t)}function SC(e,t,r){let n=Zh(e);t[n]=n,r===!0&&N3e(e,t)}function N3e(e,t){let r=String.fromCharCode(e),n=r.toUpperCase();if(n!==r){let i=Zh(n.charCodeAt(0));t[i]=i}else{let i=r.toLowerCase();if(i!==r){let a=Zh(i.charCodeAt(0));t[a]=a}}}function _G(e,t){return _v(e.value,r=>{if(typeof r=="number")return qs(t,r);{let n=r;return _v(t,i=>n.from<=i&&i<=n.to)!==void 0}})}function Q6(e){let t=e.quantifier;return t&&t.atLeast===0?!0:e.value?un(e.value)?Ec(e.value,Q6):Q6(e.value):!1}function XR(e,t){if(t instanceof RegExp){let r=Aw(t),n=new LTt(e);return n.visit(r),n.found}else return _v(t,r=>qs(e,r.charCodeAt(0)))!==void 0}function P3e(e,t){t=Tq(t,{debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:E((b,T)=>T(),"tracer")});let r=t.tracer;r("initCharCodeToOptimizedIndexMap",()=>{r5e()});let n;r("Reject Lexer.NA",()=>{n=YR(e,b=>b[Kg]===Fs.NA)});let i=!1,a;r("Transform Patterns",()=>{i=!1,a=hr(n,b=>{let T=b[Kg];if(Xh(T)){let k=T.source;return k.length===1&&k!=="^"&&k!=="$"&&k!=="."&&!T.ignoreCase?k:k.length===2&&k[0]==="\\"&&!qs(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],k[1])?k[1]:LG(T)}else{if(rd(T))return i=!0,{exec:T};if(typeof T=="object")return i=!0,T;if(typeof T=="string"){if(T.length===1)return T;{let k=T.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),C=new RegExp(k);return LG(C)}}else throw Error("non exhaustive match")}})});let s,l,u,h,d;r("misc mapping",()=>{s=hr(n,b=>b.tokenTypeIdx),l=hr(n,b=>{let T=b.GROUP;if(T!==Fs.SKIPPED){if(To(T))return T;if(Kh(T))return!1;throw Error("non exhaustive match")}}),u=hr(n,b=>{let T=b.LONGER_ALT;if(T)return un(T)?hr(T,C=>gCe(n,C)):[gCe(n,T)]}),h=hr(n,b=>b.PUSH_MODE),d=hr(n,b=>wr(b,"POP_MODE"))});let f;r("Line Terminator Handling",()=>{let b=Rq(t.lineTerminatorCharacters);f=hr(n,T=>!1),t.positionTracking!=="onlyOffset"&&(f=hr(n,T=>wr(T,"LINE_BREAKS")?!!T.LINE_BREAKS:Aq(T,b)===!1&&XR(b,T.PATTERN)))});let p,m,g,y;r("Misc Mapping #2",()=>{p=hr(n,Eq),m=hr(a,e5e),g=Ko(n,(b,T)=>{let k=T.GROUP;return To(k)&&k!==Fs.SKIPPED&&(b[k]=[]),b},{}),y=hr(a,(b,T)=>({pattern:a[T],longerAlt:u[T],canLineTerminator:f[T],isCustom:p[T],short:m[T],group:l[T],push:h[T],pop:d[T],tokenTypeIdx:s[T],tokenType:n[T]}))});let v=!0,x=[];return t.safeMode||r("First Char Optimization",()=>{x=Ko(n,(b,T,k)=>{if(typeof T.PATTERN=="string"){let C=T.PATTERN.charCodeAt(0),w=Zh(C);l6(b,w,y[k])}else if(un(T.START_CHARS_HINT)){let C;Ir(T.START_CHARS_HINT,w=>{let S=typeof w=="string"?w.charCodeAt(0):w,R=Zh(S);C!==R&&(C=R,l6(b,R,y[k]))})}else if(Xh(T.PATTERN))if(T.PATTERN.unicode)v=!1,t.ensureOptimizations&&X6(`${K6} Unable to analyze < ${T.PATTERN.toString()} > pattern. + The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let C=M3e(T.PATTERN,t.ensureOptimizations);ei(C)&&(v=!1),Ir(C,w=>{l6(b,w,y[k])})}else t.ensureOptimizations&&X6(`${K6} TokenType: <${T.name}> is using a custom token pattern without providing parameter. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),v=!1;return b},[])}),{emptyGroups:g,patternIdxToConfig:y,charCodeToPatternIdxToConfig:x,hasCustom:i,canBeOptimized:v}}function O3e(e,t){let r=[],n=$3e(e);r=r.concat(n.errors);let i=F3e(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(B3e(a)),r=r.concat(H3e(a)),r=r.concat(U3e(a,t)),r=r.concat(Y3e(a)),r}function B3e(e){let t=[],r=Ml(e,n=>Xh(n[Kg]));return t=t.concat(z3e(r)),t=t.concat(V3e(r)),t=t.concat(W3e(r)),t=t.concat(q3e(r)),t=t.concat(G3e(r)),t}function $3e(e){let t=Ml(e,i=>!wr(i,Kg)),r=hr(t,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:Ni.MISSING_PATTERN,tokenTypes:[i]})),n=UR(e,t);return{errors:r,valid:n}}function F3e(e){let t=Ml(e,i=>{let a=i[Kg];return!Xh(a)&&!rd(a)&&!wr(a,"exec")&&!To(a)}),r=hr(t,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Ni.INVALID_PATTERN,tokenTypes:[i]})),n=UR(e,t);return{errors:r,valid:n}}function z3e(e){class t extends AR{static{o(this,"EndAnchorFinder")}static{E(this,"EndAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=Ml(e,i=>{let a=i.PATTERN;try{let s=Aw(a),l=new t;return l.visit(s),l.found}catch{return DTt.test(a.source)}});return hr(r,i=>({message:`Unexpected RegExp Anchor Error: + Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Ni.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function G3e(e){let t=Ml(e,n=>n.PATTERN.test(""));return hr(t,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:Ni.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}function V3e(e){class t extends AR{static{o(this,"StartAnchorFinder")}static{E(this,"StartAnchorFinder")}constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=Ml(e,i=>{let a=i.PATTERN;try{let s=Aw(a),l=new t;return l.visit(s),l.found}catch{return ITt.test(a.source)}});return hr(r,i=>({message:`Unexpected RegExp Anchor Error: + Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Ni.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function W3e(e){let t=Ml(e,n=>{let i=n[Kg];return i instanceof RegExp&&(i.multiline||i.global)});return hr(t,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Ni.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}function q3e(e){let t=[],r=hr(e,a=>Ko(e,(s,l)=>(a.PATTERN.source===l.PATTERN.source&&!qs(t,l)&&l.PATTERN!==Fs.NA&&(t.push(l),s.push(l)),s),[]));r=Ew(r);let n=Ml(r,a=>a.length>1);return hr(n,a=>{let s=hr(a,u=>u.name);return{message:`The same RegExp pattern ->${Rc(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(", ")} <-`,type:Ni.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}function H3e(e){let t=Ml(e,n=>{if(!wr(n,"GROUP"))return!1;let i=n.GROUP;return i!==Fs.SKIPPED&&i!==Fs.NA&&!To(i)});return hr(t,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Ni.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}function U3e(e,t){let r=Ml(e,i=>i.PUSH_MODE!==void 0&&!qs(t,i.PUSH_MODE));return hr(r,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:Ni.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function Y3e(e){let t=[],r=Ko(e,(n,i,a)=>{let s=i.PATTERN;return s===Fs.NA||(To(s)?n.push({str:s,idx:a,tokenType:i}):Xh(s)&&X3e(s)&&n.push({str:s.source,idx:a,tokenType:i})),n},[]);return Ir(e,(n,i)=>{Ir(r,({str:a,idx:s,tokenType:l})=>{if(i${l.name}<- can never be matched. +Because it appears AFTER the Token Type ->${n.name}<-in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;t.push({message:u,type:Ni.UNREACHABLE_PATTERN,tokenTypes:[n,l]})}})}),t}function j3e(e,t){if(Xh(t)){if(K3e(t))return!1;let r=t.exec(e);return r!==null&&r.index===0}else{if(rd(t))return t(e,0,[],{});if(wr(t,"exec"))return t.exec(e,0,[],{});if(typeof t=="string")return t===e;throw Error("non exhaustive match")}}function X3e(e){return _v([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>e.source.indexOf(r)!==-1)===void 0}function K3e(e){return/(\(\?=)|(\(\?!)|(\(\?<=)|(\(\? property in its definition +`,type:Ni.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),wr(e,PA)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+PA+`> property in its definition +`,type:Ni.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),wr(e,PA)&&wr(e,EC)&&!wr(e.modes,e.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${EC}: <${e.defaultMode}>which does not exist +`,type:Ni.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),wr(e,PA)&&Ir(e.modes,(i,a)=>{Ir(i,(s,l)=>{if(Kh(s))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${l}> +`,type:Ni.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(wr(s,"LONGER_ALT")){let u=un(s.LONGER_ALT)?s.LONGER_ALT:[s.LONGER_ALT];Ir(u,h=>{!Kh(h)&&!qs(i,h)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${h.name}> on token <${s.name}> outside of mode <${a}> +`,type:Ni.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function Q3e(e,t,r){let n=[],i=!1,a=Ew(Sc(ha(e.modes))),s=YR(a,u=>u[Kg]===Fs.NA),l=Rq(r);return t&&Ir(s,u=>{let h=Aq(u,l);if(h!==!1){let f={message:t5e(u,h),type:h.issue,tokenType:u};n.push(f)}else wr(u,"LINE_BREAKS")?u.LINE_BREAKS===!0&&(i=!0):XR(l,u.PATTERN)&&(i=!0)}),t&&!i&&n.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:Ni.NO_LINE_BREAKS_FLAGS}),n}function J3e(e){let t={},r=jo(e);return Ir(r,n=>{let i=e[n];if(un(i))t[n]=[];else throw Error("non exhaustive match")}),t}function Eq(e){let t=e.PATTERN;if(Xh(t))return!1;if(rd(t))return!0;if(wr(t,"exec"))return!0;if(To(t))return!1;throw Error("non exhaustive match")}function e5e(e){return To(e)&&e.length===1?e.charCodeAt(0):!1}function Aq(e,t){if(wr(e,"LINE_BREAKS"))return!1;if(Xh(e.PATTERN)){try{XR(t,e.PATTERN)}catch(r){return{issue:Ni.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(To(e.PATTERN))return!1;if(Eq(e))return{issue:Ni.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function t5e(e,t){if(t.issue===Ni.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern. + The problem is in the <${e.name}> Token Type + Root cause: ${t.errMsg}. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(t.issue===Ni.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. + The problem is in the <${e.name}> Token Type + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function Rq(e){return hr(e,r=>To(r)?r.charCodeAt(0):r)}function l6(e,t,r){e[t]===void 0?e[t]=[r]:e[t].push(r)}function Zh(e){return e255?255+~~(e/255):e}}function $v(e,t){let r=e.tokenTypeIdx;return r===t.tokenTypeIdx?!0:t.isParent===!0&&t.categoryMatchesMap[r]===!0}function rw(e,t){return e.tokenTypeIdx===t.tokenTypeIdx}function Fv(e){let t=i5e(e);a5e(t),o5e(t),s5e(t),Ir(t,r=>{r.isParent=r.categoryMatches.length>0})}function i5e(e){let t=Ya(e),r=e,n=!0;for(;n;){r=Ew(Sc(hr(r,a=>a.CATEGORIES)));let i=UR(r,t);t=t.concat(i),ei(i)?n=!1:r=i}return t}function a5e(e){Ir(e,t=>{Lq(t)||(n5e[vCe]=t,t.tokenTypeIdx=vCe++),DG(t)&&!un(t.CATEGORIES)&&(t.CATEGORIES=[t.CATEGORIES]),DG(t)||(t.CATEGORIES=[]),l5e(t)||(t.categoryMatches=[]),c5e(t)||(t.categoryMatchesMap={})})}function s5e(e){Ir(e,t=>{t.categoryMatches=[],Ir(t.categoryMatchesMap,(r,n)=>{t.categoryMatches.push(n5e[n].tokenTypeIdx)})})}function o5e(e){Ir(e,t=>{_q([],t)})}function _q(e,t){Ir(e,r=>{t.categoryMatchesMap[r.tokenTypeIdx]=!0}),Ir(t.CATEGORIES,r=>{let n=e.concat(t);qs(n,r)||_q(n,r)})}function Lq(e){return wr(e,"tokenTypeIdx")}function DG(e){return wr(e,"CATEGORIES")}function l5e(e){return wr(e,"categoryMatches")}function c5e(e){return wr(e,"categoryMatchesMap")}function u5e(e){return wr(e,"tokenTypeIdx")}function Ug(e){return Dq(e)?e.LABEL:e.name}function Dq(e){return To(e.LABEL)&&e.LABEL!==""}function xv(e){return h5e(e)}function h5e(e){let t=e.pattern,r={};if(r.name=e.name,Kh(t)||(r.PATTERN=t),wr(e,NTt))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return wr(e,xCe)&&(r.CATEGORIES=e[xCe]),Fv([r]),wr(e,bCe)&&(r.LABEL=e[bCe]),wr(e,TCe)&&(r.GROUP=e[TCe]),wr(e,wCe)&&(r.POP_MODE=e[wCe]),wr(e,CCe)&&(r.PUSH_MODE=e[CCe]),wr(e,kCe)&&(r.LONGER_ALT=e[kCe]),wr(e,SCe)&&(r.LINE_BREAKS=e[SCe]),wr(e,ECe)&&(r.START_CHARS_HINT=e[ECe]),r}function Rw(e,t,r,n,i,a,s,l){return{image:t,startOffset:r,endOffset:n,startLine:i,endLine:a,startColumn:s,endColumn:l,tokenTypeIdx:e.tokenTypeIdx,tokenType:e}}function Iq(e,t){return $v(e,t)}function d5e(e,t){let r=new OTt(e,t);return r.resolveRefs(),r.errors}function J6(e,t,r=[]){r=Ya(r);let n=[],i=0;function a(l){return l.concat(Ha(e,i+1))}o(a,"remainingPathWith"),E(a,"remainingPathWith");function s(l){let u=J6(a(l),t,r);return n.concat(u)}for(o(s,"getAlternativesForProd"),E(s,"getAlternativesForProd");r.length{ei(u.definition)===!1&&(n=s(u.definition))}),n;if(l instanceof ci)r.push(l.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:r,suffixDef:Ha(e,i)}),n}function Mq(e,t,r,n){let i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE",l=!1,u=t.length,h=u-n-1,d=[],f=[];for(f.push({idx:-1,def:e,ruleStack:[],occurrenceStack:[]});!ei(f);){let p=f.pop();if(p===s){l&&Xg(f).idx<=h&&f.pop();continue}let m=p.def,g=p.idx,y=p.ruleStack,v=p.occurrenceStack;if(ei(m))continue;let x=m[0];if(x===i){let b={idx:g,def:Ha(m),ruleStack:ew(y),occurrenceStack:ew(v)};f.push(b)}else if(x instanceof ci)if(g=0;b--){let T=x.definition[b],k={idx:g,def:T.definition.concat(Ha(m)),ruleStack:y,occurrenceStack:v};f.push(k),f.push(s)}else if(x instanceof Co)f.push({idx:g,def:x.definition.concat(Ha(m)),ruleStack:y,occurrenceStack:v});else if(x instanceof Pv)f.push(f5e(x,g,y,v));else throw Error("non exhaustive match")}return d}function f5e(e,t,r,n){let i=Ya(r);i.push(e.name);let a=Ya(n);return a.push(1),{idx:t,def:e.definition,ruleStack:i,occurrenceStack:a}}function ZR(e){if(e instanceof Ua||e==="Option")return wi.OPTION;if(e instanceof Mi||e==="Repetition")return wi.REPETITION;if(e instanceof Zo||e==="RepetitionMandatory")return wi.REPETITION_MANDATORY;if(e instanceof Qo||e==="RepetitionMandatoryWithSeparator")return wi.REPETITION_MANDATORY_WITH_SEPARATOR;if(e instanceof wo||e==="RepetitionWithSeparator")return wi.REPETITION_WITH_SEPARATOR;if(e instanceof ko||e==="Alternation")return wi.ALTERNATION;throw Error("non exhaustive match")}function MG(e){let{occurrence:t,rule:r,prodType:n,maxLookahead:i}=e,a=ZR(n);return a===wi.ALTERNATION?_w(t,r,i):Lw(t,r,a,i)}function p5e(e,t,r,n,i,a){let s=_w(e,t,r),l=Pq(s)?rw:$v;return a(s,n,l,i)}function m5e(e,t,r,n,i,a){let s=Lw(e,t,i,r),l=Pq(s)?rw:$v;return a(s[0],l,n)}function g5e(e,t,r,n){let i=e.length,a=Ec(e,s=>Ec(s,l=>l.length===1));if(t)return function(s){let l=hr(s,u=>u.GATE);for(let u=0;uSc(u)),l=Ko(s,(u,h,d)=>(Ir(h,f=>{wr(u,f.tokenTypeIdx)||(u[f.tokenTypeIdx]=d),Ir(f.categoryMatches,p=>{wr(u,p)||(u[p]=d)})}),u),{});return function(){let u=this.LA(1);return l[u.tokenTypeIdx]}}else return function(){for(let s=0;sa.length===1),i=e.length;if(n&&!r){let a=Sc(e);if(a.length===1&&ei(a[0].categoryMatches)){let l=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===l}}else{let s=Ko(a,(l,u,h)=>(l[u.tokenTypeIdx]=!0,Ir(u.categoryMatches,d=>{l[d]=!0}),l),[]);return function(){let l=this.LA(1);return s[l.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;aJ6([s],1)),n=NG(r.length),i=hr(r,s=>{let l={};return Ir(s,u=>{let h=u6(u.partialPath);Ir(h,d=>{l[d]=!0})}),l}),a=r;for(let s=1;s<=t;s++){let l=a;a=NG(l.length);for(let u=0;u{let x=u6(v.partialPath);Ir(x,b=>{i[u][b]=!0})})}}}}return n}function _w(e,t,r,n){let i=new v5e(e,wi.ALTERNATION,n);return t.accept(i),Nq(i.result,r)}function Lw(e,t,r,n){let i=new v5e(e,r);t.accept(i);let a=i.result,l=new GTt(t,e,r).startWalking(),u=new Co({definition:a}),h=new Co({definition:l});return Nq([u,h],n)}function eR(e,t){e:for(let r=0;r{let i=t[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}function Pq(e){return Ec(e,t=>Ec(t,r=>Ec(r,n=>ei(n.categoryMatches))))}function T5e(e){let t=e.lookaheadStrategy.validate({rules:e.rules,tokenTypes:e.tokenTypes,grammarName:e.grammarName});return hr(t,r=>Object.assign({type:Vs.CUSTOM_LOOKAHEAD_VALIDATION},r))}function C5e(e,t,r,n){let i=_l(e,u=>w5e(u,r)),a=M5e(e,t,r),s=_l(e,u=>_5e(u,r)),l=_l(e,u=>S5e(u,e,n,r));return i.concat(a,s,l)}function w5e(e,t){let r=new VTt;e.accept(r);let n=r.allProductions,i=rTt(n,k5e),a=_c(i,l=>l.length>1);return hr(ha(a),l=>{let u=Rc(l),h=t.buildDuplicateFoundError(e,l),d=Tc(u),f={message:h,type:Vs.DUPLICATE_PRODUCTIONS,ruleName:e.name,dslName:d,occurrence:u.idx},p=Oq(u);return p&&(f.parameter=p),f})}function k5e(e){return`${Tc(e)}_#_${e.idx}_#_${Oq(e)}`}function Oq(e){return e instanceof ci?e.terminalType.name:e instanceof Gs?e.nonTerminalName:""}function S5e(e,t,r,n){let i=[];if(Ko(t,(s,l)=>l.name===e.name?s+1:s,0)>1){let s=n.buildDuplicateRuleNameError({topLevelRule:e,grammarName:r});i.push({message:s,type:Vs.DUPLICATE_RULE_NAME,ruleName:e.name})}return i}function E5e(e,t,r){let n=[],i;return qs(t,e)||(i=`Invalid rule override, rule: ->${e}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:i,type:Vs.INVALID_RULE_OVERRIDE,ruleName:e})),n}function Bq(e,t,r,n=[]){let i=[],a=GC(t.definition);if(ei(a))return[];{let s=e.name;qs(a,e)&&i.push({message:r.buildLeftRecursionError({topLevelRule:e,leftRecursionPath:n}),type:Vs.LEFT_RECURSION,ruleName:s});let u=UR(a,n.concat([e])),h=_l(u,d=>{let f=Ya(n);return f.push(d),Bq(e,d,r,f)});return i.concat(h)}}function GC(e){let t=[];if(ei(e))return t;let r=Rc(e);if(r instanceof Gs)t.push(r.referencedRule);else if(r instanceof Co||r instanceof Ua||r instanceof Zo||r instanceof Qo||r instanceof wo||r instanceof Mi)t=t.concat(GC(r.definition));else if(r instanceof ko)t=Sc(hr(r.definition,a=>GC(a.definition)));else if(!(r instanceof ci))throw Error("non exhaustive match");let n=tw(r),i=e.length>1;if(n&&i){let a=Ha(e);return t.concat(GC(a))}else return t}function A5e(e,t){let r=new $q;e.accept(r);let n=r.alternations;return _l(n,a=>{let s=ew(a.definition);return _l(s,(l,u)=>{let h=Mq([l],[],$v,1);return ei(h)?[{message:t.buildEmptyAlternationError({topLevelRule:e,alternation:a,emptyChoiceIdx:u}),type:Vs.NONE_LAST_EMPTY_ALT,ruleName:e.name,occurrence:a.idx,alternative:u+1}]:[]})})}function R5e(e,t,r){let n=new $q;e.accept(n);let i=n.alternations;return i=YR(i,s=>s.ignoreAmbiguities===!0),_l(i,s=>{let l=s.idx,u=s.maxLookahead||t,h=_w(l,e,u,s),d=D5e(h,s,e,r),f=I5e(h,s,e,r);return d.concat(f)})}function _5e(e,t){let r=new $q;e.accept(r);let n=r.alternations;return _l(n,a=>a.definition.length>255?[{message:t.buildTooManyAlternativesError({topLevelRule:e,alternation:a}),type:Vs.TOO_MANY_ALTS,ruleName:e.name,occurrence:a.idx}]:[])}function L5e(e,t,r){let n=[];return Ir(e,i=>{let a=new WTt;i.accept(a);let s=a.allProductions;Ir(s,l=>{let u=ZR(l),h=l.maxLookahead||t,d=l.idx,p=Lw(d,i,u,h)[0];if(ei(Sc(p))){let m=r.buildEmptyRepetitionError({topLevelRule:i,repetition:l});n.push({message:m,type:Vs.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}function D5e(e,t,r,n){let i=[],a=Ko(e,(l,u,h)=>(t.definition[h].ignoreAmbiguities===!0||Ir(u,d=>{let f=[h];Ir(e,(p,m)=>{h!==m&&eR(p,d)&&t.definition[m].ignoreAmbiguities!==!0&&f.push(m)}),f.length>1&&!eR(i,d)&&(i.push(d),l.push({alts:f,path:d}))}),l),[]);return hr(a,l=>{let u=hr(l.alts,d=>d+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:t,ambiguityIndices:u,prefixPath:l.path}),type:Vs.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:t.idx,alternatives:l.alts}})}function I5e(e,t,r,n){let i=Ko(e,(s,l,u)=>{let h=hr(l,d=>({idx:u,path:d}));return s.concat(h)},[]);return Ew(_l(i,s=>{if(t.definition[s.idx].ignoreAmbiguities===!0)return[];let u=s.idx,h=s.path,d=Ml(i,p=>t.definition[p.idx].ignoreAmbiguities!==!0&&p.idx{let m=[p.idx+1,u+1],g=t.idx===0?"":t.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:t,ambiguityIndices:m,prefixPath:p.path}),type:Vs.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:g,alternatives:m}})}))}function M5e(e,t,r){let n=[],i=hr(t,a=>a.name);return Ir(e,a=>{let s=a.name;if(qs(i,s)){let l=r.buildNamespaceConflictError(a);n.push({message:l,type:Vs.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:s})}}),n}function N5e(e){let t=Tq(e,{errMsgProvider:PTt}),r={};return Ir(e.rules,n=>{r[n.name]=n}),d5e(r,t.errMsgProvider)}function P5e(e){return e=Tq(e,{errMsgProvider:Wg}),C5e(e.rules,e.tokenTypes,e.errMsgProvider,e.grammarName)}function nw(e){return qs(z5e,e.name)}function W5e(e,t,r,n,i,a,s){let l=this.getKeyForAutomaticLookahead(n,i),u=this.firstAfterRepMap[l];if(u===void 0){let p=this.getCurrRuleFullName(),m=this.getGAstProductions()[p];u=new a(m,i).startWalking(),this.firstAfterRepMap[l]=u}let h=u.token,d=u.occurrence,f=u.isEndOfRule;this.RULE_STACK.length===1&&f&&h===void 0&&(h=pp,d=1),!(h===void 0||d===void 0)&&this.shouldInRepetitionRecoveryBeTried(h,d,s)&&this.tryInRepetitionRecovery(e,t,r,h)}function d6(e,t,r){return r|t|e}function U5e(e){OA.reset(),e.accept(OA);let t=OA.dslMethods;return OA.reset(),t}function $G(e,t){isNaN(e.startOffset)===!0?(e.startOffset=t.startOffset,e.endOffset=t.endOffset):e.endOffsets.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: + ${a.join(` + +`).replace(/\n/g,` + `)}`)}},"validateVisitor")};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=t,r}function Z5e(e,t,r){let n=E(function(){},"derivedConstructor");zq(n,e+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return Ir(t,a=>{i[a]=X5e}),n.prototype=i,n.prototype.constructor=n,n}function Q5e(e,t){return J5e(e,t)}function J5e(e,t){let r=Ml(t,i=>rd(e[i])===!1),n=hr(r,i=>({msg:`Missing visitor method: <${i}> on ${e.constructor.name} CST Visitor.`,type:zG.MISSING_METHOD,methodName:i}));return Ew(n)}function nv(e,t,r,n=!1){iw(r);let i=Xg(this.recordingProdStack),a=rd(t)?t:t.DEF,s=new e({definition:[],idx:r});return n&&(s.separator=t.SEP),wr(t,"MAX_LOOKAHEAD")&&(s.maxLookahead=t.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),i.definition.push(s),this.recordingProdStack.pop(),JR}function rAe(e,t){iw(t);let r=Xg(this.recordingProdStack),n=un(e)===!1,i=n===!1?e:e.DEF,a=new ko({definition:[],idx:t,ignoreAmbiguities:n&&e.IGNORE_AMBIGUITIES===!0});wr(e,"MAX_LOOKAHEAD")&&(a.maxLookahead=e.MAX_LOOKAHEAD);let s=y3e(i,l=>rd(l.GATE));return a.hasPredicates=s,r.definition.push(a),Ir(i,l=>{let u=new Co({definition:[]});a.definition.push(u),wr(l,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:wr(l,"GATE")&&(u.ignoreAmbiguities=!0),this.recordingProdStack.push(u),l.ALT.call(this),this.recordingProdStack.pop()}),JR}function GG(e){return e===0?"":`${e}`}function iw(e){if(e<0||e>LCe){let t=new Error(`Invalid DSL Method idx value: <${e}> + Idx value must be a none negative value smaller than ${LCe+1}`);throw t.KNOWN_RECORDER_ERROR=!0,t}}function nAe(e,t){t.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(i=>{if(i==="constructor")return;let a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(e.prototype,i,a):e.prototype[i]=r.prototype[i]})})}function VG(e=void 0){return function(){return e}}function aAe(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r-1}function pAe(e,t){var r=this.__data__,n=e_(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function d0(e){var t=-1,r=e==null?0:e.length;for(this.clear();++tl))return!1;var h=a.get(e),d=a.get(t);if(h&&d)return h==t&&d==e;var f=-1,p=!0,m=r&Cwt?new YAe:void 0;for(a.set(e,t),a.set(t,e);++f-1&&e%1==0&&e-1&&e%1==0&&e<=nkt}function y6e(e){return Lv(e)&&qq(e.length)&&!!li[zv(e)]}function v6e(e){return function(t){return e(t)}}function b6e(e,t){var r=Ws(e),n=!r&&i_(e),i=!r&&!n&&nR(e),a=!r&&!n&&!i&&Hq(e),s=r||n||i||a,l=s?Uwt(e.length,String):[],u=l.length;for(var h in e)(t||Nkt.call(e,h))&&!(s&&(h=="length"||i&&(h=="offset"||h=="parent")||a&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||m6e(h,u)))&&l.push(h);return l}function T6e(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||Okt;return e===r}function w6e(e,t){return function(r){return e(t(r))}}function k6e(e){if(!C6e(e))return Fkt(e);var t=[];for(var r in Object(e))Gkt.call(e,r)&&r!="constructor"&&t.push(r);return t}function E6e(e){return e!=null&&qq(e.length)&&!EAe(e)}function A6e(e){return a_(e)?Pkt(e):S6e(e)}function R6e(e){return zwt(e,Uq,Hwt)}function _6e(e,t,r,n,i,a){var s=r&Vkt,l=VCe(e),u=l.length,h=VCe(t),d=h.length;if(u!=d&&!s)return!1;for(var f=u;f--;){var p=l[f];if(!(s?p in t:qkt.call(t,p)))return!1}var m=a.get(e),g=a.get(t);if(m&&g)return m==t&&g==e;var y=!0;a.set(e,t),a.set(t,e);for(var v=s;++feH(e,t,s));return y0(e,t,n,r,...i)}function CRe(e,t,r){let n=da(e,t,r,{type:mp});id(e,n);let i=y0(e,t,n,r,Tp(e,t,r));return wRe(e,t,r,i)}function Tp(e,t,r){let n=WSt(qh(r.definition,i=>eH(e,t,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:SRe(e,n)}function tH(e,t,r,n,i){let a=n.left,s=n.right,l=da(e,t,r,{type:jSt});id(e,l);let u=da(e,t,r,{type:fRe});return a.loopback=l,u.loopback=l,e.decisionMap[Zg(t,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=l,$i(s,l),i===void 0?($i(l,a),$i(l,u)):($i(l,u),$i(l,i.left),$i(i.right,a)),{left:a,right:u}}function rH(e,t,r,n,i){let a=n.left,s=n.right,l=da(e,t,r,{type:YSt});id(e,l);let u=da(e,t,r,{type:fRe}),h=da(e,t,r,{type:USt});return l.loopback=h,u.loopback=h,$i(l,a),$i(l,u),$i(s,h),i!==void 0?($i(h,u),$i(h,i.left),$i(i.right,a)):$i(h,l),e.decisionMap[Zg(t,i?"RepetitionWithSeparator":"Repetition",r.idx)]=l,{left:l,right:u}}function wRe(e,t,r,n){let i=n.left,a=n.right;return $i(i,a),e.decisionMap[Zg(t,"Option",r.idx)]=i,n}function id(e,t){return e.decisionStates.push(t),t.decision=e.decisionStates.length-1,t.decision}function y0(e,t,r,n,...i){let a=da(e,t,n,{type:HSt,start:r});r.end=a;for(let l of i)l!==void 0?($i(r,l.left),$i(l.right,a)):$i(r,a);let s={left:r,right:a};return e.decisionMap[Zg(t,kRe(n),n.idx)]=r,s}function kRe(e){if(e instanceof ko)return"Alternation";if(e instanceof Ua)return"Option";if(e instanceof Mi)return"Repetition";if(e instanceof wo)return"RepetitionWithSeparator";if(e instanceof Zo)return"RepetitionMandatory";if(e instanceof Qo)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function SRe(e,t){let r=t.length;for(let a=0;ar.stateNumber.toString()).join("_")}`}function _Re(e,t,r){for(var n=-1,i=e.length;++n0&&r(l)?t>1?iH(l,t-1,r,n,i):n6e(i,l):n||(i[i.length]=l)}return i}function NRe(e,t){return MRe(qh(e,t),1)}function PRe(e,t,r,n){for(var i=e.length,a=r+(n?1:-1);n?a--:++a-1}function zRe(e,t,r){for(var n=-1,i=e==null?0:e.length;++n=uEt){var h=t?null:cEt(e);if(h)return Wq(h);s=!1,i=KAe,u=new YAe}else u=t?[]:l;e:for(;++n{let i=n.toString(),a=r[i];return a!==void 0||(a={atnStartState:e,decision:t,states:{}},r[i]=a),a}}function jG(e,t=!0){let r=new Set;for(let n of e){let i=new Set;for(let a of n){if(a===void 0){if(t)break;return!1}let s=[a.tokenTypeIdx].concat(a.categoryMatches);for(let l of s)if(r.has(l)){if(!i.has(l))return!1}else r.add(l),i.add(l)}}return!0}function e_e(e){let t=e.decisionStates.length,r=Array(t);for(let n=0;nUg(i)).join(", "),r=e.production.idx===0?"":e.production.idx,n=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(", ")}> in <${a_e(e.production)}${r}> inside <${e.topLevelRule.name}> Rule, +<${t}> may appears as a prefix path in all these alternatives. +`;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,n}function a_e(e){if(e instanceof Gs)return"SUBRULE";if(e instanceof Ua)return"OPTION";if(e instanceof ko)return"OR";if(e instanceof Zo)return"AT_LEAST_ONE";if(e instanceof Qo)return"AT_LEAST_ONE_SEP";if(e instanceof wo)return"MANY_SEP";if(e instanceof Mi)return"MANY";if(e instanceof ci)return"CONSUME";throw Error("non exhaustive match")}function s_e(e,t,r){let n=JSt(t.configs.elements,a=>a.state.transitions),i=dEt(n.filter(a=>a instanceof Qq).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:i,tokenPath:e}}function o_e(e,t){return e.edges[t.tokenTypeIdx]}function l_e(e,t,r){let n=new YG,i=[];for(let s of e.elements){if(r.is(s.alt)===!1)continue;if(s.state.type===Dw){i.push(s);continue}let l=s.state.transitions.length;for(let u=0;u0&&!f_e(a))for(let s of i)a.add(s);return a}function c_e(e,t){if(e instanceof Qq&&Iq(t,e.tokenType))return e.target}function u_e(e,t){let r;for(let n of e.elements)if(t.is(n.alt)===!0){if(r===void 0)r=n.alt;else if(r!==n.alt)return}return r}function aH(e){return{configs:e,edges:{},isAcceptState:!1,prediction:-1}}function XG(e,t,r,n){return n=sH(e,n),t.edges[r.tokenTypeIdx]=n,n}function sH(e,t){if(t===iR)return t;let r=t.configs.key,n=e.states[r];return n!==void 0?n:(t.configs.finalize(),e.states[r]=t,t)}function h_e(e){let t=new YG,r=e.transitions.length;for(let n=0;n0){let i=[...e.stack],s={state:i.pop(),alt:e.alt,stack:i};lw(s,t)}else t.add(e);return}r.epsilonOnlyTransitions||t.add(e);let n=r.transitions.length;for(let i=0;i1)return!0;return!1}function v_e(e){for(let t of Array.from(e.values()))if(Object.keys(t).length===1)return!0;return!1}function m6(e){return e.$type===sR}function p_(e,t,r){return E_e({parser:t,tokens:r,ruleNames:new Map},e),t}function E_e(e,t){let r=_R(t,!1),n=Bn(t.rules).filter(zs).filter(a=>r.has(a));for(let a of n){let s={...e,consume:1,optional:1,subrule:1,many:1,or:1};e.parser.rule(a,gp(s,a.definition))}let i=Bn(t.rules).filter(Sv).filter(a=>r.has(a));for(let a of i)e.parser.rule(a,A_e(e,a))}function A_e(e,t){let r=t.call.rule.ref;if(!r)throw new Error("Could not resolve reference to infix operator rule: "+t.call.rule.$refText);if(Il(r))throw new Error("Cannot use terminal rule in infix expression");let n=t.operators.precedences.flatMap(m=>m.operators),i={$type:"Group",elements:[]},a={$container:i,$type:"Assignment",feature:"parts",operator:"+=",terminal:t.call},s={$container:i,$type:"Group",elements:[],cardinality:"*"};i.elements.push(a,s);let u={$container:s,$type:"Assignment",feature:"operators",operator:"+=",terminal:{$type:"Alternatives",elements:n}},h={...a,$container:s};s.elements.push(u,h);let f=n.map(m=>e.tokens[m.value]).map((m,g)=>({ALT:E(()=>e.parser.consume(g,m,u),"ALT")})),p;return m=>{p??(p=m_(e,r)),e.parser.subrule(0,p,!1,a,m),e.parser.many(0,{DEF:E(()=>{e.parser.alternatives(0,f),e.parser.subrule(1,p,!1,h,m)},"DEF")})}}function gp(e,t,r=!1){let n;if(Yh(t))n=N_e(e,t);else if(dp(t))n=R_e(e,t);else if(Uh(t))n=gp(e,t.terminal);else if(r0(t))n=hH(e,t);else if(jh(t))n=__e(e,t);else if(bR(t))n=D_e(e,t);else if(kR(t))n=I_e(e,t);else if(n0(t))n=M_e(e,t);else if(pW(t)){let i=e.consume++;n=E(()=>e.parser.consume(i,pp,t),"method")}else throw new ER(t.$cstNode,`Unexpected element type: ${t.$type}`);return dH(e,r?void 0:cw(t),n,t.cardinality)}function R_e(e,t){let r=jg(t);return()=>e.parser.action(r,t)}function __e(e,t){let r=t.rule.ref;if(t0(r)){let n=e.subrule++,i=zs(r)&&r.fragment,a=t.arguments.length>0?L_e(r,t.arguments):()=>({}),s;return l=>{s??(s=m_(e,r)),e.parser.subrule(n,s,i,t,a(l))}}else if(Il(r)){let n=e.consume++,i=oR(e,r.name);return()=>e.parser.consume(n,i,t)}else if(r)vp(r);else throw new ER(t.$cstNode,`Undefined rule: ${t.rule.$refText}`)}function L_e(e,t){if(t.some(n=>n.calledByName)){let n=t.map(i=>({parameterName:i.parameter?.ref?.name,predicate:Cc(i.value)}));return i=>{let a={};for(let{parameterName:s,predicate:l}of n)s&&(a[s]=l(i));return a}}else{let n=t.map(i=>Cc(i.value));return i=>{let a={};for(let s=0;st(n)||r(n)}else if(dW(e)){let t=Cc(e.left),r=Cc(e.right);return n=>t(n)&&r(n)}else if(yW(e)){let t=Cc(e.value);return r=>!t(r)}else if(vW(e)){let t=e.parameter.ref.name;return r=>r!==void 0&&r[t]===!0}else if(uW(e)){let t=!!e.true;return()=>t}vp(e)}function D_e(e,t){if(t.elements.length===1)return gp(e,t.elements[0]);{let r=[];for(let i of t.elements){let a={ALT:gp(e,i,!0)},s=cw(i);s&&(a.GATE=Cc(s)),r.push(a)}let n=e.or++;return i=>e.parser.alternatives(n,r.map(a=>{let s={ALT:E(()=>a.ALT(i),"ALT")},l=a.GATE;return l&&(s.GATE=()=>l(i)),s}))}}function I_e(e,t){if(t.elements.length===1)return gp(e,t.elements[0]);let r=[];for(let l of t.elements){let u={ALT:gp(e,l,!0)},h=cw(l);h&&(u.GATE=Cc(h)),r.push(u)}let n=e.or++,i=E((l,u)=>{let h=u.getRuleStack().join("-");return`uGroup_${l}_${h}`},"idFunc"),a=E(l=>e.parser.alternatives(n,r.map((u,h)=>{let d={ALT:E(()=>!0,"ALT")},f=e.parser;d.ALT=()=>{if(u.ALT(l),!f.isRecording()){let m=i(n,f);f.unorderedGroups.get(m)||f.unorderedGroups.set(m,[]);let g=f.unorderedGroups.get(m);typeof g?.[h]>"u"&&(g[h]=!0)}};let p=u.GATE;return p?d.GATE=()=>p(l):d.GATE=()=>!f.unorderedGroups.get(i(n,f))?.[h],d})),"alternatives"),s=dH(e,cw(t),a,"*");return l=>{s(l),e.parser.isRecording()||e.parser.unorderedGroups.delete(i(n,e.parser))}}function M_e(e,t){let r=t.elements.map(n=>gp(e,n));return n=>r.forEach(i=>i(n))}function cw(e){if(n0(e))return e.guardCondition}function hH(e,t,r=t.terminal){if(r)if(jh(r)&&zs(r.rule.ref)){let n=r.rule.ref,i=e.subrule++,a;return s=>{a??(a=m_(e,n)),e.parser.subrule(i,a,!1,t,s)}}else if(jh(r)&&Il(r.rule.ref)){let n=e.consume++,i=oR(e,r.rule.ref.name);return()=>e.parser.consume(n,i,t)}else if(Yh(r)){let n=e.consume++,i=oR(e,r.value);return()=>e.parser.consume(n,i,t)}else throw new Error("Could not build cross reference parser");else{if(!t.type.ref)throw new Error("Could not resolve reference to type: "+t.type.$refText);let i=MR(t.type.ref)?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+jg(t.type.ref));return hH(e,t,i)}}function N_e(e,t){let r=e.consume++,n=e.tokens[t.value];if(!n)throw new Error("Could not find token for keyword: "+t.value);return()=>e.parser.consume(r,n,t)}function dH(e,t,r,n){let i=t&&Cc(t);if(!n)if(i){let a=e.or++;return s=>e.parser.alternatives(a,[{ALT:E(()=>r(s),"ALT"),GATE:E(()=>i(s),"GATE")},{ALT:VG(),GATE:E(()=>!i(s),"GATE")}])}else return r;if(n==="*"){let a=e.many++;return s=>e.parser.many(a,{DEF:E(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else if(n==="+"){let a=e.many++;if(i){let s=e.or++;return l=>e.parser.alternatives(s,[{ALT:E(()=>e.parser.atLeastOne(a,{DEF:E(()=>r(l),"DEF")}),"ALT"),GATE:E(()=>i(l),"GATE")},{ALT:VG(),GATE:E(()=>!i(l),"GATE")}])}else return s=>e.parser.atLeastOne(a,{DEF:E(()=>r(s),"DEF")})}else if(n==="?"){let a=e.optional++;return s=>e.parser.optional(a,{DEF:E(()=>r(s),"DEF"),GATE:i?()=>i(s):void 0})}else vp(n)}function m_(e,t){let r=P_e(e,t),n=e.parser.getRule(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}function P_e(e,t){if(t0(t))return t.name;if(e.ruleNames.has(t))return e.ruleNames.get(t);{let r=t,n=r.$container,i=t.$type;for(;!zs(n);)(n0(n)||bR(n)||kR(n))&&(i=n.elements.indexOf(r).toString()+":"+i),r=n,n=n.$container;return i=n.name+":"+i,e.ruleNames.set(t,i),i}}function oR(e,t){let r=e.tokens[t];if(!r)throw new Error(`Token "${t}" not found."`);return r}function fH(e){let t=e.Grammar,r=e.parser.Lexer,n=new k_e(e);return p_(t,n,r.definition),n.finalize(),n}function pH(e){let t=mH(e);return t.finalize(),t}function mH(e){let t=e.Grammar,r=e.parser.Lexer,n=new C_e(e);return p_(t,n,r.definition)}function y_(){return new Promise(e=>{typeof setImmediate>"u"?setTimeout(e,0):setImmediate(e)})}function v_(){return g6=performance.now(),new Jn.CancellationTokenSource}function yH(e){O_e=e}function v0(e){return e===Pu}async function Ia(e){if(e===Jn.CancellationToken.None)return;let t=performance.now();if(t-g6>=O_e&&(g6=t,await y_(),g6=performance.now()),e.isCancellationRequested)throw Pu}function cR(e,t){if(e.length<=1)return e;let r=e.length/2|0,n=e.slice(0,r),i=e.slice(r);cR(n,t),cR(i,t);let a=0,s=0,l=0;for(;ar.line||t.line===r.line&&t.character>r.character?{start:r,end:t}:e}function B_e(e){let t=xH(e.range);return t!==e.range?{newText:e.newText,range:t}:e}function TH(e){return typeof e.name=="string"}function kH(e){return typeof e.$comment=="string"}function JG(e){return typeof e=="object"&&!!e&&("$ref"in e||"$error"in e)}function qg(e){return{code:e}}function SH(e){if(e.range)return e.range;let t;return typeof e.property=="string"?t=LR(e.node.$cstNode,e.property,e.index):typeof e.keyword=="string"&&(t=jW(e.node.$cstNode,e.keyword,e.index)),t??(t=e.node.$cstNode),t?t.range:{start:{line:0,character:0},end:{line:0,character:0}}}function WC(e){switch(e){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+e)}}function EH(e){switch(e){case"error":return qg(Rl.LexingError);case"warning":return qg(Rl.LexingWarning);case"info":return qg(Rl.LexingInfo);case"hint":return qg(Rl.LexingHint);default:throw new Error("Invalid diagnostic severity: "+e)}}function C_(e){return Array.isArray(e)&&(e.length===0||"name"in e[0])}function w_(e){return e&&"modes"in e&&"defaultMode"in e}function dR(e){return!C_(e)&&!w_(e)}function _H(e,t,r){let n,i;typeof e=="string"?(i=t,n=r):(i=e.range.start,n=t),i||(i=En.create(0,0));let a=DH(e),s=k_(n),l=oLe({lines:a,position:i,options:s});return uLe({index:0,tokens:l,position:i})}function LH(e,t){let r=k_(t),n=DH(e);if(n.length===0)return!1;let i=n[0],a=n[n.length-1],s=r.start,l=r.end;return!!s?.exec(i)&&!!l?.exec(a)}function DH(e){let t="";return typeof e=="string"?t=e:t=e.text,t.split(cke)}function oLe(e){let t=[],r=e.position.line,n=e.position.character;for(let i=0;i=l.length){if(t.length>0){let d=En.create(r,n);t.push({type:"break",content:"",range:an.create(d,d)})}}else{iwe.lastIndex=u;let d=iwe.exec(l);if(d){let f=d[0],p=d[1],m=En.create(r,n+u),g=En.create(r,n+u+f.length);t.push({type:"tag",content:p,range:an.create(m,g)}),u+=f.length,u=fR(l,u)}if(u0&&t[t.length-1].type==="break"?t.slice(0,-1):t}function lLe(e,t,r,n){let i=[];if(e.length===0){let a=En.create(r,n),s=En.create(r,n+t.length);i.push({type:"text",content:t,range:an.create(a,s)})}else{let a=0;for(let l of e){let u=l.index,h=t.substring(a,u);h.length>0&&i.push({type:"text",content:t.substring(a,u),range:an.create(En.create(r,a+n),En.create(r,u+n))});let d=h.length+1,f=l[1];if(i.push({type:"inline-tag",content:f,range:an.create(En.create(r,a+d+n),En.create(r,a+d+f.length+n))}),d+=f.length,l.length===4){d+=l[2].length;let p=l[3];i.push({type:"text",content:p,range:an.create(En.create(r,a+d+n),En.create(r,a+d+p.length+n))})}else i.push({type:"text",content:"",range:an.create(En.create(r,a+d+n),En.create(r,a+d+n))});a=u+l[0].length}let s=t.substring(a);s.length>0&&i.push({type:"text",content:s,range:an.create(En.create(r,a+n),En.create(r,a+n+s.length))})}return i}function fR(e,t){let r=e.substring(t).match(LEt);return r?t+r.index:e.length}function cLe(e){let t=e.match(DEt);if(t&&typeof t.index=="number")return t.index}function uLe(e){let t=En.create(e.position.line,e.position.character);if(e.tokens.length===0)return new awe([],an.create(t,t));let r=[];for(;e.index0){let s=fR(t,n);i=t.substring(s),t=t.substring(0,n)}return(e==="linkcode"||e==="link"&&r.link==="code")&&(i=`\`${i}\``),r.renderLink?.(t,i)??mLe(t,i)}}function mLe(e,t){try{return Yo.parse(e,!0),`[${t}](${e})`}catch{return e}}function tV(e){return e.endsWith(` +`)?` +`:` + +`}function hn(e){return{documentation:{CommentProvider:E(t=>new vLe(t),"CommentProvider"),DocumentationProvider:E(t=>new yLe(t),"DocumentationProvider")},parser:{AsyncParser:E(t=>new xLe(t),"AsyncParser"),GrammarConfig:E(t=>rq(t),"GrammarConfig"),LangiumParser:E(t=>pH(t),"LangiumParser"),CompletionParser:E(t=>fH(t),"CompletionParser"),ValueConverter:E(()=>new gH,"ValueConverter"),TokenBuilder:E(()=>new g_,"TokenBuilder"),Lexer:E(t=>new RH(t),"Lexer"),ParserErrorMessageProvider:E(()=>new uH,"ParserErrorMessageProvider"),LexerErrorMessageProvider:E(()=>new sLe,"LexerErrorMessageProvider")},workspace:{AstNodeLocator:E(()=>new tLe,"AstNodeLocator"),AstNodeDescriptionProvider:E(t=>new J_e(t),"AstNodeDescriptionProvider"),ReferenceDescriptionProvider:E(t=>new eLe(t),"ReferenceDescriptionProvider")},references:{Linker:E(t=>new G_e(t),"Linker"),NameProvider:E(()=>new V_e,"NameProvider"),ScopeProvider:E(t=>new Y_e(t),"ScopeProvider"),ScopeComputation:E(t=>new q_e(t),"ScopeComputation"),References:E(t=>new W_e(t),"References")},serializer:{Hydrator:E(t=>new TLe(t),"Hydrator"),JsonSerializer:E(t=>new j_e(t),"JsonSerializer")},validation:{DocumentValidator:E(t=>new Q_e(t),"DocumentValidator"),ValidationRegistry:E(t=>new K_e(t),"ValidationRegistry")},shared:E(()=>e.shared,"shared")}}function dn(e){return{ServiceRegistry:E(t=>new X_e(t),"ServiceRegistry"),workspace:{LangiumDocuments:E(t=>new z_e(t),"LangiumDocuments"),LangiumDocumentFactory:E(t=>new F_e(t),"LangiumDocumentFactory"),DocumentBuilder:E(t=>new nLe(t),"DocumentBuilder"),IndexManager:E(t=>new iLe(t),"IndexManager"),WorkspaceManager:E(t=>new aLe(t),"WorkspaceManager"),FileSystemProvider:E(t=>e.fileSystemProvider(t),"FileSystemProvider"),WorkspaceLock:E(()=>new bLe,"WorkspaceLock"),ConfigurationProvider:E(t=>new rLe(t),"ConfigurationProvider")},profilers:{}}}function Mr(e,t,r,n,i,a,s,l,u){let h=[e,t,r,n,i,a,s,l,u].reduce(Dv,{});return OH(h)}function PH(e){if(e&&e[CLe])for(let t of Object.values(e))PH(t);return e}function OH(e,t){let r=new Proxy({},{deleteProperty:E(()=>!1,"deleteProperty"),set:E(()=>{throw new Error("Cannot set property on injected service container")},"set"),get:E((n,i)=>i===CLe?!0:nV(n,i,e,t||r),"get"),getOwnPropertyDescriptor:E((n,i)=>(nV(n,i,e,t||r),Object.getOwnPropertyDescriptor(n,i)),"getOwnPropertyDescriptor"),has:E((n,i)=>i in e,"has"),ownKeys:E(()=>[...Object.getOwnPropertyNames(e)],"ownKeys")});return r}function nV(e,t,r,n){if(t in e){if(e[t]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable. Cause: "+e[t]);if(e[t]===swe)throw new Error('Cycle detected. Please make "'+String(t)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return e[t]}else if(t in r){let i=r[t];e[t]=swe;try{e[t]=typeof i=="function"?i(n):OH(i,n)}catch(a){throw e[t]=a instanceof Error?a:void 0,a}return e[t]}else return}function Dv(e,t){if(t){for(let[r,n]of Object.entries(t))if(n!=null)if(typeof n=="object"){let i=e[r];typeof i=="object"&&i!==null?e[r]=Dv(i,n):e[r]=Dv({},n)}else e[r]=n}return e}function SLe(){let e=Mr(dn(yn),OEt),t=Mr(hn({shared:e}),PEt);return e.ServiceRegistry.register(t),t}function Ma(e){let t=SLe(),r=t.serializer.JsonSerializer.deserialize(e);return t.shared.workspace.LangiumDocumentFactory.fromModel(r,Yo.parse(`memory:/${r.name??"grammar"}.langium`)),r}function ALe(e){return Fi.isInstance(e,bc.$type)}function RLe(e){return Fi.isInstance(e,qC.$type)}function _Le(e){return Fi.isInstance(e,Mg.$type)}function LLe(e){return Fi.isInstance(e,cp.$type)}function DLe(e){return Fi.isInstance(e,HC.$type)}function ILe(e){return Fi.isInstance(e,pR.$type)}function MLe(e){return e==="rmo"||e==="readmodel"||e==="ui"||e==="cmd"||e==="command"||e==="evt"||e==="event"||e==="pcr"||e==="processor"}function S_(e){return Fi.isInstance(e,Gh.$type)}function NLe(e){return Fi.isInstance(e,up.$type)}function PLe(e){return Fi.isInstance(e,mv.$type)}function OLe(e){return Fi.isInstance(e,Ng.$type)}function BLe(e){return Fi.isInstance(e,Pg.$type)}function $Le(e){return Fi.isInstance(e,Og.$type)}function FLe(e){return Fi.isInstance(e,hp.$type)}function zLe(e){return Fi.isInstance(e,UC.$type)}function GLe(e){return Fi.isInstance(e,Bg.$type)}function VLe(e){return Fi.isInstance(e,$g.$type)}function WLe(e){return Fi.isInstance(e,Fg.$type)}function qLe(e){return Fi.isInstance(e,zg.$type)}function HLe(e){return Fi.isInstance(e,gv.$type)}function ULe(e){return Fi.isInstance(e,Gg.$type)}function YLe(e){return Fi.isInstance(e,La.$type)}var T0t,uw,C0t,JV,w0t,k0t,E,S0t,zr,yp,E6,mR,eW,tW,gR,Tz,ZA,Cz,yC,En,an,vC,wz,QA,kz,Sz,Ez,Az,JA,Rz,_z,Lz,xC,hg,Ru,dg,qa,Fh,bC,Q1,J1,ev,e6,lC,JF,Ewe,Dz,Iz,TC,Mz,t6,tv,Nz,Pz,Oz,Bz,$z,Fz,zz,Gz,CC,Vz,Wz,qz,Hz,Uz,Yz,jz,Xz,Kz,Zz,Qz,wC,Jz,eG,tG,rG,nG,iG,aG,sG,oG,lG,cG,uG,hG,r6,n6,dG,fG,pG,mG,gG,yG,vG,xG,Awe,bG,PTe,nt,hw,Qg,dw,Iv,yR,_we,Dwe,E0t,A0t,Iwe,R0t,_0t,L0t,D0t,TG,I0t,Mv,OTe,ki,rW,M0t,N0t,P0t,O0t,B0t,$0t,F0t,z0t,G0t,V0t,W0t,q0t,H0t,U0t,Y0t,j0t,X0t,K0t,Z0t,Q0t,J0t,eyt,tyt,ryt,nyt,Pwe,nW,aW,Nu,Tv,Os,Cv,jC,sW,$we,iyt,xo,_C,ov,Uo,ip,LC,L6,D6,ap,I6,sp,op,DC,lp,IC,M6,Vh,N6,Cg,P6,Du,MC,O6,lv,cv,uv,wg,B6,$6,hv,F6,xc,NC,kg,z6,Sg,dv,G6,Eg,bo,Ag,Wh,Rg,PC,_g,Lg,V6,OC,Dg,Ig,fv,AW,Tr,Mu,DW,OW,ER,$W,q6,H6,BTe,ayt,MA,syt,lke,AR,cke,uke,oyt,Vg,dke,tq,lyt,Ske,cyt,uyt,Fu,hyt,Ll,Eke,dyt,fyt,cC,pyt,myt,gyt,yyt,vyt,xyt,$Te,xp,Ac,byt,NR,vw,Tyt,un,Cyt,FTe,zTe,wyt,kyt,Syt,Eyt,Ayt,Dl,GTe,Ryt,_yt,Lyt,Dyt,Iyt,VTe,Myt,Nyt,xw,bw,Pyt,Oyt,Byt,$yt,rd,Fyt,ez,WTe,zyt,Gyt,Vyt,a0,Wyt,qyt,Hyt,Uyt,Yyt,jyt,Xyt,Kyt,Zyt,s0,Qyt,kG,qTe,Jyt,e1t,t1t,Da,r1t,n1t,i1t,a1t,s1t,o1t,l1t,Y6,c1t,u1t,h1t,d1t,Qke,eSe,f1t,p1t,iq,aSe,m1t,g1t,PR,aq,Tw,y1t,v1t,OR,Cw,HTe,x1t,sq,b1t,oq,zu,BR,T1t,C1t,ww,w1t,k1t,UTe,bSe,S1t,E1t,A1t,$R,R1t,CSe,YTe,_1t,jTe,L1t,D1t,KC,I1t,M1t,N1t,P1t,O1t,B1t,$1t,F1t,z1t,G1t,V1t,W1t,q1t,H1t,U1t,Y1t,j1t,X1t,K1t,Z1t,Q1t,J1t,evt,tvt,oi,rvt,kw,SSe,BC,nvt,tz,ivt,fp,XTe,avt,lq,svt,ovt,ASe,_Se,lvt,cvt,uvt,hvt,DSe,jo,dvt,fvt,pvt,Xo,mvt,gvt,yvt,vvt,FR,xvt,bvt,cq,Tvt,ZC,Cvt,wvt,kvt,Svt,Evt,Avt,Rvt,_vt,Lvt,Dvt,Ivt,KTe,Mvt,zR,Nvt,Pvt,Ovt,Bvt,$vt,Fvt,GR,zvt,QC,Gvt,Vvt,VR,Wvt,qvt,Hvt,Uvt,WR,Yvt,jvt,Xvt,Kvt,Zvt,Qvt,Jvt,ext,txt,HR,rxt,Sw,uq,nxt,hq,ZTe,ixt,fq,Sc,axt,uEe,dEe,sxt,oxt,lxt,cxt,uxt,hxt,dxt,$C,fxt,pxt,TEe,QTe,mxt,JTe,eCe,gxt,pq,SEe,yxt,vxt,tCe,xxt,mq,bxt,Txt,Cxt,AEe,wxt,LEe,SG,MEe,kxt,EG,Sxt,AG,Ext,vv,rCe,Axt,nCe,iCe,aCe,sCe,Rxt,_xt,Lxt,Dxt,Ixt,pg,Rv,Mxt,Nxt,Pxt,Oxt,j6,gq,Bxt,$xt,Fxt,oCe,lCe,zxt,Gxt,Vxt,Wxt,qxt,Hxt,Uxt,Yxt,jxt,Xxt,Kxt,Zxt,Qxt,Jxt,ebt,tbt,rbt,nbt,ibt,abt,sbt,obt,lbt,cbt,ubt,cCe,hbt,dbt,fbt,pbt,uCe,mbt,gbt,ybt,vbt,xbt,qEe,bbt,Tbt,Cbt,wbt,HEe,kbt,Sbt,Ebt,UEe,Abt,Rbt,_bt,Lbt,Dbt,Ibt,Mbt,Nbt,Pbt,Obt,Bbt,$bt,Fbt,zbt,Gbt,Vbt,Qn,Wbt,qbt,Ya,Ew,Hbt,Ubt,Ybt,yq,QEe,vq,jbt,Xbt,t4e,Kbt,xq,Zbt,Qbt,Jbt,e2t,t2t,r2t,n2t,i2t,a2t,s2t,o2t,l2t,c2t,hCe,rz,u2t,h2t,d2t,f2t,p2t,m2t,dCe,fCe,NA,g2t,pCe,y2t,o4e,v2t,x2t,b2t,u4e,T2t,f4e,C2t,w2t,y4e,k2t,S2t,E2t,A2t,R2t,_2t,L2t,Gu,D2t,I2t,M2t,N2t,P2t,O2t,B2t,h0,$2t,F2t,L4e,z2t,G2t,Tq,mCe,M4e,V2t,W2t,q2t,UR,Xg,Ha,ew,H2t,Ir,U2t,Y2t,Ec,q4e,Ml,j2t,X2t,K2t,Z2t,_v,Rc,Q2t,hr,_l,J2t,eTt,tTt,rTt,nTt,iTt,aTt,wr,sTt,To,oTt,ha,lTt,qs,cTt,gCe,uTt,hTt,dTt,fTt,ei,pTt,mTt,yCe,gTt,Xh,Kh,yTt,vTt,xTt,bTt,_c,TTt,Ko,YR,CTt,y3e,wTt,kTt,STt,ETt,ATt,Cq,Vu,Gs,Pv,Co,Ua,Zo,Qo,Mi,wo,ko,ci,Ov,jR,R3e,RTt,o6,_Tt,I3e,K6,LTt,Kg,EC,PA,DTt,ITt,MTt,AC,c6,vCe,n5e,IG,Ni,RC,Fs,NTt,xCe,bCe,TCe,CCe,wCe,kCe,SCe,ECe,pp,pv,PTt,Wg,OTt,BTt,$Tt,KR,FTt,ACe,zTt,RCe,wi,GTt,v5e,VTt,$q,WTt,O5e,B5e,$5e,F5e,z5e,QR,G5e,qTt,HTt,UTt,nz,V5e,YTt,jTt,XTt,bp,KTt,q5e,H5e,PG,OG,BG,h6,zIr,Fq,ZTt,QTt,OA,JTt,zG,eCt,tCt,rCt,nCt,iCt,aCt,JR,_Ce,LCe,eAe,tAe,sCt,oCt,lCt,tR,Qh,rR,Vs,Gq,cCt,sAe,uCt,cAe,e_,hCt,dCt,fCt,pCt,mCt,gCt,t_,yCt,vCt,xCt,bCt,TCt,xAe,CCt,wCt,nd,kCt,$u,bAe,SCt,ECt,uC,ACt,RCt,_Ct,LCt,DCt,ICt,DCe,zv,Vq,MCt,NCt,PCt,OCt,EAe,BCt,iz,ICe,$Ct,FCt,zCt,f0,GCt,VCt,WCt,qCt,HCt,UCt,YCt,jCt,XCt,Gv,KCt,aw,ZCt,sw,QCt,JCt,ewt,twt,rwt,nwt,iwt,awt,swt,owt,lwt,MCe,cwt,uwt,r_,hwt,dwt,fwt,pwt,n_,mwt,gwt,f6,ywt,vwt,xwt,YAe,bwt,KAe,Twt,Cwt,QAe,wwt,NCe,kwt,Wq,Swt,Ewt,Awt,Rwt,_wt,Lwt,Dwt,Iwt,Mwt,Nwt,Pwt,Owt,Bwt,PCe,az,$wt,n6e,Fwt,Ws,zwt,s6e,Gwt,Vwt,Wwt,OCe,qwt,Hwt,Uwt,Lv,Ywt,BCe,h6e,jwt,Xwt,Kwt,i_,Zwt,f6e,$Ce,Qwt,FCe,Jwt,ekt,nR,tkt,rkt,m6e,nkt,qq,ikt,akt,skt,okt,lkt,ckt,ukt,hkt,dkt,fkt,pkt,mkt,gkt,ykt,vkt,xkt,bkt,Tkt,Ckt,wkt,kkt,Skt,Ekt,Akt,li,Rkt,_kt,x6e,VC,Lkt,sz,Dkt,zCe,GCe,Ikt,Hq,Mkt,Nkt,Pkt,Okt,C6e,Bkt,$kt,Fkt,zkt,Gkt,S6e,a_,Uq,VCe,Vkt,Wkt,qkt,Hkt,Ukt,WG,Ykt,qG,jkt,bv,Xkt,HG,WCe,Kkt,qCe,HCe,UCe,YCe,Zkt,Qkt,Jkt,eSt,tSt,mg,UG,rSt,jCe,XCe,BA,nSt,KCe,iSt,D6e,aSt,sSt,oSt,N6e,lSt,B6e,cSt,uSt,s_,hSt,dSt,jq,fSt,pSt,mSt,gSt,ySt,vSt,xSt,bSt,TSt,ZCe,QCe,CSt,wSt,q6e,kSt,l_,Y6e,SSt,ESt,ASt,RSt,_St,LSt,DSt,Kq,ISt,MSt,NSt,c_,PSt,OSt,BSt,$St,FSt,zSt,u_,GSt,qh,VSt,WSt,mp,qSt,hRe,dRe,Dw,HSt,USt,YSt,jSt,fRe,Zq,Qq,pRe,Jq,iR,YG,XSt,KSt,ZSt,JCe,QSt,MRe,JSt,eEt,tEt,rEt,nEt,iEt,aEt,sEt,oEt,lEt,cEt,uEt,hEt,dEt,fEt,pEt,mEt,oz,gEt,yEt,vEt,xEt,bEt,TEt,CEt,ewe,JRe,twe,wEt,x_e,oH,aR,f_,kEt,lH,sR,rwe,T_e,cH,C_e,w_e,uH,k_e,SEt,S_e,EEt,g_,gH,Iu,Jn,g6,O_e,Pu,Jh,nwe,lR,$_e,Yo,hC,$s,bH,en,F_e,z_e,gg,G_e,V_e,W_e,ed,uR,q_e,QG,AEt,H_e,REt,x_,CH,b_,U_e,wH,Y_e,j_e,X_e,hR,K_e,Z_e,Q_e,Rl,J_e,eLe,tLe,T_,rLe,$A,Yg,nLe,iLe,aLe,sLe,AH,RH,iwe,_Et,LEt,DEt,awe,lz,eV,gLe,yLe,vLe,xLe,IEt,MEt,bLe,TLe,rV,CLe,swe,iV,Hg,wLe,NEt,BH,kLe,yn,PEt,OEt,BEt,ELe,aV,sV,oV,lV,cV,uV,hV,dV,fV,pV,mV,gV,yV,vV,xV,GIr,bV,TV,v6,CV,wV,kV,yg,x6,SV,EV,FA,cz,zA,dC,uz,bc,GA,qC,owe,VA,hz,Mg,WA,cg,qA,cp,HA,lwe,K1,HC,pR,AV,RV,_V,LV,DV,IV,MV,iv,tp,NV,b6,PV,OV,T6,BV,$V,Au,vg,rp,fC,cwe,dz,UA,Gh,ep,fz,_u,uwe,YA,pz,up,pC,mv,mC,mz,gC,jA,ug,Ng,XA,gz,Pg,Og,FV,zV,GV,VV,WV,C6,av,w6,qV,k6,hp,UC,yz,KA,np,Bg,$g,HV,Fg,Lu,UV,YV,jV,zg,S6,XV,KV,ZV,QV,vz,Z1,xz,xg,gv,Gg,bz,bg,sv,La,jLe,Fi,hwe,$Et,dwe,FEt,fwe,zEt,pwe,GEt,mwe,VEt,gwe,WEt,ywe,qEt,vwe,HEt,xwe,UEt,bwe,YEt,Twe,jEt,Cwe,XEt,wwe,KEt,kwe,ZEt,Swe,QEt,JEt,e4t,t4t,r4t,n4t,i4t,a4t,s4t,o4t,l4t,c4t,u4t,h4t,d4t,f4t,An,$H,FH,zH,GH,VH,WH,qH,HH,UH,YH,jH,XH,KH,ZH,QH,p4t,m4t,g4t,y4t,Qi,Jo,Mn,v4t,vn=F(()=>{"use strict";T0t=Object.create,uw=Object.defineProperty,C0t=Object.getOwnPropertyDescriptor,JV=Object.getOwnPropertyNames,w0t=Object.getPrototypeOf,k0t=Object.prototype.hasOwnProperty,E=o((e,t)=>uw(e,"name",{value:t,configurable:!0}),"__name"),S0t=o((e,t)=>o(function(){return e&&(t=(0,e[JV(e)[0]])(e=0)),t},"__init"),"__esm"),zr=o((e,t)=>o(function(){return t||(0,e[JV(e)[0]])((t={exports:{}}).exports,t),t.exports},"__require"),"__commonJS"),yp=o((e,t)=>{for(var r in t)uw(e,r,{get:t[r],enumerable:!0})},"__export"),E6=o((e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of JV(t))!k0t.call(e,i)&&i!==r&&uw(e,i,{get:o(()=>t[i],"get"),enumerable:!(n=C0t(t,i))||n.enumerable});return e},"__copyProps"),mR=o((e,t,r)=>(E6(e,t,"default"),r&&E6(r,t,"default")),"__reExport"),eW=o((e,t,r)=>(r=e!=null?T0t(w0t(e)):{},E6(t||!e||!e.__esModule?uw(r,"default",{value:e,enumerable:!0}):r,e)),"__toESM"),tW=o(e=>E6(uw({},"__esModule",{value:!0}),e),"__toCommonJS"),gR={};yp(gR,{AnnotatedTextEdit:o(()=>Fh,"AnnotatedTextEdit"),ChangeAnnotation:o(()=>dg,"ChangeAnnotation"),ChangeAnnotationIdentifier:o(()=>qa,"ChangeAnnotationIdentifier"),CodeAction:o(()=>eG,"CodeAction"),CodeActionContext:o(()=>Jz,"CodeActionContext"),CodeActionKind:o(()=>Qz,"CodeActionKind"),CodeActionTriggerKind:o(()=>wC,"CodeActionTriggerKind"),CodeDescription:o(()=>Lz,"CodeDescription"),CodeLens:o(()=>tG,"CodeLens"),Color:o(()=>QA,"Color"),ColorInformation:o(()=>kz,"ColorInformation"),ColorPresentation:o(()=>Sz,"ColorPresentation"),Command:o(()=>hg,"Command"),CompletionItem:o(()=>zz,"CompletionItem"),CompletionItemKind:o(()=>Nz,"CompletionItemKind"),CompletionItemLabelDetails:o(()=>Fz,"CompletionItemLabelDetails"),CompletionItemTag:o(()=>Oz,"CompletionItemTag"),CompletionList:o(()=>Gz,"CompletionList"),CreateFile:o(()=>Q1,"CreateFile"),DeleteFile:o(()=>ev,"DeleteFile"),Diagnostic:o(()=>xC,"Diagnostic"),DiagnosticRelatedInformation:o(()=>JA,"DiagnosticRelatedInformation"),DiagnosticSeverity:o(()=>Rz,"DiagnosticSeverity"),DiagnosticTag:o(()=>_z,"DiagnosticTag"),DocumentHighlight:o(()=>Uz,"DocumentHighlight"),DocumentHighlightKind:o(()=>Hz,"DocumentHighlightKind"),DocumentLink:o(()=>nG,"DocumentLink"),DocumentSymbol:o(()=>Zz,"DocumentSymbol"),DocumentUri:o(()=>Tz,"DocumentUri"),EOL:o(()=>Awe,"EOL"),FoldingRange:o(()=>Az,"FoldingRange"),FoldingRangeKind:o(()=>Ez,"FoldingRangeKind"),FormattingOptions:o(()=>rG,"FormattingOptions"),Hover:o(()=>Vz,"Hover"),InlayHint:o(()=>dG,"InlayHint"),InlayHintKind:o(()=>r6,"InlayHintKind"),InlayHintLabelPart:o(()=>n6,"InlayHintLabelPart"),InlineCompletionContext:o(()=>vG,"InlineCompletionContext"),InlineCompletionItem:o(()=>pG,"InlineCompletionItem"),InlineCompletionList:o(()=>mG,"InlineCompletionList"),InlineCompletionTriggerKind:o(()=>gG,"InlineCompletionTriggerKind"),InlineValueContext:o(()=>hG,"InlineValueContext"),InlineValueEvaluatableExpression:o(()=>uG,"InlineValueEvaluatableExpression"),InlineValueText:o(()=>lG,"InlineValueText"),InlineValueVariableLookup:o(()=>cG,"InlineValueVariableLookup"),InsertReplaceEdit:o(()=>Bz,"InsertReplaceEdit"),InsertTextFormat:o(()=>Pz,"InsertTextFormat"),InsertTextMode:o(()=>$z,"InsertTextMode"),Location:o(()=>vC,"Location"),LocationLink:o(()=>wz,"LocationLink"),MarkedString:o(()=>CC,"MarkedString"),MarkupContent:o(()=>tv,"MarkupContent"),MarkupKind:o(()=>t6,"MarkupKind"),OptionalVersionedTextDocumentIdentifier:o(()=>TC,"OptionalVersionedTextDocumentIdentifier"),ParameterInformation:o(()=>Wz,"ParameterInformation"),Position:o(()=>En,"Position"),Range:o(()=>an,"Range"),RenameFile:o(()=>J1,"RenameFile"),SelectedCompletionInfo:o(()=>yG,"SelectedCompletionInfo"),SelectionRange:o(()=>iG,"SelectionRange"),SemanticTokenModifiers:o(()=>sG,"SemanticTokenModifiers"),SemanticTokenTypes:o(()=>aG,"SemanticTokenTypes"),SemanticTokens:o(()=>oG,"SemanticTokens"),SignatureInformation:o(()=>qz,"SignatureInformation"),StringValue:o(()=>fG,"StringValue"),SymbolInformation:o(()=>Xz,"SymbolInformation"),SymbolKind:o(()=>Yz,"SymbolKind"),SymbolTag:o(()=>jz,"SymbolTag"),TextDocument:o(()=>bG,"TextDocument"),TextDocumentEdit:o(()=>bC,"TextDocumentEdit"),TextDocumentIdentifier:o(()=>Dz,"TextDocumentIdentifier"),TextDocumentItem:o(()=>Mz,"TextDocumentItem"),TextEdit:o(()=>Ru,"TextEdit"),URI:o(()=>ZA,"URI"),VersionedTextDocumentIdentifier:o(()=>Iz,"VersionedTextDocumentIdentifier"),WorkspaceChange:o(()=>Ewe,"WorkspaceChange"),WorkspaceEdit:o(()=>e6,"WorkspaceEdit"),WorkspaceFolder:o(()=>xG,"WorkspaceFolder"),WorkspaceSymbol:o(()=>Kz,"WorkspaceSymbol"),integer:o(()=>Cz,"integer"),uinteger:o(()=>yC,"uinteger")});hw=S0t({"../../node_modules/.pnpm/vscode-languageserver-types@3.17.5/node_modules/vscode-languageserver-types/lib/esm/main.js"(){"use strict";(function(e){function t(r){return typeof r=="string"}o(t,"is"),E(t,"is"),e.is=t})(Tz||(Tz={})),(function(e){function t(r){return typeof r=="string"}o(t,"is"),E(t,"is"),e.is=t})(ZA||(ZA={})),(function(e){e.MIN_VALUE=-2147483648,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}o(t,"is"),E(t,"is"),e.is=t})(Cz||(Cz={})),(function(e){e.MIN_VALUE=0,e.MAX_VALUE=2147483647;function t(r){return typeof r=="number"&&e.MIN_VALUE<=r&&r<=e.MAX_VALUE}o(t,"is"),E(t,"is"),e.is=t})(yC||(yC={})),(function(e){function t(n,i){return n===Number.MAX_VALUE&&(n=yC.MAX_VALUE),i===Number.MAX_VALUE&&(i=yC.MAX_VALUE),{line:n,character:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.uinteger(i.line)&&nt.uinteger(i.character)}o(r,"is"),E(r,"is"),e.is=r})(En||(En={})),(function(e){function t(n,i,a,s){if(nt.uinteger(n)&&nt.uinteger(i)&&nt.uinteger(a)&&nt.uinteger(s))return{start:En.create(n,i),end:En.create(a,s)};if(En.is(n)&&En.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${s}]`)}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&En.is(i.start)&&En.is(i.end)}o(r,"is"),E(r,"is"),e.is=r})(an||(an={})),(function(e){function t(n,i){return{uri:n,range:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&an.is(i.range)&&(nt.string(i.uri)||nt.undefined(i.uri))}o(r,"is"),E(r,"is"),e.is=r})(vC||(vC={})),(function(e){function t(n,i,a,s){return{targetUri:n,targetRange:i,targetSelectionRange:a,originSelectionRange:s}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&an.is(i.targetRange)&&nt.string(i.targetUri)&&an.is(i.targetSelectionRange)&&(an.is(i.originSelectionRange)||nt.undefined(i.originSelectionRange))}o(r,"is"),E(r,"is"),e.is=r})(wz||(wz={})),(function(e){function t(n,i,a,s){return{red:n,green:i,blue:a,alpha:s}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.numberRange(i.red,0,1)&&nt.numberRange(i.green,0,1)&&nt.numberRange(i.blue,0,1)&&nt.numberRange(i.alpha,0,1)}o(r,"is"),E(r,"is"),e.is=r})(QA||(QA={})),(function(e){function t(n,i){return{range:n,color:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&an.is(i.range)&&QA.is(i.color)}o(r,"is"),E(r,"is"),e.is=r})(kz||(kz={})),(function(e){function t(n,i,a){return{label:n,textEdit:i,additionalTextEdits:a}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.string(i.label)&&(nt.undefined(i.textEdit)||Ru.is(i))&&(nt.undefined(i.additionalTextEdits)||nt.typedArray(i.additionalTextEdits,Ru.is))}o(r,"is"),E(r,"is"),e.is=r})(Sz||(Sz={})),(function(e){e.Comment="comment",e.Imports="imports",e.Region="region"})(Ez||(Ez={})),(function(e){function t(n,i,a,s,l,u){let h={startLine:n,endLine:i};return nt.defined(a)&&(h.startCharacter=a),nt.defined(s)&&(h.endCharacter=s),nt.defined(l)&&(h.kind=l),nt.defined(u)&&(h.collapsedText=u),h}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.uinteger(i.startLine)&&nt.uinteger(i.startLine)&&(nt.undefined(i.startCharacter)||nt.uinteger(i.startCharacter))&&(nt.undefined(i.endCharacter)||nt.uinteger(i.endCharacter))&&(nt.undefined(i.kind)||nt.string(i.kind))}o(r,"is"),E(r,"is"),e.is=r})(Az||(Az={})),(function(e){function t(n,i){return{location:n,message:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&vC.is(i.location)&&nt.string(i.message)}o(r,"is"),E(r,"is"),e.is=r})(JA||(JA={})),(function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4})(Rz||(Rz={})),(function(e){e.Unnecessary=1,e.Deprecated=2})(_z||(_z={})),(function(e){function t(r){let n=r;return nt.objectLiteral(n)&&nt.string(n.href)}o(t,"is"),E(t,"is"),e.is=t})(Lz||(Lz={})),(function(e){function t(n,i,a,s,l,u){let h={range:n,message:i};return nt.defined(a)&&(h.severity=a),nt.defined(s)&&(h.code=s),nt.defined(l)&&(h.source=l),nt.defined(u)&&(h.relatedInformation=u),h}o(t,"create"),E(t,"create"),e.create=t;function r(n){var i;let a=n;return nt.defined(a)&&an.is(a.range)&&nt.string(a.message)&&(nt.number(a.severity)||nt.undefined(a.severity))&&(nt.integer(a.code)||nt.string(a.code)||nt.undefined(a.code))&&(nt.undefined(a.codeDescription)||nt.string((i=a.codeDescription)===null||i===void 0?void 0:i.href))&&(nt.string(a.source)||nt.undefined(a.source))&&(nt.undefined(a.relatedInformation)||nt.typedArray(a.relatedInformation,JA.is))}o(r,"is"),E(r,"is"),e.is=r})(xC||(xC={})),(function(e){function t(n,i,...a){let s={title:n,command:i};return nt.defined(a)&&a.length>0&&(s.arguments=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.title)&&nt.string(i.command)}o(r,"is"),E(r,"is"),e.is=r})(hg||(hg={})),(function(e){function t(a,s){return{range:a,newText:s}}o(t,"replace"),E(t,"replace"),e.replace=t;function r(a,s){return{range:{start:a,end:a},newText:s}}o(r,"insert"),E(r,"insert"),e.insert=r;function n(a){return{range:a,newText:""}}o(n,"del"),E(n,"del"),e.del=n;function i(a){let s=a;return nt.objectLiteral(s)&&nt.string(s.newText)&&an.is(s.range)}o(i,"is"),E(i,"is"),e.is=i})(Ru||(Ru={})),(function(e){function t(n,i,a){let s={label:n};return i!==void 0&&(s.needsConfirmation=i),a!==void 0&&(s.description=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&nt.string(i.label)&&(nt.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(nt.string(i.description)||i.description===void 0)}o(r,"is"),E(r,"is"),e.is=r})(dg||(dg={})),(function(e){function t(r){let n=r;return nt.string(n)}o(t,"is"),E(t,"is"),e.is=t})(qa||(qa={})),(function(e){function t(a,s,l){return{range:a,newText:s,annotationId:l}}o(t,"replace"),E(t,"replace"),e.replace=t;function r(a,s,l){return{range:{start:a,end:a},newText:s,annotationId:l}}o(r,"insert"),E(r,"insert"),e.insert=r;function n(a,s){return{range:a,newText:"",annotationId:s}}o(n,"del"),E(n,"del"),e.del=n;function i(a){let s=a;return Ru.is(s)&&(dg.is(s.annotationId)||qa.is(s.annotationId))}o(i,"is"),E(i,"is"),e.is=i})(Fh||(Fh={})),(function(e){function t(n,i){return{textDocument:n,edits:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&TC.is(i.textDocument)&&Array.isArray(i.edits)}o(r,"is"),E(r,"is"),e.is=r})(bC||(bC={})),(function(e){function t(n,i,a){let s={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&i.kind==="create"&&nt.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||nt.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||nt.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||qa.is(i.annotationId))}o(r,"is"),E(r,"is"),e.is=r})(Q1||(Q1={})),(function(e){function t(n,i,a,s){let l={kind:"rename",oldUri:n,newUri:i};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(l.options=a),s!==void 0&&(l.annotationId=s),l}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&i.kind==="rename"&&nt.string(i.oldUri)&&nt.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||nt.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||nt.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||qa.is(i.annotationId))}o(r,"is"),E(r,"is"),e.is=r})(J1||(J1={})),(function(e){function t(n,i,a){let s={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&i.kind==="delete"&&nt.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||nt.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||nt.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||qa.is(i.annotationId))}o(r,"is"),E(r,"is"),e.is=r})(ev||(ev={})),(function(e){function t(r){let n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(i=>nt.string(i.kind)?Q1.is(i)||J1.is(i)||ev.is(i):bC.is(i)))}o(t,"is"),E(t,"is"),e.is=t})(e6||(e6={})),lC=class{static{o(this,"TextEditChangeImpl")}static{E(this,"TextEditChangeImpl")}constructor(e,t){this.edits=e,this.changeAnnotations=t}insert(e,t,r){let n,i;if(r===void 0?n=Ru.insert(e,t):qa.is(r)?(i=r,n=Fh.insert(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(r),n=Fh.insert(e,t,i)),this.edits.push(n),i!==void 0)return i}replace(e,t,r){let n,i;if(r===void 0?n=Ru.replace(e,t):qa.is(r)?(i=r,n=Fh.replace(e,t,r)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(r),n=Fh.replace(e,t,i)),this.edits.push(n),i!==void 0)return i}delete(e,t){let r,n;if(t===void 0?r=Ru.del(e):qa.is(t)?(n=t,r=Fh.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),n=this.changeAnnotations.manage(t),r=Fh.del(e,n)),this.edits.push(r),n!==void 0)return n}add(e){this.edits.push(e)}all(){return this.edits}clear(){this.edits.splice(0,this.edits.length)}assertChangeAnnotations(e){if(e===void 0)throw new Error("Text edit change is not configured to manage change annotations.")}},JF=class{static{o(this,"ChangeAnnotations")}static{E(this,"ChangeAnnotations")}constructor(e){this._annotations=e===void 0?Object.create(null):e,this._counter=0,this._size=0}all(){return this._annotations}get size(){return this._size}manage(e,t){let r;if(qa.is(e)?r=e:(r=this.nextId(),t=e),this._annotations[r]!==void 0)throw new Error(`Id ${r} is already in use.`);if(t===void 0)throw new Error(`No annotation provided for id ${r}`);return this._annotations[r]=t,this._size++,r}nextId(){return this._counter++,this._counter.toString()}},Ewe=class{static{o(this,"WorkspaceChange")}static{E(this,"WorkspaceChange")}constructor(e){this._textEditChanges=Object.create(null),e!==void 0?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new JF(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach(t=>{if(bC.is(t)){let r=new lC(t.edits,this._changeAnnotations);this._textEditChanges[t.textDocument.uri]=r}})):e.changes&&Object.keys(e.changes).forEach(t=>{let r=new lC(e.changes[t]);this._textEditChanges[t]=r})):this._workspaceEdit={}}get edit(){return this.initDocumentChanges(),this._changeAnnotations!==void 0&&(this._changeAnnotations.size===0?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit}getTextEditChange(e){if(TC.is(e)){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let t={uri:e.uri,version:e.version},r=this._textEditChanges[t.uri];if(!r){let n=[],i={textDocument:t,edits:n};this._workspaceEdit.documentChanges.push(i),r=new lC(n,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}else{if(this.initChanges(),this._workspaceEdit.changes===void 0)throw new Error("Workspace edit is not configured for normal text edit changes.");let t=this._textEditChanges[e];if(!t){let r=[];this._workspaceEdit.changes[e]=r,t=new lC(r),this._textEditChanges[e]=t}return t}}initDocumentChanges(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._changeAnnotations=new JF,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())}initChanges(){this._workspaceEdit.documentChanges===void 0&&this._workspaceEdit.changes===void 0&&(this._workspaceEdit.changes=Object.create(null))}createFile(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let n;dg.is(t)||qa.is(t)?n=t:r=t;let i,a;if(n===void 0?i=Q1.create(e,r):(a=qa.is(n)?n:this._changeAnnotations.manage(n),i=Q1.create(e,r,a)),this._workspaceEdit.documentChanges.push(i),a!==void 0)return a}renameFile(e,t,r,n){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let i;dg.is(r)||qa.is(r)?i=r:n=r;let a,s;if(i===void 0?a=J1.create(e,t,n):(s=qa.is(i)?i:this._changeAnnotations.manage(i),a=J1.create(e,t,n,s)),this._workspaceEdit.documentChanges.push(a),s!==void 0)return s}deleteFile(e,t,r){if(this.initDocumentChanges(),this._workspaceEdit.documentChanges===void 0)throw new Error("Workspace edit is not configured for document changes.");let n;dg.is(t)||qa.is(t)?n=t:r=t;let i,a;if(n===void 0?i=ev.create(e,r):(a=qa.is(n)?n:this._changeAnnotations.manage(n),i=ev.create(e,r,a)),this._workspaceEdit.documentChanges.push(i),a!==void 0)return a}},(function(e){function t(n){return{uri:n}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.uri)}o(r,"is"),E(r,"is"),e.is=r})(Dz||(Dz={})),(function(e){function t(n,i){return{uri:n,version:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.uri)&&nt.integer(i.version)}o(r,"is"),E(r,"is"),e.is=r})(Iz||(Iz={})),(function(e){function t(n,i){return{uri:n,version:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.uri)&&(i.version===null||nt.integer(i.version))}o(r,"is"),E(r,"is"),e.is=r})(TC||(TC={})),(function(e){function t(n,i,a,s){return{uri:n,languageId:i,version:a,text:s}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.string(i.uri)&&nt.string(i.languageId)&&nt.integer(i.version)&&nt.string(i.text)}o(r,"is"),E(r,"is"),e.is=r})(Mz||(Mz={})),(function(e){e.PlainText="plaintext",e.Markdown="markdown";function t(r){let n=r;return n===e.PlainText||n===e.Markdown}o(t,"is"),E(t,"is"),e.is=t})(t6||(t6={})),(function(e){function t(r){let n=r;return nt.objectLiteral(r)&&t6.is(n.kind)&&nt.string(n.value)}o(t,"is"),E(t,"is"),e.is=t})(tv||(tv={})),(function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25})(Nz||(Nz={})),(function(e){e.PlainText=1,e.Snippet=2})(Pz||(Pz={})),(function(e){e.Deprecated=1})(Oz||(Oz={})),(function(e){function t(n,i,a){return{newText:n,insert:i,replace:a}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&nt.string(i.newText)&&an.is(i.insert)&&an.is(i.replace)}o(r,"is"),E(r,"is"),e.is=r})(Bz||(Bz={})),(function(e){e.asIs=1,e.adjustIndentation=2})($z||($z={})),(function(e){function t(r){let n=r;return n&&(nt.string(n.detail)||n.detail===void 0)&&(nt.string(n.description)||n.description===void 0)}o(t,"is"),E(t,"is"),e.is=t})(Fz||(Fz={})),(function(e){function t(r){return{label:r}}o(t,"create"),E(t,"create"),e.create=t})(zz||(zz={})),(function(e){function t(r,n){return{items:r||[],isIncomplete:!!n}}o(t,"create"),E(t,"create"),e.create=t})(Gz||(Gz={})),(function(e){function t(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}o(t,"fromPlainText"),E(t,"fromPlainText"),e.fromPlainText=t;function r(n){let i=n;return nt.string(i)||nt.objectLiteral(i)&&nt.string(i.language)&&nt.string(i.value)}o(r,"is"),E(r,"is"),e.is=r})(CC||(CC={})),(function(e){function t(r){let n=r;return!!n&&nt.objectLiteral(n)&&(tv.is(n.contents)||CC.is(n.contents)||nt.typedArray(n.contents,CC.is))&&(r.range===void 0||an.is(r.range))}o(t,"is"),E(t,"is"),e.is=t})(Vz||(Vz={})),(function(e){function t(r,n){return n?{label:r,documentation:n}:{label:r}}o(t,"create"),E(t,"create"),e.create=t})(Wz||(Wz={})),(function(e){function t(r,n,...i){let a={label:r};return nt.defined(n)&&(a.documentation=n),nt.defined(i)?a.parameters=i:a.parameters=[],a}o(t,"create"),E(t,"create"),e.create=t})(qz||(qz={})),(function(e){e.Text=1,e.Read=2,e.Write=3})(Hz||(Hz={})),(function(e){function t(r,n){let i={range:r};return nt.number(n)&&(i.kind=n),i}o(t,"create"),E(t,"create"),e.create=t})(Uz||(Uz={})),(function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26})(Yz||(Yz={})),(function(e){e.Deprecated=1})(jz||(jz={})),(function(e){function t(r,n,i,a,s){let l={name:r,kind:n,location:{uri:a,range:i}};return s&&(l.containerName=s),l}o(t,"create"),E(t,"create"),e.create=t})(Xz||(Xz={})),(function(e){function t(r,n,i,a){return a!==void 0?{name:r,kind:n,location:{uri:i,range:a}}:{name:r,kind:n,location:{uri:i}}}o(t,"create"),E(t,"create"),e.create=t})(Kz||(Kz={})),(function(e){function t(n,i,a,s,l,u){let h={name:n,detail:i,kind:a,range:s,selectionRange:l};return u!==void 0&&(h.children=u),h}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&nt.string(i.name)&&nt.number(i.kind)&&an.is(i.range)&&an.is(i.selectionRange)&&(i.detail===void 0||nt.string(i.detail))&&(i.deprecated===void 0||nt.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}o(r,"is"),E(r,"is"),e.is=r})(Zz||(Zz={})),(function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"})(Qz||(Qz={})),(function(e){e.Invoked=1,e.Automatic=2})(wC||(wC={})),(function(e){function t(n,i,a){let s={diagnostics:n};return i!=null&&(s.only=i),a!=null&&(s.triggerKind=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.typedArray(i.diagnostics,xC.is)&&(i.only===void 0||nt.typedArray(i.only,nt.string))&&(i.triggerKind===void 0||i.triggerKind===wC.Invoked||i.triggerKind===wC.Automatic)}o(r,"is"),E(r,"is"),e.is=r})(Jz||(Jz={})),(function(e){function t(n,i,a){let s={title:n},l=!0;return typeof i=="string"?(l=!1,s.kind=i):hg.is(i)?s.command=i:s.edit=i,l&&a!==void 0&&(s.kind=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i&&nt.string(i.title)&&(i.diagnostics===void 0||nt.typedArray(i.diagnostics,xC.is))&&(i.kind===void 0||nt.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||hg.is(i.command))&&(i.isPreferred===void 0||nt.boolean(i.isPreferred))&&(i.edit===void 0||e6.is(i.edit))}o(r,"is"),E(r,"is"),e.is=r})(eG||(eG={})),(function(e){function t(n,i){let a={range:n};return nt.defined(i)&&(a.data=i),a}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&an.is(i.range)&&(nt.undefined(i.command)||hg.is(i.command))}o(r,"is"),E(r,"is"),e.is=r})(tG||(tG={})),(function(e){function t(n,i){return{tabSize:n,insertSpaces:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&nt.uinteger(i.tabSize)&&nt.boolean(i.insertSpaces)}o(r,"is"),E(r,"is"),e.is=r})(rG||(rG={})),(function(e){function t(n,i,a){return{range:n,target:i,data:a}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&an.is(i.range)&&(nt.undefined(i.target)||nt.string(i.target))}o(r,"is"),E(r,"is"),e.is=r})(nG||(nG={})),(function(e){function t(n,i){return{range:n,parent:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&an.is(i.range)&&(i.parent===void 0||e.is(i.parent))}o(r,"is"),E(r,"is"),e.is=r})(iG||(iG={})),(function(e){e.namespace="namespace",e.type="type",e.class="class",e.enum="enum",e.interface="interface",e.struct="struct",e.typeParameter="typeParameter",e.parameter="parameter",e.variable="variable",e.property="property",e.enumMember="enumMember",e.event="event",e.function="function",e.method="method",e.macro="macro",e.keyword="keyword",e.modifier="modifier",e.comment="comment",e.string="string",e.number="number",e.regexp="regexp",e.operator="operator",e.decorator="decorator"})(aG||(aG={})),(function(e){e.declaration="declaration",e.definition="definition",e.readonly="readonly",e.static="static",e.deprecated="deprecated",e.abstract="abstract",e.async="async",e.modification="modification",e.documentation="documentation",e.defaultLibrary="defaultLibrary"})(sG||(sG={})),(function(e){function t(r){let n=r;return nt.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}o(t,"is"),E(t,"is"),e.is=t})(oG||(oG={})),(function(e){function t(n,i){return{range:n,text:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i!=null&&an.is(i.range)&&nt.string(i.text)}o(r,"is"),E(r,"is"),e.is=r})(lG||(lG={})),(function(e){function t(n,i,a){return{range:n,variableName:i,caseSensitiveLookup:a}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i!=null&&an.is(i.range)&&nt.boolean(i.caseSensitiveLookup)&&(nt.string(i.variableName)||i.variableName===void 0)}o(r,"is"),E(r,"is"),e.is=r})(cG||(cG={})),(function(e){function t(n,i){return{range:n,expression:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return i!=null&&an.is(i.range)&&(nt.string(i.expression)||i.expression===void 0)}o(r,"is"),E(r,"is"),e.is=r})(uG||(uG={})),(function(e){function t(n,i){return{frameId:n,stoppedLocation:i}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.defined(i)&&an.is(n.stoppedLocation)}o(r,"is"),E(r,"is"),e.is=r})(hG||(hG={})),(function(e){e.Type=1,e.Parameter=2;function t(r){return r===1||r===2}o(t,"is"),E(t,"is"),e.is=t})(r6||(r6={})),(function(e){function t(n){return{value:n}}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&(i.tooltip===void 0||nt.string(i.tooltip)||tv.is(i.tooltip))&&(i.location===void 0||vC.is(i.location))&&(i.command===void 0||hg.is(i.command))}o(r,"is"),E(r,"is"),e.is=r})(n6||(n6={})),(function(e){function t(n,i,a){let s={position:n,label:i};return a!==void 0&&(s.kind=a),s}o(t,"create"),E(t,"create"),e.create=t;function r(n){let i=n;return nt.objectLiteral(i)&&En.is(i.position)&&(nt.string(i.label)||nt.typedArray(i.label,n6.is))&&(i.kind===void 0||r6.is(i.kind))&&i.textEdits===void 0||nt.typedArray(i.textEdits,Ru.is)&&(i.tooltip===void 0||nt.string(i.tooltip)||tv.is(i.tooltip))&&(i.paddingLeft===void 0||nt.boolean(i.paddingLeft))&&(i.paddingRight===void 0||nt.boolean(i.paddingRight))}o(r,"is"),E(r,"is"),e.is=r})(dG||(dG={})),(function(e){function t(r){return{kind:"snippet",value:r}}o(t,"createSnippet"),E(t,"createSnippet"),e.createSnippet=t})(fG||(fG={})),(function(e){function t(r,n,i,a){return{insertText:r,filterText:n,range:i,command:a}}o(t,"create"),E(t,"create"),e.create=t})(pG||(pG={})),(function(e){function t(r){return{items:r}}o(t,"create"),E(t,"create"),e.create=t})(mG||(mG={})),(function(e){e.Invoked=0,e.Automatic=1})(gG||(gG={})),(function(e){function t(r,n){return{range:r,text:n}}o(t,"create"),E(t,"create"),e.create=t})(yG||(yG={})),(function(e){function t(r,n){return{triggerKind:r,selectedCompletionInfo:n}}o(t,"create"),E(t,"create"),e.create=t})(vG||(vG={})),(function(e){function t(r){let n=r;return nt.objectLiteral(n)&&ZA.is(n.uri)&&nt.string(n.name)}o(t,"is"),E(t,"is"),e.is=t})(xG||(xG={})),Awe=[` +`,`\r +`,"\r"],(function(e){function t(a,s,l,u){return new PTe(a,s,l,u)}o(t,"create"),E(t,"create"),e.create=t;function r(a){let s=a;return!!(nt.defined(s)&&nt.string(s.uri)&&(nt.undefined(s.languageId)||nt.string(s.languageId))&&nt.uinteger(s.lineCount)&&nt.func(s.getText)&&nt.func(s.positionAt)&&nt.func(s.offsetAt))}o(r,"is"),E(r,"is"),e.is=r;function n(a,s){let l=a.getText(),u=i(s,(d,f)=>{let p=d.range.start.line-f.range.start.line;return p===0?d.range.start.character-f.range.start.character:p}),h=l.length;for(let d=u.length-1;d>=0;d--){let f=u[d],p=a.offsetAt(f.range.start),m=a.offsetAt(f.range.end);if(m<=h)l=l.substring(0,p)+f.newText+l.substring(m,l.length);else throw new Error("Overlapping edit");h=p}return l}o(n,"applyEdits"),E(n,"applyEdits"),e.applyEdits=n;function i(a,s){if(a.length<=1)return a;let l=a.length/2|0,u=a.slice(0,l),h=a.slice(l);i(u,s),i(h,s);let d=0,f=0,p=0;for(;d0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),r=0,n=t.length;if(n===0)return En.create(0,e);for(;re?n=a:r=a+1}let i=r-1;return En.create(i,e-t[i])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let r=t[e.line],n=e.line+1"u"}o(n,"undefined2"),E(n,"undefined"),e.undefined=n;function i(m){return m===!0||m===!1}o(i,"boolean"),E(i,"boolean"),e.boolean=i;function a(m){return t.call(m)==="[object String]"}o(a,"string"),E(a,"string"),e.string=a;function s(m){return t.call(m)==="[object Number]"}o(s,"number"),E(s,"number"),e.number=s;function l(m,g,y){return t.call(m)==="[object Number]"&&g<=m&&m<=y}o(l,"numberRange"),E(l,"numberRange"),e.numberRange=l;function u(m){return t.call(m)==="[object Number]"&&-2147483648<=m&&m<=2147483647}o(u,"integer2"),E(u,"integer"),e.integer=u;function h(m){return t.call(m)==="[object Number]"&&0<=m&&m<=2147483647}o(h,"uinteger2"),E(h,"uinteger"),e.uinteger=h;function d(m){return t.call(m)==="[object Function]"}o(d,"func"),E(d,"func"),e.func=d;function f(m){return m!==null&&typeof m=="object"}o(f,"objectLiteral"),E(f,"objectLiteral"),e.objectLiteral=f;function p(m,g){return Array.isArray(m)&&m.every(g)}o(p,"typedArray"),E(p,"typedArray"),e.typedArray=p})(nt||(nt={}))}}),Qg=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/ral.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t;function r(){if(t===void 0)throw new Error("No runtime abstraction layer installed");return t}o(r,"RAL"),E(r,"RAL"),(function(n){function i(a){if(a===void 0)throw new Error("No runtime abstraction layer provided");t=a}o(i,"install"),E(i,"install"),n.install=i})(r||(r={})),e.default=r}}),dw=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/is.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0;function t(u){return u===!0||u===!1}o(t,"boolean"),E(t,"boolean"),e.boolean=t;function r(u){return typeof u=="string"||u instanceof String}o(r,"string"),E(r,"string"),e.string=r;function n(u){return typeof u=="number"||u instanceof Number}o(n,"number"),E(n,"number"),e.number=n;function i(u){return u instanceof Error}o(i,"error"),E(i,"error"),e.error=i;function a(u){return typeof u=="function"}o(a,"func"),E(a,"func"),e.func=a;function s(u){return Array.isArray(u)}o(s,"array"),E(s,"array"),e.array=s;function l(u){return s(u)&&u.every(h=>r(h))}o(l,"stringArray"),E(l,"stringArray"),e.stringArray=l}}),Iv=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/events.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Emitter=e.Event=void 0;var t=Qg(),r;(function(a){let s={dispose(){}};a.None=function(){return s}})(r||(e.Event=r={}));var n=class{static{o(this,"CallbackList")}static{E(this,"CallbackList")}add(a,s=null,l){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(a),this._contexts.push(s),Array.isArray(l)&&l.push({dispose:E(()=>this.remove(a,s),"dispose")})}remove(a,s=null){if(!this._callbacks)return;let l=!1;for(let u=0,h=this._callbacks.length;u{this._callbacks||(this._callbacks=new n),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(s,l);let h={dispose:E(()=>{this._callbacks&&(this._callbacks.remove(s,l),h.dispose=Rwe._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))},"dispose")};return Array.isArray(u)&&u.push(h),h}),this._event}fire(s){this._callbacks&&this._callbacks.invoke.call(this._callbacks,s)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};e.Emitter=i,i._noop=function(){}}}),yR=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/cancellation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CancellationTokenSource=e.CancellationToken=void 0;var t=Qg(),r=dw(),n=Iv(),i;(function(u){u.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:n.Event.None}),u.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:n.Event.None});function h(d){let f=d;return f&&(f===u.None||f===u.Cancelled||r.boolean(f.isCancellationRequested)&&!!f.onCancellationRequested)}o(h,"is"),E(h,"is"),u.is=h})(i||(e.CancellationToken=i={}));var a=Object.freeze(function(u,h){let d=(0,t.default)().timer.setTimeout(u.bind(h),0);return{dispose(){d.dispose()}}}),s=class{static{o(this,"MutableToken")}static{E(this,"MutableToken")}constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?a:(this._emitter||(this._emitter=new n.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},l=class{static{o(this,"CancellationTokenSource3")}static{E(this,"CancellationTokenSource")}get token(){return this._token||(this._token=new s),this._token}cancel(){this._token?this._token.cancel():this._token=i.Cancelled}dispose(){this._token?this._token instanceof s&&this._token.dispose():this._token=i.None}};e.CancellationTokenSource=l}}),_we=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messages.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Message=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType=e.RequestType0=e.AbstractMessageSignature=e.ParameterStructures=e.ResponseError=e.ErrorCodes=void 0;var t=dw(),r;(function(A){A.ParseError=-32700,A.InvalidRequest=-32600,A.MethodNotFound=-32601,A.InvalidParams=-32602,A.InternalError=-32603,A.jsonrpcReservedErrorRangeStart=-32099,A.serverErrorStart=-32099,A.MessageWriteError=-32099,A.MessageReadError=-32098,A.PendingResponseRejected=-32097,A.ConnectionInactive=-32096,A.ServerNotInitialized=-32002,A.UnknownErrorCode=-32001,A.jsonrpcReservedErrorRangeEnd=-32e3,A.serverErrorEnd=-32e3})(r||(e.ErrorCodes=r={}));var n=class Lwe extends Error{static{o(this,"_ResponseError")}static{E(this,"ResponseError")}constructor(M,D,P){super(D),this.code=t.number(M)?M:r.UnknownErrorCode,this.data=P,Object.setPrototypeOf(this,Lwe.prototype)}toJson(){let M={code:this.code,message:this.message};return this.data!==void 0&&(M.data=this.data),M}};e.ResponseError=n;var i=class i6{static{o(this,"_ParameterStructures")}static{E(this,"ParameterStructures")}constructor(M){this.kind=M}static is(M){return M===i6.auto||M===i6.byName||M===i6.byPosition}toString(){return this.kind}};e.ParameterStructures=i,i.auto=new i("auto"),i.byPosition=new i("byPosition"),i.byName=new i("byName");var a=class{static{o(this,"AbstractMessageSignature")}static{E(this,"AbstractMessageSignature")}constructor(A,M){this.method=A,this.numberOfParams=M}get parameterStructures(){return i.auto}};e.AbstractMessageSignature=a;var s=class extends a{static{o(this,"RequestType0")}static{E(this,"RequestType0")}constructor(A){super(A,0)}};e.RequestType0=s;var l=class extends a{static{o(this,"RequestType")}static{E(this,"RequestType")}constructor(A,M=i.auto){super(A,1),this._parameterStructures=M}get parameterStructures(){return this._parameterStructures}};e.RequestType=l;var u=class extends a{static{o(this,"RequestType1")}static{E(this,"RequestType1")}constructor(A,M=i.auto){super(A,1),this._parameterStructures=M}get parameterStructures(){return this._parameterStructures}};e.RequestType1=u;var h=class extends a{static{o(this,"RequestType2")}static{E(this,"RequestType2")}constructor(A){super(A,2)}};e.RequestType2=h;var d=class extends a{static{o(this,"RequestType3")}static{E(this,"RequestType3")}constructor(A){super(A,3)}};e.RequestType3=d;var f=class extends a{static{o(this,"RequestType4")}static{E(this,"RequestType4")}constructor(A){super(A,4)}};e.RequestType4=f;var p=class extends a{static{o(this,"RequestType5")}static{E(this,"RequestType5")}constructor(A){super(A,5)}};e.RequestType5=p;var m=class extends a{static{o(this,"RequestType6")}static{E(this,"RequestType6")}constructor(A){super(A,6)}};e.RequestType6=m;var g=class extends a{static{o(this,"RequestType7")}static{E(this,"RequestType7")}constructor(A){super(A,7)}};e.RequestType7=g;var y=class extends a{static{o(this,"RequestType8")}static{E(this,"RequestType8")}constructor(A){super(A,8)}};e.RequestType8=y;var v=class extends a{static{o(this,"RequestType9")}static{E(this,"RequestType9")}constructor(A){super(A,9)}};e.RequestType9=v;var x=class extends a{static{o(this,"NotificationType")}static{E(this,"NotificationType")}constructor(A,M=i.auto){super(A,1),this._parameterStructures=M}get parameterStructures(){return this._parameterStructures}};e.NotificationType=x;var b=class extends a{static{o(this,"NotificationType0")}static{E(this,"NotificationType0")}constructor(A){super(A,0)}};e.NotificationType0=b;var T=class extends a{static{o(this,"NotificationType1")}static{E(this,"NotificationType1")}constructor(A,M=i.auto){super(A,1),this._parameterStructures=M}get parameterStructures(){return this._parameterStructures}};e.NotificationType1=T;var k=class extends a{static{o(this,"NotificationType2")}static{E(this,"NotificationType2")}constructor(A){super(A,2)}};e.NotificationType2=k;var C=class extends a{static{o(this,"NotificationType3")}static{E(this,"NotificationType3")}constructor(A){super(A,3)}};e.NotificationType3=C;var w=class extends a{static{o(this,"NotificationType4")}static{E(this,"NotificationType4")}constructor(A){super(A,4)}};e.NotificationType4=w;var S=class extends a{static{o(this,"NotificationType5")}static{E(this,"NotificationType5")}constructor(A){super(A,5)}};e.NotificationType5=S;var R=class extends a{static{o(this,"NotificationType6")}static{E(this,"NotificationType6")}constructor(A){super(A,6)}};e.NotificationType6=R;var L=class extends a{static{o(this,"NotificationType7")}static{E(this,"NotificationType7")}constructor(A){super(A,7)}};e.NotificationType7=L;var N=class extends a{static{o(this,"NotificationType8")}static{E(this,"NotificationType8")}constructor(A){super(A,8)}};e.NotificationType8=N;var I=class extends a{static{o(this,"NotificationType9")}static{E(this,"NotificationType9")}constructor(A){super(A,9)}};e.NotificationType9=I;var _;(function(A){function M(B){let O=B;return O&&t.string(O.method)&&(t.string(O.id)||t.number(O.id))}o(M,"isRequest"),E(M,"isRequest"),A.isRequest=M;function D(B){let O=B;return O&&t.string(O.method)&&B.id===void 0}o(D,"isNotification"),E(D,"isNotification"),A.isNotification=D;function P(B){let O=B;return O&&(O.result!==void 0||!!O.error)&&(t.string(O.id)||t.number(O.id)||O.id===null)}o(P,"isResponse"),E(P,"isResponse"),A.isResponse=P})(_||(e.Message=_={}))}}),Dwe=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/linkedMap.js"(e){"use strict";var t;Object.defineProperty(e,"__esModule",{value:!0}),e.LRUCache=e.LinkedMap=e.Touch=void 0;var r;(function(a){a.None=0,a.First=1,a.AsOld=a.First,a.Last=2,a.AsNew=a.Last})(r||(e.Touch=r={}));var n=class{static{o(this,"LinkedMap")}static{E(this,"LinkedMap")}constructor(){this[t]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){return this._head?.value}get last(){return this._tail?.value}has(a){return this._map.has(a)}get(a,s=r.None){let l=this._map.get(a);if(l)return s!==r.None&&this.touch(l,s),l.value}set(a,s,l=r.None){let u=this._map.get(a);if(u)u.value=s,l!==r.None&&this.touch(u,l);else{switch(u={key:a,value:s,next:void 0,previous:void 0},l){case r.None:this.addItemLast(u);break;case r.First:this.addItemFirst(u);break;case r.Last:this.addItemLast(u);break;default:this.addItemLast(u);break}this._map.set(a,u),this._size++}return this}delete(a){return!!this.remove(a)}remove(a){let s=this._map.get(a);if(s)return this._map.delete(a),this.removeItem(s),this._size--,s.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");let a=this._head;return this._map.delete(a.key),this.removeItem(a),this._size--,a.value}forEach(a,s){let l=this._state,u=this._head;for(;u;){if(s?a.bind(s)(u.value,u.key,this):a(u.value,u.key,this),this._state!==l)throw new Error("LinkedMap got modified during iteration.");u=u.next}}keys(){let a=this._state,s=this._head,l={[Symbol.iterator]:()=>l,next:E(()=>{if(this._state!==a)throw new Error("LinkedMap got modified during iteration.");if(s){let u={value:s.key,done:!1};return s=s.next,u}else return{value:void 0,done:!0}},"next")};return l}values(){let a=this._state,s=this._head,l={[Symbol.iterator]:()=>l,next:E(()=>{if(this._state!==a)throw new Error("LinkedMap got modified during iteration.");if(s){let u={value:s.value,done:!1};return s=s.next,u}else return{value:void 0,done:!0}},"next")};return l}entries(){let a=this._state,s=this._head,l={[Symbol.iterator]:()=>l,next:E(()=>{if(this._state!==a)throw new Error("LinkedMap got modified during iteration.");if(s){let u={value:[s.key,s.value],done:!1};return s=s.next,u}else return{value:void 0,done:!0}},"next")};return l}[(t=Symbol.toStringTag,Symbol.iterator)](){return this.entries()}trimOld(a){if(a>=this.size)return;if(a===0){this.clear();return}let s=this._head,l=this.size;for(;s&&l>a;)this._map.delete(s.key),s=s.next,l--;this._head=s,this._size=l,s&&(s.previous=void 0),this._state++}addItemFirst(a){if(!this._head&&!this._tail)this._tail=a;else if(this._head)a.next=this._head,this._head.previous=a;else throw new Error("Invalid list");this._head=a,this._state++}addItemLast(a){if(!this._head&&!this._tail)this._head=a;else if(this._tail)a.previous=this._tail,this._tail.next=a;else throw new Error("Invalid list");this._tail=a,this._state++}removeItem(a){if(a===this._head&&a===this._tail)this._head=void 0,this._tail=void 0;else if(a===this._head){if(!a.next)throw new Error("Invalid list");a.next.previous=void 0,this._head=a.next}else if(a===this._tail){if(!a.previous)throw new Error("Invalid list");a.previous.next=void 0,this._tail=a.previous}else{let s=a.next,l=a.previous;if(!s||!l)throw new Error("Invalid list");s.previous=l,l.next=s}a.next=void 0,a.previous=void 0,this._state++}touch(a,s){if(!this._head||!this._tail)throw new Error("Invalid list");if(!(s!==r.First&&s!==r.Last)){if(s===r.First){if(a===this._head)return;let l=a.next,u=a.previous;a===this._tail?(u.next=void 0,this._tail=u):(l.previous=u,u.next=l),a.previous=void 0,a.next=this._head,this._head.previous=a,this._head=a,this._state++}else if(s===r.Last){if(a===this._tail)return;let l=a.next,u=a.previous;a===this._head?(l.previous=void 0,this._head=l):(l.previous=u,u.next=l),a.next=void 0,a.previous=this._tail,this._tail.next=a,this._tail=a,this._state++}}}toJSON(){let a=[];return this.forEach((s,l)=>{a.push([l,s])}),a}fromJSON(a){this.clear();for(let[s,l]of a)this.set(s,l)}};e.LinkedMap=n;var i=class extends n{static{o(this,"LRUCache")}static{E(this,"LRUCache")}constructor(a,s=1){super(),this._limit=a,this._ratio=Math.min(Math.max(0,s),1)}get limit(){return this._limit}set limit(a){this._limit=a,this.checkTrim()}get ratio(){return this._ratio}set ratio(a){this._ratio=Math.min(Math.max(0,a),1),this.checkTrim()}get(a,s=r.AsNew){return super.get(a,s)}peek(a){return super.get(a,r.None)}set(a,s){return super.set(a,s,r.Last),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}};e.LRUCache=i}}),E0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/disposable.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Disposable=void 0;var t;(function(r){function n(i){return{dispose:i}}o(n,"create"),E(n,"create"),r.create=n})(t||(e.Disposable=t={}))}}),A0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=void 0;var t=yR(),r;(function(l){l.Continue=0,l.Cancelled=1})(r||(r={}));var n=class{static{o(this,"SharedArraySenderStrategy")}static{E(this,"SharedArraySenderStrategy")}constructor(){this.buffers=new Map}enableCancellation(l){if(l.id===null)return;let u=new SharedArrayBuffer(4),h=new Int32Array(u,0,1);h[0]=r.Continue,this.buffers.set(l.id,u),l.$cancellationData=u}async sendCancellation(l,u){let h=this.buffers.get(u);if(h===void 0)return;let d=new Int32Array(h,0,1);Atomics.store(d,0,r.Cancelled)}cleanup(l){this.buffers.delete(l)}dispose(){this.buffers.clear()}};e.SharedArraySenderStrategy=n;var i=class{static{o(this,"SharedArrayBufferCancellationToken")}static{E(this,"SharedArrayBufferCancellationToken")}constructor(l){this.data=new Int32Array(l,0,1)}get isCancellationRequested(){return Atomics.load(this.data,0)===r.Cancelled}get onCancellationRequested(){throw new Error("Cancellation over SharedArrayBuffer doesn't support cancellation events")}},a=class{static{o(this,"SharedArrayBufferCancellationTokenSource")}static{E(this,"SharedArrayBufferCancellationTokenSource")}constructor(l){this.token=new i(l)}cancel(){}dispose(){}},s=class{static{o(this,"SharedArrayReceiverStrategy")}static{E(this,"SharedArrayReceiverStrategy")}constructor(){this.kind="request"}createCancellationTokenSource(l){let u=l.$cancellationData;return u===void 0?new t.CancellationTokenSource:new a(u)}};e.SharedArrayReceiverStrategy=s}}),Iwe=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/semaphore.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Semaphore=void 0;var t=Qg(),r=class{static{o(this,"Semaphore")}static{E(this,"Semaphore")}constructor(n=1){if(n<=0)throw new Error("Capacity must be greater than 0");this._capacity=n,this._active=0,this._waiting=[]}lock(n){return new Promise((i,a)=>{this._waiting.push({thunk:n,resolve:i,reject:a}),this.runNext()})}get active(){return this._active}runNext(){this._waiting.length===0||this._active===this._capacity||(0,t.default)().timer.setImmediate(()=>this.doRunNext())}doRunNext(){if(this._waiting.length===0||this._active===this._capacity)return;let n=this._waiting.shift();if(this._active++,this._active>this._capacity)throw new Error("To many thunks active");try{let i=n.thunk();i instanceof Promise?i.then(a=>{this._active--,n.resolve(a),this.runNext()},a=>{this._active--,n.reject(a),this.runNext()}):(this._active--,n.resolve(i),this.runNext())}catch(i){this._active--,n.reject(i),this.runNext()}}};e.Semaphore=r}}),R0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageReader.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=void 0;var t=Qg(),r=dw(),n=Iv(),i=Iwe(),a;(function(h){function d(f){let p=f;return p&&r.func(p.listen)&&r.func(p.dispose)&&r.func(p.onError)&&r.func(p.onClose)&&r.func(p.onPartialMessage)}o(d,"is"),E(d,"is"),h.is=d})(a||(e.MessageReader=a={}));var s=class{static{o(this,"AbstractMessageReader")}static{E(this,"AbstractMessageReader")}constructor(){this.errorEmitter=new n.Emitter,this.closeEmitter=new n.Emitter,this.partialMessageEmitter=new n.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(h){this.errorEmitter.fire(this.asError(h))}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}get onPartialMessage(){return this.partialMessageEmitter.event}firePartialMessage(h){this.partialMessageEmitter.fire(h)}asError(h){return h instanceof Error?h:new Error(`Reader received error. Reason: ${r.string(h.message)?h.message:"unknown"}`)}};e.AbstractMessageReader=s;var l;(function(h){function d(f){let p,m,g,y=new Map,v,x=new Map;if(f===void 0||typeof f=="string")p=f??"utf-8";else{if(p=f.charset??"utf-8",f.contentDecoder!==void 0&&(g=f.contentDecoder,y.set(g.name,g)),f.contentDecoders!==void 0)for(let b of f.contentDecoders)y.set(b.name,b);if(f.contentTypeDecoder!==void 0&&(v=f.contentTypeDecoder,x.set(v.name,v)),f.contentTypeDecoders!==void 0)for(let b of f.contentTypeDecoders)x.set(b.name,b)}return v===void 0&&(v=(0,t.default)().applicationJson.decoder,x.set(v.name,v)),{charset:p,contentDecoder:g,contentDecoders:y,contentTypeDecoder:v,contentTypeDecoders:x}}o(d,"fromOptions"),E(d,"fromOptions"),h.fromOptions=d})(l||(l={}));var u=class extends s{static{o(this,"ReadableStreamMessageReader")}static{E(this,"ReadableStreamMessageReader")}constructor(h,d){super(),this.readable=h,this.options=l.fromOptions(d),this.buffer=(0,t.default)().messageBuffer.create(this.options.charset),this._partialMessageTimeout=1e4,this.nextMessageLength=-1,this.messageToken=0,this.readSemaphore=new i.Semaphore(1)}set partialMessageTimeout(h){this._partialMessageTimeout=h}get partialMessageTimeout(){return this._partialMessageTimeout}listen(h){this.nextMessageLength=-1,this.messageToken=0,this.partialMessageTimer=void 0,this.callback=h;let d=this.readable.onData(f=>{this.onData(f)});return this.readable.onError(f=>this.fireError(f)),this.readable.onClose(()=>this.fireClose()),d}onData(h){try{for(this.buffer.append(h);;){if(this.nextMessageLength===-1){let f=this.buffer.tryReadHeaders(!0);if(!f)return;let p=f.get("content-length");if(!p){this.fireError(new Error(`Header must provide a Content-Length property. +${JSON.stringify(Object.fromEntries(f))}`));return}let m=parseInt(p);if(isNaN(m)){this.fireError(new Error(`Content-Length value must be a number. Got ${p}`));return}this.nextMessageLength=m}let d=this.buffer.tryReadBody(this.nextMessageLength);if(d===void 0){this.setPartialMessageTimer();return}this.clearPartialMessageTimer(),this.nextMessageLength=-1,this.readSemaphore.lock(async()=>{let f=this.options.contentDecoder!==void 0?await this.options.contentDecoder.decode(d):d,p=await this.options.contentTypeDecoder.decode(f,this.options);this.callback(p)}).catch(f=>{this.fireError(f)})}}catch(d){this.fireError(d)}}clearPartialMessageTimer(){this.partialMessageTimer&&(this.partialMessageTimer.dispose(),this.partialMessageTimer=void 0)}setPartialMessageTimer(){this.clearPartialMessageTimer(),!(this._partialMessageTimeout<=0)&&(this.partialMessageTimer=(0,t.default)().timer.setTimeout((h,d)=>{this.partialMessageTimer=void 0,h===this.messageToken&&(this.firePartialMessage({messageToken:h,waitingTime:d}),this.setPartialMessageTimer())},this._partialMessageTimeout,this.messageToken,this._partialMessageTimeout))}};e.ReadableStreamMessageReader=u}}),_0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageWriter.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=void 0;var t=Qg(),r=dw(),n=Iwe(),i=Iv(),a="Content-Length: ",s=`\r +`,l;(function(f){function p(m){let g=m;return g&&r.func(g.dispose)&&r.func(g.onClose)&&r.func(g.onError)&&r.func(g.write)}o(p,"is"),E(p,"is"),f.is=p})(l||(e.MessageWriter=l={}));var u=class{static{o(this,"AbstractMessageWriter")}static{E(this,"AbstractMessageWriter")}constructor(){this.errorEmitter=new i.Emitter,this.closeEmitter=new i.Emitter}dispose(){this.errorEmitter.dispose(),this.closeEmitter.dispose()}get onError(){return this.errorEmitter.event}fireError(f,p,m){this.errorEmitter.fire([this.asError(f),p,m])}get onClose(){return this.closeEmitter.event}fireClose(){this.closeEmitter.fire(void 0)}asError(f){return f instanceof Error?f:new Error(`Writer received error. Reason: ${r.string(f.message)?f.message:"unknown"}`)}};e.AbstractMessageWriter=u;var h;(function(f){function p(m){return m===void 0||typeof m=="string"?{charset:m??"utf-8",contentTypeEncoder:(0,t.default)().applicationJson.encoder}:{charset:m.charset??"utf-8",contentEncoder:m.contentEncoder,contentTypeEncoder:m.contentTypeEncoder??(0,t.default)().applicationJson.encoder}}o(p,"fromOptions"),E(p,"fromOptions"),f.fromOptions=p})(h||(h={}));var d=class extends u{static{o(this,"WriteableStreamMessageWriter")}static{E(this,"WriteableStreamMessageWriter")}constructor(f,p){super(),this.writable=f,this.options=h.fromOptions(p),this.errorCount=0,this.writeSemaphore=new n.Semaphore(1),this.writable.onError(m=>this.fireError(m)),this.writable.onClose(()=>this.fireClose())}async write(f){return this.writeSemaphore.lock(async()=>this.options.contentTypeEncoder.encode(f,this.options).then(m=>this.options.contentEncoder!==void 0?this.options.contentEncoder.encode(m):m).then(m=>{let g=[];return g.push(a,m.byteLength.toString(),s),g.push(s),this.doWrite(f,g,m)},m=>{throw this.fireError(m),m}))}async doWrite(f,p,m){try{return await this.writable.write(p.join(""),"ascii"),this.writable.write(m)}catch(g){return this.handleError(g,f),Promise.reject(g)}}handleError(f,p){this.errorCount++,this.fireError(f,p,this.errorCount)}end(){this.writable.end()}};e.WriteableStreamMessageWriter=d}}),L0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/messageBuffer.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractMessageBuffer=void 0;var t=13,r=10,n=`\r +`,i=class{static{o(this,"AbstractMessageBuffer")}static{E(this,"AbstractMessageBuffer")}constructor(a="utf-8"){this._encoding=a,this._chunks=[],this._totalLength=0}get encoding(){return this._encoding}append(a){let s=typeof a=="string"?this.fromString(a,this._encoding):a;this._chunks.push(s),this._totalLength+=s.byteLength}tryReadHeaders(a=!1){if(this._chunks.length===0)return;let s=0,l=0,u=0,h=0;e:for(;lthis._totalLength)throw new Error("Cannot read so many bytes!");if(this._chunks[0].byteLength===a){let h=this._chunks[0];return this._chunks.shift(),this._totalLength-=a,this.asNative(h)}if(this._chunks[0].byteLength>a){let h=this._chunks[0],d=this.asNative(h,a);return this._chunks[0]=h.slice(a),this._totalLength-=a,d}let s=this.allocNative(a),l=0,u=0;for(;a>0;){let h=this._chunks[u];if(h.byteLength>a){let d=h.slice(0,a);s.set(d,l),l+=a,this._chunks[u]=h.slice(a),this._totalLength-=a,a-=a}else s.set(h,l),l+=h.byteLength,this._chunks.shift(),this._totalLength-=h.byteLength,a-=h.byteLength}return s}};e.AbstractMessageBuffer=i}}),D0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/connection.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createMessageConnection=e.ConnectionOptions=e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.RequestCancellationReceiverStrategy=e.IdCancellationReceiverStrategy=e.ConnectionStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=e.NullLogger=e.ProgressType=e.ProgressToken=void 0;var t=Qg(),r=dw(),n=_we(),i=Dwe(),a=Iv(),s=yR(),l;(function(A){A.type=new n.NotificationType("$/cancelRequest")})(l||(l={}));var u;(function(A){function M(D){return typeof D=="string"||typeof D=="number"}o(M,"is"),E(M,"is"),A.is=M})(u||(e.ProgressToken=u={}));var h;(function(A){A.type=new n.NotificationType("$/progress")})(h||(h={}));var d=class{static{o(this,"ProgressType")}static{E(this,"ProgressType")}constructor(){}};e.ProgressType=d;var f;(function(A){function M(D){return r.func(D)}o(M,"is"),E(M,"is"),A.is=M})(f||(f={})),e.NullLogger=Object.freeze({error:E(()=>{},"error"),warn:E(()=>{},"warn"),info:E(()=>{},"info"),log:E(()=>{},"log")});var p;(function(A){A[A.Off=0]="Off",A[A.Messages=1]="Messages",A[A.Compact=2]="Compact",A[A.Verbose=3]="Verbose"})(p||(e.Trace=p={}));var m;(function(A){A.Off="off",A.Messages="messages",A.Compact="compact",A.Verbose="verbose"})(m||(e.TraceValues=m={})),(function(A){function M(P){if(!r.string(P))return A.Off;switch(P=P.toLowerCase(),P){case"off":return A.Off;case"messages":return A.Messages;case"compact":return A.Compact;case"verbose":return A.Verbose;default:return A.Off}}o(M,"fromString"),E(M,"fromString"),A.fromString=M;function D(P){switch(P){case A.Off:return"off";case A.Messages:return"messages";case A.Compact:return"compact";case A.Verbose:return"verbose";default:return"off"}}o(D,"toString4"),E(D,"toString"),A.toString=D})(p||(e.Trace=p={}));var g;(function(A){A.Text="text",A.JSON="json"})(g||(e.TraceFormat=g={})),(function(A){function M(D){return r.string(D)?(D=D.toLowerCase(),D==="json"?A.JSON:A.Text):A.Text}o(M,"fromString"),E(M,"fromString"),A.fromString=M})(g||(e.TraceFormat=g={}));var y;(function(A){A.type=new n.NotificationType("$/setTrace")})(y||(e.SetTraceNotification=y={}));var v;(function(A){A.type=new n.NotificationType("$/logTrace")})(v||(e.LogTraceNotification=v={}));var x;(function(A){A[A.Closed=1]="Closed",A[A.Disposed=2]="Disposed",A[A.AlreadyListening=3]="AlreadyListening"})(x||(e.ConnectionErrors=x={}));var b=class Mwe extends Error{static{o(this,"_ConnectionError")}static{E(this,"ConnectionError")}constructor(M,D){super(D),this.code=M,Object.setPrototypeOf(this,Mwe.prototype)}};e.ConnectionError=b;var T;(function(A){function M(D){let P=D;return P&&r.func(P.cancelUndispatched)}o(M,"is"),E(M,"is"),A.is=M})(T||(e.ConnectionStrategy=T={}));var k;(function(A){function M(D){let P=D;return P&&(P.kind===void 0||P.kind==="id")&&r.func(P.createCancellationTokenSource)&&(P.dispose===void 0||r.func(P.dispose))}o(M,"is"),E(M,"is"),A.is=M})(k||(e.IdCancellationReceiverStrategy=k={}));var C;(function(A){function M(D){let P=D;return P&&P.kind==="request"&&r.func(P.createCancellationTokenSource)&&(P.dispose===void 0||r.func(P.dispose))}o(M,"is"),E(M,"is"),A.is=M})(C||(e.RequestCancellationReceiverStrategy=C={}));var w;(function(A){A.Message=Object.freeze({createCancellationTokenSource(D){return new s.CancellationTokenSource}});function M(D){return k.is(D)||C.is(D)}o(M,"is"),E(M,"is"),A.is=M})(w||(e.CancellationReceiverStrategy=w={}));var S;(function(A){A.Message=Object.freeze({sendCancellation(D,P){return D.sendNotification(l.type,{id:P})},cleanup(D){}});function M(D){let P=D;return P&&r.func(P.sendCancellation)&&r.func(P.cleanup)}o(M,"is"),E(M,"is"),A.is=M})(S||(e.CancellationSenderStrategy=S={}));var R;(function(A){A.Message=Object.freeze({receiver:w.Message,sender:S.Message});function M(D){let P=D;return P&&w.is(P.receiver)&&S.is(P.sender)}o(M,"is"),E(M,"is"),A.is=M})(R||(e.CancellationStrategy=R={}));var L;(function(A){function M(D){let P=D;return P&&r.func(P.handleMessage)}o(M,"is"),E(M,"is"),A.is=M})(L||(e.MessageStrategy=L={}));var N;(function(A){function M(D){let P=D;return P&&(R.is(P.cancellationStrategy)||T.is(P.connectionStrategy)||L.is(P.messageStrategy))}o(M,"is"),E(M,"is"),A.is=M})(N||(e.ConnectionOptions=N={}));var I;(function(A){A[A.New=1]="New",A[A.Listening=2]="Listening",A[A.Closed=3]="Closed",A[A.Disposed=4]="Disposed"})(I||(I={}));function _(A,M,D,P){let B=D!==void 0?D:e.NullLogger,O=0,$=0,V=0,G="2.0",z,W=new Map,H,j=new Map,Q=new Map,U,oe=new i.LinkedMap,te=new Map,le=new Set,ie=new Map,ae=p.Off,Re=g.Text,be,Pe=I.New,Ge=new a.Emitter,Oe=new a.Emitter,ue=new a.Emitter,ye=new a.Emitter,ke=new a.Emitter,ce=P&&P.cancellationStrategy?P.cancellationStrategy:R.Message;function re(Ee){if(Ee===null)throw new Error("Can't send requests with id null since the response can't be correlated.");return"req-"+Ee.toString()}o(re,"createRequestQueueKey"),E(re,"createRequestQueueKey");function J(Ee){return Ee===null?"res-unknown-"+(++V).toString():"res-"+Ee.toString()}o(J,"createResponseQueueKey"),E(J,"createResponseQueueKey");function se(){return"not-"+(++$).toString()}o(se,"createNotificationQueueKey"),E(se,"createNotificationQueueKey");function ge(Ee,tt){n.Message.isRequest(tt)?Ee.set(re(tt.id),tt):n.Message.isResponse(tt)?Ee.set(J(tt.id),tt):Ee.set(se(),tt)}o(ge,"addMessageToQueue"),E(ge,"addMessageToQueue");function Te(Ee){}o(Te,"cancelUndispatched"),E(Te,"cancelUndispatched");function we(){return Pe===I.Listening}o(we,"isListening"),E(we,"isListening");function Me(){return Pe===I.Closed}o(Me,"isClosed"),E(Me,"isClosed");function ve(){return Pe===I.Disposed}o(ve,"isDisposed"),E(ve,"isDisposed");function ne(){(Pe===I.New||Pe===I.Listening)&&(Pe=I.Closed,Oe.fire(void 0))}o(ne,"closeHandler"),E(ne,"closeHandler");function q(Ee){Ge.fire([Ee,void 0,void 0])}o(q,"readErrorHandler"),E(q,"readErrorHandler");function he(Ee){Ge.fire(Ee)}o(he,"writeErrorHandler"),E(he,"writeErrorHandler"),A.onClose(ne),A.onError(q),M.onClose(ne),M.onError(he);function X(){U||oe.size===0||(U=(0,t.default)().timer.setImmediate(()=>{U=void 0,K()}))}o(X,"triggerMessageQueue"),E(X,"triggerMessageQueue");function fe(Ee){n.Message.isRequest(Ee)?_e(Ee):n.Message.isNotification(Ee)?Ne(Ee):n.Message.isResponse(Ee)?Be(Ee):He(Ee)}o(fe,"handleMessage"),E(fe,"handleMessage");function K(){if(oe.size===0)return;let Ee=oe.shift();try{let tt=P?.messageStrategy;L.is(tt)?tt.handleMessage(Ee,fe):fe(Ee)}finally{X()}}o(K,"processMessageQueue"),E(K,"processMessageQueue");let qe=E(Ee=>{try{if(n.Message.isNotification(Ee)&&Ee.method===l.type.method){let tt=Ee.params.id,at=re(tt),ot=oe.get(at);if(n.Message.isRequest(ot)){let Bt=P?.connectionStrategy,qt=Bt&&Bt.cancelUndispatched?Bt.cancelUndispatched(ot,Te):void 0;if(qt&&(qt.error!==void 0||qt.result!==void 0)){oe.delete(at),ie.delete(tt),qt.id=ot.id,Ke(qt,Ee.method,Date.now()),M.write(qt).catch(()=>B.error("Sending response for canceled message failed."));return}}let Wt=ie.get(tt);if(Wt!==void 0){Wt.cancel(),mt(Ee);return}else le.add(tt)}ge(oe,Ee)}finally{X()}},"callback");function _e(Ee){if(ve())return;function tt(Tt,De,it){let We={jsonrpc:G,id:Ee.id};Tt instanceof n.ResponseError?We.error=Tt.toJson():We.result=Tt===void 0?null:Tt,Ke(We,De,it),M.write(We).catch(()=>B.error("Sending response failed."))}o(tt,"reply"),E(tt,"reply");function at(Tt,De,it){let We={jsonrpc:G,id:Ee.id,error:Tt.toJson()};Ke(We,De,it),M.write(We).catch(()=>B.error("Sending response failed."))}o(at,"replyError"),E(at,"replyError");function ot(Tt,De,it){Tt===void 0&&(Tt=null);let We={jsonrpc:G,id:Ee.id,result:Tt};Ke(We,De,it),M.write(We).catch(()=>B.error("Sending response failed."))}o(ot,"replySuccess"),E(ot,"replySuccess"),xe(Ee);let Wt=W.get(Ee.method),Bt,qt;Wt&&(Bt=Wt.type,qt=Wt.handler);let vr=Date.now();if(qt||z){let Tt=Ee.id??String(Date.now()),De=k.is(ce.receiver)?ce.receiver.createCancellationTokenSource(Tt):ce.receiver.createCancellationTokenSource(Ee);Ee.id!==null&&le.has(Ee.id)&&De.cancel(),Ee.id!==null&&ie.set(Tt,De);try{let it;if(qt)if(Ee.params===void 0){if(Bt!==void 0&&Bt.numberOfParams!==0){at(new n.ResponseError(n.ErrorCodes.InvalidParams,`Request ${Ee.method} defines ${Bt.numberOfParams} params but received none.`),Ee.method,vr);return}it=qt(De.token)}else if(Array.isArray(Ee.params)){if(Bt!==void 0&&Bt.parameterStructures===n.ParameterStructures.byName){at(new n.ResponseError(n.ErrorCodes.InvalidParams,`Request ${Ee.method} defines parameters by name but received parameters by position`),Ee.method,vr);return}it=qt(...Ee.params,De.token)}else{if(Bt!==void 0&&Bt.parameterStructures===n.ParameterStructures.byPosition){at(new n.ResponseError(n.ErrorCodes.InvalidParams,`Request ${Ee.method} defines parameters by position but received parameters by name`),Ee.method,vr);return}it=qt(Ee.params,De.token)}else z&&(it=z(Ee.method,Ee.params,De.token));let We=it;it?We.then?We.then(rt=>{ie.delete(Tt),tt(rt,Ee.method,vr)},rt=>{ie.delete(Tt),rt instanceof n.ResponseError?at(rt,Ee.method,vr):rt&&r.string(rt.message)?at(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${Ee.method} failed with message: ${rt.message}`),Ee.method,vr):at(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${Ee.method} failed unexpectedly without providing any details.`),Ee.method,vr)}):(ie.delete(Tt),tt(it,Ee.method,vr)):(ie.delete(Tt),ot(it,Ee.method,vr))}catch(it){ie.delete(Tt),it instanceof n.ResponseError?tt(it,Ee.method,vr):it&&r.string(it.message)?at(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${Ee.method} failed with message: ${it.message}`),Ee.method,vr):at(new n.ResponseError(n.ErrorCodes.InternalError,`Request ${Ee.method} failed unexpectedly without providing any details.`),Ee.method,vr)}}else at(new n.ResponseError(n.ErrorCodes.MethodNotFound,`Unhandled method ${Ee.method}`),Ee.method,vr)}o(_e,"handleRequest"),E(_e,"handleRequest");function Be(Ee){if(!ve())if(Ee.id===null)Ee.error?B.error(`Received response message without id: Error is: +${JSON.stringify(Ee.error,void 0,4)}`):B.error("Received response message without id. No further error information provided.");else{let tt=Ee.id,at=te.get(tt);if(Le(Ee,at),at!==void 0){te.delete(tt);try{if(Ee.error){let ot=Ee.error;at.reject(new n.ResponseError(ot.code,ot.message,ot.data))}else if(Ee.result!==void 0)at.resolve(Ee.result);else throw new Error("Should never happen.")}catch(ot){ot.message?B.error(`Response handler '${at.method}' failed with message: ${ot.message}`):B.error(`Response handler '${at.method}' failed unexpectedly.`)}}}}o(Be,"handleResponse"),E(Be,"handleResponse");function Ne(Ee){if(ve())return;let tt,at;if(Ee.method===l.type.method){let ot=Ee.params.id;le.delete(ot),mt(Ee);return}else{let ot=j.get(Ee.method);ot&&(at=ot.handler,tt=ot.type)}if(at||H)try{if(mt(Ee),at)if(Ee.params===void 0)tt!==void 0&&tt.numberOfParams!==0&&tt.parameterStructures!==n.ParameterStructures.byName&&B.error(`Notification ${Ee.method} defines ${tt.numberOfParams} params but received none.`),at();else if(Array.isArray(Ee.params)){let ot=Ee.params;Ee.method===h.type.method&&ot.length===2&&u.is(ot[0])?at({token:ot[0],value:ot[1]}):(tt!==void 0&&(tt.parameterStructures===n.ParameterStructures.byName&&B.error(`Notification ${Ee.method} defines parameters by name but received parameters by position`),tt.numberOfParams!==Ee.params.length&&B.error(`Notification ${Ee.method} defines ${tt.numberOfParams} params but received ${ot.length} arguments`)),at(...ot))}else tt!==void 0&&tt.parameterStructures===n.ParameterStructures.byPosition&&B.error(`Notification ${Ee.method} defines parameters by position but received parameters by name`),at(Ee.params);else H&&H(Ee.method,Ee.params)}catch(ot){ot.message?B.error(`Notification handler '${Ee.method}' failed with message: ${ot.message}`):B.error(`Notification handler '${Ee.method}' failed unexpectedly.`)}else ue.fire(Ee)}o(Ne,"handleNotification"),E(Ne,"handleNotification");function He(Ee){if(!Ee){B.error("Received empty message.");return}B.error(`Received message which is neither a response nor a notification message: +${JSON.stringify(Ee,null,4)}`);let tt=Ee;if(r.string(tt.id)||r.number(tt.id)){let at=tt.id,ot=te.get(at);ot&&ot.reject(new Error("The received response has neither a result nor an error property."))}}o(He,"handleInvalidMessage"),E(He,"handleInvalidMessage");function $e(Ee){if(Ee!=null)switch(ae){case p.Verbose:return JSON.stringify(Ee,null,4);case p.Compact:return JSON.stringify(Ee);default:return}}o($e,"stringifyTrace"),E($e,"stringifyTrace");function Xe(Ee){if(!(ae===p.Off||!be))if(Re===g.Text){let tt;(ae===p.Verbose||ae===p.Compact)&&Ee.params&&(tt=`Params: ${$e(Ee.params)} + +`),be.log(`Sending request '${Ee.method} - (${Ee.id})'.`,tt)}else ft("send-request",Ee)}o(Xe,"traceSendingRequest"),E(Xe,"traceSendingRequest");function Fe(Ee){if(!(ae===p.Off||!be))if(Re===g.Text){let tt;(ae===p.Verbose||ae===p.Compact)&&(Ee.params?tt=`Params: ${$e(Ee.params)} + +`:tt=`No parameters provided. + +`),be.log(`Sending notification '${Ee.method}'.`,tt)}else ft("send-notification",Ee)}o(Fe,"traceSendingNotification"),E(Fe,"traceSendingNotification");function Ke(Ee,tt,at){if(!(ae===p.Off||!be))if(Re===g.Text){let ot;(ae===p.Verbose||ae===p.Compact)&&(Ee.error&&Ee.error.data?ot=`Error data: ${$e(Ee.error.data)} + +`:Ee.result?ot=`Result: ${$e(Ee.result)} + +`:Ee.error===void 0&&(ot=`No result returned. + +`)),be.log(`Sending response '${tt} - (${Ee.id})'. Processing request took ${Date.now()-at}ms`,ot)}else ft("send-response",Ee)}o(Ke,"traceSendingResponse"),E(Ke,"traceSendingResponse");function xe(Ee){if(!(ae===p.Off||!be))if(Re===g.Text){let tt;(ae===p.Verbose||ae===p.Compact)&&Ee.params&&(tt=`Params: ${$e(Ee.params)} + +`),be.log(`Received request '${Ee.method} - (${Ee.id})'.`,tt)}else ft("receive-request",Ee)}o(xe,"traceReceivedRequest"),E(xe,"traceReceivedRequest");function mt(Ee){if(!(ae===p.Off||!be||Ee.method===v.type.method))if(Re===g.Text){let tt;(ae===p.Verbose||ae===p.Compact)&&(Ee.params?tt=`Params: ${$e(Ee.params)} + +`:tt=`No parameters provided. + +`),be.log(`Received notification '${Ee.method}'.`,tt)}else ft("receive-notification",Ee)}o(mt,"traceReceivedNotification"),E(mt,"traceReceivedNotification");function Le(Ee,tt){if(!(ae===p.Off||!be))if(Re===g.Text){let at;if((ae===p.Verbose||ae===p.Compact)&&(Ee.error&&Ee.error.data?at=`Error data: ${$e(Ee.error.data)} + +`:Ee.result?at=`Result: ${$e(Ee.result)} + +`:Ee.error===void 0&&(at=`No result returned. + +`)),tt){let ot=Ee.error?` Request failed: ${Ee.error.message} (${Ee.error.code}).`:"";be.log(`Received response '${tt.method} - (${Ee.id})' in ${Date.now()-tt.timerStart}ms.${ot}`,at)}else be.log(`Received response ${Ee.id} without active response promise.`,at)}else ft("receive-response",Ee)}o(Le,"traceReceivedResponse"),E(Le,"traceReceivedResponse");function ft(Ee,tt){if(!be||ae===p.Off)return;let at={isLSPMessage:!0,type:Ee,message:tt,timestamp:Date.now()};be.log(at)}o(ft,"logLSPMessage"),E(ft,"logLSPMessage");function wt(){if(Me())throw new b(x.Closed,"Connection is closed.");if(ve())throw new b(x.Disposed,"Connection is disposed.")}o(wt,"throwIfClosedOrDisposed"),E(wt,"throwIfClosedOrDisposed");function zt(){if(we())throw new b(x.AlreadyListening,"Connection is already listening")}o(zt,"throwIfListening"),E(zt,"throwIfListening");function St(){if(!we())throw new Error("Call listen() first.")}o(St,"throwIfNotListening"),E(St,"throwIfNotListening");function At(Ee){return Ee===void 0?null:Ee}o(At,"undefinedToNull"),E(At,"undefinedToNull");function bt(Ee){if(Ee!==null)return Ee}o(bt,"nullToUndefined"),E(bt,"nullToUndefined");function me(Ee){return Ee!=null&&!Array.isArray(Ee)&&typeof Ee=="object"}o(me,"isNamedParam"),E(me,"isNamedParam");function lt(Ee,tt){switch(Ee){case n.ParameterStructures.auto:return me(tt)?bt(tt):[At(tt)];case n.ParameterStructures.byName:if(!me(tt))throw new Error("Received parameters by name but param is not an object literal.");return bt(tt);case n.ParameterStructures.byPosition:return[At(tt)];default:throw new Error(`Unknown parameter structure ${Ee.toString()}`)}}o(lt,"computeSingleParam"),E(lt,"computeSingleParam");function gt(Ee,tt){let at,ot=Ee.numberOfParams;switch(ot){case 0:at=void 0;break;case 1:at=lt(Ee.parameterStructures,tt[0]);break;default:at=[];for(let Wt=0;Wt{wt();let at,ot;if(r.string(Ee)){at=Ee;let Bt=tt[0],qt=0,vr=n.ParameterStructures.auto;n.ParameterStructures.is(Bt)&&(qt=1,vr=Bt);let Tt=tt.length,De=Tt-qt;switch(De){case 0:ot=void 0;break;case 1:ot=lt(vr,tt[qt]);break;default:if(vr===n.ParameterStructures.byName)throw new Error(`Received ${De} parameters for 'by Name' notification parameter structure.`);ot=tt.slice(qt,Tt).map(it=>At(it));break}}else{let Bt=tt;at=Ee.method,ot=gt(Ee,Bt)}let Wt={jsonrpc:G,method:at,params:ot};return Fe(Wt),M.write(Wt).catch(Bt=>{throw B.error("Sending notification failed."),Bt})},"sendNotification"),onNotification:E((Ee,tt)=>{wt();let at;return r.func(Ee)?H=Ee:tt&&(r.string(Ee)?(at=Ee,j.set(Ee,{type:void 0,handler:tt})):(at=Ee.method,j.set(Ee.method,{type:Ee,handler:tt}))),{dispose:E(()=>{at!==void 0?j.delete(at):H=void 0},"dispose")}},"onNotification"),onProgress:E((Ee,tt,at)=>{if(Q.has(tt))throw new Error(`Progress handler for token ${tt} already registered`);return Q.set(tt,at),{dispose:E(()=>{Q.delete(tt)},"dispose")}},"onProgress"),sendProgress:E((Ee,tt,at)=>Ze.sendNotification(h.type,{token:tt,value:at}),"sendProgress"),onUnhandledProgress:ye.event,sendRequest:E((Ee,...tt)=>{wt(),St();let at,ot,Wt;if(r.string(Ee)){at=Ee;let Tt=tt[0],De=tt[tt.length-1],it=0,We=n.ParameterStructures.auto;n.ParameterStructures.is(Tt)&&(it=1,We=Tt);let rt=tt.length;s.CancellationToken.is(De)&&(rt=rt-1,Wt=De);let yt=rt-it;switch(yt){case 0:ot=void 0;break;case 1:ot=lt(We,tt[it]);break;default:if(We===n.ParameterStructures.byName)throw new Error(`Received ${yt} parameters for 'by Name' request parameter structure.`);ot=tt.slice(it,rt).map(Yt=>At(Yt));break}}else{let Tt=tt;at=Ee.method,ot=gt(Ee,Tt);let De=Ee.numberOfParams;Wt=s.CancellationToken.is(Tt[De])?Tt[De]:void 0}let Bt=O++,qt;Wt&&(qt=Wt.onCancellationRequested(()=>{let Tt=ce.sender.sendCancellation(Ze,Bt);return Tt===void 0?(B.log(`Received no promise from cancellation strategy when cancelling id ${Bt}`),Promise.resolve()):Tt.catch(()=>{B.log(`Sending cancellation messages for id ${Bt} failed`)})}));let vr={jsonrpc:G,id:Bt,method:at,params:ot};return Xe(vr),typeof ce.sender.enableCancellation=="function"&&ce.sender.enableCancellation(vr),new Promise(async(Tt,De)=>{let it=E(yt=>{Tt(yt),ce.sender.cleanup(Bt),qt?.dispose()},"resolveWithCleanup"),We=E(yt=>{De(yt),ce.sender.cleanup(Bt),qt?.dispose()},"rejectWithCleanup"),rt={method:at,timerStart:Date.now(),resolve:it,reject:We};try{await M.write(vr),te.set(Bt,rt)}catch(yt){throw B.error("Sending request failed."),rt.reject(new n.ResponseError(n.ErrorCodes.MessageWriteError,yt.message?yt.message:"Unknown reason")),yt}})},"sendRequest"),onRequest:E((Ee,tt)=>{wt();let at=null;return f.is(Ee)?(at=void 0,z=Ee):r.string(Ee)?(at=null,tt!==void 0&&(at=Ee,W.set(Ee,{handler:tt,type:void 0}))):tt!==void 0&&(at=Ee.method,W.set(Ee.method,{type:Ee,handler:tt})),{dispose:E(()=>{at!==null&&(at!==void 0?W.delete(at):z=void 0)},"dispose")}},"onRequest"),hasPendingResponse:E(()=>te.size>0,"hasPendingResponse"),trace:E(async(Ee,tt,at)=>{let ot=!1,Wt=g.Text;at!==void 0&&(r.boolean(at)?ot=at:(ot=at.sendNotification||!1,Wt=at.traceFormat||g.Text)),ae=Ee,Re=Wt,ae===p.Off?be=void 0:be=tt,ot&&!Me()&&!ve()&&await Ze.sendNotification(y.type,{value:p.toString(Ee)})},"trace"),onError:Ge.event,onClose:Oe.event,onUnhandledNotification:ue.event,onDispose:ke.event,end:E(()=>{M.end()},"end"),dispose:E(()=>{if(ve())return;Pe=I.Disposed,ke.fire(void 0);let Ee=new n.ResponseError(n.ErrorCodes.PendingResponseRejected,"Pending response rejected since connection got disposed");for(let tt of te.values())tt.reject(Ee);te=new Map,ie=new Map,le=new Set,oe=new i.LinkedMap,r.func(M.dispose)&&M.dispose(),r.func(A.dispose)&&A.dispose()},"dispose"),listen:E(()=>{wt(),zt(),Pe=I.Listening,A.listen(qe)},"listen"),inspect:E(()=>{(0,t.default)().console.log("inspect")},"inspect")};return Ze.onNotification(v.type,Ee=>{if(ae===p.Off||!be)return;let tt=ae===p.Verbose||ae===p.Compact;be.log(Ee.message,tt?Ee.verbose:void 0)}),Ze.onNotification(h.type,Ee=>{let tt=Q.get(Ee.token);tt?tt(Ee.value):ye.fire(Ee)}),Ze}o(_,"createMessageConnection"),E(_,"createMessageConnection"),e.createMessageConnection=_}}),TG=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/common/api.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ProgressType=e.ProgressToken=e.createMessageConnection=e.NullLogger=e.ConnectionOptions=e.ConnectionStrategy=e.AbstractMessageBuffer=e.WriteableStreamMessageWriter=e.AbstractMessageWriter=e.MessageWriter=e.ReadableStreamMessageReader=e.AbstractMessageReader=e.MessageReader=e.SharedArrayReceiverStrategy=e.SharedArraySenderStrategy=e.CancellationToken=e.CancellationTokenSource=e.Emitter=e.Event=e.Disposable=e.LRUCache=e.Touch=e.LinkedMap=e.ParameterStructures=e.NotificationType9=e.NotificationType8=e.NotificationType7=e.NotificationType6=e.NotificationType5=e.NotificationType4=e.NotificationType3=e.NotificationType2=e.NotificationType1=e.NotificationType0=e.NotificationType=e.ErrorCodes=e.ResponseError=e.RequestType9=e.RequestType8=e.RequestType7=e.RequestType6=e.RequestType5=e.RequestType4=e.RequestType3=e.RequestType2=e.RequestType1=e.RequestType0=e.RequestType=e.Message=e.RAL=void 0,e.MessageStrategy=e.CancellationStrategy=e.CancellationSenderStrategy=e.CancellationReceiverStrategy=e.ConnectionError=e.ConnectionErrors=e.LogTraceNotification=e.SetTraceNotification=e.TraceFormat=e.TraceValues=e.Trace=void 0;var t=_we();Object.defineProperty(e,"Message",{enumerable:!0,get:E(function(){return t.Message},"get")}),Object.defineProperty(e,"RequestType",{enumerable:!0,get:E(function(){return t.RequestType},"get")}),Object.defineProperty(e,"RequestType0",{enumerable:!0,get:E(function(){return t.RequestType0},"get")}),Object.defineProperty(e,"RequestType1",{enumerable:!0,get:E(function(){return t.RequestType1},"get")}),Object.defineProperty(e,"RequestType2",{enumerable:!0,get:E(function(){return t.RequestType2},"get")}),Object.defineProperty(e,"RequestType3",{enumerable:!0,get:E(function(){return t.RequestType3},"get")}),Object.defineProperty(e,"RequestType4",{enumerable:!0,get:E(function(){return t.RequestType4},"get")}),Object.defineProperty(e,"RequestType5",{enumerable:!0,get:E(function(){return t.RequestType5},"get")}),Object.defineProperty(e,"RequestType6",{enumerable:!0,get:E(function(){return t.RequestType6},"get")}),Object.defineProperty(e,"RequestType7",{enumerable:!0,get:E(function(){return t.RequestType7},"get")}),Object.defineProperty(e,"RequestType8",{enumerable:!0,get:E(function(){return t.RequestType8},"get")}),Object.defineProperty(e,"RequestType9",{enumerable:!0,get:E(function(){return t.RequestType9},"get")}),Object.defineProperty(e,"ResponseError",{enumerable:!0,get:E(function(){return t.ResponseError},"get")}),Object.defineProperty(e,"ErrorCodes",{enumerable:!0,get:E(function(){return t.ErrorCodes},"get")}),Object.defineProperty(e,"NotificationType",{enumerable:!0,get:E(function(){return t.NotificationType},"get")}),Object.defineProperty(e,"NotificationType0",{enumerable:!0,get:E(function(){return t.NotificationType0},"get")}),Object.defineProperty(e,"NotificationType1",{enumerable:!0,get:E(function(){return t.NotificationType1},"get")}),Object.defineProperty(e,"NotificationType2",{enumerable:!0,get:E(function(){return t.NotificationType2},"get")}),Object.defineProperty(e,"NotificationType3",{enumerable:!0,get:E(function(){return t.NotificationType3},"get")}),Object.defineProperty(e,"NotificationType4",{enumerable:!0,get:E(function(){return t.NotificationType4},"get")}),Object.defineProperty(e,"NotificationType5",{enumerable:!0,get:E(function(){return t.NotificationType5},"get")}),Object.defineProperty(e,"NotificationType6",{enumerable:!0,get:E(function(){return t.NotificationType6},"get")}),Object.defineProperty(e,"NotificationType7",{enumerable:!0,get:E(function(){return t.NotificationType7},"get")}),Object.defineProperty(e,"NotificationType8",{enumerable:!0,get:E(function(){return t.NotificationType8},"get")}),Object.defineProperty(e,"NotificationType9",{enumerable:!0,get:E(function(){return t.NotificationType9},"get")}),Object.defineProperty(e,"ParameterStructures",{enumerable:!0,get:E(function(){return t.ParameterStructures},"get")});var r=Dwe();Object.defineProperty(e,"LinkedMap",{enumerable:!0,get:E(function(){return r.LinkedMap},"get")}),Object.defineProperty(e,"LRUCache",{enumerable:!0,get:E(function(){return r.LRUCache},"get")}),Object.defineProperty(e,"Touch",{enumerable:!0,get:E(function(){return r.Touch},"get")});var n=E0t();Object.defineProperty(e,"Disposable",{enumerable:!0,get:E(function(){return n.Disposable},"get")});var i=Iv();Object.defineProperty(e,"Event",{enumerable:!0,get:E(function(){return i.Event},"get")}),Object.defineProperty(e,"Emitter",{enumerable:!0,get:E(function(){return i.Emitter},"get")});var a=yR();Object.defineProperty(e,"CancellationTokenSource",{enumerable:!0,get:E(function(){return a.CancellationTokenSource},"get")}),Object.defineProperty(e,"CancellationToken",{enumerable:!0,get:E(function(){return a.CancellationToken},"get")});var s=A0t();Object.defineProperty(e,"SharedArraySenderStrategy",{enumerable:!0,get:E(function(){return s.SharedArraySenderStrategy},"get")}),Object.defineProperty(e,"SharedArrayReceiverStrategy",{enumerable:!0,get:E(function(){return s.SharedArrayReceiverStrategy},"get")});var l=R0t();Object.defineProperty(e,"MessageReader",{enumerable:!0,get:E(function(){return l.MessageReader},"get")}),Object.defineProperty(e,"AbstractMessageReader",{enumerable:!0,get:E(function(){return l.AbstractMessageReader},"get")}),Object.defineProperty(e,"ReadableStreamMessageReader",{enumerable:!0,get:E(function(){return l.ReadableStreamMessageReader},"get")});var u=_0t();Object.defineProperty(e,"MessageWriter",{enumerable:!0,get:E(function(){return u.MessageWriter},"get")}),Object.defineProperty(e,"AbstractMessageWriter",{enumerable:!0,get:E(function(){return u.AbstractMessageWriter},"get")}),Object.defineProperty(e,"WriteableStreamMessageWriter",{enumerable:!0,get:E(function(){return u.WriteableStreamMessageWriter},"get")});var h=L0t();Object.defineProperty(e,"AbstractMessageBuffer",{enumerable:!0,get:E(function(){return h.AbstractMessageBuffer},"get")});var d=D0t();Object.defineProperty(e,"ConnectionStrategy",{enumerable:!0,get:E(function(){return d.ConnectionStrategy},"get")}),Object.defineProperty(e,"ConnectionOptions",{enumerable:!0,get:E(function(){return d.ConnectionOptions},"get")}),Object.defineProperty(e,"NullLogger",{enumerable:!0,get:E(function(){return d.NullLogger},"get")}),Object.defineProperty(e,"createMessageConnection",{enumerable:!0,get:E(function(){return d.createMessageConnection},"get")}),Object.defineProperty(e,"ProgressToken",{enumerable:!0,get:E(function(){return d.ProgressToken},"get")}),Object.defineProperty(e,"ProgressType",{enumerable:!0,get:E(function(){return d.ProgressType},"get")}),Object.defineProperty(e,"Trace",{enumerable:!0,get:E(function(){return d.Trace},"get")}),Object.defineProperty(e,"TraceValues",{enumerable:!0,get:E(function(){return d.TraceValues},"get")}),Object.defineProperty(e,"TraceFormat",{enumerable:!0,get:E(function(){return d.TraceFormat},"get")}),Object.defineProperty(e,"SetTraceNotification",{enumerable:!0,get:E(function(){return d.SetTraceNotification},"get")}),Object.defineProperty(e,"LogTraceNotification",{enumerable:!0,get:E(function(){return d.LogTraceNotification},"get")}),Object.defineProperty(e,"ConnectionErrors",{enumerable:!0,get:E(function(){return d.ConnectionErrors},"get")}),Object.defineProperty(e,"ConnectionError",{enumerable:!0,get:E(function(){return d.ConnectionError},"get")}),Object.defineProperty(e,"CancellationReceiverStrategy",{enumerable:!0,get:E(function(){return d.CancellationReceiverStrategy},"get")}),Object.defineProperty(e,"CancellationSenderStrategy",{enumerable:!0,get:E(function(){return d.CancellationSenderStrategy},"get")}),Object.defineProperty(e,"CancellationStrategy",{enumerable:!0,get:E(function(){return d.CancellationStrategy},"get")}),Object.defineProperty(e,"MessageStrategy",{enumerable:!0,get:E(function(){return d.MessageStrategy},"get")});var f=Qg();e.RAL=f.default}}),I0t=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/ril.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=TG(),r=class Nwe extends t.AbstractMessageBuffer{static{o(this,"_MessageBuffer")}static{E(this,"MessageBuffer")}constructor(h="utf-8"){super(h),this.asciiDecoder=new TextDecoder("ascii")}emptyBuffer(){return Nwe.emptyBuffer}fromString(h,d){return new TextEncoder().encode(h)}toString(h,d){return d==="ascii"?this.asciiDecoder.decode(h):new TextDecoder(d).decode(h)}asNative(h,d){return d===void 0?h:h.slice(0,d)}allocNative(h){return new Uint8Array(h)}};r.emptyBuffer=new Uint8Array(0);var n=class{static{o(this,"ReadableStreamWrapper")}static{E(this,"ReadableStreamWrapper")}constructor(u){this.socket=u,this._onData=new t.Emitter,this._messageListener=h=>{h.data.arrayBuffer().then(f=>{this._onData.fire(new Uint8Array(f))},()=>{(0,t.RAL)().console.error("Converting blob to array buffer failed.")})},this.socket.addEventListener("message",this._messageListener)}onClose(u){return this.socket.addEventListener("close",u),t.Disposable.create(()=>this.socket.removeEventListener("close",u))}onError(u){return this.socket.addEventListener("error",u),t.Disposable.create(()=>this.socket.removeEventListener("error",u))}onEnd(u){return this.socket.addEventListener("end",u),t.Disposable.create(()=>this.socket.removeEventListener("end",u))}onData(u){return this._onData.event(u)}},i=class{static{o(this,"WritableStreamWrapper")}static{E(this,"WritableStreamWrapper")}constructor(u){this.socket=u}onClose(u){return this.socket.addEventListener("close",u),t.Disposable.create(()=>this.socket.removeEventListener("close",u))}onError(u){return this.socket.addEventListener("error",u),t.Disposable.create(()=>this.socket.removeEventListener("error",u))}onEnd(u){return this.socket.addEventListener("end",u),t.Disposable.create(()=>this.socket.removeEventListener("end",u))}write(u,h){if(typeof u=="string"){if(h!==void 0&&h!=="utf-8")throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${h}`);this.socket.send(u)}else this.socket.send(u);return Promise.resolve()}end(){this.socket.close()}},a=new TextEncoder,s=Object.freeze({messageBuffer:Object.freeze({create:E(u=>new r(u),"create")}),applicationJson:Object.freeze({encoder:Object.freeze({name:"application/json",encode:E((u,h)=>{if(h.charset!=="utf-8")throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${h.charset}`);return Promise.resolve(a.encode(JSON.stringify(u,void 0,0)))},"encode")}),decoder:Object.freeze({name:"application/json",decode:E((u,h)=>{if(!(u instanceof Uint8Array))throw new Error("In a Browser environments only Uint8Arrays are supported.");return Promise.resolve(JSON.parse(new TextDecoder(h.charset).decode(u)))},"decode")})}),stream:Object.freeze({asReadableStream:E(u=>new n(u),"asReadableStream"),asWritableStream:E(u=>new i(u),"asWritableStream")}),console,timer:Object.freeze({setTimeout(u,h,...d){let f=setTimeout(u,h,...d);return{dispose:E(()=>clearTimeout(f),"dispose")}},setImmediate(u,...h){let d=setTimeout(u,0,...h);return{dispose:E(()=>clearTimeout(d),"dispose")}},setInterval(u,h,...d){let f=setInterval(u,h,...d);return{dispose:E(()=>clearInterval(f),"dispose")}}})});function l(){return s}o(l,"RIL"),E(l,"RIL"),(function(u){function h(){t.RAL.install(s)}o(h,"install"),E(h,"install"),u.install=h})(l||(l={})),e.default=l}}),Mv=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/lib/browser/main.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(u,h,d,f){f===void 0&&(f=d);var p=Object.getOwnPropertyDescriptor(h,d);(!p||("get"in p?!h.__esModule:p.writable||p.configurable))&&(p={enumerable:!0,get:E(function(){return h[d]},"get")}),Object.defineProperty(u,f,p)}):(function(u,h,d,f){f===void 0&&(f=d),u[f]=h[d]})),r=e&&e.__exportStar||function(u,h){for(var d in u)d!=="default"&&!Object.prototype.hasOwnProperty.call(h,d)&&t(h,u,d)};Object.defineProperty(e,"__esModule",{value:!0}),e.createMessageConnection=e.BrowserMessageWriter=e.BrowserMessageReader=void 0;var n=I0t();n.default.install();var i=TG();r(TG(),e);var a=class extends i.AbstractMessageReader{static{o(this,"BrowserMessageReader")}static{E(this,"BrowserMessageReader")}constructor(u){super(),this._onData=new i.Emitter,this._messageListener=h=>{this._onData.fire(h.data)},u.addEventListener("error",h=>this.fireError(h)),u.onmessage=this._messageListener}listen(u){return this._onData.event(u)}};e.BrowserMessageReader=a;var s=class extends i.AbstractMessageWriter{static{o(this,"BrowserMessageWriter")}static{E(this,"BrowserMessageWriter")}constructor(u){super(),this.port=u,this.errorCount=0,u.addEventListener("error",h=>this.fireError(h))}write(u){try{return this.port.postMessage(u),Promise.resolve()}catch(h){return this.handleError(h,u),Promise.reject(h)}}handleError(u,h){this.errorCount++,this.fireError(u,h,this.errorCount)}end(){}};e.BrowserMessageWriter=s;function l(u,h,d,f){return d===void 0&&(d=i.NullLogger),i.ConnectionStrategy.is(f)&&(f={connectionStrategy:f}),(0,i.createMessageConnection)(u,h,d,f)}o(l,"createMessageConnection"),E(l,"createMessageConnection"),e.createMessageConnection=l}}),OTe=zr({"../../node_modules/.pnpm/vscode-jsonrpc@8.2.0/node_modules/vscode-jsonrpc/browser.js"(e,t){"use strict";t.exports=Mv()}}),ki=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/messages.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ProtocolNotificationType=e.ProtocolNotificationType0=e.ProtocolRequestType=e.ProtocolRequestType0=e.RegistrationType=e.MessageDirection=void 0;var t=Mv(),r;(function(u){u.clientToServer="clientToServer",u.serverToClient="serverToClient",u.both="both"})(r||(e.MessageDirection=r={}));var n=class{static{o(this,"RegistrationType")}static{E(this,"RegistrationType")}constructor(u){this.method=u}};e.RegistrationType=n;var i=class extends t.RequestType0{static{o(this,"ProtocolRequestType0")}static{E(this,"ProtocolRequestType0")}constructor(u){super(u)}};e.ProtocolRequestType0=i;var a=class extends t.RequestType{static{o(this,"ProtocolRequestType")}static{E(this,"ProtocolRequestType")}constructor(u){super(u,t.ParameterStructures.byName)}};e.ProtocolRequestType=a;var s=class extends t.NotificationType0{static{o(this,"ProtocolNotificationType0")}static{E(this,"ProtocolNotificationType0")}constructor(u){super(u)}};e.ProtocolNotificationType0=s;var l=class extends t.NotificationType{static{o(this,"ProtocolNotificationType")}static{E(this,"ProtocolNotificationType")}constructor(u){super(u,t.ParameterStructures.byName)}};e.ProtocolNotificationType=l}}),rW=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/utils/is.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.objectLiteral=e.typedArray=e.stringArray=e.array=e.func=e.error=e.number=e.string=e.boolean=void 0;function t(d){return d===!0||d===!1}o(t,"boolean"),E(t,"boolean"),e.boolean=t;function r(d){return typeof d=="string"||d instanceof String}o(r,"string"),E(r,"string"),e.string=r;function n(d){return typeof d=="number"||d instanceof Number}o(n,"number"),E(n,"number"),e.number=n;function i(d){return d instanceof Error}o(i,"error"),E(i,"error"),e.error=i;function a(d){return typeof d=="function"}o(a,"func"),E(a,"func"),e.func=a;function s(d){return Array.isArray(d)}o(s,"array"),E(s,"array"),e.array=s;function l(d){return s(d)&&d.every(f=>r(f))}o(l,"stringArray"),E(l,"stringArray"),e.stringArray=l;function u(d,f){return Array.isArray(d)&&d.every(f)}o(u,"typedArray"),E(u,"typedArray"),e.typedArray=u;function h(d){return d!==null&&typeof d=="object"}o(h,"objectLiteral"),E(h,"objectLiteral"),e.objectLiteral=h}}),M0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ImplementationRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/implementation",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.ImplementationRequest=r={}))}}),N0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TypeDefinitionRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/typeDefinition",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.TypeDefinitionRequest=r={}))}}),P0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DidChangeWorkspaceFoldersNotification=e.WorkspaceFoldersRequest=void 0;var t=ki(),r;(function(i){i.method="workspace/workspaceFolders",i.messageDirection=t.MessageDirection.serverToClient,i.type=new t.ProtocolRequestType0(i.method)})(r||(e.WorkspaceFoldersRequest=r={}));var n;(function(i){i.method="workspace/didChangeWorkspaceFolders",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolNotificationType(i.method)})(n||(e.DidChangeWorkspaceFoldersNotification=n={}))}}),O0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ConfigurationRequest=void 0;var t=ki(),r;(function(n){n.method="workspace/configuration",n.messageDirection=t.MessageDirection.serverToClient,n.type=new t.ProtocolRequestType(n.method)})(r||(e.ConfigurationRequest=r={}))}}),B0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ColorPresentationRequest=e.DocumentColorRequest=void 0;var t=ki(),r;(function(i){i.method="textDocument/documentColor",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.DocumentColorRequest=r={}));var n;(function(i){i.method="textDocument/colorPresentation",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(n||(e.ColorPresentationRequest=n={}))}}),$0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.FoldingRangeRefreshRequest=e.FoldingRangeRequest=void 0;var t=ki(),r;(function(i){i.method="textDocument/foldingRange",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.FoldingRangeRequest=r={}));var n;(function(i){i.method="workspace/foldingRange/refresh",i.messageDirection=t.MessageDirection.serverToClient,i.type=new t.ProtocolRequestType0(i.method)})(n||(e.FoldingRangeRefreshRequest=n={}))}}),F0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DeclarationRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/declaration",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.DeclarationRequest=r={}))}}),z0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SelectionRangeRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/selectionRange",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.SelectionRangeRequest=r={}))}}),G0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WorkDoneProgressCancelNotification=e.WorkDoneProgressCreateRequest=e.WorkDoneProgress=void 0;var t=Mv(),r=ki(),n;(function(s){s.type=new t.ProgressType;function l(u){return u===s.type}o(l,"is"),E(l,"is"),s.is=l})(n||(e.WorkDoneProgress=n={}));var i;(function(s){s.method="window/workDoneProgress/create",s.messageDirection=r.MessageDirection.serverToClient,s.type=new r.ProtocolRequestType(s.method)})(i||(e.WorkDoneProgressCreateRequest=i={}));var a;(function(s){s.method="window/workDoneProgress/cancel",s.messageDirection=r.MessageDirection.clientToServer,s.type=new r.ProtocolNotificationType(s.method)})(a||(e.WorkDoneProgressCancelNotification=a={}))}}),V0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CallHierarchyOutgoingCallsRequest=e.CallHierarchyIncomingCallsRequest=e.CallHierarchyPrepareRequest=void 0;var t=ki(),r;(function(a){a.method="textDocument/prepareCallHierarchy",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.CallHierarchyPrepareRequest=r={}));var n;(function(a){a.method="callHierarchy/incomingCalls",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.CallHierarchyIncomingCallsRequest=n={}));var i;(function(a){a.method="callHierarchy/outgoingCalls",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(i||(e.CallHierarchyOutgoingCallsRequest=i={}))}}),W0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SemanticTokensRefreshRequest=e.SemanticTokensRangeRequest=e.SemanticTokensDeltaRequest=e.SemanticTokensRequest=e.SemanticTokensRegistrationType=e.TokenFormat=void 0;var t=ki(),r;(function(u){u.Relative="relative"})(r||(e.TokenFormat=r={}));var n;(function(u){u.method="textDocument/semanticTokens",u.type=new t.RegistrationType(u.method)})(n||(e.SemanticTokensRegistrationType=n={}));var i;(function(u){u.method="textDocument/semanticTokens/full",u.messageDirection=t.MessageDirection.clientToServer,u.type=new t.ProtocolRequestType(u.method),u.registrationMethod=n.method})(i||(e.SemanticTokensRequest=i={}));var a;(function(u){u.method="textDocument/semanticTokens/full/delta",u.messageDirection=t.MessageDirection.clientToServer,u.type=new t.ProtocolRequestType(u.method),u.registrationMethod=n.method})(a||(e.SemanticTokensDeltaRequest=a={}));var s;(function(u){u.method="textDocument/semanticTokens/range",u.messageDirection=t.MessageDirection.clientToServer,u.type=new t.ProtocolRequestType(u.method),u.registrationMethod=n.method})(s||(e.SemanticTokensRangeRequest=s={}));var l;(function(u){u.method="workspace/semanticTokens/refresh",u.messageDirection=t.MessageDirection.serverToClient,u.type=new t.ProtocolRequestType0(u.method)})(l||(e.SemanticTokensRefreshRequest=l={}))}}),q0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ShowDocumentRequest=void 0;var t=ki(),r;(function(n){n.method="window/showDocument",n.messageDirection=t.MessageDirection.serverToClient,n.type=new t.ProtocolRequestType(n.method)})(r||(e.ShowDocumentRequest=r={}))}}),H0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.LinkedEditingRangeRequest=void 0;var t=ki(),r;(function(n){n.method="textDocument/linkedEditingRange",n.messageDirection=t.MessageDirection.clientToServer,n.type=new t.ProtocolRequestType(n.method)})(r||(e.LinkedEditingRangeRequest=r={}))}}),U0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WillDeleteFilesRequest=e.DidDeleteFilesNotification=e.DidRenameFilesNotification=e.WillRenameFilesRequest=e.DidCreateFilesNotification=e.WillCreateFilesRequest=e.FileOperationPatternKind=void 0;var t=ki(),r;(function(h){h.file="file",h.folder="folder"})(r||(e.FileOperationPatternKind=r={}));var n;(function(h){h.method="workspace/willCreateFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(n||(e.WillCreateFilesRequest=n={}));var i;(function(h){h.method="workspace/didCreateFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(i||(e.DidCreateFilesNotification=i={}));var a;(function(h){h.method="workspace/willRenameFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(a||(e.WillRenameFilesRequest=a={}));var s;(function(h){h.method="workspace/didRenameFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(s||(e.DidRenameFilesNotification=s={}));var l;(function(h){h.method="workspace/didDeleteFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolNotificationType(h.method)})(l||(e.DidDeleteFilesNotification=l={}));var u;(function(h){h.method="workspace/willDeleteFiles",h.messageDirection=t.MessageDirection.clientToServer,h.type=new t.ProtocolRequestType(h.method)})(u||(e.WillDeleteFilesRequest=u={}))}}),Y0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MonikerRequest=e.MonikerKind=e.UniquenessLevel=void 0;var t=ki(),r;(function(a){a.document="document",a.project="project",a.group="group",a.scheme="scheme",a.global="global"})(r||(e.UniquenessLevel=r={}));var n;(function(a){a.$import="import",a.$export="export",a.local="local"})(n||(e.MonikerKind=n={}));var i;(function(a){a.method="textDocument/moniker",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(i||(e.MonikerRequest=i={}))}}),j0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TypeHierarchySubtypesRequest=e.TypeHierarchySupertypesRequest=e.TypeHierarchyPrepareRequest=void 0;var t=ki(),r;(function(a){a.method="textDocument/prepareTypeHierarchy",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.TypeHierarchyPrepareRequest=r={}));var n;(function(a){a.method="typeHierarchy/supertypes",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.TypeHierarchySupertypesRequest=n={}));var i;(function(a){a.method="typeHierarchy/subtypes",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(i||(e.TypeHierarchySubtypesRequest=i={}))}}),X0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlineValueRefreshRequest=e.InlineValueRequest=void 0;var t=ki(),r;(function(i){i.method="textDocument/inlineValue",i.messageDirection=t.MessageDirection.clientToServer,i.type=new t.ProtocolRequestType(i.method)})(r||(e.InlineValueRequest=r={}));var n;(function(i){i.method="workspace/inlineValue/refresh",i.messageDirection=t.MessageDirection.serverToClient,i.type=new t.ProtocolRequestType0(i.method)})(n||(e.InlineValueRefreshRequest=n={}))}}),K0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InlayHintRefreshRequest=e.InlayHintResolveRequest=e.InlayHintRequest=void 0;var t=ki(),r;(function(a){a.method="textDocument/inlayHint",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(r||(e.InlayHintRequest=r={}));var n;(function(a){a.method="inlayHint/resolve",a.messageDirection=t.MessageDirection.clientToServer,a.type=new t.ProtocolRequestType(a.method)})(n||(e.InlayHintResolveRequest=n={}));var i;(function(a){a.method="workspace/inlayHint/refresh",a.messageDirection=t.MessageDirection.serverToClient,a.type=new t.ProtocolRequestType0(a.method)})(i||(e.InlayHintRefreshRequest=i={}))}}),Z0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DiagnosticRefreshRequest=e.WorkspaceDiagnosticRequest=e.DocumentDiagnosticRequest=e.DocumentDiagnosticReportKind=e.DiagnosticServerCancellationData=void 0;var t=Mv(),r=rW(),n=ki(),i;(function(h){function d(f){let p=f;return p&&r.boolean(p.retriggerRequest)}o(d,"is"),E(d,"is"),h.is=d})(i||(e.DiagnosticServerCancellationData=i={}));var a;(function(h){h.Full="full",h.Unchanged="unchanged"})(a||(e.DocumentDiagnosticReportKind=a={}));var s;(function(h){h.method="textDocument/diagnostic",h.messageDirection=n.MessageDirection.clientToServer,h.type=new n.ProtocolRequestType(h.method),h.partialResult=new t.ProgressType})(s||(e.DocumentDiagnosticRequest=s={}));var l;(function(h){h.method="workspace/diagnostic",h.messageDirection=n.MessageDirection.clientToServer,h.type=new n.ProtocolRequestType(h.method),h.partialResult=new t.ProgressType})(l||(e.WorkspaceDiagnosticRequest=l={}));var u;(function(h){h.method="workspace/diagnostic/refresh",h.messageDirection=n.MessageDirection.serverToClient,h.type=new n.ProtocolRequestType0(h.method)})(u||(e.DiagnosticRefreshRequest=u={}))}}),Q0t=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DidCloseNotebookDocumentNotification=e.DidSaveNotebookDocumentNotification=e.DidChangeNotebookDocumentNotification=e.NotebookCellArrayChange=e.DidOpenNotebookDocumentNotification=e.NotebookDocumentSyncRegistrationType=e.NotebookDocument=e.NotebookCell=e.ExecutionSummary=e.NotebookCellKind=void 0;var t=(hw(),tW(gR)),r=rW(),n=ki(),i;(function(g){g.Markup=1,g.Code=2;function y(v){return v===1||v===2}o(y,"is"),E(y,"is"),g.is=y})(i||(e.NotebookCellKind=i={}));var a;(function(g){function y(b,T){let k={executionOrder:b};return(T===!0||T===!1)&&(k.success=T),k}o(y,"create"),E(y,"create"),g.create=y;function v(b){let T=b;return r.objectLiteral(T)&&t.uinteger.is(T.executionOrder)&&(T.success===void 0||r.boolean(T.success))}o(v,"is"),E(v,"is"),g.is=v;function x(b,T){return b===T?!0:b==null||T===null||T===void 0?!1:b.executionOrder===T.executionOrder&&b.success===T.success}o(x,"equals"),E(x,"equals"),g.equals=x})(a||(e.ExecutionSummary=a={}));var s;(function(g){function y(T,k){return{kind:T,document:k}}o(y,"create"),E(y,"create"),g.create=y;function v(T){let k=T;return r.objectLiteral(k)&&i.is(k.kind)&&t.DocumentUri.is(k.document)&&(k.metadata===void 0||r.objectLiteral(k.metadata))}o(v,"is"),E(v,"is"),g.is=v;function x(T,k){let C=new Set;return T.document!==k.document&&C.add("document"),T.kind!==k.kind&&C.add("kind"),T.executionSummary!==k.executionSummary&&C.add("executionSummary"),(T.metadata!==void 0||k.metadata!==void 0)&&!b(T.metadata,k.metadata)&&C.add("metadata"),(T.executionSummary!==void 0||k.executionSummary!==void 0)&&!a.equals(T.executionSummary,k.executionSummary)&&C.add("executionSummary"),C}o(x,"diff"),E(x,"diff"),g.diff=x;function b(T,k){if(T===k)return!0;if(T==null||k===null||k===void 0||typeof T!=typeof k||typeof T!="object")return!1;let C=Array.isArray(T),w=Array.isArray(k);if(C!==w)return!1;if(C&&w){if(T.length!==k.length)return!1;for(let S=0;S0}o(lt,"hasId"),E(lt,"hasId"),me.hasId=lt})(O||(e.StaticRegistrationOptions=O={}));var $;(function(me){function lt(gt){let Ze=gt;return Ze&&(Ze.documentSelector===null||_.is(Ze.documentSelector))}o(lt,"is"),E(lt,"is"),me.is=lt})($||(e.TextDocumentRegistrationOptions=$={}));var V;(function(me){function lt(Ze){let Ee=Ze;return n.objectLiteral(Ee)&&(Ee.workDoneProgress===void 0||n.boolean(Ee.workDoneProgress))}o(lt,"is"),E(lt,"is"),me.is=lt;function gt(Ze){let Ee=Ze;return Ee&&n.boolean(Ee.workDoneProgress)}o(gt,"hasWorkDoneProgress"),E(gt,"hasWorkDoneProgress"),me.hasWorkDoneProgress=gt})(V||(e.WorkDoneProgressOptions=V={}));var G;(function(me){me.method="initialize",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(G||(e.InitializeRequest=G={}));var z;(function(me){me.unknownProtocolVersion=1})(z||(e.InitializeErrorCodes=z={}));var W;(function(me){me.method="initialized",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(W||(e.InitializedNotification=W={}));var H;(function(me){me.method="shutdown",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType0(me.method)})(H||(e.ShutdownRequest=H={}));var j;(function(me){me.method="exit",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType0(me.method)})(j||(e.ExitNotification=j={}));var Q;(function(me){me.method="workspace/didChangeConfiguration",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Q||(e.DidChangeConfigurationNotification=Q={}));var U;(function(me){me.Error=1,me.Warning=2,me.Info=3,me.Log=4,me.Debug=5})(U||(e.MessageType=U={}));var oe;(function(me){me.method="window/showMessage",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolNotificationType(me.method)})(oe||(e.ShowMessageNotification=oe={}));var te;(function(me){me.method="window/showMessageRequest",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolRequestType(me.method)})(te||(e.ShowMessageRequest=te={}));var le;(function(me){me.method="window/logMessage",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolNotificationType(me.method)})(le||(e.LogMessageNotification=le={}));var ie;(function(me){me.method="telemetry/event",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolNotificationType(me.method)})(ie||(e.TelemetryEventNotification=ie={}));var ae;(function(me){me.None=0,me.Full=1,me.Incremental=2})(ae||(e.TextDocumentSyncKind=ae={}));var Re;(function(me){me.method="textDocument/didOpen",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Re||(e.DidOpenTextDocumentNotification=Re={}));var be;(function(me){function lt(Ze){let Ee=Ze;return Ee!=null&&typeof Ee.text=="string"&&Ee.range!==void 0&&(Ee.rangeLength===void 0||typeof Ee.rangeLength=="number")}o(lt,"isIncremental"),E(lt,"isIncremental"),me.isIncremental=lt;function gt(Ze){let Ee=Ze;return Ee!=null&&typeof Ee.text=="string"&&Ee.range===void 0&&Ee.rangeLength===void 0}o(gt,"isFull"),E(gt,"isFull"),me.isFull=gt})(be||(e.TextDocumentContentChangeEvent=be={}));var Pe;(function(me){me.method="textDocument/didChange",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Pe||(e.DidChangeTextDocumentNotification=Pe={}));var Ge;(function(me){me.method="textDocument/didClose",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Ge||(e.DidCloseTextDocumentNotification=Ge={}));var Oe;(function(me){me.method="textDocument/didSave",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(Oe||(e.DidSaveTextDocumentNotification=Oe={}));var ue;(function(me){me.Manual=1,me.AfterDelay=2,me.FocusOut=3})(ue||(e.TextDocumentSaveReason=ue={}));var ye;(function(me){me.method="textDocument/willSave",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(ye||(e.WillSaveTextDocumentNotification=ye={}));var ke;(function(me){me.method="textDocument/willSaveWaitUntil",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(ke||(e.WillSaveTextDocumentWaitUntilRequest=ke={}));var ce;(function(me){me.method="workspace/didChangeWatchedFiles",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolNotificationType(me.method)})(ce||(e.DidChangeWatchedFilesNotification=ce={}));var re;(function(me){me.Created=1,me.Changed=2,me.Deleted=3})(re||(e.FileChangeType=re={}));var J;(function(me){function lt(gt){let Ze=gt;return n.objectLiteral(Ze)&&(r.URI.is(Ze.baseUri)||r.WorkspaceFolder.is(Ze.baseUri))&&n.string(Ze.pattern)}o(lt,"is"),E(lt,"is"),me.is=lt})(J||(e.RelativePattern=J={}));var se;(function(me){me.Create=1,me.Change=2,me.Delete=4})(se||(e.WatchKind=se={}));var ge;(function(me){me.method="textDocument/publishDiagnostics",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolNotificationType(me.method)})(ge||(e.PublishDiagnosticsNotification=ge={}));var Te;(function(me){me.Invoked=1,me.TriggerCharacter=2,me.TriggerForIncompleteCompletions=3})(Te||(e.CompletionTriggerKind=Te={}));var we;(function(me){me.method="textDocument/completion",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(we||(e.CompletionRequest=we={}));var Me;(function(me){me.method="completionItem/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Me||(e.CompletionResolveRequest=Me={}));var ve;(function(me){me.method="textDocument/hover",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(ve||(e.HoverRequest=ve={}));var ne;(function(me){me.Invoked=1,me.TriggerCharacter=2,me.ContentChange=3})(ne||(e.SignatureHelpTriggerKind=ne={}));var q;(function(me){me.method="textDocument/signatureHelp",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(q||(e.SignatureHelpRequest=q={}));var he;(function(me){me.method="textDocument/definition",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(he||(e.DefinitionRequest=he={}));var X;(function(me){me.method="textDocument/references",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(X||(e.ReferencesRequest=X={}));var fe;(function(me){me.method="textDocument/documentHighlight",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(fe||(e.DocumentHighlightRequest=fe={}));var K;(function(me){me.method="textDocument/documentSymbol",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(K||(e.DocumentSymbolRequest=K={}));var qe;(function(me){me.method="textDocument/codeAction",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(qe||(e.CodeActionRequest=qe={}));var _e;(function(me){me.method="codeAction/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(_e||(e.CodeActionResolveRequest=_e={}));var Be;(function(me){me.method="workspace/symbol",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Be||(e.WorkspaceSymbolRequest=Be={}));var Ne;(function(me){me.method="workspaceSymbol/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Ne||(e.WorkspaceSymbolResolveRequest=Ne={}));var He;(function(me){me.method="textDocument/codeLens",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(He||(e.CodeLensRequest=He={}));var $e;(function(me){me.method="codeLens/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})($e||(e.CodeLensResolveRequest=$e={}));var Xe;(function(me){me.method="workspace/codeLens/refresh",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolRequestType0(me.method)})(Xe||(e.CodeLensRefreshRequest=Xe={}));var Fe;(function(me){me.method="textDocument/documentLink",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Fe||(e.DocumentLinkRequest=Fe={}));var Ke;(function(me){me.method="documentLink/resolve",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Ke||(e.DocumentLinkResolveRequest=Ke={}));var xe;(function(me){me.method="textDocument/formatting",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(xe||(e.DocumentFormattingRequest=xe={}));var mt;(function(me){me.method="textDocument/rangeFormatting",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(mt||(e.DocumentRangeFormattingRequest=mt={}));var Le;(function(me){me.method="textDocument/rangesFormatting",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(Le||(e.DocumentRangesFormattingRequest=Le={}));var ft;(function(me){me.method="textDocument/onTypeFormatting",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(ft||(e.DocumentOnTypeFormattingRequest=ft={}));var wt;(function(me){me.Identifier=1})(wt||(e.PrepareSupportDefaultBehavior=wt={}));var zt;(function(me){me.method="textDocument/rename",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(zt||(e.RenameRequest=zt={}));var St;(function(me){me.method="textDocument/prepareRename",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(St||(e.PrepareRenameRequest=St={}));var At;(function(me){me.method="workspace/executeCommand",me.messageDirection=t.MessageDirection.clientToServer,me.type=new t.ProtocolRequestType(me.method)})(At||(e.ExecuteCommandRequest=At={}));var bt;(function(me){me.method="workspace/applyEdit",me.messageDirection=t.MessageDirection.serverToClient,me.type=new t.ProtocolRequestType("workspace/applyEdit")})(bt||(e.ApplyWorkspaceEditRequest=bt={}))}}),tyt=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/connection.js"(e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createProtocolConnection=void 0;var t=Mv();function r(n,i,a,s){return t.ConnectionStrategy.is(s)&&(s={connectionStrategy:s}),(0,t.createMessageConnection)(n,i,a,s)}o(r,"createProtocolConnection"),E(r,"createProtocolConnection"),e.createProtocolConnection=r}}),ryt=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/common/api.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(a,s,l,u){u===void 0&&(u=l);var h=Object.getOwnPropertyDescriptor(s,l);(!h||("get"in h?!s.__esModule:h.writable||h.configurable))&&(h={enumerable:!0,get:E(function(){return s[l]},"get")}),Object.defineProperty(a,u,h)}):(function(a,s,l,u){u===void 0&&(u=l),a[u]=s[l]})),r=e&&e.__exportStar||function(a,s){for(var l in a)l!=="default"&&!Object.prototype.hasOwnProperty.call(s,l)&&t(s,a,l)};Object.defineProperty(e,"__esModule",{value:!0}),e.LSPErrorCodes=e.createProtocolConnection=void 0,r(Mv(),e),r((hw(),tW(gR)),e),r(ki(),e),r(eyt(),e);var n=tyt();Object.defineProperty(e,"createProtocolConnection",{enumerable:!0,get:E(function(){return n.createProtocolConnection},"get")});var i;(function(a){a.lspReservedErrorRangeStart=-32899,a.RequestFailed=-32803,a.ServerCancelled=-32802,a.ContentModified=-32801,a.RequestCancelled=-32800,a.lspReservedErrorRangeEnd=-32800})(i||(e.LSPErrorCodes=i={}))}}),nyt=zr({"../../node_modules/.pnpm/vscode-languageserver-protocol@3.17.5/node_modules/vscode-languageserver-protocol/lib/browser/main.js"(e){"use strict";var t=e&&e.__createBinding||(Object.create?(function(a,s,l,u){u===void 0&&(u=l);var h=Object.getOwnPropertyDescriptor(s,l);(!h||("get"in h?!s.__esModule:h.writable||h.configurable))&&(h={enumerable:!0,get:E(function(){return s[l]},"get")}),Object.defineProperty(a,u,h)}):(function(a,s,l,u){u===void 0&&(u=l),a[u]=s[l]})),r=e&&e.__exportStar||function(a,s){for(var l in a)l!=="default"&&!Object.prototype.hasOwnProperty.call(s,l)&&t(s,a,l)};Object.defineProperty(e,"__esModule",{value:!0}),e.createProtocolConnection=void 0;var n=OTe();r(OTe(),e),r(ryt(),e);function i(a,s,l,u){return(0,n.createMessageConnection)(a,s,l,u)}o(i,"createProtocolConnection"),E(i,"createProtocolConnection"),e.createProtocolConnection=i}}),Pwe={};yp(Pwe,{AbstractAstReflection:o(()=>aW,"AbstractAstReflection"),AbstractCstNode:o(()=>oH,"AbstractCstNode"),AbstractLangiumParser:o(()=>cH,"AbstractLangiumParser"),AbstractParserErrorMessageProvider:o(()=>w_e,"AbstractParserErrorMessageProvider"),AbstractThreadedAsyncParser:o(()=>IEt,"AbstractThreadedAsyncParser"),AstUtils:o(()=>sW,"AstUtils"),BiMap:o(()=>uR,"BiMap"),Cancellation:o(()=>Jn,"Cancellation"),CompositeCstNodeImpl:o(()=>f_,"CompositeCstNodeImpl"),ContextCache:o(()=>b_,"ContextCache"),CstNodeBuilder:o(()=>x_e,"CstNodeBuilder"),CstUtils:o(()=>nW,"CstUtils"),DEFAULT_TOKENIZE_OPTIONS:o(()=>AH,"DEFAULT_TOKENIZE_OPTIONS"),DONE_RESULT:o(()=>Os,"DONE_RESULT"),DatatypeSymbol:o(()=>sR,"DatatypeSymbol"),DefaultAstNodeDescriptionProvider:o(()=>J_e,"DefaultAstNodeDescriptionProvider"),DefaultAstNodeLocator:o(()=>tLe,"DefaultAstNodeLocator"),DefaultAsyncParser:o(()=>xLe,"DefaultAsyncParser"),DefaultCommentProvider:o(()=>vLe,"DefaultCommentProvider"),DefaultConfigurationProvider:o(()=>rLe,"DefaultConfigurationProvider"),DefaultDocumentBuilder:o(()=>nLe,"DefaultDocumentBuilder"),DefaultDocumentValidator:o(()=>Q_e,"DefaultDocumentValidator"),DefaultHydrator:o(()=>TLe,"DefaultHydrator"),DefaultIndexManager:o(()=>iLe,"DefaultIndexManager"),DefaultJsonSerializer:o(()=>j_e,"DefaultJsonSerializer"),DefaultLangiumDocumentFactory:o(()=>F_e,"DefaultLangiumDocumentFactory"),DefaultLangiumDocuments:o(()=>z_e,"DefaultLangiumDocuments"),DefaultLangiumProfiler:o(()=>BEt,"DefaultLangiumProfiler"),DefaultLexer:o(()=>RH,"DefaultLexer"),DefaultLexerErrorMessageProvider:o(()=>sLe,"DefaultLexerErrorMessageProvider"),DefaultLinker:o(()=>G_e,"DefaultLinker"),DefaultNameProvider:o(()=>V_e,"DefaultNameProvider"),DefaultReferenceDescriptionProvider:o(()=>eLe,"DefaultReferenceDescriptionProvider"),DefaultReferences:o(()=>W_e,"DefaultReferences"),DefaultScopeComputation:o(()=>q_e,"DefaultScopeComputation"),DefaultScopeProvider:o(()=>Y_e,"DefaultScopeProvider"),DefaultServiceRegistry:o(()=>X_e,"DefaultServiceRegistry"),DefaultTokenBuilder:o(()=>g_,"DefaultTokenBuilder"),DefaultValueConverter:o(()=>gH,"DefaultValueConverter"),DefaultWorkspaceLock:o(()=>bLe,"DefaultWorkspaceLock"),DefaultWorkspaceManager:o(()=>aLe,"DefaultWorkspaceManager"),Deferred:o(()=>Jh,"Deferred"),Disposable:o(()=>Yg,"Disposable"),DisposableCache:o(()=>x_,"DisposableCache"),DocumentCache:o(()=>U_e,"DocumentCache"),DocumentState:o(()=>en,"DocumentState"),DocumentValidator:o(()=>Rl,"DocumentValidator"),EMPTY_SCOPE:o(()=>REt,"EMPTY_SCOPE"),EMPTY_STREAM:o(()=>Tv,"EMPTY_STREAM"),EmptyFileSystem:o(()=>yn,"EmptyFileSystem"),EmptyFileSystemProvider:o(()=>kLe,"EmptyFileSystemProvider"),ErrorWithLocation:o(()=>ER,"ErrorWithLocation"),GrammarAST:o(()=>$we,"GrammarAST"),GrammarUtils:o(()=>OW,"GrammarUtils"),IndentationAwareLexer:o(()=>NEt,"IndentationAwareLexer"),IndentationAwareTokenBuilder:o(()=>wLe,"IndentationAwareTokenBuilder"),JSDocDocumentationProvider:o(()=>yLe,"JSDocDocumentationProvider"),LangiumCompletionParser:o(()=>k_e,"LangiumCompletionParser"),LangiumParser:o(()=>C_e,"LangiumParser"),LangiumParserErrorMessageProvider:o(()=>uH,"LangiumParserErrorMessageProvider"),LeafCstNodeImpl:o(()=>aR,"LeafCstNodeImpl"),LexingMode:o(()=>Hg,"LexingMode"),MapScope:o(()=>AEt,"MapScope"),Module:o(()=>rV,"Module"),MultiMap:o(()=>ed,"MultiMap"),MultiMapScope:o(()=>H_e,"MultiMapScope"),OperationCancelled:o(()=>Pu,"OperationCancelled"),ParserWorker:o(()=>MEt,"ParserWorker"),ProfilingTask:o(()=>ELe,"ProfilingTask"),Reduction:o(()=>jC,"Reduction"),RefResolving:o(()=>gg,"RefResolving"),RegExpUtils:o(()=>$W,"RegExpUtils"),RootCstNodeImpl:o(()=>lH,"RootCstNodeImpl"),SimpleCache:o(()=>CH,"SimpleCache"),StreamImpl:o(()=>Nu,"StreamImpl"),StreamScope:o(()=>QG,"StreamScope"),TextDocument:o(()=>lR,"TextDocument"),TreeStreamImpl:o(()=>Cv,"TreeStreamImpl"),URI:o(()=>Yo,"URI"),UriTrie:o(()=>bH,"UriTrie"),UriUtils:o(()=>$s,"UriUtils"),VALIDATE_EACH_NODE:o(()=>Z_e,"VALIDATE_EACH_NODE"),ValidationCategory:o(()=>hR,"ValidationCategory"),ValidationRegistry:o(()=>K_e,"ValidationRegistry"),ValueConverter:o(()=>Iu,"ValueConverter"),WorkspaceCache:o(()=>wH,"WorkspaceCache"),assertCondition:o(()=>BW,"assertCondition"),assertUnreachable:o(()=>vp,"assertUnreachable"),createCompletionParser:o(()=>fH,"createCompletionParser"),createDefaultCoreModule:o(()=>hn,"createDefaultCoreModule"),createDefaultSharedCoreModule:o(()=>dn,"createDefaultSharedCoreModule"),createGrammarConfig:o(()=>rq,"createGrammarConfig"),createLangiumParser:o(()=>pH,"createLangiumParser"),createParser:o(()=>p_,"createParser"),delayNextTick:o(()=>y_,"delayNextTick"),diagnosticData:o(()=>qg,"diagnosticData"),eagerLoad:o(()=>PH,"eagerLoad"),getDiagnosticRange:o(()=>SH,"getDiagnosticRange"),indentationBuilderDefaultOptions:o(()=>iV,"indentationBuilderDefaultOptions"),inject:o(()=>Mr,"inject"),interruptAndCheck:o(()=>Ia,"interruptAndCheck"),isAstNode:o(()=>Zi,"isAstNode"),isAstNodeDescription:o(()=>iW,"isAstNodeDescription"),isAstNodeWithComment:o(()=>kH,"isAstNodeWithComment"),isCompositeCstNode:o(()=>Hh,"isCompositeCstNode"),isIMultiModeLexerDefinition:o(()=>w_,"isIMultiModeLexerDefinition"),isJSDoc:o(()=>LH,"isJSDoc"),isLeafCstNode:o(()=>Jg,"isLeafCstNode"),isLinkingError:o(()=>Tg,"isLinkingError"),isMultiReference:o(()=>Ou,"isMultiReference"),isNamed:o(()=>TH,"isNamed"),isOperationCancelled:o(()=>v0,"isOperationCancelled"),isReference:o(()=>Bs,"isReference"),isRootCstNode:o(()=>vR,"isRootCstNode"),isTokenTypeArray:o(()=>C_,"isTokenTypeArray"),isTokenTypeDictionary:o(()=>dR,"isTokenTypeDictionary"),loadGrammarFromJson:o(()=>Ma,"loadGrammarFromJson"),parseJSDoc:o(()=>_H,"parseJSDoc"),prepareLangiumParser:o(()=>mH,"prepareLangiumParser"),setInterruptionPeriod:o(()=>yH,"setInterruptionPeriod"),startCancelableOperation:o(()=>v_,"startCancelableOperation"),stream:o(()=>Bn,"stream"),toDiagnosticData:o(()=>EH,"toDiagnosticData"),toDiagnosticSeverity:o(()=>WC,"toDiagnosticSeverity")});nW={};yp(nW,{DefaultNameRegexp:o(()=>DW,"DefaultNameRegexp"),RangeComparison:o(()=>Mu,"RangeComparison"),compareRange:o(()=>_W,"compareRange"),findCommentNode:o(()=>IW,"findCommentNode"),findDeclarationNodeAtOffset:o(()=>nke,"findDeclarationNodeAtOffset"),findLeafNodeAtOffset:o(()=>SR,"findLeafNodeAtOffset"),findLeafNodeBeforeOffset:o(()=>MW,"findLeafNodeBeforeOffset"),flattenCst:o(()=>rke,"flattenCst"),getDatatypeNode:o(()=>tke,"getDatatypeNode"),getInteriorNodes:o(()=>ske,"getInteriorNodes"),getNextNode:o(()=>ike,"getNextNode"),getPreviousNode:o(()=>PW,"getPreviousNode"),getStartlineNode:o(()=>ake,"getStartlineNode"),inRange:o(()=>LW,"inRange"),isChildNode:o(()=>RW,"isChildNode"),isCommentNode:o(()=>W6,"isCommentNode"),streamCst:o(()=>Ev,"streamCst"),toDocumentSegment:o(()=>Av,"toDocumentSegment"),tokenToRange:o(()=>XC,"tokenToRange")});o(Zi,"isAstNode");E(Zi,"isAstNode");o(Bs,"isReference");E(Bs,"isReference");o(Ou,"isMultiReference");E(Ou,"isMultiReference");o(iW,"isAstNodeDescription");E(iW,"isAstNodeDescription");o(Tg,"isLinkingError");E(Tg,"isLinkingError");aW=class{static{o(this,"AbstractAstReflection")}static{E(this,"AbstractAstReflection")}constructor(){this.subtypes={},this.allSubtypes={}}getAllTypes(){return Object.keys(this.types)}getReferenceType(e){let t=this.types[e.container.$type];if(!t)throw new Error(`Type ${e.container.$type||"undefined"} not found.`);let r=t.properties[e.property]?.referenceType;if(!r)throw new Error(`Property ${e.property||"undefined"} of type ${e.container.$type} is not a reference.`);return r}getTypeMetaData(e){let t=this.types[e];return t||{name:e,properties:{},superTypes:[]}}isInstance(e,t){return Zi(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let r=this.subtypes[e];r||(r=this.subtypes[e]={});let n=r[t];if(n!==void 0)return n;{let i=this.types[e],a=i?i.superTypes.some(s=>this.isSubtype(s,t)):!1;return r[t]=a,a}}getAllSubTypes(e){let t=this.allSubtypes[e];if(t)return t;{let r=this.getAllTypes(),n=[];for(let i of r)this.isSubtype(i,e)&&n.push(i);return this.allSubtypes[e]=n,n}}};o(Hh,"isCompositeCstNode");E(Hh,"isCompositeCstNode");o(Jg,"isLeafCstNode");E(Jg,"isLeafCstNode");o(vR,"isRootCstNode");E(vR,"isRootCstNode");Nu=class zh{static{o(this,"_StreamImpl")}static{E(this,"StreamImpl")}constructor(t,r){this.startFn=t,this.nextFn=r}iterator(){let t={state:this.startFn(),next:E(()=>this.nextFn(t.state),"next"),[Symbol.iterator]:()=>t};return t}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let t=this.iterator(),r=0,n=t.next();for(;!n.done;)r++,n=t.next();return r}toArray(){let t=[],r=this.iterator(),n;do n=r.next(),n.value!==void 0&&t.push(n.value);while(!n.done);return t}toSet(){return new Set(this)}toMap(t,r){let n=this.map(i=>[t?t(i):i,r?r(i):i]);return new Map(n)}toString(){return this.join()}concat(t){return new zh(()=>({first:this.startFn(),firstDone:!1,iterator:t[Symbol.iterator]()}),r=>{let n;if(!r.firstDone){do if(n=this.nextFn(r.first),!n.done)return n;while(!n.done);r.firstDone=!0}do if(n=r.iterator.next(),!n.done)return n;while(!n.done);return Os})}join(t=","){let r=this.iterator(),n="",i,a=!1;do i=r.next(),i.done||(a&&(n+=t),n+=Owe(i.value)),a=!0;while(!i.done);return n}indexOf(t,r=0){let n=this.iterator(),i=0,a=n.next();for(;!a.done;){if(i>=r&&a.value===t)return i;a=n.next(),i++}return-1}every(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(!t(n.value))return!1;n=r.next()}return!0}some(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(t(n.value))return!0;n=r.next()}return!1}forEach(t){let r=this.iterator(),n=0,i=r.next();for(;!i.done;)t(i.value,n),i=r.next(),n++}map(t){return new zh(this.startFn,r=>{let{done:n,value:i}=this.nextFn(r);return n?Os:{done:!1,value:t(i)}})}filter(t){return new zh(this.startFn,r=>{let n;do if(n=this.nextFn(r),!n.done&&t(n.value))return n;while(!n.done);return Os})}nonNullable(){return this.filter(t=>t!=null)}reduce(t,r){let n=this.iterator(),i=r,a=n.next();for(;!a.done;)i===void 0?i=a.value:i=t(i,a.value),a=n.next();return i}reduceRight(t,r){return this.recursiveReduce(this.iterator(),t,r)}recursiveReduce(t,r,n){let i=t.next();if(i.done)return n;let a=this.recursiveReduce(t,r,n);return a===void 0?i.value:r(a,i.value)}find(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(t(n.value))return n.value;n=r.next()}}findIndex(t){let r=this.iterator(),n=0,i=r.next();for(;!i.done;){if(t(i.value))return n;i=r.next(),n++}return-1}includes(t){let r=this.iterator(),n=r.next();for(;!n.done;){if(n.value===t)return!0;n=r.next()}return!1}flatMap(t){return new zh(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}let{done:n,value:i}=this.nextFn(r.this);if(!n){let a=t(i);if(YC(a))r.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}}while(r.iterator);return Os})}flat(t){if(t===void 0&&(t=1),t<=0)return this;let r=t>1?this.flat(t-1):this;return new zh(()=>({this:r.startFn()}),n=>{do{if(n.iterator){let s=n.iterator.next();if(s.done)n.iterator=void 0;else return s}let{done:i,value:a}=r.nextFn(n.this);if(!i)if(YC(a))n.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}while(n.iterator);return Os})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(t=1){return new zh(()=>{let r=this.startFn();for(let n=0;n({size:0,state:this.startFn()}),r=>(r.size++,r.size>t?Os:this.nextFn(r.state)))}distinct(t){return new zh(()=>({set:new Set,internalState:this.startFn()}),r=>{let n;do if(n=this.nextFn(r.internalState),!n.done){let i=t?t(n.value):n.value;if(!r.set.has(i))return r.set.add(i),n}while(!n.done);return Os})}exclude(t,r){let n=new Set;for(let i of t){let a=r?r(i):i;n.add(a)}return this.filter(i=>{let a=r?r(i):i;return!n.has(a)})}};o(Owe,"toString");E(Owe,"toString");o(YC,"isIterable");E(YC,"isIterable");Tv=new Nu(()=>{},()=>Os),Os=Object.freeze({done:!0,value:void 0});o(Bn,"stream");E(Bn,"stream");Cv=class extends Nu{static{o(this,"TreeStreamImpl")}static{E(this,"TreeStreamImpl")}constructor(e,t,r){super(()=>({iterators:r?.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),n=>{for(n.pruned&&(n.iterators.pop(),n.pruned=!1);n.iterators.length>0;){let a=n.iterators[n.iterators.length-1].next();if(a.done)n.iterators.pop();else return n.iterators.push(t(a.value)[Symbol.iterator]()),a}return Os})}iterator(){let e={state:this.startFn(),next:E(()=>this.nextFn(e.state),"next"),prune:E(()=>{e.state.pruned=!0},"prune"),[Symbol.iterator]:()=>e};return e}};(function(e){function t(a){return a.reduce((s,l)=>s+l,0)}o(t,"sum"),E(t,"sum"),e.sum=t;function r(a){return a.reduce((s,l)=>s*l,0)}o(r,"product"),E(r,"product"),e.product=r;function n(a){return a.reduce((s,l)=>Math.min(s,l))}o(n,"min2"),E(n,"min"),e.min=n;function i(a){return a.reduce((s,l)=>Math.max(s,l))}o(i,"max"),E(i,"max"),e.max=i})(jC||(jC={}));sW={};yp(sW,{assignMandatoryProperties:o(()=>oW,"assignMandatoryProperties"),copyAstNode:o(()=>_6,"copyAstNode"),findRootNode:o(()=>yv,"findRootNode"),getContainerOfType:o(()=>e0,"getContainerOfType"),getDocument:o(()=>wc,"getDocument"),getReferenceNodes:o(()=>A6,"getReferenceNodes"),hasContainerOfType:o(()=>Bwe,"hasContainerOfType"),linkContentToContainer:o(()=>wv,"linkContentToContainer"),streamAllContents:o(()=>td,"streamAllContents"),streamAst:o(()=>kc,"streamAst"),streamContents:o(()=>fw,"streamContents"),streamReferences:o(()=>kv,"streamReferences")});o(wv,"linkContentToContainer");E(wv,"linkContentToContainer");o(e0,"getContainerOfType");E(e0,"getContainerOfType");o(Bwe,"hasContainerOfType");E(Bwe,"hasContainerOfType");o(wc,"getDocument");E(wc,"getDocument");o(yv,"findRootNode");E(yv,"findRootNode");o(A6,"getReferenceNodes");E(A6,"getReferenceNodes");o(fw,"streamContents");E(fw,"streamContents");o(td,"streamAllContents");E(td,"streamAllContents");o(kc,"streamAst");E(kc,"streamAst");o(R6,"isAstNodeInRange");E(R6,"isAstNodeInRange");o(kv,"streamReferences");E(kv,"streamReferences");o(oW,"assignMandatoryProperties");E(oW,"assignMandatoryProperties");o(lW,"copyDefaultValue");E(lW,"copyDefaultValue");o(_6,"copyAstNode");E(_6,"copyAstNode");$we={};yp($we,{AbstractElement:o(()=>xo,"AbstractElement"),AbstractParserRule:o(()=>_C,"AbstractParserRule"),AbstractRule:o(()=>ov,"AbstractRule"),AbstractType:o(()=>Uo,"AbstractType"),Action:o(()=>ip,"Action"),Alternatives:o(()=>LC,"Alternatives"),ArrayLiteral:o(()=>L6,"ArrayLiteral"),ArrayType:o(()=>D6,"ArrayType"),Assignment:o(()=>ap,"Assignment"),BooleanLiteral:o(()=>I6,"BooleanLiteral"),CharacterRange:o(()=>sp,"CharacterRange"),Condition:o(()=>op,"Condition"),Conjunction:o(()=>DC,"Conjunction"),CrossReference:o(()=>lp,"CrossReference"),Disjunction:o(()=>IC,"Disjunction"),EndOfFile:o(()=>M6,"EndOfFile"),Grammar:o(()=>Vh,"Grammar"),GrammarImport:o(()=>N6,"GrammarImport"),Group:o(()=>Cg,"Group"),InferredType:o(()=>P6,"InferredType"),InfixRule:o(()=>Du,"InfixRule"),InfixRuleOperatorList:o(()=>MC,"InfixRuleOperatorList"),InfixRuleOperators:o(()=>O6,"InfixRuleOperators"),Interface:o(()=>lv,"Interface"),Keyword:o(()=>cv,"Keyword"),LangiumGrammarAstReflection:o(()=>AW,"LangiumGrammarAstReflection"),LangiumGrammarTerminals:o(()=>iyt,"LangiumGrammarTerminals"),NamedArgument:o(()=>uv,"NamedArgument"),NegatedToken:o(()=>wg,"NegatedToken"),Negation:o(()=>B6,"Negation"),NumberLiteral:o(()=>$6,"NumberLiteral"),Parameter:o(()=>hv,"Parameter"),ParameterReference:o(()=>F6,"ParameterReference"),ParserRule:o(()=>xc,"ParserRule"),ReferenceType:o(()=>NC,"ReferenceType"),RegexToken:o(()=>kg,"RegexToken"),ReturnType:o(()=>z6,"ReturnType"),RuleCall:o(()=>Sg,"RuleCall"),SimpleType:o(()=>dv,"SimpleType"),StringLiteral:o(()=>G6,"StringLiteral"),TerminalAlternatives:o(()=>Eg,"TerminalAlternatives"),TerminalElement:o(()=>bo,"TerminalElement"),TerminalGroup:o(()=>Ag,"TerminalGroup"),TerminalRule:o(()=>Wh,"TerminalRule"),TerminalRuleCall:o(()=>Rg,"TerminalRuleCall"),Type:o(()=>PC,"Type"),TypeAttribute:o(()=>_g,"TypeAttribute"),TypeDefinition:o(()=>Lg,"TypeDefinition"),UnionType:o(()=>V6,"UnionType"),UnorderedGroup:o(()=>OC,"UnorderedGroup"),UntilToken:o(()=>Dg,"UntilToken"),ValueLiteral:o(()=>Ig,"ValueLiteral"),Wildcard:o(()=>fv,"Wildcard"),isAbstractElement:o(()=>xR,"isAbstractElement"),isAbstractParserRule:o(()=>t0,"isAbstractParserRule"),isAbstractRule:o(()=>Fwe,"isAbstractRule"),isAbstractType:o(()=>zwe,"isAbstractType"),isAction:o(()=>dp,"isAction"),isAlternatives:o(()=>bR,"isAlternatives"),isArrayLiteral:o(()=>Gwe,"isArrayLiteral"),isArrayType:o(()=>cW,"isArrayType"),isAssignment:o(()=>Uh,"isAssignment"),isBooleanLiteral:o(()=>uW,"isBooleanLiteral"),isCharacterRange:o(()=>hW,"isCharacterRange"),isCondition:o(()=>Vwe,"isCondition"),isConjunction:o(()=>dW,"isConjunction"),isCrossReference:o(()=>r0,"isCrossReference"),isDisjunction:o(()=>fW,"isDisjunction"),isEndOfFile:o(()=>pW,"isEndOfFile"),isGrammar:o(()=>Wwe,"isGrammar"),isGrammarImport:o(()=>qwe,"isGrammarImport"),isGroup:o(()=>n0,"isGroup"),isInferredType:o(()=>pw,"isInferredType"),isInfixRule:o(()=>Sv,"isInfixRule"),isInfixRuleOperatorList:o(()=>Hwe,"isInfixRuleOperatorList"),isInfixRuleOperators:o(()=>Uwe,"isInfixRuleOperators"),isInterface:o(()=>mW,"isInterface"),isKeyword:o(()=>Yh,"isKeyword"),isNamedArgument:o(()=>Ywe,"isNamedArgument"),isNegatedToken:o(()=>gW,"isNegatedToken"),isNegation:o(()=>yW,"isNegation"),isNumberLiteral:o(()=>jwe,"isNumberLiteral"),isParameter:o(()=>Xwe,"isParameter"),isParameterReference:o(()=>vW,"isParameterReference"),isParserRule:o(()=>zs,"isParserRule"),isReferenceType:o(()=>xW,"isReferenceType"),isRegexToken:o(()=>bW,"isRegexToken"),isReturnType:o(()=>TW,"isReturnType"),isRuleCall:o(()=>jh,"isRuleCall"),isSimpleType:o(()=>TR,"isSimpleType"),isStringLiteral:o(()=>Kwe,"isStringLiteral"),isTerminalAlternatives:o(()=>CW,"isTerminalAlternatives"),isTerminalElement:o(()=>Zwe,"isTerminalElement"),isTerminalGroup:o(()=>wW,"isTerminalGroup"),isTerminalRule:o(()=>Il,"isTerminalRule"),isTerminalRuleCall:o(()=>CR,"isTerminalRuleCall"),isType:o(()=>wR,"isType"),isTypeAttribute:o(()=>Qwe,"isTypeAttribute"),isTypeDefinition:o(()=>Jwe,"isTypeDefinition"),isUnionType:o(()=>kW,"isUnionType"),isUnorderedGroup:o(()=>kR,"isUnorderedGroup"),isUntilToken:o(()=>SW,"isUntilToken"),isValueLiteral:o(()=>eke,"isValueLiteral"),isWildcard:o(()=>EW,"isWildcard"),reflection:o(()=>Tr,"reflection")});iyt={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},xo={$type:"AbstractElement",cardinality:"cardinality"};o(xR,"isAbstractElement");E(xR,"isAbstractElement");_C={$type:"AbstractParserRule"};o(t0,"isAbstractParserRule");E(t0,"isAbstractParserRule");ov={$type:"AbstractRule"};o(Fwe,"isAbstractRule");E(Fwe,"isAbstractRule");Uo={$type:"AbstractType"};o(zwe,"isAbstractType");E(zwe,"isAbstractType");ip={$type:"Action",cardinality:"cardinality",feature:"feature",inferredType:"inferredType",operator:"operator",type:"type"};o(dp,"isAction");E(dp,"isAction");LC={$type:"Alternatives",cardinality:"cardinality",elements:"elements"};o(bR,"isAlternatives");E(bR,"isAlternatives");L6={$type:"ArrayLiteral",elements:"elements"};o(Gwe,"isArrayLiteral");E(Gwe,"isArrayLiteral");D6={$type:"ArrayType",elementType:"elementType"};o(cW,"isArrayType");E(cW,"isArrayType");ap={$type:"Assignment",cardinality:"cardinality",feature:"feature",operator:"operator",predicate:"predicate",terminal:"terminal"};o(Uh,"isAssignment");E(Uh,"isAssignment");I6={$type:"BooleanLiteral",true:"true"};o(uW,"isBooleanLiteral");E(uW,"isBooleanLiteral");sp={$type:"CharacterRange",cardinality:"cardinality",left:"left",lookahead:"lookahead",parenthesized:"parenthesized",right:"right"};o(hW,"isCharacterRange");E(hW,"isCharacterRange");op={$type:"Condition"};o(Vwe,"isCondition");E(Vwe,"isCondition");DC={$type:"Conjunction",left:"left",right:"right"};o(dW,"isConjunction");E(dW,"isConjunction");lp={$type:"CrossReference",cardinality:"cardinality",deprecatedSyntax:"deprecatedSyntax",isMulti:"isMulti",terminal:"terminal",type:"type"};o(r0,"isCrossReference");E(r0,"isCrossReference");IC={$type:"Disjunction",left:"left",right:"right"};o(fW,"isDisjunction");E(fW,"isDisjunction");M6={$type:"EndOfFile",cardinality:"cardinality"};o(pW,"isEndOfFile");E(pW,"isEndOfFile");Vh={$type:"Grammar",imports:"imports",interfaces:"interfaces",isDeclared:"isDeclared",name:"name",rules:"rules",types:"types"};o(Wwe,"isGrammar");E(Wwe,"isGrammar");N6={$type:"GrammarImport",path:"path"};o(qwe,"isGrammarImport");E(qwe,"isGrammarImport");Cg={$type:"Group",cardinality:"cardinality",elements:"elements",guardCondition:"guardCondition",predicate:"predicate"};o(n0,"isGroup");E(n0,"isGroup");P6={$type:"InferredType",name:"name"};o(pw,"isInferredType");E(pw,"isInferredType");Du={$type:"InfixRule",call:"call",dataType:"dataType",inferredType:"inferredType",name:"name",operators:"operators",parameters:"parameters",returnType:"returnType"};o(Sv,"isInfixRule");E(Sv,"isInfixRule");MC={$type:"InfixRuleOperatorList",associativity:"associativity",operators:"operators"};o(Hwe,"isInfixRuleOperatorList");E(Hwe,"isInfixRuleOperatorList");O6={$type:"InfixRuleOperators",precedences:"precedences"};o(Uwe,"isInfixRuleOperators");E(Uwe,"isInfixRuleOperators");lv={$type:"Interface",attributes:"attributes",name:"name",superTypes:"superTypes"};o(mW,"isInterface");E(mW,"isInterface");cv={$type:"Keyword",cardinality:"cardinality",predicate:"predicate",value:"value"};o(Yh,"isKeyword");E(Yh,"isKeyword");uv={$type:"NamedArgument",calledByName:"calledByName",parameter:"parameter",value:"value"};o(Ywe,"isNamedArgument");E(Ywe,"isNamedArgument");wg={$type:"NegatedToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};o(gW,"isNegatedToken");E(gW,"isNegatedToken");B6={$type:"Negation",value:"value"};o(yW,"isNegation");E(yW,"isNegation");$6={$type:"NumberLiteral",value:"value"};o(jwe,"isNumberLiteral");E(jwe,"isNumberLiteral");hv={$type:"Parameter",name:"name"};o(Xwe,"isParameter");E(Xwe,"isParameter");F6={$type:"ParameterReference",parameter:"parameter"};o(vW,"isParameterReference");E(vW,"isParameterReference");xc={$type:"ParserRule",dataType:"dataType",definition:"definition",entry:"entry",fragment:"fragment",inferredType:"inferredType",name:"name",parameters:"parameters",returnType:"returnType"};o(zs,"isParserRule");E(zs,"isParserRule");NC={$type:"ReferenceType",isMulti:"isMulti",referenceType:"referenceType"};o(xW,"isReferenceType");E(xW,"isReferenceType");kg={$type:"RegexToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",regex:"regex"};o(bW,"isRegexToken");E(bW,"isRegexToken");z6={$type:"ReturnType",name:"name"};o(TW,"isReturnType");E(TW,"isReturnType");Sg={$type:"RuleCall",arguments:"arguments",cardinality:"cardinality",predicate:"predicate",rule:"rule"};o(jh,"isRuleCall");E(jh,"isRuleCall");dv={$type:"SimpleType",primitiveType:"primitiveType",stringType:"stringType",typeRef:"typeRef"};o(TR,"isSimpleType");E(TR,"isSimpleType");G6={$type:"StringLiteral",value:"value"};o(Kwe,"isStringLiteral");E(Kwe,"isStringLiteral");Eg={$type:"TerminalAlternatives",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};o(CW,"isTerminalAlternatives");E(CW,"isTerminalAlternatives");bo={$type:"TerminalElement",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};o(Zwe,"isTerminalElement");E(Zwe,"isTerminalElement");Ag={$type:"TerminalGroup",cardinality:"cardinality",elements:"elements",lookahead:"lookahead",parenthesized:"parenthesized"};o(wW,"isTerminalGroup");E(wW,"isTerminalGroup");Wh={$type:"TerminalRule",definition:"definition",fragment:"fragment",hidden:"hidden",name:"name",type:"type"};o(Il,"isTerminalRule");E(Il,"isTerminalRule");Rg={$type:"TerminalRuleCall",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",rule:"rule"};o(CR,"isTerminalRuleCall");E(CR,"isTerminalRuleCall");PC={$type:"Type",name:"name",type:"type"};o(wR,"isType");E(wR,"isType");_g={$type:"TypeAttribute",defaultValue:"defaultValue",isOptional:"isOptional",name:"name",type:"type"};o(Qwe,"isTypeAttribute");E(Qwe,"isTypeAttribute");Lg={$type:"TypeDefinition"};o(Jwe,"isTypeDefinition");E(Jwe,"isTypeDefinition");V6={$type:"UnionType",types:"types"};o(kW,"isUnionType");E(kW,"isUnionType");OC={$type:"UnorderedGroup",cardinality:"cardinality",elements:"elements"};o(kR,"isUnorderedGroup");E(kR,"isUnorderedGroup");Dg={$type:"UntilToken",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized",terminal:"terminal"};o(SW,"isUntilToken");E(SW,"isUntilToken");Ig={$type:"ValueLiteral"};o(eke,"isValueLiteral");E(eke,"isValueLiteral");fv={$type:"Wildcard",cardinality:"cardinality",lookahead:"lookahead",parenthesized:"parenthesized"};o(EW,"isWildcard");E(EW,"isWildcard");AW=class extends aW{static{o(this,"LangiumGrammarAstReflection")}static{E(this,"LangiumGrammarAstReflection")}constructor(){super(...arguments),this.types={AbstractElement:{name:xo.$type,properties:{cardinality:{name:xo.cardinality}},superTypes:[]},AbstractParserRule:{name:_C.$type,properties:{},superTypes:[ov.$type,Uo.$type]},AbstractRule:{name:ov.$type,properties:{},superTypes:[]},AbstractType:{name:Uo.$type,properties:{},superTypes:[]},Action:{name:ip.$type,properties:{cardinality:{name:ip.cardinality},feature:{name:ip.feature},inferredType:{name:ip.inferredType},operator:{name:ip.operator},type:{name:ip.type,referenceType:Uo.$type}},superTypes:[xo.$type]},Alternatives:{name:LC.$type,properties:{cardinality:{name:LC.cardinality},elements:{name:LC.elements,defaultValue:[]}},superTypes:[xo.$type]},ArrayLiteral:{name:L6.$type,properties:{elements:{name:L6.elements,defaultValue:[]}},superTypes:[Ig.$type]},ArrayType:{name:D6.$type,properties:{elementType:{name:D6.elementType}},superTypes:[Lg.$type]},Assignment:{name:ap.$type,properties:{cardinality:{name:ap.cardinality},feature:{name:ap.feature},operator:{name:ap.operator},predicate:{name:ap.predicate},terminal:{name:ap.terminal}},superTypes:[xo.$type]},BooleanLiteral:{name:I6.$type,properties:{true:{name:I6.true,defaultValue:!1}},superTypes:[op.$type,Ig.$type]},CharacterRange:{name:sp.$type,properties:{cardinality:{name:sp.cardinality},left:{name:sp.left},lookahead:{name:sp.lookahead},parenthesized:{name:sp.parenthesized,defaultValue:!1},right:{name:sp.right}},superTypes:[bo.$type]},Condition:{name:op.$type,properties:{},superTypes:[]},Conjunction:{name:DC.$type,properties:{left:{name:DC.left},right:{name:DC.right}},superTypes:[op.$type]},CrossReference:{name:lp.$type,properties:{cardinality:{name:lp.cardinality},deprecatedSyntax:{name:lp.deprecatedSyntax,defaultValue:!1},isMulti:{name:lp.isMulti,defaultValue:!1},terminal:{name:lp.terminal},type:{name:lp.type,referenceType:Uo.$type}},superTypes:[xo.$type]},Disjunction:{name:IC.$type,properties:{left:{name:IC.left},right:{name:IC.right}},superTypes:[op.$type]},EndOfFile:{name:M6.$type,properties:{cardinality:{name:M6.cardinality}},superTypes:[xo.$type]},Grammar:{name:Vh.$type,properties:{imports:{name:Vh.imports,defaultValue:[]},interfaces:{name:Vh.interfaces,defaultValue:[]},isDeclared:{name:Vh.isDeclared,defaultValue:!1},name:{name:Vh.name},rules:{name:Vh.rules,defaultValue:[]},types:{name:Vh.types,defaultValue:[]}},superTypes:[]},GrammarImport:{name:N6.$type,properties:{path:{name:N6.path}},superTypes:[]},Group:{name:Cg.$type,properties:{cardinality:{name:Cg.cardinality},elements:{name:Cg.elements,defaultValue:[]},guardCondition:{name:Cg.guardCondition},predicate:{name:Cg.predicate}},superTypes:[xo.$type]},InferredType:{name:P6.$type,properties:{name:{name:P6.name}},superTypes:[Uo.$type]},InfixRule:{name:Du.$type,properties:{call:{name:Du.call},dataType:{name:Du.dataType},inferredType:{name:Du.inferredType},name:{name:Du.name},operators:{name:Du.operators},parameters:{name:Du.parameters,defaultValue:[]},returnType:{name:Du.returnType,referenceType:Uo.$type}},superTypes:[_C.$type]},InfixRuleOperatorList:{name:MC.$type,properties:{associativity:{name:MC.associativity},operators:{name:MC.operators,defaultValue:[]}},superTypes:[]},InfixRuleOperators:{name:O6.$type,properties:{precedences:{name:O6.precedences,defaultValue:[]}},superTypes:[]},Interface:{name:lv.$type,properties:{attributes:{name:lv.attributes,defaultValue:[]},name:{name:lv.name},superTypes:{name:lv.superTypes,defaultValue:[],referenceType:Uo.$type}},superTypes:[Uo.$type]},Keyword:{name:cv.$type,properties:{cardinality:{name:cv.cardinality},predicate:{name:cv.predicate},value:{name:cv.value}},superTypes:[xo.$type]},NamedArgument:{name:uv.$type,properties:{calledByName:{name:uv.calledByName,defaultValue:!1},parameter:{name:uv.parameter,referenceType:hv.$type},value:{name:uv.value}},superTypes:[]},NegatedToken:{name:wg.$type,properties:{cardinality:{name:wg.cardinality},lookahead:{name:wg.lookahead},parenthesized:{name:wg.parenthesized,defaultValue:!1},terminal:{name:wg.terminal}},superTypes:[bo.$type]},Negation:{name:B6.$type,properties:{value:{name:B6.value}},superTypes:[op.$type]},NumberLiteral:{name:$6.$type,properties:{value:{name:$6.value}},superTypes:[Ig.$type]},Parameter:{name:hv.$type,properties:{name:{name:hv.name}},superTypes:[]},ParameterReference:{name:F6.$type,properties:{parameter:{name:F6.parameter,referenceType:hv.$type}},superTypes:[op.$type]},ParserRule:{name:xc.$type,properties:{dataType:{name:xc.dataType},definition:{name:xc.definition},entry:{name:xc.entry,defaultValue:!1},fragment:{name:xc.fragment,defaultValue:!1},inferredType:{name:xc.inferredType},name:{name:xc.name},parameters:{name:xc.parameters,defaultValue:[]},returnType:{name:xc.returnType,referenceType:Uo.$type}},superTypes:[_C.$type]},ReferenceType:{name:NC.$type,properties:{isMulti:{name:NC.isMulti,defaultValue:!1},referenceType:{name:NC.referenceType}},superTypes:[Lg.$type]},RegexToken:{name:kg.$type,properties:{cardinality:{name:kg.cardinality},lookahead:{name:kg.lookahead},parenthesized:{name:kg.parenthesized,defaultValue:!1},regex:{name:kg.regex}},superTypes:[bo.$type]},ReturnType:{name:z6.$type,properties:{name:{name:z6.name}},superTypes:[]},RuleCall:{name:Sg.$type,properties:{arguments:{name:Sg.arguments,defaultValue:[]},cardinality:{name:Sg.cardinality},predicate:{name:Sg.predicate},rule:{name:Sg.rule,referenceType:ov.$type}},superTypes:[xo.$type]},SimpleType:{name:dv.$type,properties:{primitiveType:{name:dv.primitiveType},stringType:{name:dv.stringType},typeRef:{name:dv.typeRef,referenceType:Uo.$type}},superTypes:[Lg.$type]},StringLiteral:{name:G6.$type,properties:{value:{name:G6.value}},superTypes:[Ig.$type]},TerminalAlternatives:{name:Eg.$type,properties:{cardinality:{name:Eg.cardinality},elements:{name:Eg.elements,defaultValue:[]},lookahead:{name:Eg.lookahead},parenthesized:{name:Eg.parenthesized,defaultValue:!1}},superTypes:[bo.$type]},TerminalElement:{name:bo.$type,properties:{cardinality:{name:bo.cardinality},lookahead:{name:bo.lookahead},parenthesized:{name:bo.parenthesized,defaultValue:!1}},superTypes:[xo.$type]},TerminalGroup:{name:Ag.$type,properties:{cardinality:{name:Ag.cardinality},elements:{name:Ag.elements,defaultValue:[]},lookahead:{name:Ag.lookahead},parenthesized:{name:Ag.parenthesized,defaultValue:!1}},superTypes:[bo.$type]},TerminalRule:{name:Wh.$type,properties:{definition:{name:Wh.definition},fragment:{name:Wh.fragment,defaultValue:!1},hidden:{name:Wh.hidden,defaultValue:!1},name:{name:Wh.name},type:{name:Wh.type}},superTypes:[ov.$type]},TerminalRuleCall:{name:Rg.$type,properties:{cardinality:{name:Rg.cardinality},lookahead:{name:Rg.lookahead},parenthesized:{name:Rg.parenthesized,defaultValue:!1},rule:{name:Rg.rule,referenceType:Wh.$type}},superTypes:[bo.$type]},Type:{name:PC.$type,properties:{name:{name:PC.name},type:{name:PC.type}},superTypes:[Uo.$type]},TypeAttribute:{name:_g.$type,properties:{defaultValue:{name:_g.defaultValue},isOptional:{name:_g.isOptional,defaultValue:!1},name:{name:_g.name},type:{name:_g.type}},superTypes:[]},TypeDefinition:{name:Lg.$type,properties:{},superTypes:[]},UnionType:{name:V6.$type,properties:{types:{name:V6.types,defaultValue:[]}},superTypes:[Lg.$type]},UnorderedGroup:{name:OC.$type,properties:{cardinality:{name:OC.cardinality},elements:{name:OC.elements,defaultValue:[]}},superTypes:[xo.$type]},UntilToken:{name:Dg.$type,properties:{cardinality:{name:Dg.cardinality},lookahead:{name:Dg.lookahead},parenthesized:{name:Dg.parenthesized,defaultValue:!1},terminal:{name:Dg.terminal}},superTypes:[bo.$type]},ValueLiteral:{name:Ig.$type,properties:{},superTypes:[]},Wildcard:{name:fv.$type,properties:{cardinality:{name:fv.cardinality},lookahead:{name:fv.lookahead},parenthesized:{name:fv.parenthesized,defaultValue:!1}},superTypes:[bo.$type]}}}},Tr=new AW;o(tke,"getDatatypeNode");E(tke,"getDatatypeNode");o(Ev,"streamCst");E(Ev,"streamCst");o(rke,"flattenCst");E(rke,"flattenCst");o(RW,"isChildNode");E(RW,"isChildNode");o(XC,"tokenToRange");E(XC,"tokenToRange");o(Av,"toDocumentSegment");E(Av,"toDocumentSegment");(function(e){e[e.Before=0]="Before",e[e.After=1]="After",e[e.OverlapFront=2]="OverlapFront",e[e.OverlapBack=3]="OverlapBack",e[e.Inside=4]="Inside",e[e.Outside=5]="Outside"})(Mu||(Mu={}));o(_W,"compareRange");E(_W,"compareRange");o(LW,"inRange");E(LW,"inRange");DW=/^[\w\p{L}]$/u;o(nke,"findDeclarationNodeAtOffset");E(nke,"findDeclarationNodeAtOffset");o(IW,"findCommentNode");E(IW,"findCommentNode");o(W6,"isCommentNode");E(W6,"isCommentNode");o(SR,"findLeafNodeAtOffset");E(SR,"findLeafNodeAtOffset");o(MW,"findLeafNodeBeforeOffset");E(MW,"findLeafNodeBeforeOffset");o(NW,"binarySearch");E(NW,"binarySearch");o(PW,"getPreviousNode");E(PW,"getPreviousNode");o(ike,"getNextNode");E(ike,"getNextNode");o(ake,"getStartlineNode");E(ake,"getStartlineNode");o(ske,"getInteriorNodes");E(ske,"getInteriorNodes");o(oke,"getCommonParent");E(oke,"getCommonParent");o(CG,"getParentChain");E(CG,"getParentChain");OW={};yp(OW,{findAssignment:o(()=>XW,"findAssignment"),findNameAssignment:o(()=>MR,"findNameAssignment"),findNodeForKeyword:o(()=>jW,"findNodeForKeyword"),findNodeForProperty:o(()=>LR,"findNodeForProperty"),findNodesForKeyword:o(()=>pke,"findNodesForKeyword"),findNodesForKeywordInternal:o(()=>IR,"findNodesForKeywordInternal"),findNodesForProperty:o(()=>YW,"findNodesForProperty"),getActionAtElement:o(()=>ZW,"getActionAtElement"),getActionType:o(()=>JW,"getActionType"),getAllReachableRules:o(()=>_R,"getAllReachableRules"),getAllRulesUsedForCrossReferences:o(()=>fke,"getAllRulesUsedForCrossReferences"),getCrossReferenceTerminal:o(()=>HW,"getCrossReferenceTerminal"),getEntryRule:o(()=>VW,"getEntryRule"),getExplicitRuleType:o(()=>gw,"getExplicitRuleType"),getHiddenRules:o(()=>WW,"getHiddenRules"),getRuleType:o(()=>eq,"getRuleType"),getRuleTypeName:o(()=>xke,"getRuleTypeName"),getTypeName:o(()=>jg,"getTypeName"),isArrayCardinality:o(()=>gke,"isArrayCardinality"),isArrayOperator:o(()=>yke,"isArrayOperator"),isCommentTerminal:o(()=>UW,"isCommentTerminal"),isDataType:o(()=>vke,"isDataType"),isDataTypeRule:o(()=>mw,"isDataTypeRule"),isOptionalCardinality:o(()=>mke,"isOptionalCardinality"),terminalRegex:o(()=>yw,"terminalRegex")});ER=class extends Error{static{o(this,"ErrorWithLocation")}static{E(this,"ErrorWithLocation")}constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}};o(vp,"assertUnreachable");E(vp,"assertUnreachable");o(BW,"assertCondition");E(BW,"assertCondition");$W={};yp($W,{NEWLINE_REGEXP:o(()=>cke,"NEWLINE_REGEXP"),escapeRegExp:o(()=>Nv,"escapeRegExp"),getTerminalParts:o(()=>hke,"getTerminalParts"),isMultilineComment:o(()=>FW,"isMultilineComment"),isWhitespace:o(()=>RR,"isWhitespace"),partialMatches:o(()=>zW,"partialMatches"),partialRegExp:o(()=>GW,"partialRegExp"),whitespaceCharacters:o(()=>dke,"whitespaceCharacters")});o(Dr,"cc");E(Dr,"cc");o(a6,"insertToSet");E(a6,"insertToSet");o(rv,"addFlag");E(rv,"addFlag");o(fg,"ASSERT_EXISTS");E(fg,"ASSERT_EXISTS");o(kC,"ASSERT_NEVER_REACH_HERE");E(kC,"ASSERT_NEVER_REACH_HERE");o(wG,"isCharacter");E(wG,"isCharacter");q6=[];for(let e=Dr("0");e<=Dr("9");e++)q6.push(e);H6=[Dr("_")].concat(q6);for(let e=Dr("a");e<=Dr("z");e++)H6.push(e);for(let e=Dr("A");e<=Dr("Z");e++)H6.push(e);BTe=[Dr(" "),Dr("\f"),Dr(` +`),Dr("\r"),Dr(" "),Dr("\v"),Dr(" "),Dr("\xA0"),Dr("\u1680"),Dr("\u2000"),Dr("\u2001"),Dr("\u2002"),Dr("\u2003"),Dr("\u2004"),Dr("\u2005"),Dr("\u2006"),Dr("\u2007"),Dr("\u2008"),Dr("\u2009"),Dr("\u200A"),Dr("\u2028"),Dr("\u2029"),Dr("\u202F"),Dr("\u205F"),Dr("\u3000"),Dr("\uFEFF")],ayt=/[0-9a-fA-F]/,MA=/[0-9]/,syt=/[1-9]/,lke=class{static{o(this,"RegExpParser")}static{E(this,"RegExpParser")}constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let t=this.disjunction();this.consumeChar("/");let r={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":rv(r,"global");break;case"i":rv(r,"ignoreCase");break;case"m":rv(r,"multiLine");break;case"u":rv(r,"unicode");break;case"y":rv(r,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:r,value:t,loc:this.loc(0)}}disjunction(){let e=[],t=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(t)}}alternative(){let e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let t;switch(this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead";break;case"<":{switch(this.popChar()){case"=":t="Lookbehind";break;case"!":t="NegativeLookbehind"}break}}fg(t);let r=this.disjunction();return this.consumeChar(")"),{type:t,value:r,loc:this.loc(e)}}return kC()}quantifier(e=!1){let t,r=this.idx;switch(this.popChar()){case"*":t={atLeast:0,atMost:1/0};break;case"+":t={atLeast:1,atMost:1/0};break;case"?":t={atLeast:0,atMost:1};break;case"{":let n=this.integerIncludingZero();switch(this.popChar()){case"}":t={atLeast:n,atMost:n};break;case",":let i;this.isDigit()?(i=this.integerIncludingZero(),t={atLeast:n,atMost:i}):t={atLeast:n,atMost:1/0},this.consumeChar("}");break}if(e===!0&&t===void 0)return;fg(t);break}if(!(e===!0&&t===void 0)&&fg(t))return this.peekChar(0)==="?"?(this.consumeChar("?"),t.greedy=!1):t.greedy=!0,t.type="Quantifier",t.loc=this.loc(r),t}atom(){let e,t=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),fg(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):kC()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[Dr(` +`),Dr("\r"),Dr("\u2028"),Dr("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case"d":e=q6;break;case"D":e=q6,t=!0;break;case"s":e=BTe;break;case"S":e=BTe,t=!0;break;case"w":e=H6;break;case"W":e=H6,t=!0;break}return fg(e)?{type:"Set",value:e,complement:t}:kC()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=Dr("\f");break;case"n":e=Dr(` +`);break;case"r":e=Dr("\r");break;case"t":e=Dr(" ");break;case"v":e=Dr("\v");break}return fg(e)?{type:"Character",value:e}:kC()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:Dr("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:Dr(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case` +`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:Dr(e)}}}characterClass(){let e=[],t=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),t=!0);this.isClassAtom();){let r=this.classAtom(),n=r.type==="Character";if(wG(r)&&this.isRangeDash()){this.consumeChar("-");let i=this.classAtom(),a=i.type==="Character";if(wG(i)){if(i.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}},AR=class{static{o(this,"BaseRegExpVisitor")}static{E(this,"BaseRegExpVisitor")}visitChildren(e){for(let t in e){let r=e[t];e.hasOwnProperty(t)&&(r.type!==void 0?this.visit(r):Array.isArray(r)&&r.forEach(n=>{this.visit(n)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Lookbehind":this.visitLookbehind(e);break;case"NegativeLookbehind":this.visitNegativeLookbehind(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitLookbehind(e){}visitNegativeLookbehind(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}},cke=/\r?\n/gm,uke=new lke,oyt=class extends AR{static{o(this,"TerminalRegExpVisitor")}static{E(this,"TerminalRegExpVisitor")}constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let t=String.fromCharCode(e.value);if(!this.multiline&&t===` +`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=Nv(t);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitSet(e){if(!this.multiline){let t=this.regex.substring(e.loc.begin,e.loc.end),r=new RegExp(t);this.multiline=!!` +`.match(r)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let t=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(t),this.isStarting&&(this.startRegexp+=t)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},Vg=new oyt;o(hke,"getTerminalParts");E(hke,"getTerminalParts");o(FW,"isMultilineComment");E(FW,"isMultilineComment");dke=`\f +\r \v \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF`.split("");o(RR,"isWhitespace");E(RR,"isWhitespace");o(Nv,"escapeRegExp");E(Nv,"escapeRegExp");o(zW,"partialMatches");E(zW,"partialMatches");o(GW,"partialRegExp");E(GW,"partialRegExp");o(VW,"getEntryRule");E(VW,"getEntryRule");o(WW,"getHiddenRules");E(WW,"getHiddenRules");o(_R,"getAllReachableRules");E(_R,"getAllReachableRules");o(qW,"ruleDfs");E(qW,"ruleDfs");o(fke,"getAllRulesUsedForCrossReferences");E(fke,"getAllRulesUsedForCrossReferences");o(HW,"getCrossReferenceTerminal");E(HW,"getCrossReferenceTerminal");o(UW,"isCommentTerminal");E(UW,"isCommentTerminal");o(YW,"findNodesForProperty");E(YW,"findNodesForProperty");o(LR,"findNodeForProperty");E(LR,"findNodeForProperty");o(DR,"findNodesForPropertyInternal");E(DR,"findNodesForPropertyInternal");o(pke,"findNodesForKeyword");E(pke,"findNodesForKeyword");o(jW,"findNodeForKeyword");E(jW,"findNodeForKeyword");o(IR,"findNodesForKeywordInternal");E(IR,"findNodesForKeywordInternal");o(XW,"findAssignment");E(XW,"findAssignment");o(MR,"findNameAssignment");E(MR,"findNameAssignment");o(KW,"findNameAssignmentInternal");E(KW,"findNameAssignmentInternal");o(ZW,"getActionAtElement");E(ZW,"getActionAtElement");o(mke,"isOptionalCardinality");E(mke,"isOptionalCardinality");o(gke,"isArrayCardinality");E(gke,"isArrayCardinality");o(yke,"isArrayOperator");E(yke,"isArrayOperator");o(mw,"isDataTypeRule");E(mw,"isDataTypeRule");o(QW,"isDataTypeRuleInternal");E(QW,"isDataTypeRuleInternal");o(vke,"isDataType");E(vke,"isDataType");o(U6,"isDataTypeInternal");E(U6,"isDataTypeInternal");o(gw,"getExplicitRuleType");E(gw,"getExplicitRuleType");o(jg,"getTypeName");E(jg,"getTypeName");o(JW,"getActionType");E(JW,"getActionType");o(xke,"getRuleTypeName");E(xke,"getRuleTypeName");o(eq,"getRuleType");E(eq,"getRuleType");o(yw,"terminalRegex");E(yw,"terminalRegex");tq=/[\s\S]/.source;o(i0,"abstractElementToRegex");E(i0,"abstractElementToRegex");o(bke,"terminalAlternativesToRegex");E(bke,"terminalAlternativesToRegex");o(Tke,"terminalGroupToRegex");E(Tke,"terminalGroupToRegex");o(Cke,"untilTokenToRegex");E(Cke,"untilTokenToRegex");o(wke,"negateTokenToRegex");E(wke,"negateTokenToRegex");o(kke,"characterRangeToRegex");E(kke,"characterRangeToRegex");o(s6,"keywordToRegex");E(s6,"keywordToRegex");o(Bu,"withCardinality");E(Bu,"withCardinality");o(rq,"createGrammarConfig");E(rq,"createGrammarConfig");lyt=typeof global=="object"&&global&&global.Object===Object&&global,Ske=lyt,cyt=typeof self=="object"&&self&&self.Object===Object&&self,uyt=Ske||cyt||Function("return this")(),Fu=uyt,hyt=Fu.Symbol,Ll=hyt,Eke=Object.prototype,dyt=Eke.hasOwnProperty,fyt=Eke.toString,cC=Ll?Ll.toStringTag:void 0;o(Ake,"getRawTag");E(Ake,"getRawTag");pyt=Ake,myt=Object.prototype,gyt=myt.toString;o(Rke,"objectToString");E(Rke,"objectToString");yyt=Rke,vyt="[object Null]",xyt="[object Undefined]",$Te=Ll?Ll.toStringTag:void 0;o(_ke,"baseGetTag");E(_ke,"baseGetTag");xp=_ke;o(Lke,"isObjectLike");E(Lke,"isObjectLike");Ac=Lke,byt="[object Symbol]";o(Dke,"isSymbol");E(Dke,"isSymbol");NR=Dke;o(Ike,"arrayMap");E(Ike,"arrayMap");vw=Ike,Tyt=Array.isArray,un=Tyt,Cyt=1/0,FTe=Ll?Ll.prototype:void 0,zTe=FTe?FTe.toString:void 0;o(nq,"baseToString");E(nq,"baseToString");wyt=nq,kyt=/\s/;o(Mke,"trimmedEndIndex");E(Mke,"trimmedEndIndex");Syt=Mke,Eyt=/^\s+/;o(Nke,"baseTrim");E(Nke,"baseTrim");Ayt=Nke;o(Pke,"isObject");E(Pke,"isObject");Dl=Pke,GTe=NaN,Ryt=/^[-+]0x[0-9a-f]+$/i,_yt=/^0b[01]+$/i,Lyt=/^0o[0-7]+$/i,Dyt=parseInt;o(Oke,"toNumber");E(Oke,"toNumber");Iyt=Oke,VTe=1/0,Myt=17976931348623157e292;o(Bke,"toFinite");E(Bke,"toFinite");Nyt=Bke;o($ke,"toInteger");E($ke,"toInteger");xw=$ke;o(Fke,"identity");E(Fke,"identity");bw=Fke,Pyt="[object AsyncFunction]",Oyt="[object Function]",Byt="[object GeneratorFunction]",$yt="[object Proxy]";o(zke,"isFunction");E(zke,"isFunction");rd=zke,Fyt=Fu["__core-js_shared__"],ez=Fyt,WTe=(function(){var e=/[^.]+$/.exec(ez&&ez.keys&&ez.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();o(Gke,"isMasked");E(Gke,"isMasked");zyt=Gke,Gyt=Function.prototype,Vyt=Gyt.toString;o(Vke,"toSource");E(Vke,"toSource");a0=Vke,Wyt=/[\\^$.*+?()[\]{}|]/g,qyt=/^\[object .+?Constructor\]$/,Hyt=Function.prototype,Uyt=Object.prototype,Yyt=Hyt.toString,jyt=Uyt.hasOwnProperty,Xyt=RegExp("^"+Yyt.call(jyt).replace(Wyt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(Wke,"baseIsNative");E(Wke,"baseIsNative");Kyt=Wke;o(qke,"getValue");E(qke,"getValue");Zyt=qke;o(Hke,"getNative");E(Hke,"getNative");s0=Hke,Qyt=s0(Fu,"WeakMap"),kG=Qyt,qTe=Object.create,Jyt=(function(){function e(){}return o(e,"object"),E(e,"object"),function(t){if(!Dl(t))return{};if(qTe)return qTe(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}})(),e1t=Jyt;o(Uke,"apply");E(Uke,"apply");t1t=Uke;o(Yke,"noop");E(Yke,"noop");Da=Yke;o(jke,"copyArray");E(jke,"copyArray");r1t=jke,n1t=800,i1t=16,a1t=Date.now;o(Xke,"shortOut");E(Xke,"shortOut");s1t=Xke;o(Kke,"constant");E(Kke,"constant");o1t=Kke,l1t=(function(){try{var e=s0(Object,"defineProperty");return e({},"",{}),e}catch{}})(),Y6=l1t,c1t=Y6?function(e,t){return Y6(e,"toString",{configurable:!0,enumerable:!1,value:o1t(t),writable:!0})}:bw,u1t=c1t,h1t=s1t(u1t),d1t=h1t;o(Zke,"arrayEach");E(Zke,"arrayEach");Qke=Zke;o(Jke,"baseFindIndex");E(Jke,"baseFindIndex");eSe=Jke;o(tSe,"baseIsNaN");E(tSe,"baseIsNaN");f1t=tSe;o(rSe,"strictIndexOf");E(rSe,"strictIndexOf");p1t=rSe;o(nSe,"baseIndexOf");E(nSe,"baseIndexOf");iq=nSe;o(iSe,"arrayIncludes");E(iSe,"arrayIncludes");aSe=iSe,m1t=9007199254740991,g1t=/^(?:0|[1-9]\d*)$/;o(sSe,"isIndex");E(sSe,"isIndex");PR=sSe;o(oSe,"baseAssignValue");E(oSe,"baseAssignValue");aq=oSe;o(lSe,"eq");E(lSe,"eq");Tw=lSe,y1t=Object.prototype,v1t=y1t.hasOwnProperty;o(cSe,"assignValue");E(cSe,"assignValue");OR=cSe;o(uSe,"copyObject");E(uSe,"copyObject");Cw=uSe,HTe=Math.max;o(hSe,"overRest");E(hSe,"overRest");x1t=hSe;o(dSe,"baseRest");E(dSe,"baseRest");sq=dSe,b1t=9007199254740991;o(fSe,"isLength");E(fSe,"isLength");oq=fSe;o(pSe,"isArrayLike");E(pSe,"isArrayLike");zu=pSe;o(mSe,"isIterateeCall");E(mSe,"isIterateeCall");BR=mSe;o(gSe,"createAssigner");E(gSe,"createAssigner");T1t=gSe,C1t=Object.prototype;o(ySe,"isPrototype");E(ySe,"isPrototype");ww=ySe;o(vSe,"baseTimes");E(vSe,"baseTimes");w1t=vSe,k1t="[object Arguments]";o(xSe,"baseIsArguments");E(xSe,"baseIsArguments");UTe=xSe,bSe=Object.prototype,S1t=bSe.hasOwnProperty,E1t=bSe.propertyIsEnumerable,A1t=UTe((function(){return arguments})())?UTe:function(e){return Ac(e)&&S1t.call(e,"callee")&&!E1t.call(e,"callee")},$R=A1t;o(TSe,"stubFalse");E(TSe,"stubFalse");R1t=TSe,CSe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,YTe=CSe&&typeof module=="object"&&module&&!module.nodeType&&module,_1t=YTe&&YTe.exports===CSe,jTe=_1t?Fu.Buffer:void 0,L1t=jTe?jTe.isBuffer:void 0,D1t=L1t||R1t,KC=D1t,I1t="[object Arguments]",M1t="[object Array]",N1t="[object Boolean]",P1t="[object Date]",O1t="[object Error]",B1t="[object Function]",$1t="[object Map]",F1t="[object Number]",z1t="[object Object]",G1t="[object RegExp]",V1t="[object Set]",W1t="[object String]",q1t="[object WeakMap]",H1t="[object ArrayBuffer]",U1t="[object DataView]",Y1t="[object Float32Array]",j1t="[object Float64Array]",X1t="[object Int8Array]",K1t="[object Int16Array]",Z1t="[object Int32Array]",Q1t="[object Uint8Array]",J1t="[object Uint8ClampedArray]",evt="[object Uint16Array]",tvt="[object Uint32Array]",oi={};oi[Y1t]=oi[j1t]=oi[X1t]=oi[K1t]=oi[Z1t]=oi[Q1t]=oi[J1t]=oi[evt]=oi[tvt]=!0;oi[I1t]=oi[M1t]=oi[H1t]=oi[N1t]=oi[U1t]=oi[P1t]=oi[O1t]=oi[B1t]=oi[$1t]=oi[F1t]=oi[z1t]=oi[G1t]=oi[V1t]=oi[W1t]=oi[q1t]=!1;o(wSe,"baseIsTypedArray");E(wSe,"baseIsTypedArray");rvt=wSe;o(kSe,"baseUnary");E(kSe,"baseUnary");kw=kSe,SSe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,BC=SSe&&typeof module=="object"&&module&&!module.nodeType&&module,nvt=BC&&BC.exports===SSe,tz=nvt&&Ske.process,ivt=(function(){try{var e=BC&&BC.require&&BC.require("util").types;return e||tz&&tz.binding&&tz.binding("util")}catch{}})(),fp=ivt,XTe=fp&&fp.isTypedArray,avt=XTe?kw(XTe):rvt,lq=avt,svt=Object.prototype,ovt=svt.hasOwnProperty;o(ESe,"arrayLikeKeys");E(ESe,"arrayLikeKeys");ASe=ESe;o(RSe,"overArg");E(RSe,"overArg");_Se=RSe,lvt=_Se(Object.keys,Object),cvt=lvt,uvt=Object.prototype,hvt=uvt.hasOwnProperty;o(LSe,"baseKeys");E(LSe,"baseKeys");DSe=LSe;o(ISe,"keys");E(ISe,"keys");jo=ISe,dvt=Object.prototype,fvt=dvt.hasOwnProperty,pvt=T1t(function(e,t){if(ww(t)||zu(t)){Cw(t,jo(t),e);return}for(var r in t)fvt.call(t,r)&&OR(e,r,t[r])}),Xo=pvt;o(MSe,"nativeKeysIn");E(MSe,"nativeKeysIn");mvt=MSe,gvt=Object.prototype,yvt=gvt.hasOwnProperty;o(NSe,"baseKeysIn");E(NSe,"baseKeysIn");vvt=NSe;o(PSe,"keysIn");E(PSe,"keysIn");FR=PSe,xvt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,bvt=/^\w*$/;o(OSe,"isKey");E(OSe,"isKey");cq=OSe,Tvt=s0(Object,"create"),ZC=Tvt;o(BSe,"hashClear");E(BSe,"hashClear");Cvt=BSe;o($Se,"hashDelete");E($Se,"hashDelete");wvt=$Se,kvt="__lodash_hash_undefined__",Svt=Object.prototype,Evt=Svt.hasOwnProperty;o(FSe,"hashGet");E(FSe,"hashGet");Avt=FSe,Rvt=Object.prototype,_vt=Rvt.hasOwnProperty;o(zSe,"hashHas");E(zSe,"hashHas");Lvt=zSe,Dvt="__lodash_hash_undefined__";o(GSe,"hashSet");E(GSe,"hashSet");Ivt=GSe;o(o0,"Hash");E(o0,"Hash");o0.prototype.clear=Cvt;o0.prototype.delete=wvt;o0.prototype.get=Avt;o0.prototype.has=Lvt;o0.prototype.set=Ivt;KTe=o0;o(VSe,"listCacheClear");E(VSe,"listCacheClear");Mvt=VSe;o(WSe,"assocIndexOf");E(WSe,"assocIndexOf");zR=WSe,Nvt=Array.prototype,Pvt=Nvt.splice;o(qSe,"listCacheDelete");E(qSe,"listCacheDelete");Ovt=qSe;o(HSe,"listCacheGet");E(HSe,"listCacheGet");Bvt=HSe;o(USe,"listCacheHas");E(USe,"listCacheHas");$vt=USe;o(YSe,"listCacheSet");E(YSe,"listCacheSet");Fvt=YSe;o(l0,"ListCache");E(l0,"ListCache");l0.prototype.clear=Mvt;l0.prototype.delete=Ovt;l0.prototype.get=Bvt;l0.prototype.has=$vt;l0.prototype.set=Fvt;GR=l0,zvt=s0(Fu,"Map"),QC=zvt;o(jSe,"mapCacheClear");E(jSe,"mapCacheClear");Gvt=jSe;o(XSe,"isKeyable");E(XSe,"isKeyable");Vvt=XSe;o(KSe,"getMapData");E(KSe,"getMapData");VR=KSe;o(ZSe,"mapCacheDelete");E(ZSe,"mapCacheDelete");Wvt=ZSe;o(QSe,"mapCacheGet");E(QSe,"mapCacheGet");qvt=QSe;o(JSe,"mapCacheHas");E(JSe,"mapCacheHas");Hvt=JSe;o(eEe,"mapCacheSet");E(eEe,"mapCacheSet");Uvt=eEe;o(c0,"MapCache");E(c0,"MapCache");c0.prototype.clear=Gvt;c0.prototype.delete=Wvt;c0.prototype.get=qvt;c0.prototype.has=Hvt;c0.prototype.set=Uvt;WR=c0,Yvt="Expected a function";o(qR,"memoize");E(qR,"memoize");qR.Cache=WR;jvt=qR,Xvt=500;o(tEe,"memoizeCapped");E(tEe,"memoizeCapped");Kvt=tEe,Zvt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Qvt=/\\(\\)?/g,Jvt=Kvt(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(Zvt,function(r,n,i,a){t.push(i?a.replace(Qvt,"$1"):n||r)}),t}),ext=Jvt;o(rEe,"toString2");E(rEe,"toString");txt=rEe;o(nEe,"castPath");E(nEe,"castPath");HR=nEe,rxt=1/0;o(iEe,"toKey");E(iEe,"toKey");Sw=iEe;o(aEe,"baseGet");E(aEe,"baseGet");uq=aEe;o(sEe,"get");E(sEe,"get");nxt=sEe;o(oEe,"arrayPush");E(oEe,"arrayPush");hq=oEe,ZTe=Ll?Ll.isConcatSpreadable:void 0;o(lEe,"isFlattenable");E(lEe,"isFlattenable");ixt=lEe;o(dq,"baseFlatten");E(dq,"baseFlatten");fq=dq;o(cEe,"flatten");E(cEe,"flatten");Sc=cEe,axt=_Se(Object.getPrototypeOf,Object),uEe=axt;o(hEe,"baseSlice");E(hEe,"baseSlice");dEe=hEe;o(fEe,"arrayReduce");E(fEe,"arrayReduce");sxt=fEe;o(pEe,"stackClear");E(pEe,"stackClear");oxt=pEe;o(mEe,"stackDelete");E(mEe,"stackDelete");lxt=mEe;o(gEe,"stackGet");E(gEe,"stackGet");cxt=gEe;o(yEe,"stackHas");E(yEe,"stackHas");uxt=yEe,hxt=200;o(vEe,"stackSet");E(vEe,"stackSet");dxt=vEe;o(u0,"Stack");E(u0,"Stack");u0.prototype.clear=oxt;u0.prototype.delete=lxt;u0.prototype.get=cxt;u0.prototype.has=uxt;u0.prototype.set=dxt;$C=u0;o(xEe,"baseAssign");E(xEe,"baseAssign");fxt=xEe;o(bEe,"baseAssignIn");E(bEe,"baseAssignIn");pxt=bEe,TEe=typeof exports=="object"&&exports&&!exports.nodeType&&exports,QTe=TEe&&typeof module=="object"&&module&&!module.nodeType&&module,mxt=QTe&&QTe.exports===TEe,JTe=mxt?Fu.Buffer:void 0,eCe=JTe?JTe.allocUnsafe:void 0;o(CEe,"cloneBuffer");E(CEe,"cloneBuffer");gxt=CEe;o(wEe,"arrayFilter");E(wEe,"arrayFilter");pq=wEe;o(kEe,"stubArray");E(kEe,"stubArray");SEe=kEe,yxt=Object.prototype,vxt=yxt.propertyIsEnumerable,tCe=Object.getOwnPropertySymbols,xxt=tCe?function(e){return e==null?[]:(e=Object(e),pq(tCe(e),function(t){return vxt.call(e,t)}))}:SEe,mq=xxt;o(EEe,"copySymbols");E(EEe,"copySymbols");bxt=EEe,Txt=Object.getOwnPropertySymbols,Cxt=Txt?function(e){for(var t=[];e;)hq(t,mq(e)),e=uEe(e);return t}:SEe,AEe=Cxt;o(REe,"copySymbolsIn");E(REe,"copySymbolsIn");wxt=REe;o(_Ee,"baseGetAllKeys");E(_Ee,"baseGetAllKeys");LEe=_Ee;o(DEe,"getAllKeys");E(DEe,"getAllKeys");SG=DEe;o(IEe,"getAllKeysIn");E(IEe,"getAllKeysIn");MEe=IEe,kxt=s0(Fu,"DataView"),EG=kxt,Sxt=s0(Fu,"Promise"),AG=Sxt,Ext=s0(Fu,"Set"),vv=Ext,rCe="[object Map]",Axt="[object Object]",nCe="[object Promise]",iCe="[object Set]",aCe="[object WeakMap]",sCe="[object DataView]",Rxt=a0(EG),_xt=a0(QC),Lxt=a0(AG),Dxt=a0(vv),Ixt=a0(kG),pg=xp;(EG&&pg(new EG(new ArrayBuffer(1)))!=sCe||QC&&pg(new QC)!=rCe||AG&&pg(AG.resolve())!=nCe||vv&&pg(new vv)!=iCe||kG&&pg(new kG)!=aCe)&&(pg=E(function(e){var t=xp(e),r=t==Axt?e.constructor:void 0,n=r?a0(r):"";if(n)switch(n){case Rxt:return sCe;case _xt:return rCe;case Lxt:return nCe;case Dxt:return iCe;case Ixt:return aCe}return t},"getTag"));Rv=pg,Mxt=Object.prototype,Nxt=Mxt.hasOwnProperty;o(NEe,"initCloneArray");E(NEe,"initCloneArray");Pxt=NEe,Oxt=Fu.Uint8Array,j6=Oxt;o(PEe,"cloneArrayBuffer");E(PEe,"cloneArrayBuffer");gq=PEe;o(OEe,"cloneDataView");E(OEe,"cloneDataView");Bxt=OEe,$xt=/\w*$/;o(BEe,"cloneRegExp");E(BEe,"cloneRegExp");Fxt=BEe,oCe=Ll?Ll.prototype:void 0,lCe=oCe?oCe.valueOf:void 0;o($Ee,"cloneSymbol");E($Ee,"cloneSymbol");zxt=$Ee;o(FEe,"cloneTypedArray");E(FEe,"cloneTypedArray");Gxt=FEe,Vxt="[object Boolean]",Wxt="[object Date]",qxt="[object Map]",Hxt="[object Number]",Uxt="[object RegExp]",Yxt="[object Set]",jxt="[object String]",Xxt="[object Symbol]",Kxt="[object ArrayBuffer]",Zxt="[object DataView]",Qxt="[object Float32Array]",Jxt="[object Float64Array]",ebt="[object Int8Array]",tbt="[object Int16Array]",rbt="[object Int32Array]",nbt="[object Uint8Array]",ibt="[object Uint8ClampedArray]",abt="[object Uint16Array]",sbt="[object Uint32Array]";o(zEe,"initCloneByTag");E(zEe,"initCloneByTag");obt=zEe;o(GEe,"initCloneObject");E(GEe,"initCloneObject");lbt=GEe,cbt="[object Map]";o(VEe,"baseIsMap");E(VEe,"baseIsMap");ubt=VEe,cCe=fp&&fp.isMap,hbt=cCe?kw(cCe):ubt,dbt=hbt,fbt="[object Set]";o(WEe,"baseIsSet");E(WEe,"baseIsSet");pbt=WEe,uCe=fp&&fp.isSet,mbt=uCe?kw(uCe):pbt,gbt=mbt,ybt=1,vbt=2,xbt=4,qEe="[object Arguments]",bbt="[object Array]",Tbt="[object Boolean]",Cbt="[object Date]",wbt="[object Error]",HEe="[object Function]",kbt="[object GeneratorFunction]",Sbt="[object Map]",Ebt="[object Number]",UEe="[object Object]",Abt="[object RegExp]",Rbt="[object Set]",_bt="[object String]",Lbt="[object Symbol]",Dbt="[object WeakMap]",Ibt="[object ArrayBuffer]",Mbt="[object DataView]",Nbt="[object Float32Array]",Pbt="[object Float64Array]",Obt="[object Int8Array]",Bbt="[object Int16Array]",$bt="[object Int32Array]",Fbt="[object Uint8Array]",zbt="[object Uint8ClampedArray]",Gbt="[object Uint16Array]",Vbt="[object Uint32Array]",Qn={};Qn[qEe]=Qn[bbt]=Qn[Ibt]=Qn[Mbt]=Qn[Tbt]=Qn[Cbt]=Qn[Nbt]=Qn[Pbt]=Qn[Obt]=Qn[Bbt]=Qn[$bt]=Qn[Sbt]=Qn[Ebt]=Qn[UEe]=Qn[Abt]=Qn[Rbt]=Qn[_bt]=Qn[Lbt]=Qn[Fbt]=Qn[zbt]=Qn[Gbt]=Qn[Vbt]=!0;Qn[wbt]=Qn[HEe]=Qn[Dbt]=!1;o(FC,"baseClone");E(FC,"baseClone");Wbt=FC,qbt=4;o(YEe,"clone");E(YEe,"clone");Ya=YEe;o(jEe,"compact");E(jEe,"compact");Ew=jEe,Hbt="__lodash_hash_undefined__";o(XEe,"setCacheAdd");E(XEe,"setCacheAdd");Ubt=XEe;o(KEe,"setCacheHas");E(KEe,"setCacheHas");Ybt=KEe;o(JC,"SetCache");E(JC,"SetCache");JC.prototype.add=JC.prototype.push=Ubt;JC.prototype.has=Ybt;yq=JC;o(ZEe,"arraySome");E(ZEe,"arraySome");QEe=ZEe;o(JEe,"cacheHas");E(JEe,"cacheHas");vq=JEe,jbt=1,Xbt=2;o(e4e,"equalArrays");E(e4e,"equalArrays");t4e=e4e;o(r4e,"mapToArray");E(r4e,"mapToArray");Kbt=r4e;o(n4e,"setToArray");E(n4e,"setToArray");xq=n4e,Zbt=1,Qbt=2,Jbt="[object Boolean]",e2t="[object Date]",t2t="[object Error]",r2t="[object Map]",n2t="[object Number]",i2t="[object RegExp]",a2t="[object Set]",s2t="[object String]",o2t="[object Symbol]",l2t="[object ArrayBuffer]",c2t="[object DataView]",hCe=Ll?Ll.prototype:void 0,rz=hCe?hCe.valueOf:void 0;o(i4e,"equalByTag");E(i4e,"equalByTag");u2t=i4e,h2t=1,d2t=Object.prototype,f2t=d2t.hasOwnProperty;o(a4e,"equalObjects");E(a4e,"equalObjects");p2t=a4e,m2t=1,dCe="[object Arguments]",fCe="[object Array]",NA="[object Object]",g2t=Object.prototype,pCe=g2t.hasOwnProperty;o(s4e,"baseIsEqualDeep");E(s4e,"baseIsEqualDeep");y2t=s4e;o(bq,"baseIsEqual");E(bq,"baseIsEqual");o4e=bq,v2t=1,x2t=2;o(l4e,"baseIsMatch");E(l4e,"baseIsMatch");b2t=l4e;o(c4e,"isStrictComparable");E(c4e,"isStrictComparable");u4e=c4e;o(h4e,"getMatchData");E(h4e,"getMatchData");T2t=h4e;o(d4e,"matchesStrictComparable");E(d4e,"matchesStrictComparable");f4e=d4e;o(p4e,"baseMatches");E(p4e,"baseMatches");C2t=p4e;o(m4e,"baseHasIn");E(m4e,"baseHasIn");w2t=m4e;o(g4e,"hasPath");E(g4e,"hasPath");y4e=g4e;o(v4e,"hasIn");E(v4e,"hasIn");k2t=v4e,S2t=1,E2t=2;o(x4e,"baseMatchesProperty");E(x4e,"baseMatchesProperty");A2t=x4e;o(b4e,"baseProperty");E(b4e,"baseProperty");R2t=b4e;o(T4e,"basePropertyDeep");E(T4e,"basePropertyDeep");_2t=T4e;o(C4e,"property");E(C4e,"property");L2t=C4e;o(w4e,"baseIteratee");E(w4e,"baseIteratee");Gu=w4e;o(k4e,"arrayAggregator");E(k4e,"arrayAggregator");D2t=k4e;o(S4e,"createBaseFor");E(S4e,"createBaseFor");I2t=S4e,M2t=I2t(),N2t=M2t;o(E4e,"baseForOwn");E(E4e,"baseForOwn");P2t=E4e;o(A4e,"createBaseEach");E(A4e,"createBaseEach");O2t=A4e,B2t=O2t(P2t),h0=B2t;o(R4e,"baseAggregator");E(R4e,"baseAggregator");$2t=R4e;o(_4e,"createAggregator");E(_4e,"createAggregator");F2t=_4e,L4e=Object.prototype,z2t=L4e.hasOwnProperty,G2t=sq(function(e,t){e=Object(e);var r=-1,n=t.length,i=n>2?t[2]:void 0;for(i&&BR(t[0],t[1],i)&&(n=1);++r{t.accept(e)})}},Gs=class extends Vu{static{o(this,"NonTerminal")}static{E(this,"NonTerminal")}constructor(e){super([]),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},Pv=class extends Vu{static{o(this,"Rule")}static{E(this,"Rule")}constructor(e){super(e.definition),this.orgText="",Xo(this,_c(e,t=>t!==void 0))}},Co=class extends Vu{static{o(this,"Alternative")}static{E(this,"Alternative")}constructor(e){super(e.definition),this.ignoreAmbiguities=!1,Xo(this,_c(e,t=>t!==void 0))}},Ua=class extends Vu{static{o(this,"Option")}static{E(this,"Option")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},Zo=class extends Vu{static{o(this,"RepetitionMandatory")}static{E(this,"RepetitionMandatory")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},Qo=class extends Vu{static{o(this,"RepetitionMandatoryWithSeparator")}static{E(this,"RepetitionMandatoryWithSeparator")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},Mi=class extends Vu{static{o(this,"Repetition")}static{E(this,"Repetition")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},wo=class extends Vu{static{o(this,"RepetitionWithSeparator")}static{E(this,"RepetitionWithSeparator")}constructor(e){super(e.definition),this.idx=1,Xo(this,_c(e,t=>t!==void 0))}},ko=class extends Vu{static{o(this,"Alternation")}static{E(this,"Alternation")}get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,Xo(this,_c(e,t=>t!==void 0))}},ci=class{static{o(this,"Terminal")}static{E(this,"Terminal")}constructor(e){this.idx=1,Xo(this,_c(e,t=>t!==void 0))}accept(e){e.visit(this)}};o(C3e,"serializeGrammar");E(C3e,"serializeGrammar");o(zC,"serializeProduction");E(zC,"serializeProduction");Ov=class{static{o(this,"GAstVisitor")}static{E(this,"GAstVisitor")}visit(e){let t=e;switch(t.constructor){case Gs:return this.visitNonTerminal(t);case Co:return this.visitAlternative(t);case Ua:return this.visitOption(t);case Zo:return this.visitRepetitionMandatory(t);case Qo:return this.visitRepetitionMandatoryWithSeparator(t);case wo:return this.visitRepetitionWithSeparator(t);case Mi:return this.visitRepetition(t);case ko:return this.visitAlternation(t);case ci:return this.visitTerminal(t);case Pv:return this.visitRule(t);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}};o(w3e,"isSequenceProd");E(w3e,"isSequenceProd");o(tw,"isOptionalProd");E(tw,"isOptionalProd");o(k3e,"isBranchingProd");E(k3e,"isBranchingProd");o(Tc,"getProductionDslName");E(Tc,"getProductionDslName");jR=class{static{o(this,"RestWalker")}static{E(this,"RestWalker")}walk(e,t=[]){Ir(e.definition,(r,n)=>{let i=Ha(e.definition,n+1);if(r instanceof Gs)this.walkProdRef(r,i,t);else if(r instanceof ci)this.walkTerminal(r,i,t);else if(r instanceof Co)this.walkFlat(r,i,t);else if(r instanceof Ua)this.walkOption(r,i,t);else if(r instanceof Zo)this.walkAtLeastOne(r,i,t);else if(r instanceof Qo)this.walkAtLeastOneSep(r,i,t);else if(r instanceof wo)this.walkManySep(r,i,t);else if(r instanceof Mi)this.walkMany(r,i,t);else if(r instanceof ko)this.walkOr(r,i,t);else throw Error("non exhaustive match")})}walkTerminal(e,t,r){}walkProdRef(e,t,r){}walkFlat(e,t,r){let n=t.concat(r);this.walk(e,n)}walkOption(e,t,r){let n=t.concat(r);this.walk(e,n)}walkAtLeastOne(e,t,r){let n=[new Ua({definition:e.definition})].concat(t,r);this.walk(e,n)}walkAtLeastOneSep(e,t,r){let n=RG(e,t,r);this.walk(e,n)}walkMany(e,t,r){let n=[new Ua({definition:e.definition})].concat(t,r);this.walk(e,n)}walkManySep(e,t,r){let n=RG(e,t,r);this.walk(e,n)}walkOr(e,t,r){let n=t.concat(r);Ir(e.definition,i=>{let a=new Co({definition:[i]});this.walk(a,n)})}};o(RG,"restForRepetitionWithSeparator");E(RG,"restForRepetitionWithSeparator");o(Bv,"first");E(Bv,"first");o(S3e,"firstForSequence");E(S3e,"firstForSequence");o(E3e,"firstForBranching");E(E3e,"firstForBranching");o(A3e,"firstForTerminal");E(A3e,"firstForTerminal");R3e="_~IN~_",RTt=class extends jR{static{o(this,"ResyncFollowsWalker")}static{E(this,"ResyncFollowsWalker")}constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,t,r){}walkProdRef(e,t,r){let n=L3e(e.referencedRule,e.idx)+this.topProd.name,i=t.concat(r),a=new Co({definition:i}),s=Bv(a);this.follows[n]=s}};o(_3e,"computeAllProdsFollows");E(_3e,"computeAllProdsFollows");o(L3e,"buildBetweenProdsFollowPrefix");E(L3e,"buildBetweenProdsFollowPrefix");o6={},_Tt=new lke;o(Aw,"getRegExpAst");E(Aw,"getRegExpAst");o(D3e,"clearRegExpParserCache");E(D3e,"clearRegExpParserCache");I3e="Complement Sets are not supported for first char optimization",K6=`Unable to use "first char" lexer optimizations: +`;o(M3e,"getOptimizedStartCodesIndices");E(M3e,"getOptimizedStartCodesIndices");o(Z6,"firstCharOptimizedIndices");E(Z6,"firstCharOptimizedIndices");o(SC,"addOptimizedIdxToResult");E(SC,"addOptimizedIdxToResult");o(N3e,"handleIgnoreCase");E(N3e,"handleIgnoreCase");o(_G,"findCode");E(_G,"findCode");o(Q6,"isWholeOptional");E(Q6,"isWholeOptional");LTt=class extends AR{static{o(this,"CharCodeFinder")}static{E(this,"CharCodeFinder")}constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return;case"Lookbehind":this.visitLookbehind(e);return;case"NegativeLookbehind":this.visitNegativeLookbehind(e);return}super.visitChildren(e)}}visitCharacter(e){qs(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?_G(e,this.targetCharCodes)===void 0&&(this.found=!0):_G(e,this.targetCharCodes)!==void 0&&(this.found=!0)}};o(XR,"canMatchCharCode");E(XR,"canMatchCharCode");Kg="PATTERN",EC="defaultMode",PA="modes";o(P3e,"analyzeTokenTypes");E(P3e,"analyzeTokenTypes");o(O3e,"validatePatterns");E(O3e,"validatePatterns");o(B3e,"validateRegExpPattern");E(B3e,"validateRegExpPattern");o($3e,"findMissingPatterns");E($3e,"findMissingPatterns");o(F3e,"findInvalidPatterns");E(F3e,"findInvalidPatterns");DTt=/[^\\][$]/;o(z3e,"findEndOfInputAnchor");E(z3e,"findEndOfInputAnchor");o(G3e,"findEmptyMatchRegExps");E(G3e,"findEmptyMatchRegExps");ITt=/[^\\[][\^]|^\^/;o(V3e,"findStartOfInputAnchor");E(V3e,"findStartOfInputAnchor");o(W3e,"findUnsupportedFlags");E(W3e,"findUnsupportedFlags");o(q3e,"findDuplicatePatterns");E(q3e,"findDuplicatePatterns");o(H3e,"findInvalidGroupType");E(H3e,"findInvalidGroupType");o(U3e,"findModesThatDoNotExist");E(U3e,"findModesThatDoNotExist");o(Y3e,"findUnreachablePatterns");E(Y3e,"findUnreachablePatterns");o(j3e,"tryToMatchStrToPattern");E(j3e,"tryToMatchStrToPattern");o(X3e,"noMetaChar");E(X3e,"noMetaChar");o(K3e,"usesLookAheadOrBehind");E(K3e,"usesLookAheadOrBehind");o(LG,"addStickyFlag");E(LG,"addStickyFlag");o(Z3e,"performRuntimeChecks");E(Z3e,"performRuntimeChecks");o(Q3e,"performWarningRuntimeChecks");E(Q3e,"performWarningRuntimeChecks");o(J3e,"cloneEmptyGroups");E(J3e,"cloneEmptyGroups");o(Eq,"isCustomPattern");E(Eq,"isCustomPattern");o(e5e,"isShortPattern");E(e5e,"isShortPattern");MTt={test:E(function(e){let t=e.length;for(let r=this.lastIndex;r${e.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(e,t,r,n,i,a){return`unexpected character: ->${e.charAt(t)}<- at offset: ${t}, skipped ${r} characters.`}};(function(e){e[e.MISSING_PATTERN=0]="MISSING_PATTERN",e[e.INVALID_PATTERN=1]="INVALID_PATTERN",e[e.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",e[e.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",e[e.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",e[e.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",e[e.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",e[e.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",e[e.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",e[e.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",e[e.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",e[e.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",e[e.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",e[e.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",e[e.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",e[e.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",e[e.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",e[e.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(Ni||(Ni={}));RC={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:IG,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(RC);Fs=class{static{o(this,"Lexer")}static{E(this,"Lexer")}constructor(e,t=RC){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(n,i)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let a=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${n}>`);let{time:s,value:l}=kq(i),u=s>10?console.warn:console.log;return this.traceInitIndent time: ${s}ms`),this.traceInitIndent--,l}else return i()},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=Xo({},RC,t);let r=this.config.traceInitPerf;r===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof r=="number"&&(this.traceInitMaxIdent=r,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let n,i=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===RC.lineTerminatorsPattern)this.config.lineTerminatorsPattern=MTt;else if(this.config.lineTerminatorCharacters===RC.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),un(e)?n={modes:{defaultMode:Ya(e)},defaultMode:EC}:(i=!1,n=Ya(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Z3e(n,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(Q3e(n,this.trackStartLines,this.config.lineTerminatorCharacters))})),n.modes=n.modes?n.modes:{},Ir(n.modes,(s,l)=>{n.modes[l]=YR(s,u=>Kh(u))});let a=jo(n.modes);if(Ir(n.modes,(s,l)=>{this.TRACE_INIT(`Mode: <${l}> processing`,()=>{if(this.modes.push(l),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(O3e(s,a))}),ei(this.lexerDefinitionErrors)){Fv(s);let u;this.TRACE_INIT("analyzeTokenTypes",()=>{u=P3e(s,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[l]=u.patternIdxToConfig,this.charCodeToPatternIdxToConfig[l]=u.charCodeToPatternIdxToConfig,this.emptyGroups=Xo({},this.emptyGroups,u.emptyGroups),this.hasCustom=u.hasCustom||this.hasCustom,this.canModeBeOptimized[l]=u.canBeOptimized}})}),this.defaultMode=n.defaultMode,!ei(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let l=hr(this.lexerDefinitionErrors,u=>u.message).join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+l)}Ir(this.lexerDefinitionWarning,s=>{wq(s.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(i&&(this.handleModes=Da),this.trackStartLines===!1&&(this.computeNewColumn=bw),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=Da),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let s=Ko(this.canModeBeOptimized,(l,u,h)=>(u===!1&&l.push(h),l),[]);if(t.ensureOptimizations&&!ei(s))throw Error(`Lexer Modes: < ${s.join(", ")} > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{D3e()}),this.TRACE_INIT("toFastProperties",()=>{Sq(this)})})}tokenize(e,t=this.defaultMode){if(!ei(this.lexerDefinitionErrors)){let n=hr(this.lexerDefinitionErrors,i=>i.message).join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+n)}return this.tokenizeInternal(e,t)}tokenizeInternal(e,t){let r,n,i,a,s,l,u,h,d,f,p,m,g,y,v,x=e,b=x.length,T=0,k=0,C=this.hasCustom?0:Math.floor(e.length/10),w=new Array(C),S=[],R=this.trackStartLines?1:void 0,L=this.trackStartLines?1:void 0,N=J3e(this.emptyGroups),I=this.trackStartLines,_=this.config.lineTerminatorsPattern,A=0,M=[],D=[],P=[],B=[];Object.freeze(B);let O=!1,$=E(W=>{if(P.length===1&&W.tokenType.PUSH_MODE===void 0){let H=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(W);S.push({offset:W.startOffset,line:W.startLine,column:W.startColumn,length:W.image.length,message:H})}else{P.pop();let H=Xg(P);M=this.patternIdxToConfig[H],D=this.charCodeToPatternIdxToConfig[H],A=M.length;let j=this.canModeBeOptimized[H]&&this.config.safeMode===!1;D&&j?O=!0:O=!1}},"pop_mode");function V(W){P.push(W),D=this.charCodeToPatternIdxToConfig[W],M=this.patternIdxToConfig[W],A=M.length,A=M.length;let H=this.canModeBeOptimized[W]&&this.config.safeMode===!1;D&&H?O=!0:O=!1}o(V,"push_mode"),E(V,"push_mode"),V.call(this,t);let G,z=this.config.recoveryEnabled;for(;Tl.length){l=a,d=a.length,u=h,G=te;break}}}break}}if(d!==-1){if(f=G.group,f!==void 0&&(l=l!==null?l:e.substring(T,T+d),p=G.tokenTypeIdx,m=this.createTokenInstance(l,T,p,G.tokenType,R,L,d),this.handlePayload(m,u),f===!1?k=this.addToken(w,k,m):N[f].push(m)),I===!0&&G.canLineTerminator===!0){let Q=0,U,oe;_.lastIndex=0;do l=l!==null?l:e.substring(T,T+d),U=_.test(l),U===!0&&(oe=_.lastIndex-1,Q++);while(U===!0);Q!==0?(R=R+Q,L=d-oe,this.updateTokenEndLineColumnLocation(m,f,oe,Q,R,L,d)):L=this.computeNewColumn(L,d)}else L=this.computeNewColumn(L,d);T=T+d,this.handleModes(G,$,V,m)}else{let Q=T,U=R,oe=L,te=z===!1;for(;te===!1&&T ${Ug(e)} <--`:`token of type --> ${e.name} <--`} but found --> '${t.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:e,ruleName:t}){return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage({expectedPathsPerAlt:e,actual:t,previous:r,customUserDescription:n,ruleName:i}){let a="Expecting: ",l=` +but found: '`+Rc(t).image+"'";if(n)return a+n+l;{let u=Ko(e,(p,m)=>p.concat(m),[]),h=hr(u,p=>`[${hr(p,m=>Ug(m)).join(", ")}]`),f=`one of these possible Token sequences: +${hr(h,(p,m)=>` ${m+1}. ${p}`).join(` +`)}`;return a+f+l}},buildEarlyExitMessage({expectedIterationPaths:e,actual:t,customUserDescription:r,ruleName:n}){let i="Expecting: ",s=` +but found: '`+Rc(t).image+"'";if(r)return i+r+s;{let u=`expecting at least one iteration which starts with one of these possible Token sequences:: + <${hr(e,h=>`[${hr(h,d=>Ug(d)).join(",")}]`).join(" ,")}>`;return i+u+s}}};Object.freeze(pv);PTt={buildRuleNotFoundError(e,t){return"Invalid grammar, reference to a rule which is not defined: ->"+t.nonTerminalName+`<- +inside top level rule: ->`+e.name+"<-"}},Wg={buildDuplicateFoundError(e,t){function r(d){return d instanceof ci?d.terminalType.name:d instanceof Gs?d.nonTerminalName:""}o(r,"getExtraProductionArgument2"),E(r,"getExtraProductionArgument");let n=e.name,i=Rc(t),a=i.idx,s=Tc(i),l=r(i),u=a>0,h=`->${s}${u?a:""}<- ${l?`with argument: ->${l}<-`:""} + appears more than once (${t.length} times) in the top level rule: ->${n}<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return h=h.replace(/[ \t]+/g," "),h=h.replace(/\s\s+/g,` +`),h},buildNamespaceConflictError(e){return`Namespace conflict found in grammar. +The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${e.name}>. +To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(e){let t=hr(e.prefixPath,i=>Ug(i)).join(", "),r=e.alternation.idx===0?"":e.alternation.idx;return`Ambiguous alternatives: <${e.ambiguityIndices.join(" ,")}> due to common lookahead prefix +in inside <${e.topLevelRule.name}> Rule, +<${t}> may appears as a prefix path in all these alternatives. +See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`},buildAlternationAmbiguityError(e){let t=e.alternation.idx===0?"":e.alternation.idx,r=e.prefixPath.length===0,n=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(" ,")}> in inside <${e.topLevelRule.name}> Rule, +`;if(r)n+=`These alternatives are all empty (match no tokens), making them indistinguishable. +Only the last alternative may be empty. +`;else{let i=hr(e.prefixPath,a=>Ug(a)).join(", ");n+=`<${i}> may appears as a prefix path in all these alternatives. +`}return n+=`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,n},buildEmptyRepetitionError(e){let t=Tc(e.repetition);return e.repetition.idx!==0&&(t+=e.repetition.idx),`The repetition <${t}> within Rule <${e.topLevelRule.name}> can never consume any tokens. +This could lead to an infinite loop.`},buildTokenNameError(e){return"deprecated"},buildEmptyAlternationError(e){return`Ambiguous empty alternative: <${e.emptyChoiceIdx+1}> in inside <${e.topLevelRule.name}> Rule. +Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(e){return`An Alternation cannot have more than 256 alternatives: + inside <${e.topLevelRule.name}> Rule. + has ${e.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(e){let t=e.topLevelRule.name,r=hr(e.leftRecursionPath,a=>a.name),n=`${t} --> ${r.concat([t]).join(" --> ")}`;return`Left Recursion found in grammar. +rule: <${t}> can be invoked from itself (directly or indirectly) +without consuming any Tokens. The grammar path that causes this is: + ${n} + To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(e){return"deprecated"},buildDuplicateRuleNameError(e){let t;return e.topLevelRule instanceof Pv?t=e.topLevelRule.name:t=e.topLevelRule,`Duplicate definition, rule: ->${t}<- is already defined in the grammar: ->${e.grammarName}<-`}};o(d5e,"resolveGrammar");E(d5e,"resolveGrammar");OTt=class extends Ov{static{o(this,"GastRefResolverVisitor")}static{E(this,"GastRefResolverVisitor")}constructor(e,t){super(),this.nameToTopRule=e,this.errMsgProvider=t,this.errors=[]}resolveRefs(){Ir(ha(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let t=this.nameToTopRule[e.nonTerminalName];if(t)e.referencedRule=t;else{let r=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:r,type:Vs.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}},BTt=class extends jR{static{o(this,"AbstractNextPossibleTokensWalker")}static{E(this,"AbstractNextPossibleTokensWalker")}constructor(e,t){super(),this.topProd=e,this.path=t,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=Ya(this.path.ruleStack).reverse(),this.occurrenceStack=Ya(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,t=[]){this.found||super.walk(e,t)}walkProdRef(e,t,r){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let n=t.concat(r);this.updateExpectedNext(),this.walk(e.referencedRule,n)}}updateExpectedNext(){ei(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},$Tt=class extends BTt{static{o(this,"NextAfterTokenWalker")}static{E(this,"NextAfterTokenWalker")}constructor(e,t){super(e,t),this.path=t,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,t,r){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let n=t.concat(r),i=new Co({definition:n});this.possibleTokTypes=Bv(i),this.found=!0}}},KR=class extends jR{static{o(this,"AbstractNextTerminalAfterProductionWalker")}static{E(this,"AbstractNextTerminalAfterProductionWalker")}constructor(e,t){super(),this.topRule=e,this.occurrence=t,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},FTt=class extends KR{static{o(this,"NextTerminalAfterManyWalker")}static{E(this,"NextTerminalAfterManyWalker")}walkMany(e,t,r){if(e.idx===this.occurrence){let n=Rc(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof ci&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkMany(e,t,r)}},ACe=class extends KR{static{o(this,"NextTerminalAfterManySepWalker")}static{E(this,"NextTerminalAfterManySepWalker")}walkManySep(e,t,r){if(e.idx===this.occurrence){let n=Rc(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof ci&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkManySep(e,t,r)}},zTt=class extends KR{static{o(this,"NextTerminalAfterAtLeastOneWalker")}static{E(this,"NextTerminalAfterAtLeastOneWalker")}walkAtLeastOne(e,t,r){if(e.idx===this.occurrence){let n=Rc(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof ci&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkAtLeastOne(e,t,r)}},RCe=class extends KR{static{o(this,"NextTerminalAfterAtLeastOneSepWalker")}static{E(this,"NextTerminalAfterAtLeastOneSepWalker")}walkAtLeastOneSep(e,t,r){if(e.idx===this.occurrence){let n=Rc(t.concat(r));this.result.isEndOfRule=n===void 0,n instanceof ci&&(this.result.token=n.terminalType,this.result.occurrence=n.idx)}else super.walkAtLeastOneSep(e,t,r)}};o(J6,"possiblePathsFrom");E(J6,"possiblePathsFrom");o(Mq,"nextPossibleTokensAfter");E(Mq,"nextPossibleTokensAfter");o(f5e,"expandTopLevelRule");E(f5e,"expandTopLevelRule");(function(e){e[e.OPTION=0]="OPTION",e[e.REPETITION=1]="REPETITION",e[e.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",e[e.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",e[e.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",e[e.ALTERNATION=5]="ALTERNATION"})(wi||(wi={}));o(ZR,"getProdType");E(ZR,"getProdType");o(MG,"getLookaheadPaths");E(MG,"getLookaheadPaths");o(p5e,"buildLookaheadFuncForOr");E(p5e,"buildLookaheadFuncForOr");o(m5e,"buildLookaheadFuncForOptionalProd");E(m5e,"buildLookaheadFuncForOptionalProd");o(g5e,"buildAlternativesLookAheadFunc");E(g5e,"buildAlternativesLookAheadFunc");o(y5e,"buildSingleAlternativeLookaheadFunction");E(y5e,"buildSingleAlternativeLookaheadFunction");GTt=class extends jR{static{o(this,"RestDefinitionFinderWalker")}static{E(this,"RestDefinitionFinderWalker")}constructor(e,t,r){super(),this.topProd=e,this.targetOccurrence=t,this.targetProdType=r}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,t,r,n){return e.idx===this.targetOccurrence&&this.targetProdType===t?(this.restDef=r.concat(n),!0):!1}walkOption(e,t,r){this.checkIsTarget(e,wi.OPTION,t,r)||super.walkOption(e,t,r)}walkAtLeastOne(e,t,r){this.checkIsTarget(e,wi.REPETITION_MANDATORY,t,r)||super.walkOption(e,t,r)}walkAtLeastOneSep(e,t,r){this.checkIsTarget(e,wi.REPETITION_MANDATORY_WITH_SEPARATOR,t,r)||super.walkOption(e,t,r)}walkMany(e,t,r){this.checkIsTarget(e,wi.REPETITION,t,r)||super.walkOption(e,t,r)}walkManySep(e,t,r){this.checkIsTarget(e,wi.REPETITION_WITH_SEPARATOR,t,r)||super.walkOption(e,t,r)}},v5e=class extends Ov{static{o(this,"InsideDefinitionFinderVisitor")}static{E(this,"InsideDefinitionFinderVisitor")}constructor(e,t,r){super(),this.targetOccurrence=e,this.targetProdType=t,this.targetRef=r,this.result=[]}checkIsTarget(e,t){e.idx===this.targetOccurrence&&this.targetProdType===t&&(this.targetRef===void 0||e===this.targetRef)&&(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,wi.OPTION)}visitRepetition(e){this.checkIsTarget(e,wi.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,wi.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,wi.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,wi.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,wi.ALTERNATION)}};o(NG,"initializeArrayOfArrays");E(NG,"initializeArrayOfArrays");o(u6,"pathToHashKeys");E(u6,"pathToHashKeys");o(x5e,"isUniquePrefixHash");E(x5e,"isUniquePrefixHash");o(Nq,"lookAheadSequenceFromAlternatives");E(Nq,"lookAheadSequenceFromAlternatives");o(_w,"getLookaheadPathsForOr");E(_w,"getLookaheadPathsForOr");o(Lw,"getLookaheadPathsForOptionalProd");E(Lw,"getLookaheadPathsForOptionalProd");o(eR,"containsPath");E(eR,"containsPath");o(b5e,"isStrictPrefixOfPath");E(b5e,"isStrictPrefixOfPath");o(Pq,"areTokenCategoriesNotUsed");E(Pq,"areTokenCategoriesNotUsed");o(T5e,"validateLookahead");E(T5e,"validateLookahead");o(C5e,"validateGrammar");E(C5e,"validateGrammar");o(w5e,"validateDuplicateProductions");E(w5e,"validateDuplicateProductions");o(k5e,"identifyProductionForDuplicates");E(k5e,"identifyProductionForDuplicates");o(Oq,"getExtraProductionArgument");E(Oq,"getExtraProductionArgument");VTt=class extends Ov{static{o(this,"OccurrenceValidationCollector")}static{E(this,"OccurrenceValidationCollector")}constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};o(S5e,"validateRuleDoesNotAlreadyExist");E(S5e,"validateRuleDoesNotAlreadyExist");o(E5e,"validateRuleIsOverridden");E(E5e,"validateRuleIsOverridden");o(Bq,"validateNoLeftRecursion");E(Bq,"validateNoLeftRecursion");o(GC,"getFirstNoneTerminal");E(GC,"getFirstNoneTerminal");$q=class extends Ov{static{o(this,"OrCollector")}static{E(this,"OrCollector")}constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};o(A5e,"validateEmptyOrAlternative");E(A5e,"validateEmptyOrAlternative");o(R5e,"validateAmbiguousAlternationAlternatives");E(R5e,"validateAmbiguousAlternationAlternatives");WTt=class extends Ov{static{o(this,"RepetitionCollector")}static{E(this,"RepetitionCollector")}constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}};o(_5e,"validateTooManyAlts");E(_5e,"validateTooManyAlts");o(L5e,"validateSomeNonEmptyLookaheadPath");E(L5e,"validateSomeNonEmptyLookaheadPath");o(D5e,"checkAlternativesAmbiguities");E(D5e,"checkAlternativesAmbiguities");o(I5e,"checkPrefixAlternativesAmbiguities");E(I5e,"checkPrefixAlternativesAmbiguities");o(M5e,"checkTerminalAndNoneTerminalsNameSpace");E(M5e,"checkTerminalAndNoneTerminalsNameSpace");o(N5e,"resolveGrammar2");E(N5e,"resolveGrammar");o(P5e,"validateGrammar2");E(P5e,"validateGrammar");O5e="MismatchedTokenException",B5e="NoViableAltException",$5e="EarlyExitException",F5e="NotAllInputParsedException",z5e=[O5e,B5e,$5e,F5e];Object.freeze(z5e);o(nw,"isRecognitionException");E(nw,"isRecognitionException");QR=class extends Error{static{o(this,"RecognitionException")}static{E(this,"RecognitionException")}constructor(e,t){super(e),this.token=t,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},G5e=class extends QR{static{o(this,"MismatchedTokenException")}static{E(this,"MismatchedTokenException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=O5e}},qTt=class extends QR{static{o(this,"NoViableAltException")}static{E(this,"NoViableAltException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=B5e}},HTt=class extends QR{static{o(this,"NotAllInputParsedException")}static{E(this,"NotAllInputParsedException")}constructor(e,t){super(e,t),this.name=F5e}},UTt=class extends QR{static{o(this,"EarlyExitException")}static{E(this,"EarlyExitException")}constructor(e,t,r){super(e,t),this.previousToken=r,this.name=$5e}},nz={},V5e="InRuleRecoveryException",YTt=class extends Error{static{o(this,"InRuleRecoveryException")}static{E(this,"InRuleRecoveryException")}constructor(e){super(e),this.name=V5e}},jTt=class{static{o(this,"Recoverable")}static{E(this,"Recoverable")}initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=wr(e,"recoveryEnabled")?e.recoveryEnabled:Qh.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=W5e)}getTokenToInsert(e){let t=Rw(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,t,r,n){let i=this.findReSyncTokenType(),a=this.exportLexerState(),s=[],l=!1,u=this.LA(1),h=this.LA(1),d=E(()=>{let f=this.LA(0),p=this.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:f,ruleName:this.getCurrRuleFullName()}),m=new G5e(p,u,this.LA(0));m.resyncedTokens=ew(s),this.SAVE_ERROR(m)},"generateErrorMessage");for(;!l;)if(this.tokenMatcher(h,n)){d();return}else if(r.call(this)){d(),e.apply(this,t);return}else this.tokenMatcher(h,i)?l=!0:(h=this.SKIP_TOKEN(),this.addToResyncTokens(h,s));this.importLexerState(a)}shouldInRepetitionRecoveryBeTried(e,t,r){return!(r===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))}getFollowsForInRuleRecovery(e,t){let r=this.getCurrentGrammarPath(e,t);return this.getNextPossibleTokenTypes(r)}tryInRuleRecovery(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let r=this.SKIP_TOKEN();return this.consumeToken(),r}throw new YTt("sad sad panda")}canPerformInRuleRecovery(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,t){if(!this.canTokenTypeBeInsertedInRecovery(e)||ei(t))return!1;let r=this.LA(1);return _v(t,i=>this.tokenMatcher(r,i))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let t=this.getCurrFollowKey(),r=this.getFollowSetFromFollowKey(t);return qs(r,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),t=this.LA(1),r=2;for(;;){let n=_v(e,i=>Iq(t,i));if(n!==void 0)return n;t=this.LA(r),r++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return nz;let e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),r=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(r)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,t=this.RULE_OCCURRENCE_STACK;return hr(e,(r,n)=>n===0?nz:{ruleName:this.shortRuleNameToFullName(r),idxInCallingRule:t[n],inRule:this.shortRuleNameToFullName(e[n-1])})}flattenFollowSet(){let e=hr(this.buildFullFollowKeyStack(),t=>this.getFollowSetFromFollowKey(t));return Sc(e)}getFollowSetFromFollowKey(e){if(e===nz)return[pp];let t=e.ruleName+e.idxInCallingRule+R3e+e.inRule;return this.resyncFollows[t]}addToResyncTokens(e,t){return this.tokenMatcher(e,pp)||t.push(e),t}reSyncTo(e){let t=[],r=this.LA(1);for(;this.tokenMatcher(r,e)===!1;)r=this.SKIP_TOKEN(),this.addToResyncTokens(r,t);return ew(t)}attemptInRepetitionRecovery(e,t,r,n,i,a,s){}getCurrentGrammarPath(e,t){let r=this.getHumanReadableRuleStack(),n=Ya(this.RULE_OCCURRENCE_STACK);return{ruleStack:r,occurrenceStack:n,lastTok:e,lastTokOccurrence:t}}getHumanReadableRuleStack(){return hr(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}};o(W5e,"attemptInRepetitionRecovery");E(W5e,"attemptInRepetitionRecovery");XTt=4,bp=8,KTt=8,q5e=1<Bq(t,t,Wg))}validateEmptyOrAlternatives(e){return _l(e,t=>A5e(t,Wg))}validateAmbiguousAlternationAlternatives(e,t){return _l(e,r=>R5e(r,t,Wg))}validateSomeNonEmptyLookaheadPath(e,t){return L5e(e,t,Wg)}buildLookaheadForAlternation(e){return p5e(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,g5e)}buildLookaheadForOptional(e){return m5e(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,ZR(e.prodType),y5e)}},ZTt=class{static{o(this,"LooksAhead")}static{E(this,"LooksAhead")}initLooksAhead(e){this.dynamicTokensEnabled=wr(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Qh.dynamicTokensEnabled,this.maxLookahead=wr(e,"maxLookahead")?e.maxLookahead:Qh.maxLookahead,this.lookaheadStrategy=wr(e,"lookaheadStrategy")?e.lookaheadStrategy:new Fq({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){Ir(e,t=>{this.TRACE_INIT(`${t.name} Rule Lookahead`,()=>{let{alternation:r,repetition:n,option:i,repetitionMandatory:a,repetitionMandatoryWithSeparator:s,repetitionWithSeparator:l}=U5e(t);Ir(r,u=>{let h=u.idx===0?"":u.idx;this.TRACE_INIT(`${Tc(u)}${h}`,()=>{let d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:u.idx,rule:t,maxLookahead:u.maxLookahead||this.maxLookahead,hasPredicates:u.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),f=d6(this.fullRuleNameToShort[t.name],q5e,u.idx);this.setLaFuncCache(f,d)})}),Ir(n,u=>{this.computeLookaheadFunc(t,u.idx,PG,"Repetition",u.maxLookahead,Tc(u))}),Ir(i,u=>{this.computeLookaheadFunc(t,u.idx,H5e,"Option",u.maxLookahead,Tc(u))}),Ir(a,u=>{this.computeLookaheadFunc(t,u.idx,OG,"RepetitionMandatory",u.maxLookahead,Tc(u))}),Ir(s,u=>{this.computeLookaheadFunc(t,u.idx,h6,"RepetitionMandatoryWithSeparator",u.maxLookahead,Tc(u))}),Ir(l,u=>{this.computeLookaheadFunc(t,u.idx,BG,"RepetitionWithSeparator",u.maxLookahead,Tc(u))})})})}computeLookaheadFunc(e,t,r,n,i,a){this.TRACE_INIT(`${a}${t===0?"":t}`,()=>{let s=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:t,rule:e,maxLookahead:i||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:n}),l=d6(this.fullRuleNameToShort[e.name],r,t);this.setLaFuncCache(l,s)})}getKeyForAutomaticLookahead(e,t){let r=this.getLastExplicitRuleShortName();return d6(r,e,t)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,t){this.lookAheadFuncsCache.set(e,t)}},QTt=class extends Ov{static{o(this,"DslMethodsCollectorVisitor")}static{E(this,"DslMethodsCollectorVisitor")}constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},OA=new QTt;o(U5e,"collectMethods");E(U5e,"collectMethods");o($G,"setNodeLocationOnlyOffset");E($G,"setNodeLocationOnlyOffset");o(FG,"setNodeLocationFull");E(FG,"setNodeLocationFull");o(Y5e,"addTerminalToCst");E(Y5e,"addTerminalToCst");o(j5e,"addNoneTerminalToCst");E(j5e,"addNoneTerminalToCst");JTt="name";o(zq,"defineNameProp");E(zq,"defineNameProp");o(X5e,"defaultVisit");E(X5e,"defaultVisit");o(K5e,"createBaseSemanticVisitorConstructor");E(K5e,"createBaseSemanticVisitorConstructor");o(Z5e,"createBaseVisitorConstructorWithDefaults");E(Z5e,"createBaseVisitorConstructorWithDefaults");(function(e){e[e.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",e[e.MISSING_METHOD=1]="MISSING_METHOD"})(zG||(zG={}));o(Q5e,"validateVisitor");E(Q5e,"validateVisitor");o(J5e,"validateMissingCstMethods");E(J5e,"validateMissingCstMethods");eCt=class{static{o(this,"TreeBuilder")}static{E(this,"TreeBuilder")}initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=wr(e,"nodeLocationTracking")?e.nodeLocationTracking:Qh.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Da,this.cstFinallyStateUpdate=Da,this.cstPostTerminal=Da,this.cstPostNonTerminal=Da,this.cstPostRule=Da;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=FG,this.setNodeLocationFromNode=FG,this.cstPostRule=Da,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Da,this.setNodeLocationFromNode=Da,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=$G,this.setNodeLocationFromNode=$G,this.cstPostRule=Da,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Da,this.setNodeLocationFromNode=Da,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Da,this.setNodeLocationFromNode=Da,this.cstPostRule=Da,this.setInitialNodeLocation=Da;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let t={name:e,children:Object.create(null)};this.setInitialNodeLocation(t),this.CST_STACK.push(t)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let t=this.LA(0),r=e.location;r.startOffset<=t.startOffset?(r.endOffset=t.endOffset,r.endLine=t.endLine,r.endColumn=t.endColumn):(r.startOffset=NaN,r.startLine=NaN,r.startColumn=NaN)}cstPostRuleOnlyOffset(e){let t=this.LA(0),r=e.location;r.startOffset<=t.startOffset?r.endOffset=t.endOffset:r.startOffset=NaN}cstPostTerminal(e,t){let r=this.CST_STACK[this.CST_STACK.length-1];Y5e(r,t,e),this.setNodeLocationFromToken(r.location,t)}cstPostNonTerminal(e,t){let r=this.CST_STACK[this.CST_STACK.length-1];j5e(r,t,e),this.setNodeLocationFromNode(r.location,e.location)}getBaseCstVisitorConstructor(){if(Kh(this.baseCstVisitorConstructor)){let e=K5e(this.className,jo(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(Kh(this.baseCstVisitorWithDefaultsConstructor)){let e=Z5e(this.className,jo(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}},tCt=class{static{o(this,"LexerAdapter")}static{E(this,"LexerAdapter")}initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):tR}LA(e){let t=this.currIdx+e;return t<0||this.tokVectorLength<=t?tR:this.tokVector[t]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}},rCt=class{static{o(this,"RecognizerApi")}static{E(this,"RecognizerApi")}ACTION(e){return e.call(this)}consume(e,t,r){return this.consumeInternal(t,e,r)}subrule(e,t,r){return this.subruleInternal(t,e,r)}option(e,t){return this.optionInternal(t,e)}or(e,t){return this.orInternal(t,e)}many(e,t){return this.manyInternal(e,t)}atLeastOne(e,t){return this.atLeastOneInternal(e,t)}CONSUME(e,t){return this.consumeInternal(e,0,t)}CONSUME1(e,t){return this.consumeInternal(e,1,t)}CONSUME2(e,t){return this.consumeInternal(e,2,t)}CONSUME3(e,t){return this.consumeInternal(e,3,t)}CONSUME4(e,t){return this.consumeInternal(e,4,t)}CONSUME5(e,t){return this.consumeInternal(e,5,t)}CONSUME6(e,t){return this.consumeInternal(e,6,t)}CONSUME7(e,t){return this.consumeInternal(e,7,t)}CONSUME8(e,t){return this.consumeInternal(e,8,t)}CONSUME9(e,t){return this.consumeInternal(e,9,t)}SUBRULE(e,t){return this.subruleInternal(e,0,t)}SUBRULE1(e,t){return this.subruleInternal(e,1,t)}SUBRULE2(e,t){return this.subruleInternal(e,2,t)}SUBRULE3(e,t){return this.subruleInternal(e,3,t)}SUBRULE4(e,t){return this.subruleInternal(e,4,t)}SUBRULE5(e,t){return this.subruleInternal(e,5,t)}SUBRULE6(e,t){return this.subruleInternal(e,6,t)}SUBRULE7(e,t){return this.subruleInternal(e,7,t)}SUBRULE8(e,t){return this.subruleInternal(e,8,t)}SUBRULE9(e,t){return this.subruleInternal(e,9,t)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,t,r=rR){if(qs(this.definedRulesNames,e)){let a={message:Wg.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:Vs.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(a)}this.definedRulesNames.push(e);let n=this.defineRule(e,t,r);return this[e]=n,n}OVERRIDE_RULE(e,t,r=rR){let n=E5e(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(n);let i=this.defineRule(e,t,r);return this[e]=i,i}BACKTRACK(e,t){return function(){this.isBackTrackingStack.push(1);let r=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if(nw(n))return!1;throw n}finally{this.reloadRecogState(r),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return C3e(ha(this.gastProductionsCache))}},nCt=class{static{o(this,"RecognizerEngine")}static{E(this,"RecognizerEngine")}initRecognizerEngine(e,t){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=rw,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},wr(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if(un(e)){if(ei(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if(un(e))this.tokensMap=Ko(e,(i,a)=>(i[a.name]=a,i),{});else if(wr(e,"modes")&&Ec(Sc(ha(e.modes)),u5e)){let i=Sc(ha(e.modes)),a=Cq(i);this.tokensMap=Ko(a,(s,l)=>(s[l.name]=l,s),{})}else if(Dl(e))this.tokensMap=Ya(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=pp;let r=wr(e,"modes")?Sc(ha(e.modes)):ha(e),n=Ec(r,i=>ei(i.categoryMatches));this.tokenMatcher=n?rw:$v,Fv(ha(this.tokensMap))}defineRule(e,t,r){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let n=wr(r,"resyncEnabled")?r.resyncEnabled:rR.resyncEnabled,i=wr(r,"recoveryValueFunc")?r.recoveryValueFunc:rR.recoveryValueFunc,a=this.ruleShortNameIdx<a.call(this)&&s.call(this),"lookAheadFunc")}}else i=e;if(n.call(this)===!0)return i.call(this)}atLeastOneInternal(e,t){let r=this.getKeyForAutomaticLookahead(OG,e);return this.atLeastOneInternalLogic(e,t,r)}atLeastOneInternalLogic(e,t,r){let n=this.getLaFuncFromCache(r),i;if(typeof t!="function"){i=t.DEF;let a=t.GATE;if(a!==void 0){let s=n;n=E(()=>a.call(this)&&s.call(this),"lookAheadFunc")}}else i=t;if(n.call(this)===!0){let a=this.doSingleRepetition(i);for(;n.call(this)===!0&&a===!0;)a=this.doSingleRepetition(i)}else throw this.raiseEarlyExitException(e,wi.REPETITION_MANDATORY,t.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],n,OG,e,zTt)}atLeastOneSepFirstInternal(e,t){let r=this.getKeyForAutomaticLookahead(h6,e);this.atLeastOneSepFirstInternalLogic(e,t,r)}atLeastOneSepFirstInternalLogic(e,t,r){let n=t.DEF,i=t.SEP;if(this.getLaFuncFromCache(r).call(this)===!0){n.call(this);let s=E(()=>this.tokenMatcher(this.LA(1),i),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),i)===!0;)this.CONSUME(i),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,s,n,RCe],s,h6,e,RCe)}else throw this.raiseEarlyExitException(e,wi.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG)}manyInternal(e,t){let r=this.getKeyForAutomaticLookahead(PG,e);return this.manyInternalLogic(e,t,r)}manyInternalLogic(e,t,r){let n=this.getLaFuncFromCache(r),i;if(typeof t!="function"){i=t.DEF;let s=t.GATE;if(s!==void 0){let l=n;n=E(()=>s.call(this)&&l.call(this),"lookaheadFunction")}}else i=t;let a=!0;for(;n.call(this)===!0&&a===!0;)a=this.doSingleRepetition(i);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],n,PG,e,FTt,a)}manySepFirstInternal(e,t){let r=this.getKeyForAutomaticLookahead(BG,e);this.manySepFirstInternalLogic(e,t,r)}manySepFirstInternalLogic(e,t,r){let n=t.DEF,i=t.SEP;if(this.getLaFuncFromCache(r).call(this)===!0){n.call(this);let s=E(()=>this.tokenMatcher(this.LA(1),i),"separatorLookAheadFunc");for(;this.tokenMatcher(this.LA(1),i)===!0;)this.CONSUME(i),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,s,n,ACe],s,BG,e,ACe)}}repetitionSepSecondInternal(e,t,r,n,i){for(;r();)this.CONSUME(t),n.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,r,n,i],r,h6,e,i)}doSingleRepetition(e){let t=this.getLexerPosition();return e.call(this),this.getLexerPosition()>t}orInternal(e,t){let r=this.getKeyForAutomaticLookahead(q5e,t),n=un(e)?e:e.DEF,a=this.getLaFuncFromCache(r).call(this,n);if(a!==void 0)return n[a].ALT.call(this);this.raiseNoAltException(t,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new HTt(t,e))}}subruleInternal(e,t,r){let n;try{let i=r!==void 0?r.ARGS:void 0;return this.subruleIdx=t,n=e.apply(this,i),this.cstPostNonTerminal(n,r!==void 0&&r.LABEL!==void 0?r.LABEL:e.ruleName),n}catch(i){throw this.subruleInternalError(i,r,e.ruleName)}}subruleInternalError(e,t,r){throw nw(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:r),delete e.partialCstResult),e}consumeInternal(e,t,r){let n;try{let i=this.LA(1);this.tokenMatcher(i,e)===!0?(this.consumeToken(),n=i):this.consumeInternalError(e,i,r)}catch(i){n=this.consumeInternalRecovery(e,t,i)}return this.cstPostTerminal(r!==void 0&&r.LABEL!==void 0?r.LABEL:e.name,n),n}consumeInternalError(e,t,r){let n,i=this.LA(0);throw r!==void 0&&r.ERR_MSG?n=r.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:i,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new G5e(n,t,i))}consumeInternalRecovery(e,t,r){if(this.recoveryEnabled&&r.name==="MismatchedTokenException"&&!this.isBackTracking()){let n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(i){throw i.name===V5e?r:i}}else throw r}saveRecogState(){let e=this.errors,t=Ya(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,t,r){this.RULE_OCCURRENCE_STACK.push(r),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),pp)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}},iCt=class{static{o(this,"ErrorHandler")}static{E(this,"ErrorHandler")}initErrorHandler(e){this._errors=[],this.errorMessageProvider=wr(e,"errorMessageProvider")?e.errorMessageProvider:Qh.errorMessageProvider}SAVE_ERROR(e){if(nw(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:Ya(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return Ya(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,t,r){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],s=Lw(e,i,t,this.maxLookahead)[0],l=[];for(let h=1;h<=this.maxLookahead;h++)l.push(this.LA(h));let u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:s,actual:l,previous:this.LA(0),customUserDescription:r,ruleName:n});throw this.SAVE_ERROR(new UTt(u,this.LA(1),this.LA(0)))}raiseNoAltException(e,t){let r=this.getCurrRuleFullName(),n=this.getGAstProductions()[r],i=_w(e,n,this.maxLookahead),a=[];for(let u=1;u<=this.maxLookahead;u++)a.push(this.LA(u));let s=this.LA(0),l=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:i,actual:a,previous:s,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new qTt(l,this.LA(1),s))}},aCt=class{static{o(this,"ContentAssist")}static{E(this,"ContentAssist")}initContentAssist(){}computeContentAssist(e,t){let r=this.gastProductionsCache[e];if(Kh(r))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return Mq([r],t,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let t=Rc(e.ruleStack),n=this.getGAstProductions()[t];return new $Tt(n,e).startWalking()}},JR={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(JR);_Ce=!0,LCe=Math.pow(2,bp)-1,eAe=xv({name:"RECORDING_PHASE_TOKEN",pattern:Fs.NA});Fv([eAe]);tAe=Rw(eAe,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(tAe);sCt={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},oCt=class{static{o(this,"GastRecorder")}static{E(this,"GastRecorder")}initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let t=e>0?e:"";this[`CONSUME${t}`]=function(r,n){return this.consumeInternalRecord(r,e,n)},this[`SUBRULE${t}`]=function(r,n){return this.subruleInternalRecord(r,e,n)},this[`OPTION${t}`]=function(r){return this.optionInternalRecord(r,e)},this[`OR${t}`]=function(r){return this.orInternalRecord(r,e)},this[`MANY${t}`]=function(r){this.manyInternalRecord(e,r)},this[`MANY_SEP${t}`]=function(r){this.manySepFirstInternalRecord(e,r)},this[`AT_LEAST_ONE${t}`]=function(r){this.atLeastOneInternalRecord(e,r)},this[`AT_LEAST_ONE_SEP${t}`]=function(r){this.atLeastOneSepFirstInternalRecord(e,r)}}this.consume=function(e,t,r){return this.consumeInternalRecord(t,e,r)},this.subrule=function(e,t,r){return this.subruleInternalRecord(t,e,r)},this.option=function(e,t){return this.optionInternalRecord(t,e)},this.or=function(e,t){return this.orInternalRecord(t,e)},this.many=function(e,t){this.manyInternalRecord(e,t)},this.atLeastOne=function(e,t){this.atLeastOneInternalRecord(e,t)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let t=0;t<10;t++){let r=t>0?t:"";delete e[`CONSUME${r}`],delete e[`SUBRULE${r}`],delete e[`OPTION${r}`],delete e[`OR${r}`],delete e[`MANY${r}`],delete e[`MANY_SEP${r}`],delete e[`AT_LEAST_ONE${r}`],delete e[`AT_LEAST_ONE_SEP${r}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,t){return()=>!0}LA_RECORD(e){return tR}topLevelRuleRecord(e,t){try{let r=new Pv({definition:[],name:e});return r.name=e,this.recordingProdStack.push(r),t.call(this),this.recordingProdStack.pop(),r}catch(r){if(r.KNOWN_RECORDER_ERROR!==!0)try{r.message=r.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw r}throw r}}optionInternalRecord(e,t){return nv.call(this,Ua,e,t)}atLeastOneInternalRecord(e,t){nv.call(this,Zo,t,e)}atLeastOneSepFirstInternalRecord(e,t){nv.call(this,Qo,t,e,_Ce)}manyInternalRecord(e,t){nv.call(this,Mi,t,e)}manySepFirstInternalRecord(e,t){nv.call(this,wo,t,e,_Ce)}orInternalRecord(e,t){return rAe.call(this,e,t)}subruleInternalRecord(e,t,r){if(iw(t),!e||wr(e,"ruleName")===!1){let s=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw s.KNOWN_RECORDER_ERROR=!0,s}let n=Xg(this.recordingProdStack),i=e.ruleName,a=new Gs({idx:t,nonTerminalName:i,label:r?.LABEL,referencedRule:void 0});return n.definition.push(a),this.outputCst?sCt:JR}consumeInternalRecord(e,t,r){if(iw(t),!Lq(e)){let a=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw a.KNOWN_RECORDER_ERROR=!0,a}let n=Xg(this.recordingProdStack),i=new ci({idx:t,terminalType:e,label:r?.LABEL});return n.definition.push(i),tAe}};o(nv,"recordProd");E(nv,"recordProd");o(rAe,"recordOrProd");E(rAe,"recordOrProd");o(GG,"getIdxSuffix");E(GG,"getIdxSuffix");o(iw,"assertMethodIdxIsValid");E(iw,"assertMethodIdxIsValid");lCt=class{static{o(this,"PerformanceTracer")}static{E(this,"PerformanceTracer")}initPerformanceTracer(e){if(wr(e,"traceInitPerf")){let t=e.traceInitPerf,r=typeof t=="number";this.traceInitMaxIdent=r?t:1/0,this.traceInitPerf=r?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=Qh.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;let r=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);let{time:n,value:i}=kq(t),a=n>10?console.warn:console.log;return this.traceInitIndent time: ${n}ms`),this.traceInitIndent--,i}else return t()}};o(nAe,"applyMixins");E(nAe,"applyMixins");tR=Rw(pp,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(tR);Qh=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:pv,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),rR=Object.freeze({recoveryValueFunc:E(()=>{},"recoveryValueFunc"),resyncEnabled:!0});(function(e){e[e.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",e[e.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",e[e.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",e[e.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",e[e.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",e[e.LEFT_RECURSION=5]="LEFT_RECURSION",e[e.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",e[e.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",e[e.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",e[e.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",e[e.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",e[e.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",e[e.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",e[e.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(Vs||(Vs={}));o(VG,"EMPTY_ALT");E(VG,"EMPTY_ALT");Gq=class iAe{static{o(this,"_Parser")}static{E(this,"Parser")}static performSelfAnalysis(t){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let t;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{Sq(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),Ir(this.definedRulesNames,i=>{let s=this[i].originalGrammarAction,l;this.TRACE_INIT(`${i} Rule`,()=>{l=this.topLevelRuleRecord(i,s)}),this.gastProductionsCache[i]=l})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=N5e({rules:ha(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(ei(n)&&this.skipValidations===!1){let i=P5e({rules:ha(this.gastProductionsCache),tokenTypes:ha(this.tokensMap),errMsgProvider:Wg,grammarName:r}),a=T5e({lookaheadStrategy:this.lookaheadStrategy,rules:ha(this.gastProductionsCache),tokenTypes:ha(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(i,a)}}),ei(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=_3e(ha(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,a;(a=(i=this.lookaheadStrategy).initialize)===null||a===void 0||a.call(i,{rules:ha(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(ha(this.gastProductionsCache))})),!iAe.DEFER_DEFINITION_ERRORS_HANDLING&&!ei(this.definitionErrors))throw t=hr(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected: + ${t.join(` +------------------------------- +`)}`)})}constructor(t,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(t,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),wr(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=wr(r,"skipValidations")?r.skipValidations:Qh.skipValidations}};Gq.DEFER_DEFINITION_ERRORS_HANDLING=!1;nAe(Gq,[jTt,ZTt,eCt,tCt,nCt,rCt,iCt,aCt,oCt,lCt]);cCt=class extends Gq{static{o(this,"EmbeddedActionsParser")}static{E(this,"EmbeddedActionsParser")}constructor(e,t=Qh){let r=Ya(t);r.outputCst=!1,super(e,r)}};o(aAe,"arrayMap2");E(aAe,"arrayMap");sAe=aAe;o(oAe,"listCacheClear2");E(oAe,"listCacheClear");uCt=oAe;o(lAe,"eq2");E(lAe,"eq");cAe=lAe;o(uAe,"assocIndexOf2");E(uAe,"assocIndexOf");e_=uAe,hCt=Array.prototype,dCt=hCt.splice;o(hAe,"listCacheDelete2");E(hAe,"listCacheDelete");fCt=hAe;o(dAe,"listCacheGet2");E(dAe,"listCacheGet");pCt=dAe;o(fAe,"listCacheHas2");E(fAe,"listCacheHas");mCt=fAe;o(pAe,"listCacheSet2");E(pAe,"listCacheSet");gCt=pAe;o(d0,"ListCache2");E(d0,"ListCache");d0.prototype.clear=uCt;d0.prototype.delete=fCt;d0.prototype.get=pCt;d0.prototype.has=mCt;d0.prototype.set=gCt;t_=d0;o(mAe,"stackClear2");E(mAe,"stackClear");yCt=mAe;o(gAe,"stackDelete2");E(gAe,"stackDelete");vCt=gAe;o(yAe,"stackGet2");E(yAe,"stackGet");xCt=yAe;o(vAe,"stackHas2");E(vAe,"stackHas");bCt=vAe,TCt=typeof global=="object"&&global&&global.Object===Object&&global,xAe=TCt,CCt=typeof self=="object"&&self&&self.Object===Object&&self,wCt=xAe||CCt||Function("return this")(),nd=wCt,kCt=nd.Symbol,$u=kCt,bAe=Object.prototype,SCt=bAe.hasOwnProperty,ECt=bAe.toString,uC=$u?$u.toStringTag:void 0;o(TAe,"getRawTag2");E(TAe,"getRawTag");ACt=TAe,RCt=Object.prototype,_Ct=RCt.toString;o(CAe,"objectToString2");E(CAe,"objectToString");LCt=CAe,DCt="[object Null]",ICt="[object Undefined]",DCe=$u?$u.toStringTag:void 0;o(wAe,"baseGetTag2");E(wAe,"baseGetTag");zv=wAe;o(kAe,"isObject2");E(kAe,"isObject");Vq=kAe,MCt="[object AsyncFunction]",NCt="[object Function]",PCt="[object GeneratorFunction]",OCt="[object Proxy]";o(SAe,"isFunction2");E(SAe,"isFunction");EAe=SAe,BCt=nd["__core-js_shared__"],iz=BCt,ICe=(function(){var e=/[^.]+$/.exec(iz&&iz.keys&&iz.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""})();o(AAe,"isMasked2");E(AAe,"isMasked");$Ct=AAe,FCt=Function.prototype,zCt=FCt.toString;o(RAe,"toSource2");E(RAe,"toSource");f0=RAe,GCt=/[\\^$.*+?()[\]{}|]/g,VCt=/^\[object .+?Constructor\]$/,WCt=Function.prototype,qCt=Object.prototype,HCt=WCt.toString,UCt=qCt.hasOwnProperty,YCt=RegExp("^"+HCt.call(UCt).replace(GCt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");o(_Ae,"baseIsNative2");E(_Ae,"baseIsNative");jCt=_Ae;o(LAe,"getValue2");E(LAe,"getValue");XCt=LAe;o(DAe,"getNative2");E(DAe,"getNative");Gv=DAe,KCt=Gv(nd,"Map"),aw=KCt,ZCt=Gv(Object,"create"),sw=ZCt;o(IAe,"hashClear2");E(IAe,"hashClear");QCt=IAe;o(MAe,"hashDelete2");E(MAe,"hashDelete");JCt=MAe,ewt="__lodash_hash_undefined__",twt=Object.prototype,rwt=twt.hasOwnProperty;o(NAe,"hashGet2");E(NAe,"hashGet");nwt=NAe,iwt=Object.prototype,awt=iwt.hasOwnProperty;o(PAe,"hashHas2");E(PAe,"hashHas");swt=PAe,owt="__lodash_hash_undefined__";o(OAe,"hashSet2");E(OAe,"hashSet");lwt=OAe;o(p0,"Hash2");E(p0,"Hash");p0.prototype.clear=QCt;p0.prototype.delete=JCt;p0.prototype.get=nwt;p0.prototype.has=swt;p0.prototype.set=lwt;MCe=p0;o(BAe,"mapCacheClear2");E(BAe,"mapCacheClear");cwt=BAe;o($Ae,"isKeyable2");E($Ae,"isKeyable");uwt=$Ae;o(FAe,"getMapData2");E(FAe,"getMapData");r_=FAe;o(zAe,"mapCacheDelete2");E(zAe,"mapCacheDelete");hwt=zAe;o(GAe,"mapCacheGet2");E(GAe,"mapCacheGet");dwt=GAe;o(VAe,"mapCacheHas2");E(VAe,"mapCacheHas");fwt=VAe;o(WAe,"mapCacheSet2");E(WAe,"mapCacheSet");pwt=WAe;o(m0,"MapCache2");E(m0,"MapCache");m0.prototype.clear=cwt;m0.prototype.delete=hwt;m0.prototype.get=dwt;m0.prototype.has=fwt;m0.prototype.set=pwt;n_=m0,mwt=200;o(qAe,"stackSet2");E(qAe,"stackSet");gwt=qAe;o(g0,"Stack2");E(g0,"Stack");g0.prototype.clear=yCt;g0.prototype.delete=vCt;g0.prototype.get=xCt;g0.prototype.has=bCt;g0.prototype.set=gwt;f6=g0,ywt="__lodash_hash_undefined__";o(HAe,"setCacheAdd2");E(HAe,"setCacheAdd");vwt=HAe;o(UAe,"setCacheHas2");E(UAe,"setCacheHas");xwt=UAe;o(ow,"SetCache2");E(ow,"SetCache");ow.prototype.add=ow.prototype.push=vwt;ow.prototype.has=xwt;YAe=ow;o(jAe,"arraySome2");E(jAe,"arraySome");bwt=jAe;o(XAe,"cacheHas2");E(XAe,"cacheHas");KAe=XAe,Twt=1,Cwt=2;o(ZAe,"equalArrays2");E(ZAe,"equalArrays");QAe=ZAe,wwt=nd.Uint8Array,NCe=wwt;o(JAe,"mapToArray2");E(JAe,"mapToArray");kwt=JAe;o(e6e,"setToArray2");E(e6e,"setToArray");Wq=e6e,Swt=1,Ewt=2,Awt="[object Boolean]",Rwt="[object Date]",_wt="[object Error]",Lwt="[object Map]",Dwt="[object Number]",Iwt="[object RegExp]",Mwt="[object Set]",Nwt="[object String]",Pwt="[object Symbol]",Owt="[object ArrayBuffer]",Bwt="[object DataView]",PCe=$u?$u.prototype:void 0,az=PCe?PCe.valueOf:void 0;o(t6e,"equalByTag2");E(t6e,"equalByTag");$wt=t6e;o(r6e,"arrayPush2");E(r6e,"arrayPush");n6e=r6e,Fwt=Array.isArray,Ws=Fwt;o(i6e,"baseGetAllKeys2");E(i6e,"baseGetAllKeys");zwt=i6e;o(a6e,"arrayFilter2");E(a6e,"arrayFilter");s6e=a6e;o(o6e,"stubArray2");E(o6e,"stubArray");Gwt=o6e,Vwt=Object.prototype,Wwt=Vwt.propertyIsEnumerable,OCe=Object.getOwnPropertySymbols,qwt=OCe?function(e){return e==null?[]:(e=Object(e),s6e(OCe(e),function(t){return Wwt.call(e,t)}))}:Gwt,Hwt=qwt;o(l6e,"baseTimes2");E(l6e,"baseTimes");Uwt=l6e;o(c6e,"isObjectLike2");E(c6e,"isObjectLike");Lv=c6e,Ywt="[object Arguments]";o(u6e,"baseIsArguments2");E(u6e,"baseIsArguments");BCe=u6e,h6e=Object.prototype,jwt=h6e.hasOwnProperty,Xwt=h6e.propertyIsEnumerable,Kwt=BCe((function(){return arguments})())?BCe:function(e){return Lv(e)&&jwt.call(e,"callee")&&!Xwt.call(e,"callee")},i_=Kwt;o(d6e,"stubFalse2");E(d6e,"stubFalse");Zwt=d6e,f6e=typeof exports=="object"&&exports&&!exports.nodeType&&exports,$Ce=f6e&&typeof module=="object"&&module&&!module.nodeType&&module,Qwt=$Ce&&$Ce.exports===f6e,FCe=Qwt?nd.Buffer:void 0,Jwt=FCe?FCe.isBuffer:void 0,ekt=Jwt||Zwt,nR=ekt,tkt=9007199254740991,rkt=/^(?:0|[1-9]\d*)$/;o(p6e,"isIndex2");E(p6e,"isIndex");m6e=p6e,nkt=9007199254740991;o(g6e,"isLength2");E(g6e,"isLength");qq=g6e,ikt="[object Arguments]",akt="[object Array]",skt="[object Boolean]",okt="[object Date]",lkt="[object Error]",ckt="[object Function]",ukt="[object Map]",hkt="[object Number]",dkt="[object Object]",fkt="[object RegExp]",pkt="[object Set]",mkt="[object String]",gkt="[object WeakMap]",ykt="[object ArrayBuffer]",vkt="[object DataView]",xkt="[object Float32Array]",bkt="[object Float64Array]",Tkt="[object Int8Array]",Ckt="[object Int16Array]",wkt="[object Int32Array]",kkt="[object Uint8Array]",Skt="[object Uint8ClampedArray]",Ekt="[object Uint16Array]",Akt="[object Uint32Array]",li={};li[xkt]=li[bkt]=li[Tkt]=li[Ckt]=li[wkt]=li[kkt]=li[Skt]=li[Ekt]=li[Akt]=!0;li[ikt]=li[akt]=li[ykt]=li[skt]=li[vkt]=li[okt]=li[lkt]=li[ckt]=li[ukt]=li[hkt]=li[dkt]=li[fkt]=li[pkt]=li[mkt]=li[gkt]=!1;o(y6e,"baseIsTypedArray2");E(y6e,"baseIsTypedArray");Rkt=y6e;o(v6e,"baseUnary2");E(v6e,"baseUnary");_kt=v6e,x6e=typeof exports=="object"&&exports&&!exports.nodeType&&exports,VC=x6e&&typeof module=="object"&&module&&!module.nodeType&&module,Lkt=VC&&VC.exports===x6e,sz=Lkt&&xAe.process,Dkt=(function(){try{var e=VC&&VC.require&&VC.require("util").types;return e||sz&&sz.binding&&sz.binding("util")}catch{}})(),zCe=Dkt,GCe=zCe&&zCe.isTypedArray,Ikt=GCe?_kt(GCe):Rkt,Hq=Ikt,Mkt=Object.prototype,Nkt=Mkt.hasOwnProperty;o(b6e,"arrayLikeKeys2");E(b6e,"arrayLikeKeys");Pkt=b6e,Okt=Object.prototype;o(T6e,"isPrototype2");E(T6e,"isPrototype");C6e=T6e;o(w6e,"overArg2");E(w6e,"overArg");Bkt=w6e,$kt=Bkt(Object.keys,Object),Fkt=$kt,zkt=Object.prototype,Gkt=zkt.hasOwnProperty;o(k6e,"baseKeys2");E(k6e,"baseKeys");S6e=k6e;o(E6e,"isArrayLike2");E(E6e,"isArrayLike");a_=E6e;o(A6e,"keys2");E(A6e,"keys");Uq=A6e;o(R6e,"getAllKeys2");E(R6e,"getAllKeys");VCe=R6e,Vkt=1,Wkt=Object.prototype,qkt=Wkt.hasOwnProperty;o(_6e,"equalObjects2");E(_6e,"equalObjects");Hkt=_6e,Ukt=Gv(nd,"DataView"),WG=Ukt,Ykt=Gv(nd,"Promise"),qG=Ykt,jkt=Gv(nd,"Set"),bv=jkt,Xkt=Gv(nd,"WeakMap"),HG=Xkt,WCe="[object Map]",Kkt="[object Object]",qCe="[object Promise]",HCe="[object Set]",UCe="[object WeakMap]",YCe="[object DataView]",Zkt=f0(WG),Qkt=f0(aw),Jkt=f0(qG),eSt=f0(bv),tSt=f0(HG),mg=zv;(WG&&mg(new WG(new ArrayBuffer(1)))!=YCe||aw&&mg(new aw)!=WCe||qG&&mg(qG.resolve())!=qCe||bv&&mg(new bv)!=HCe||HG&&mg(new HG)!=UCe)&&(mg=E(function(e){var t=zv(e),r=t==Kkt?e.constructor:void 0,n=r?f0(r):"";if(n)switch(n){case Zkt:return YCe;case Qkt:return WCe;case Jkt:return qCe;case eSt:return HCe;case tSt:return UCe}return t},"getTag"));UG=mg,rSt=1,jCe="[object Arguments]",XCe="[object Array]",BA="[object Object]",nSt=Object.prototype,KCe=nSt.hasOwnProperty;o(L6e,"baseIsEqualDeep2");E(L6e,"baseIsEqualDeep");iSt=L6e;o(Yq,"baseIsEqual2");E(Yq,"baseIsEqual");D6e=Yq,aSt=1,sSt=2;o(I6e,"baseIsMatch2");E(I6e,"baseIsMatch");oSt=I6e;o(M6e,"isStrictComparable2");E(M6e,"isStrictComparable");N6e=M6e;o(P6e,"getMatchData2");E(P6e,"getMatchData");lSt=P6e;o(O6e,"matchesStrictComparable2");E(O6e,"matchesStrictComparable");B6e=O6e;o($6e,"baseMatches2");E($6e,"baseMatches");cSt=$6e,uSt="[object Symbol]";o(F6e,"isSymbol2");E(F6e,"isSymbol");s_=F6e,hSt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,dSt=/^\w*$/;o(z6e,"isKey2");E(z6e,"isKey");jq=z6e,fSt="Expected a function";o(o_,"memoize2");E(o_,"memoize");o_.Cache=n_;pSt=o_,mSt=500;o(G6e,"memoizeCapped2");E(G6e,"memoizeCapped");gSt=G6e,ySt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,vSt=/\\(\\)?/g,xSt=gSt(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(ySt,function(r,n,i,a){t.push(i?a.replace(vSt,"$1"):n||r)}),t}),bSt=xSt,TSt=1/0,ZCe=$u?$u.prototype:void 0,QCe=ZCe?ZCe.toString:void 0;o(Xq,"baseToString2");E(Xq,"baseToString");CSt=Xq;o(V6e,"toString3");E(V6e,"toString");wSt=V6e;o(W6e,"castPath2");E(W6e,"castPath");q6e=W6e,kSt=1/0;o(H6e,"toKey2");E(H6e,"toKey");l_=H6e;o(U6e,"baseGet2");E(U6e,"baseGet");Y6e=U6e;o(j6e,"get2");E(j6e,"get");SSt=j6e;o(X6e,"baseHasIn2");E(X6e,"baseHasIn");ESt=X6e;o(K6e,"hasPath2");E(K6e,"hasPath");ASt=K6e;o(Z6e,"hasIn2");E(Z6e,"hasIn");RSt=Z6e,_St=1,LSt=2;o(Q6e,"baseMatchesProperty2");E(Q6e,"baseMatchesProperty");DSt=Q6e;o(J6e,"identity2");E(J6e,"identity");Kq=J6e;o(eRe,"baseProperty2");E(eRe,"baseProperty");ISt=eRe;o(tRe,"basePropertyDeep2");E(tRe,"basePropertyDeep");MSt=tRe;o(rRe,"property2");E(rRe,"property");NSt=rRe;o(nRe,"baseIteratee2");E(nRe,"baseIteratee");c_=nRe;o(iRe,"createBaseFor2");E(iRe,"createBaseFor");PSt=iRe,OSt=PSt(),BSt=OSt;o(aRe,"baseForOwn2");E(aRe,"baseForOwn");$St=aRe;o(sRe,"createBaseEach2");E(sRe,"createBaseEach");FSt=sRe,zSt=FSt($St),u_=zSt;o(oRe,"baseMap2");E(oRe,"baseMap");GSt=oRe;o(lRe,"map2");E(lRe,"map");qh=lRe;o(cRe,"baseFilter2");E(cRe,"baseFilter");VSt=cRe;o(uRe,"filter2");E(uRe,"filter");WSt=uRe;o(Zg,"buildATNKey");E(Zg,"buildATNKey");mp=1,qSt=2,hRe=4,dRe=5,Dw=7,HSt=8,USt=9,YSt=10,jSt=11,fRe=12,Zq=class{static{o(this,"AbstractTransition")}static{E(this,"AbstractTransition")}constructor(e){this.target=e}isEpsilon(){return!1}},Qq=class extends Zq{static{o(this,"AtomTransition")}static{E(this,"AtomTransition")}constructor(e,t){super(e),this.tokenType=t}},pRe=class extends Zq{static{o(this,"EpsilonTransition")}static{E(this,"EpsilonTransition")}constructor(e){super(e)}isEpsilon(){return!0}},Jq=class extends Zq{static{o(this,"RuleTransition")}static{E(this,"RuleTransition")}constructor(e,t,r){super(e),this.rule=t,this.followState=r}isEpsilon(){return!0}};o(mRe,"createATN");E(mRe,"createATN");o(gRe,"createRuleStartAndStopATNStates");E(gRe,"createRuleStartAndStopATNStates");o(eH,"atom");E(eH,"atom");o(yRe,"repetition");E(yRe,"repetition");o(vRe,"repetitionSep");E(vRe,"repetitionSep");o(xRe,"repetitionMandatory");E(xRe,"repetitionMandatory");o(bRe,"repetitionMandatorySep");E(bRe,"repetitionMandatorySep");o(TRe,"alternation");E(TRe,"alternation");o(CRe,"option");E(CRe,"option");o(Tp,"block");E(Tp,"block");o(tH,"plus");E(tH,"plus");o(rH,"star");E(rH,"star");o(wRe,"optional");E(wRe,"optional");o(id,"defineDecisionState");E(id,"defineDecisionState");o(y0,"makeAlts");E(y0,"makeAlts");o(kRe,"getProdType2");E(kRe,"getProdType");o(SRe,"makeBlock");E(SRe,"makeBlock");o(h_,"tokenRef");E(h_,"tokenRef");o(ERe,"ruleRef");E(ERe,"ruleRef");o(ARe,"buildRuleHandle");E(ARe,"buildRuleHandle");o($i,"epsilon");E($i,"epsilon");o(da,"newState");E(da,"newState");o(d_,"addTransition");E(d_,"addTransition");o(RRe,"removeState");E(RRe,"removeState");iR={},YG=class{static{o(this,"ATNConfigSet")}static{E(this,"ATNConfigSet")}constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){let t=nH(e);t in this.map||(this.map[t]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return qh(this.configs,e=>e.alt)}get key(){let e="";for(let t in this.map)e+=t+":";return e}};o(nH,"getATNConfigKey");E(nH,"getATNConfigKey");o(_Re,"baseExtremum");E(_Re,"baseExtremum");XSt=_Re;o(LRe,"baseLt");E(LRe,"baseLt");KSt=LRe;o(DRe,"min");E(DRe,"min");ZSt=DRe,JCe=$u?$u.isConcatSpreadable:void 0;o(IRe,"isFlattenable2");E(IRe,"isFlattenable");QSt=IRe;o(iH,"baseFlatten2");E(iH,"baseFlatten");MRe=iH;o(NRe,"flatMap2");E(NRe,"flatMap");JSt=NRe;o(PRe,"baseFindIndex2");E(PRe,"baseFindIndex");eEt=PRe;o(ORe,"baseIsNaN2");E(ORe,"baseIsNaN");tEt=ORe;o(BRe,"strictIndexOf2");E(BRe,"strictIndexOf");rEt=BRe;o($Re,"baseIndexOf2");E($Re,"baseIndexOf");nEt=$Re;o(FRe,"arrayIncludes2");E(FRe,"arrayIncludes");iEt=FRe;o(zRe,"arrayIncludesWith2");E(zRe,"arrayIncludesWith");aEt=zRe;o(GRe,"noop2");E(GRe,"noop");sEt=GRe,oEt=1/0,lEt=bv&&1/Wq(new bv([,-0]))[1]==oEt?function(e){return new bv(e)}:sEt,cEt=lEt,uEt=200;o(VRe,"baseUniq2");E(VRe,"baseUniq");hEt=VRe;o(WRe,"uniqBy");E(WRe,"uniqBy");dEt=WRe;o(qRe,"flatten2");E(qRe,"flatten");fEt=qRe;o(HRe,"arrayEach2");E(HRe,"arrayEach");pEt=HRe;o(URe,"castFunction2");E(URe,"castFunction");mEt=URe;o(YRe,"forEach2");E(YRe,"forEach");oz=YRe,gEt="[object Map]",yEt="[object Set]",vEt=Object.prototype,xEt=vEt.hasOwnProperty;o(jRe,"isEmpty2");E(jRe,"isEmpty");bEt=jRe;o(XRe,"arrayReduce2");E(XRe,"arrayReduce");TEt=XRe;o(KRe,"baseReduce2");E(KRe,"baseReduce");CEt=KRe;o(ZRe,"reduce2");E(ZRe,"reduce");ewe=ZRe;o(QRe,"createDFACache");E(QRe,"createDFACache");JRe=class{static{o(this,"PredicateSet")}static{E(this,"PredicateSet")}constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,t){this.predicates[e]=t}toString(){let e="",t=this.predicates.length;for(let r=0;rconsole.log(r))}initialize(e){this.atn=mRe(e.rules),this.dfas=e_e(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:t,rule:r,hasPredicates:n,dynamicTokensEnabled:i}=e,a=this.dfas,s=this.logging,l=Zg(r,"Alternation",t),h=this.atn.decisionMap[l].decision,d=qh(MG({maxLookahead:1,occurrence:t,prodType:"Alternation",rule:r}),f=>qh(f,p=>p[0]));if(jG(d,!1)&&!i){let f=ewe(d,(p,m,g)=>(oz(m,y=>{y&&(p[y.tokenTypeIdx]=g,oz(y.categoryMatches,v=>{p[v]=g}))}),p),{});return n?function(p){var m;let g=this.LA(1),y=f[g.tokenTypeIdx];if(p!==void 0&&y!==void 0){let v=(m=p[y])===null||m===void 0?void 0:m.GATE;if(v!==void 0&&v.call(this)===!1)return}return y}:function(){let p=this.LA(1);return f[p.tokenTypeIdx]}}else return n?function(f){let p=new JRe,m=f===void 0?0:f.length;for(let y=0;yqh(f,p=>p[0]));if(jG(d)&&d[0][0]&&!i){let f=d[0],p=fEt(f);if(p.length===1&&bEt(p[0].categoryMatches)){let g=p[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===g}}else{let m=ewe(p,(g,y)=>(y!==void 0&&(g[y.tokenTypeIdx]=!0,oz(y.categoryMatches,v=>{g[v]=!0})),g),{});return function(){let g=this.LA(1);return m[g.tokenTypeIdx]===!0}}}return function(){let f=p6.call(this,a,h,twe,s);return typeof f=="object"?!1:f===0}}};o(jG,"isLL1Sequence");E(jG,"isLL1Sequence");o(e_e,"initATNSimulator");E(e_e,"initATNSimulator");o(p6,"adaptivePredict");E(p6,"adaptivePredict");o(t_e,"performLookahead");E(t_e,"performLookahead");o(r_e,"computeLookaheadTarget");E(r_e,"computeLookaheadTarget");o(n_e,"reportLookaheadAmbiguity");E(n_e,"reportLookaheadAmbiguity");o(i_e,"buildAmbiguityError");E(i_e,"buildAmbiguityError");o(a_e,"getProductionDslName2");E(a_e,"getProductionDslName");o(s_e,"buildAdaptivePredictError");E(s_e,"buildAdaptivePredictError");o(o_e,"getExistingTargetState");E(o_e,"getExistingTargetState");o(l_e,"computeReachSet");E(l_e,"computeReachSet");o(c_e,"getReachableTarget");E(c_e,"getReachableTarget");o(u_e,"getUniqueAlt");E(u_e,"getUniqueAlt");o(aH,"newDFAState");E(aH,"newDFAState");o(XG,"addDFAEdge");E(XG,"addDFAEdge");o(sH,"addDFAState");E(sH,"addDFAState");o(h_e,"computeStartState");E(h_e,"computeStartState");o(lw,"closure");E(lw,"closure");o(d_e,"getEpsilonTarget");E(d_e,"getEpsilonTarget");o(f_e,"hasConfigInRuleStopState");E(f_e,"hasConfigInRuleStopState");o(p_e,"allConfigsInRuleStopStates");E(p_e,"allConfigsInRuleStopStates");o(m_e,"hasConflictTerminatingPrediction");E(m_e,"hasConflictTerminatingPrediction");o(g_e,"getConflictingAltSets");E(g_e,"getConflictingAltSets");o(y_e,"hasConflictingAltSet");E(y_e,"hasConflictingAltSet");o(v_e,"hasStateAssociatedWithOneAlt");E(v_e,"hasStateAssociatedWithOneAlt");hw();x_e=class{static{o(this,"CstNodeBuilder")}static{E(this,"CstNodeBuilder")}constructor(){this.nodeStack=[]}get current(){return this.nodeStack[this.nodeStack.length-1]??this.rootNode}buildRootNode(e){return this.rootNode=new lH(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let t=new f_;return t.grammarSource=e,t.root=this.rootNode,this.current.content.push(t),this.nodeStack.push(t),t}buildLeafNode(e,t){let r=new aR(e.startOffset,e.image.length,XC(e),e.tokenType,!t);return r.grammarSource=t,r.root=this.rootNode,this.current.content.push(r),r}removeNode(e){let t=e.container;if(t){let r=t.content.indexOf(e);r>=0&&t.content.splice(r,1)}}addHiddenNodes(e){let t=[];for(let i of e){let a=new aR(i.startOffset,i.image.length,XC(i),i.tokenType,!0);a.root=this.rootNode,t.push(a)}let r=this.current,n=!1;if(r.content.length>0){r.content.push(...t);return}for(;r.container;){let i=r.container.content.indexOf(r);if(i>0){r.container.content.splice(i,0,...t),n=!0;break}r=r.container}n||this.rootNode.content.unshift(...t)}construct(e){let t=this.current;typeof e.$type=="string"&&!e.$infix&&(this.current.astNode=e),e.$cstNode=t;let r=this.nodeStack.pop();r?.content.length===0&&this.removeNode(r)}},oH=class{static{o(this,"AbstractCstNode")}static{E(this,"AbstractCstNode")}get hidden(){return!1}get astNode(){let e=typeof this._astNode?.$type=="string"?this._astNode:this.container?.astNode;if(!e)throw new Error("This node has no associated AST element");return e}set astNode(e){this._astNode=e}get text(){return this.root.fullText.substring(this.offset,this.end)}},aR=class extends oH{static{o(this,"LeafCstNodeImpl")}static{E(this,"LeafCstNodeImpl")}get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,t,r,n,i=!1){super(),this._hidden=i,this._offset=e,this._tokenType=n,this._length=t,this._range=r}},f_=class extends oH{static{o(this,"CompositeCstNodeImpl")}static{E(this,"CompositeCstNodeImpl")}constructor(){super(...arguments),this.content=new kEt(this)}get offset(){return this.firstNonHiddenNode?.offset??0}get length(){return this.end-this.offset}get end(){return this.lastNonHiddenNode?.end??0}get range(){let e=this.firstNonHiddenNode,t=this.lastNonHiddenNode;if(e&&t){if(this._rangeCache===void 0){let{range:r}=e,{range:n}=t;this._rangeCache={start:r.start,end:n.end.line=0;e--){let t=this.content[e];if(!t.hidden)return t}return this.content[this.content.length-1]}},kEt=class b_e extends Array{static{o(this,"_CstNodeContainer")}static{E(this,"CstNodeContainer")}constructor(t){super(),this.parent=t,Object.setPrototypeOf(this,b_e.prototype)}push(...t){return this.addParents(t),super.push(...t)}unshift(...t){return this.addParents(t),super.unshift(...t)}splice(t,r,...n){return this.addParents(n),super.splice(t,r,...n)}addParents(t){for(let r of t)r.container=this.parent}},lH=class extends f_{static{o(this,"RootCstNodeImpl")}static{E(this,"RootCstNodeImpl")}get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}},sR=Symbol("Datatype");o(m6,"isDataTypeNode");E(m6,"isDataTypeNode");rwe="\u200B",T_e=E(e=>e.endsWith(rwe)?e:e+rwe,"withRuleSuffix"),cH=class{static{o(this,"AbstractLangiumParser")}static{E(this,"AbstractLangiumParser")}constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;let t=this.lexer.definition,r=e.LanguageMetaData.mode==="production";e.shared.profilers.LangiumProfiler?.isActive("parsing")?this.wrapper=new EEt(t,{...e.parser.ParserConfig,skipValidations:r,errorMessageProvider:e.parser.ParserErrorMessageProvider},e.shared.profilers.LangiumProfiler.createTask("parsing",e.LanguageMetaData.languageId)):this.wrapper=new S_e(t,{...e.parser.ParserConfig,skipValidations:r,errorMessageProvider:e.parser.ParserErrorMessageProvider})}alternatives(e,t){this.wrapper.wrapOr(e,t)}optional(e,t){this.wrapper.wrapOption(e,t)}many(e,t){this.wrapper.wrapMany(e,t)}atLeastOne(e,t){this.wrapper.wrapAtLeastOne(e,t)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},C_e=class extends cH{static{o(this,"LangiumParser")}static{E(this,"LangiumParser")}get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new x_e,this.stack=[],this.assignmentMap=new Map,this.operatorPrecedence=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,t){let r=this.computeRuleType(e),n;Sv(e)&&(n=e.name,this.registerPrecedenceMap(e));let i=this.wrapper.DEFINE_RULE(T_e(e.name),this.startImplementation(r,n,t).bind(this));return this.allRules.set(e.name,i),zs(e)&&e.entry&&(this.mainRule=i),i}registerPrecedenceMap(e){let t=e.name,r=new Map;for(let n=0;n0&&(t=this.construct()),t===void 0)throw new Error("No result from parser");if(this.stack.length>0)throw new Error("Parser stack is not empty after parsing");return t}startImplementation(e,t,r){return n=>{let i=!this.isRecording()&&e!==void 0;if(i){let a={$type:e};this.stack.push(a),e===sR?a.value="":t!==void 0&&(a.$infixName=t)}return r(n),i?this.construct():void 0}}extractHiddenTokens(e){let t=this.lexerResult.hidden;if(!t.length)return[];let r=e.startOffset;for(let n=0;nr)return t.splice(0,n);return t.splice(0,t.length)}consume(e,t,r){let n=this.wrapper.wrapConsume(e,t);if(!this.isRecording()&&this.isValidToken(n)){let i=this.extractHiddenTokens(n);this.nodeBuilder.addHiddenNodes(i);let a=this.nodeBuilder.buildLeafNode(n,r),{assignment:s,crossRef:l}=this.getAssignment(r),u=this.current;if(s){let h=Yh(r)?n.image:this.converter.convert(n.image,a);this.assign(s.operator,s.feature,h,a,l)}else if(m6(u)){let h=n.image;Yh(r)||(h=this.converter.convert(h,a).toString()),u.value+=h}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,t,r,n,i){let a;!this.isRecording()&&!r&&(a=this.nodeBuilder.buildCompositeNode(n));let s;try{s=this.wrapper.wrapSubrule(e,t,i)}finally{this.isRecording()||(s===void 0&&!r&&(s=this.construct()),s!==void 0&&a&&a.length>0&&this.performSubruleAssignment(s,n,a))}}performSubruleAssignment(e,t,r){let{assignment:n,crossRef:i}=this.getAssignment(t);if(n)this.assign(n.operator,n.feature,e,r,i);else if(!n){let a=this.current;if(m6(a))a.value+=e.toString();else if(typeof e=="object"&&e){let l=this.assignWithoutOverride(e,a);this.stack.pop(),this.stack.push(l)}}}action(e,t){if(!this.isRecording()){let r=this.current;if(t.feature&&t.operator){r=this.construct(),this.nodeBuilder.removeNode(r.$cstNode),this.nodeBuilder.buildCompositeNode(t).content.push(r.$cstNode);let i={$type:e};this.stack.push(i),this.assign(t.operator,t.feature,r,r.$cstNode)}else r.$type=e}}construct(){if(this.isRecording())return;let e=this.stack.pop();return this.nodeBuilder.construct(e),"$infixName"in e?this.constructInfix(e,this.operatorPrecedence.get(e.$infixName)):m6(e)?this.converter.convert(e.value,e.$cstNode):(oW(this.astReflection,e),e)}constructInfix(e,t){let r=e.parts;if(!Array.isArray(r)||r.length===0)return;let n=e.operators;if(!Array.isArray(n)||r.length<2)return r[0];let i=0,a=-1;for(let g=0;ga?(a=v.precedence,i=g):v.precedence===a&&(v.rightAssoc||(i=g))}let s=n.slice(0,i),l=n.slice(i+1),u=r.slice(0,i+1),h=r.slice(i+1),d={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:u,operators:s},f={$infixName:e.$infixName,$type:e.$type,$cstNode:e.$cstNode,parts:h,operators:l},p=this.constructInfix(d,t),m=this.constructInfix(f,t);return{$type:e.$type,$cstNode:e.$cstNode,left:p,operator:n[i],right:m}}getAssignment(e){if(!this.assignmentMap.has(e)){let t=e0(e,Uh);this.assignmentMap.set(e,{assignment:t,crossRef:t&&r0(t.terminal)?t.terminal.isMulti?"multi":"single":void 0})}return this.assignmentMap.get(e)}assign(e,t,r,n,i){let a=this.current,s;switch(i==="single"&&typeof r=="string"?s=this.linker.buildReference(a,t,n,r):i==="multi"&&typeof r=="string"?s=this.linker.buildMultiReference(a,t,n,r):s=r,e){case"=":{a[t]=s;break}case"?=":{a[t]=!0;break}case"+=":Array.isArray(a[t])||(a[t]=[]),a[t].push(s)}}assignWithoutOverride(e,t){for(let[n,i]of Object.entries(t)){let a=e[n];a===void 0?e[n]=i:Array.isArray(a)&&Array.isArray(i)&&(i.push(...a),e[n]=i)}let r=e.$cstNode;return r&&(r.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}},w_e=class{static{o(this,"AbstractParserErrorMessageProvider")}static{E(this,"AbstractParserErrorMessageProvider")}buildMismatchTokenMessage(e){return pv.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return pv.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return pv.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return pv.buildEarlyExitMessage(e)}},uH=class extends w_e{static{o(this,"LangiumParserErrorMessageProvider")}static{E(this,"LangiumParserErrorMessageProvider")}buildMismatchTokenMessage({expected:e,actual:t}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${t.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},k_e=class extends cH{static{o(this,"LangiumCompletionParser")}static{E(this,"LangiumCompletionParser")}constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let t=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=t.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,t){let r=this.wrapper.DEFINE_RULE(T_e(e.name),this.startImplementation(t).bind(this));return this.allRules.set(e.name,r),e.entry&&(this.mainRule=r),r}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return t=>{let r=this.keepStackSize();try{e(t)}finally{this.resetStackSize(r)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,t,r){this.wrapper.wrapConsume(e,t),this.isRecording()||(this.lastElementStack=[...this.elementStack,r],this.nextTokenIndex=this.currIdx+1)}subrule(e,t,r,n,i){this.before(n),this.wrapper.wrapSubrule(e,t,i),this.after(n)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let t=this.elementStack.lastIndexOf(e);t>=0&&this.elementStack.splice(t)}}get currIdx(){return this.wrapper.currIdx}},SEt={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new uH},S_e=class extends cCt{static{o(this,"ChevrotainWrapper")}static{E(this,"ChevrotainWrapper")}constructor(e,t){let r=t&&"maxLookahead"in t;super(e,{...SEt,lookaheadStrategy:r?new Fq({maxLookahead:t.maxLookahead}):new wEt({logging:t.skipValidations?()=>{}:void 0}),...t})}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,t,r){return this.RULE(e,t,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,t){return this.consume(e,t,void 0)}wrapSubrule(e,t,r){return this.subrule(e,t,{ARGS:[r]})}wrapOr(e,t){this.or(e,t)}wrapOption(e,t){this.option(e,t)}wrapMany(e,t){this.many(e,t)}wrapAtLeastOne(e,t){this.atLeastOne(e,t)}rule(e){return e.call(this,{})}},EEt=class extends S_e{static{o(this,"ProfilerWrapper")}static{E(this,"ProfilerWrapper")}constructor(e,t,r){super(e,t),this.task=r}rule(e){this.task.start(),this.task.startSubTask(this.ruleName(e));try{return super.rule(e)}finally{this.task.stopSubTask(this.ruleName(e)),this.task.stop()}}ruleName(e){return e.ruleName}subrule(e,t,r){this.task.startSubTask(this.ruleName(t));try{return super.subrule(e,t,r)}finally{this.task.stopSubTask(this.ruleName(t))}}};o(p_,"createParser");E(p_,"createParser");o(E_e,"buildRules");E(E_e,"buildRules");o(A_e,"buildInfixRule");E(A_e,"buildInfixRule");o(gp,"buildElement");E(gp,"buildElement");o(R_e,"buildAction");E(R_e,"buildAction");o(__e,"buildRuleCall");E(__e,"buildRuleCall");o(L_e,"buildRuleCallPredicate");E(L_e,"buildRuleCallPredicate");o(Cc,"buildPredicate");E(Cc,"buildPredicate");o(D_e,"buildAlternatives");E(D_e,"buildAlternatives");o(I_e,"buildUnorderedGroup");E(I_e,"buildUnorderedGroup");o(M_e,"buildGroup");E(M_e,"buildGroup");o(cw,"getGuardCondition");E(cw,"getGuardCondition");o(hH,"buildCrossReference");E(hH,"buildCrossReference");o(N_e,"buildKeyword");E(N_e,"buildKeyword");o(dH,"wrap");E(dH,"wrap");o(m_,"getRule");E(m_,"getRule");o(P_e,"getRuleName");E(P_e,"getRuleName");o(oR,"getToken");E(oR,"getToken");o(fH,"createCompletionParser");E(fH,"createCompletionParser");o(pH,"createLangiumParser");E(pH,"createLangiumParser");o(mH,"prepareLangiumParser");E(mH,"prepareLangiumParser");g_=class{static{o(this,"DefaultTokenBuilder")}static{E(this,"DefaultTokenBuilder")}constructor(){this.diagnostics=[]}buildTokens(e,t){let r=Bn(_R(e,!1)),n=this.buildTerminalTokens(r),i=this.buildKeywordTokens(r,n,t);return i.push(...n),i}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){let e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(Il).filter(t=>!t.fragment).map(t=>this.buildTerminalToken(t)).toArray()}buildTerminalToken(e){let t=yw(e),r=this.requiresCustomPattern(t)?this.regexPatternFunction(t):t,n={name:e.name,PATTERN:r};return typeof r=="function"&&(n.LINE_BREAKS=!0),e.hidden&&(n.GROUP=RR(t)?Fs.SKIPPED:"hidden"),n}requiresCustomPattern(e){return!!(e.flags.includes("u")||e.flags.includes("s"))}regexPatternFunction(e){let t=new RegExp(e,e.flags+"y");return(r,n)=>(t.lastIndex=n,t.exec(r))}buildKeywordTokens(e,t,r){return e.filter(t0).flatMap(n=>td(n).filter(Yh)).distinct(n=>n.value).toArray().sort((n,i)=>i.value.length-n.value.length).map(n=>this.buildKeywordToken(n,t,!!r?.caseInsensitive))}buildKeywordToken(e,t,r){let n=this.buildKeywordPattern(e,r),i={name:e.value,PATTERN:n,LONGER_ALT:this.findLongerAlt(e,t)};return typeof n=="function"&&(i.LINE_BREAKS=!0),i}buildKeywordPattern(e,t){return t?new RegExp(Nv(e.value),"i"):e.value}findLongerAlt(e,t){return t.reduce((r,n)=>{let i=n?.PATTERN;return i?.source&&zW("^"+i.source+"$",e.value)&&r.push(n),r},[])}},gH=class{static{o(this,"DefaultValueConverter")}static{E(this,"DefaultValueConverter")}convert(e,t){let r=t.grammarSource;if(r0(r)&&(r=HW(r)),jh(r)){let n=r.rule.ref;if(!n)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(n,e,t)}return e}runConverter(e,t,r){switch(e.name.toUpperCase()){case"INT":return Iu.convertInt(t);case"STRING":return Iu.convertString(t);case"ID":return Iu.convertID(t)}switch(eq(e)?.toLowerCase()){case"number":return Iu.convertNumber(t);case"boolean":return Iu.convertBoolean(t);case"bigint":return Iu.convertBigint(t);case"date":return Iu.convertDate(t);default:return t}}};(function(e){function t(h){let d="";for(let f=1;f{this.resolve=r=>(e(r),this),this.reject=r=>(t(r),this)})}},nwe=class KG{static{o(this,"_FullTextDocument")}static{E(this,"FullTextDocument")}constructor(t,r,n,i){this._uri=t,this._languageId=r,this._version=n,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(t){if(t){let r=this.offsetAt(t.start),n=this.offsetAt(t.end);return this._content.substring(r,n)}return this._content}update(t,r){for(let n of t)if(KG.isIncremental(n)){let i=xH(n.range),a=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,a)+n.text+this._content.substring(s,this._content.length);let l=Math.max(i.start.line,0),u=Math.max(i.end.line,0),h=this._lineOffsets,d=ZG(n.text,!1,a);if(u-l===d.length)for(let p=0,m=d.length;pt?i=s:n=s+1}let a=n-1;return t=this.ensureBeforeEOL(t,r[a]),{line:a,character:t-r[a]}}offsetAt(t){let r=this.getLineOffsets();if(t.line>=r.length)return this._content.length;if(t.line<0)return 0;let n=r[t.line];if(t.character<=0)return n;let i=t.line+1r&&vH(this._content.charCodeAt(t-1));)t--;return t}get lineCount(){return this.getLineOffsets().length}static isIncremental(t){let r=t;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(t){let r=t;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}};(function(e){function t(i,a,s,l){return new nwe(i,a,s,l)}o(t,"create"),E(t,"create"),e.create=t;function r(i,a,s){if(i instanceof nwe)return i.update(a,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}o(r,"update"),E(r,"update"),e.update=r;function n(i,a){let s=i.getText(),l=cR(a.map(B_e),(d,f)=>{let p=d.range.start.line-f.range.start.line;return p===0?d.range.start.character-f.range.start.character:p}),u=0,h=[];for(let d of l){let f=i.offsetAt(d.range.start);if(fu&&h.push(s.substring(u,f)),d.newText.length&&h.push(d.newText),u=i.offsetAt(d.range.end)}return h.push(s.substr(u)),h.join("")}o(n,"applyEdits"),E(n,"applyEdits"),e.applyEdits=n})(lR||(lR={}));o(cR,"mergeSort");E(cR,"mergeSort");o(ZG,"computeLineOffsets");E(ZG,"computeLineOffsets");o(vH,"isEOL");E(vH,"isEOL");o(xH,"getWellformedRange");E(xH,"getWellformedRange");o(B_e,"getWellformedEdit");E(B_e,"getWellformedEdit");(()=>{"use strict";var e={975:I=>{function _(D){if(typeof D!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(D))}o(_,"e2"),E(_,"e");function A(D,P){for(var B,O="",$=0,V=-1,G=0,z=0;z<=D.length;++z){if(z2){var W=O.lastIndexOf("/");if(W!==O.length-1){W===-1?(O="",$=0):$=(O=O.slice(0,W)).length-1-O.lastIndexOf("/"),V=z,G=0;continue}}else if(O.length===2||O.length===1){O="",$=0,V=z,G=0;continue}}P&&(O.length>0?O+="/..":O="..",$=2)}else O.length>0?O+="/"+D.slice(V+1,z):O=D.slice(V+1,z),$=z-V-1;V=z,G=0}else B===46&&G!==-1?++G:G=-1}return O}o(A,"r2"),E(A,"r");var M={resolve:E(function(){for(var D,P="",B=!1,O=arguments.length-1;O>=-1&&!B;O--){var $;O>=0?$=arguments[O]:(D===void 0&&(D=process.cwd()),$=D),_($),$.length!==0&&(P=$+"/"+P,B=$.charCodeAt(0)===47)}return P=A(P,!B),B?P.length>0?"/"+P:"/":P.length>0?P:"."},"resolve"),normalize:E(function(D){if(_(D),D.length===0)return".";var P=D.charCodeAt(0)===47,B=D.charCodeAt(D.length-1)===47;return(D=A(D,!P)).length!==0||P||(D="."),D.length>0&&B&&(D+="/"),P?"/"+D:D},"normalize"),isAbsolute:E(function(D){return _(D),D.length>0&&D.charCodeAt(0)===47},"isAbsolute"),join:E(function(){if(arguments.length===0)return".";for(var D,P=0;P0&&(D===void 0?D=B:D+="/"+B)}return D===void 0?".":M.normalize(D)},"join"),relative:E(function(D,P){if(_(D),_(P),D===P||(D=M.resolve(D))===(P=M.resolve(P)))return"";for(var B=1;Bz){if(P.charCodeAt(V+H)===47)return P.slice(V+H+1);if(H===0)return P.slice(V+H)}else $>z&&(D.charCodeAt(B+H)===47?W=H:H===0&&(W=0));break}var j=D.charCodeAt(B+H);if(j!==P.charCodeAt(V+H))break;j===47&&(W=H)}var Q="";for(H=B+W+1;H<=O;++H)H!==O&&D.charCodeAt(H)!==47||(Q.length===0?Q+="..":Q+="/..");return Q.length>0?Q+P.slice(V+W):(V+=W,P.charCodeAt(V)===47&&++V,P.slice(V))},"relative"),_makeLong:E(function(D){return D},"_makeLong"),dirname:E(function(D){if(_(D),D.length===0)return".";for(var P=D.charCodeAt(0),B=P===47,O=-1,$=!0,V=D.length-1;V>=1;--V)if((P=D.charCodeAt(V))===47){if(!$){O=V;break}}else $=!1;return O===-1?B?"/":".":B&&O===1?"//":D.slice(0,O)},"dirname"),basename:E(function(D,P){if(P!==void 0&&typeof P!="string")throw new TypeError('"ext" argument must be a string');_(D);var B,O=0,$=-1,V=!0;if(P!==void 0&&P.length>0&&P.length<=D.length){if(P.length===D.length&&P===D)return"";var G=P.length-1,z=-1;for(B=D.length-1;B>=0;--B){var W=D.charCodeAt(B);if(W===47){if(!V){O=B+1;break}}else z===-1&&(V=!1,z=B+1),G>=0&&(W===P.charCodeAt(G)?--G==-1&&($=B):(G=-1,$=z))}return O===$?$=z:$===-1&&($=D.length),D.slice(O,$)}for(B=D.length-1;B>=0;--B)if(D.charCodeAt(B)===47){if(!V){O=B+1;break}}else $===-1&&(V=!1,$=B+1);return $===-1?"":D.slice(O,$)},"basename"),extname:E(function(D){_(D);for(var P=-1,B=0,O=-1,$=!0,V=0,G=D.length-1;G>=0;--G){var z=D.charCodeAt(G);if(z!==47)O===-1&&($=!1,O=G+1),z===46?P===-1?P=G:V!==1&&(V=1):P!==-1&&(V=-1);else if(!$){B=G+1;break}}return P===-1||O===-1||V===0||V===1&&P===O-1&&P===B+1?"":D.slice(P,O)},"extname"),format:E(function(D){if(D===null||typeof D!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof D);return(function(P,B){var O=B.dir||B.root,$=B.base||(B.name||"")+(B.ext||"");return O?O===B.root?O+$:O+"/"+$:$})(0,D)},"format"),parse:E(function(D){_(D);var P={root:"",dir:"",base:"",ext:"",name:""};if(D.length===0)return P;var B,O=D.charCodeAt(0),$=O===47;$?(P.root="/",B=1):B=0;for(var V=-1,G=0,z=-1,W=!0,H=D.length-1,j=0;H>=B;--H)if((O=D.charCodeAt(H))!==47)z===-1&&(W=!1,z=H+1),O===46?V===-1?V=H:j!==1&&(j=1):V!==-1&&(j=-1);else if(!W){G=H+1;break}return V===-1||z===-1||j===0||j===1&&V===z-1&&V===G+1?z!==-1&&(P.base=P.name=G===0&&$?D.slice(1,z):D.slice(G,z)):(G===0&&$?(P.name=D.slice(1,V),P.base=D.slice(1,z)):(P.name=D.slice(G,V),P.base=D.slice(G,z)),P.ext=D.slice(V,z)),G>0?P.dir=D.slice(0,G-1):$&&(P.dir="/"),P},"parse"),sep:"/",delimiter:":",win32:null,posix:null};M.posix=M,I.exports=M}},t={};function r(I){var _=t[I];if(_!==void 0)return _.exports;var A=t[I]={exports:{}};return e[I](A,A.exports,r),A.exports}o(r,"r"),E(r,"r"),r.d=(I,_)=>{for(var A in _)r.o(_,A)&&!r.o(I,A)&&Object.defineProperty(I,A,{enumerable:!0,get:_[A]})},r.o=(I,_)=>Object.prototype.hasOwnProperty.call(I,_),r.r=I=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(I,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(I,"__esModule",{value:!0})};var n={};let i;r.r(n),r.d(n,{URI:E(()=>p,"URI"),Utils:E(()=>N,"Utils")}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,s=/^\//,l=/^\/\//;function u(I,_){if(!I.scheme&&_)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${I.authority}", path: "${I.path}", query: "${I.query}", fragment: "${I.fragment}"}`);if(I.scheme&&!a.test(I.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(I.path){if(I.authority){if(!s.test(I.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(l.test(I.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}o(u,"a"),E(u,"a");let h="",d="/",f=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class p{static{o(this,"l")}static{E(this,"l")}static isUri(_){return _ instanceof p||!!_&&typeof _.authority=="string"&&typeof _.fragment=="string"&&typeof _.path=="string"&&typeof _.query=="string"&&typeof _.scheme=="string"&&typeof _.fsPath=="string"&&typeof _.with=="function"&&typeof _.toString=="function"}scheme;authority;path;query;fragment;constructor(_,A,M,D,P,B=!1){typeof _=="object"?(this.scheme=_.scheme||h,this.authority=_.authority||h,this.path=_.path||h,this.query=_.query||h,this.fragment=_.fragment||h):(this.scheme=(function(O,$){return O||$?O:"file"})(_,B),this.authority=A||h,this.path=(function(O,$){switch(O){case"https":case"http":case"file":$?$[0]!==d&&($=d+$):$=d}return $})(this.scheme,M||h),this.query=D||h,this.fragment=P||h,u(this,B))}get fsPath(){return b(this,!1)}with(_){if(!_)return this;let{scheme:A,authority:M,path:D,query:P,fragment:B}=_;return A===void 0?A=this.scheme:A===null&&(A=h),M===void 0?M=this.authority:M===null&&(M=h),D===void 0?D=this.path:D===null&&(D=h),P===void 0?P=this.query:P===null&&(P=h),B===void 0?B=this.fragment:B===null&&(B=h),A===this.scheme&&M===this.authority&&D===this.path&&P===this.query&&B===this.fragment?this:new g(A,M,D,P,B)}static parse(_,A=!1){let M=f.exec(_);return M?new g(M[2]||h,w(M[4]||h),w(M[5]||h),w(M[7]||h),w(M[9]||h),A):new g(h,h,h,h,h)}static file(_){let A=h;if(i&&(_=_.replace(/\\/g,d)),_[0]===d&&_[1]===d){let M=_.indexOf(d,2);M===-1?(A=_.substring(2),_=d):(A=_.substring(2,M),_=_.substring(M)||d)}return new g("file",A,_,h,h)}static from(_){let A=new g(_.scheme,_.authority,_.path,_.query,_.fragment);return u(A,!0),A}toString(_=!1){return T(this,_)}toJSON(){return this}static revive(_){if(_){if(_ instanceof p)return _;{let A=new g(_);return A._formatted=_.external,A._fsPath=_._sep===m?_.fsPath:null,A}}return _}}let m=i?1:void 0;class g extends p{static{o(this,"d")}static{E(this,"d")}_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=b(this,!1)),this._fsPath}toString(_=!1){return _?T(this,!0):(this._formatted||(this._formatted=T(this,!1)),this._formatted)}toJSON(){let _={$mid:1};return this._fsPath&&(_.fsPath=this._fsPath,_._sep=m),this._formatted&&(_.external=this._formatted),this.path&&(_.path=this.path),this.scheme&&(_.scheme=this.scheme),this.authority&&(_.authority=this.authority),this.query&&(_.query=this.query),this.fragment&&(_.fragment=this.fragment),_}}let y={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function v(I,_,A){let M,D=-1;for(let P=0;P=97&&B<=122||B>=65&&B<=90||B>=48&&B<=57||B===45||B===46||B===95||B===126||_&&B===47||A&&B===91||A&&B===93||A&&B===58)D!==-1&&(M+=encodeURIComponent(I.substring(D,P)),D=-1),M!==void 0&&(M+=I.charAt(P));else{M===void 0&&(M=I.substr(0,P));let O=y[B];O!==void 0?(D!==-1&&(M+=encodeURIComponent(I.substring(D,P)),D=-1),M+=O):D===-1&&(D=P)}}return D!==-1&&(M+=encodeURIComponent(I.substring(D))),M!==void 0?M:I}o(v,"m"),E(v,"m");function x(I){let _;for(let A=0;A1&&I.scheme==="file"?`//${I.authority}${I.path}`:I.path.charCodeAt(0)===47&&(I.path.charCodeAt(1)>=65&&I.path.charCodeAt(1)<=90||I.path.charCodeAt(1)>=97&&I.path.charCodeAt(1)<=122)&&I.path.charCodeAt(2)===58?_?I.path.substr(1):I.path[1].toLowerCase()+I.path.substr(2):I.path,i&&(A=A.replace(/\//g,"\\")),A}o(b,"v"),E(b,"v");function T(I,_){let A=_?x:v,M="",{scheme:D,authority:P,path:B,query:O,fragment:$}=I;if(D&&(M+=D,M+=":"),(P||D==="file")&&(M+=d,M+=d),P){let V=P.indexOf("@");if(V!==-1){let G=P.substr(0,V);P=P.substr(V+1),V=G.lastIndexOf(":"),V===-1?M+=A(G,!1,!1):(M+=A(G.substr(0,V),!1,!1),M+=":",M+=A(G.substr(V+1),!1,!0)),M+="@"}P=P.toLowerCase(),V=P.lastIndexOf(":"),V===-1?M+=A(P,!1,!0):(M+=A(P.substr(0,V),!1,!0),M+=P.substr(V))}if(B){if(B.length>=3&&B.charCodeAt(0)===47&&B.charCodeAt(2)===58){let V=B.charCodeAt(1);V>=65&&V<=90&&(B=`/${String.fromCharCode(V+32)}:${B.substr(3)}`)}else if(B.length>=2&&B.charCodeAt(1)===58){let V=B.charCodeAt(0);V>=65&&V<=90&&(B=`${String.fromCharCode(V+32)}:${B.substr(2)}`)}M+=A(B,!0,!1)}return O&&(M+="?",M+=A(O,!1,!1)),$&&(M+="#",M+=_?$:v($,!1,!1)),M}o(T,"b"),E(T,"b");function k(I){try{return decodeURIComponent(I)}catch{return I.length>3?I.substr(0,3)+k(I.substr(3)):I}}o(k,"C"),E(k,"C");let C=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function w(I){return I.match(C)?I.replace(C,(_=>k(_))):I}o(w,"w"),E(w,"w");var S=r(975);let R=S.posix||S,L="/";var N;(function(I){I.joinPath=function(_,...A){return _.with({path:R.join(_.path,...A)})},I.resolvePath=function(_,...A){let M=_.path,D=!1;M[0]!==L&&(M=L+M,D=!0);let P=R.resolve(M,...A);return D&&P[0]===L&&!_.authority&&(P=P.substring(1)),_.with({path:P})},I.dirname=function(_){if(_.path.length===0||_.path===L)return _;let A=R.dirname(_.path);return A.length===1&&A.charCodeAt(0)===46&&(A=""),_.with({path:A})},I.basename=function(_){return R.basename(_.path)},I.extname=function(_){return R.extname(_.path)}})(N||(N={})),$_e=n})();({URI:Yo,Utils:hC}=$_e);(function(e){e.basename=hC.basename,e.dirname=hC.dirname,e.extname=hC.extname,e.joinPath=hC.joinPath,e.resolvePath=hC.resolvePath;let t=typeof process=="object"&&process?.platform==="win32";function r(s,l){return s?.toString()===l?.toString()}o(r,"equals"),E(r,"equals"),e.equals=r;function n(s,l){let u=typeof s=="string"?Yo.parse(s).path:s.path,h=typeof l=="string"?Yo.parse(l).path:l.path,d=u.split("/").filter(y=>y.length>0),f=h.split("/").filter(y=>y.length>0);if(t){let y=/^[A-Z]:$/;if(d[0]&&y.test(d[0])&&(d[0]=d[0].toLowerCase()),f[0]&&y.test(f[0])&&(f[0]=f[0].toLowerCase()),d[0]!==f[0])return h.substring(1)}let p=0;for(;p({name:n.name,uri:$s.joinPath(Yo.parse(t),n.name).toString(),element:n.element})):[]}all(){return this.collectValues(this.root)}findAll(e){let t=this.getNode($s.normalize(e),!1);return t?this.collectValues(t):[]}getNode(e,t){let r=e.split("/");e.charAt(e.length-1)==="/"&&r.pop();let n=this.root;for(let i of r){let a=n.children.get(i);if(!a)if(t)a={name:i,children:new Map,parent:n},n.children.set(i,a);else return;n=a}return n}collectValues(e){let t=[];e.element&&t.push(e.element);for(let r of e.children.values())t.push(...this.collectValues(r));return t}};(function(e){e[e.Changed=0]="Changed",e[e.Parsed=1]="Parsed",e[e.IndexedContent=2]="IndexedContent",e[e.ComputedScopes=3]="ComputedScopes",e[e.Linked=4]="Linked",e[e.IndexedReferences=5]="IndexedReferences",e[e.Validated=6]="Validated"})(en||(en={}));F_e=class{static{o(this,"DefaultLangiumDocumentFactory")}static{E(this,"DefaultLangiumDocumentFactory")}constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,t=Jn.CancellationToken.None){let r=await this.fileSystemProvider.readFile(e);return this.createAsync(e,r,t)}fromTextDocument(e,t,r){return t=t??Yo.parse(e.uri),Jn.CancellationToken.is(r)?this.createAsync(t,e,r):this.create(t,e,r)}fromString(e,t,r){return Jn.CancellationToken.is(r)?this.createAsync(t,e,r):this.create(t,e,r)}fromModel(e,t){return this.create(t,{$model:e})}create(e,t,r){if(typeof t=="string"){let n=this.parse(e,t,r);return this.createLangiumDocument(n,e,void 0,t)}else if("$model"in t){let n={value:t.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(n,e)}else{let n=this.parse(e,t.getText(),r);return this.createLangiumDocument(n,e,t)}}async createAsync(e,t,r){if(typeof t=="string"){let n=await this.parseAsync(e,t,r);return this.createLangiumDocument(n,e,void 0,t)}else{let n=await this.parseAsync(e,t.getText(),r);return this.createLangiumDocument(n,e,t)}}createLangiumDocument(e,t,r,n){let i;if(r)i={parseResult:e,uri:t,state:en.Parsed,references:[],textDocument:r};else{let a=this.createTextDocumentGetter(t,n);i={parseResult:e,uri:t,state:en.Parsed,references:[],get textDocument(){return a()}}}return e.value.$document=i,i}async update(e,t){let r=e.parseResult.value.$cstNode?.root.fullText,n=this.textDocuments?.get(e.uri.toString()),i=n?n.getText():await this.fileSystemProvider.readFile(e.uri);if(n)Object.defineProperty(e,"textDocument",{value:n});else{let a=this.createTextDocumentGetter(e.uri,i);Object.defineProperty(e,"textDocument",{get:a})}return r!==i&&(e.parseResult=await this.parseAsync(e.uri,i,t),e.parseResult.value.$document=e),e.state=en.Parsed,e}parse(e,t,r){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(t,r)}parseAsync(e,t,r){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(t,r)}createTextDocumentGetter(e,t){let r=this.serviceRegistry,n;return()=>n??(n=lR.create(e.toString(),r.getServices(e).LanguageMetaData.languageId,0,t??""))}},z_e=class{static{o(this,"DefaultLangiumDocuments")}static{E(this,"DefaultLangiumDocuments")}constructor(e){this.documentTrie=new bH,this.services=e,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.documentBuilder=()=>e.workspace.DocumentBuilder}get all(){return Bn(this.documentTrie.all())}addDocument(e){let t=e.uri.toString();if(this.documentTrie.has(t))throw new Error(`A document with the URI '${t}' is already present.`);this.documentTrie.insert(t,e)}getDocument(e){let t=e.toString();return this.documentTrie.find(t)}getDocuments(e){let t=e.toString();return this.documentTrie.findAll(t)}async getOrCreateDocument(e,t){let r=this.getDocument(e);return r||(r=await this.langiumDocumentFactory.fromUri(e,t),this.addDocument(r),r)}createDocument(e,t,r){if(r)return this.langiumDocumentFactory.fromString(t,e,r).then(n=>(this.addDocument(n),n));{let n=this.langiumDocumentFactory.fromString(t,e);return this.addDocument(n),n}}hasDocument(e){return this.documentTrie.has(e.toString())}invalidateDocument(e){let t=e.toString(),r=this.documentTrie.find(t);return r&&this.documentBuilder().resetToState(r,en.Changed),r}deleteDocument(e){let t=e.toString(),r=this.documentTrie.find(t);return r&&(r.state=en.Changed,this.documentTrie.delete(t)),r}deleteDocuments(e){let t=e.toString(),r=this.documentTrie.findAll(t);for(let n of r)n.state=en.Changed;return this.documentTrie.delete(t),r}},gg=Symbol("RefResolving"),G_e=class{static{o(this,"DefaultLinker")}static{E(this,"DefaultLinker")}constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async link(e,t=Jn.CancellationToken.None){if(this.profiler?.isActive("linking")){let r=this.profiler.createTask("linking",this.languageId);r.start();try{for(let n of kc(e.parseResult.value))await Ia(t),kv(n).forEach(i=>{let a=`${n.$type}:${i.property}`;r.startSubTask(a);try{this.doLink(i,e)}finally{r.stopSubTask(a)}})}finally{r.stop()}}else for(let r of kc(e.parseResult.value))await Ia(t),kv(r).forEach(n=>this.doLink(n,e))}doLink(e,t){let r=e.reference;if("_ref"in r&&r._ref===void 0){r._ref=gg;try{let n=this.getCandidate(e);if(Tg(n))r._ref=n;else{r._nodeDescription=n;let i=this.loadAstNode(n);r._ref=i??this.createLinkingError(e,n)}}catch(n){console.error(`An error occurred while resolving reference to '${r.$refText}':`,n);let i=n.message??String(n);r._ref={info:e,message:`An error occurred while resolving reference to '${r.$refText}': ${i}`}}t.references.push(r)}else if("_items"in r&&r._items===void 0){r._items=gg;try{let n=this.getCandidates(e),i=[];if(Tg(n))r._linkingError=n;else for(let a of n){let s=this.loadAstNode(a);s&&i.push({ref:s,$nodeDescription:a})}r._items=i}catch(n){r._linkingError={info:e,message:`An error occurred while resolving reference to '${r.$refText}': ${n}`},r._items=[]}t.references.push(r)}}unlink(e){for(let t of e.references)"_ref"in t?(t._ref=void 0,delete t._nodeDescription):"_items"in t&&(t._items=void 0,delete t._linkingError);e.references=[]}getCandidate(e){return this.scopeProvider.getScope(e).getElement(e.reference.$refText)??this.createLinkingError(e)}getCandidates(e){let r=this.scopeProvider.getScope(e).getElements(e.reference.$refText).distinct(n=>`${n.documentUri}#${n.path}`).toArray();return r.length>0?r:this.createLinkingError(e)}buildReference(e,t,r,n){let i=this,a={$refNode:r,$refText:n,_ref:void 0,get ref(){if(Zi(this._ref))return this._ref;if(iW(this._nodeDescription)){let s=i.loadAstNode(this._nodeDescription);this._ref=s??i.createLinkingError({reference:a,container:e,property:t},this._nodeDescription)}else if(this._ref===void 0){this._ref=gg;let s=yv(e).$document,l=i.getLinkedNode({reference:a,container:e,property:t});if(l.error&&s&&s.state0))return this._linkingError=i.createLinkingError({reference:a,container:e,property:t})}};return a}throwCyclicReferenceError(e,t,r){throw new Error(`Cyclic reference resolution detected: ${this.astNodeLocator.getAstNodePath(e)}/${t} (symbol '${r}')`)}getLinkedNode(e){try{let t=this.getCandidate(e);if(Tg(t))return{error:t};let r=this.loadAstNode(t);return r?{node:r,descr:t}:{descr:t,error:this.createLinkingError(e,t)}}catch(t){console.error(`An error occurred while resolving reference to '${e.reference.$refText}':`,t);let r=t.message??String(t);return{error:{info:e,message:`An error occurred while resolving reference to '${e.reference.$refText}': ${r}`}}}}loadAstNode(e){if(e.node)return e.node;let t=this.langiumDocuments().getDocument(e.documentUri);if(t)return this.astNodeLocator.getAstNode(t.parseResult.value,e.path)}createLinkingError(e,t){let r=yv(e.container).$document;r&&r.stater0(t)&&t.isMulti)}findDeclarations(e){if(e){let t=XW(e),r=e.astNode;if(t&&r){let n=r[t.feature];if(Bs(n)||Ou(n))return A6(n);if(Array.isArray(n)){for(let i of n)if((Bs(i)||Ou(i))&&i.$refNode&&i.$refNode.offset<=e.offset&&i.$refNode.end>=e.end)return A6(i)}}if(r){let n=this.nameProvider.getNameNode(r);if(n&&(n===e||RW(e,n)))return this.getSelfNodes(r)}}return[]}getSelfNodes(e){if(this.hasMultiReference){let t=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e)),r=this.getNodeFromReferenceDescription(t.head());if(r){for(let n of kv(r))if(Ou(n.reference)&&n.reference.items.some(i=>i.ref===e))return n.reference.items.map(i=>i.ref)}return[e]}else return[e]}getNodeFromReferenceDescription(e){if(!e)return;let t=this.documents.getDocument(e.sourceUri);if(t)return this.nodeLocator.getAstNode(t.parseResult.value,e.sourcePath)}findDeclarationNodes(e){let t=this.findDeclarations(e),r=[];for(let n of t){let i=this.nameProvider.getNameNode(n)??n.$cstNode;i&&r.push(i)}return r}findReferences(e,t){let r=[];t.includeDeclaration&&r.push(...this.getSelfReferences(e));let n=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return t.documentUri&&(n=n.filter(i=>$s.equals(i.sourceUri,t.documentUri))),r.push(...n),Bn(r)}getSelfReferences(e){let t=this.getSelfNodes(e),r=[];for(let n of t){let i=this.nameProvider.getNameNode(n);if(i){let a=wc(n),s=this.nodeLocator.getAstNodePath(n);r.push({sourceUri:a.uri,sourcePath:s,targetUri:a.uri,targetPath:s,segment:Av(i),local:!0})}}return r}},ed=class{static{o(this,"MultiMap")}static{E(this,"MultiMap")}constructor(e){if(this.map=new Map,e)for(let[t,r]of e)this.add(t,r)}get size(){return jC.sum(Bn(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,t){if(t===void 0)return this.map.delete(e);{let r=this.map.get(e);if(r){let n=r.indexOf(t);if(n>=0)return r.length===1?this.map.delete(e):r.splice(n,1),!0}return!1}}get(e){return this.map.get(e)??[]}getStream(e){let t=this.map.get(e);return t?Bn(t):Tv}has(e,t){if(t===void 0)return this.map.has(e);{let r=this.map.get(e);return r?r.indexOf(t)>=0:!1}}add(e,t){return this.map.has(e)?this.map.get(e).push(t):this.map.set(e,[t]),this}addAll(e,t){return this.map.has(e)?this.map.get(e).push(...t):this.map.set(e,Array.from(t)),this}forEach(e){this.map.forEach((t,r)=>t.forEach(n=>e(n,r,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return Bn(this.map.entries()).flatMap(([e,t])=>t.map(r=>[e,r]))}keys(){return Bn(this.map.keys())}values(){return Bn(this.map.values()).flat()}entriesGroupedByKey(){return Bn(this.map.entries())}},uR=class{static{o(this,"BiMap")}static{E(this,"BiMap")}get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[t,r]of e)this.set(t,r)}clear(){this.map.clear(),this.inverse.clear()}set(e,t){return this.map.set(e,t),this.inverse.set(t,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let t=this.map.get(e);return t!==void 0?(this.map.delete(e),this.inverse.delete(t),!0):!1}},q_e=class{static{o(this,"DefaultScopeComputation")}static{E(this,"DefaultScopeComputation")}constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async collectExportedSymbols(e,t=Jn.CancellationToken.None){return this.collectExportedSymbolsForNode(e.parseResult.value,e,void 0,t)}async collectExportedSymbolsForNode(e,t,r=fw,n=Jn.CancellationToken.None){let i=[];this.addExportedSymbol(e,i,t);for(let a of r(e))await Ia(n),this.addExportedSymbol(a,i,t);return i}addExportedSymbol(e,t,r){let n=this.nameProvider.getName(e);n&&t.push(this.descriptions.createDescription(e,n,r))}async collectLocalSymbols(e,t=Jn.CancellationToken.None){let r=e.parseResult.value,n=new ed;for(let i of td(r))await Ia(t),this.addLocalSymbol(i,e,n);return n}addLocalSymbol(e,t,r){let n=e.$container;if(n){let i=this.nameProvider.getName(e);i&&r.add(n,this.descriptions.createDescription(e,i,t))}}},QG=class{static{o(this,"StreamScope")}static{E(this,"StreamScope")}constructor(e,t,r){this.elements=e,this.outerScope=t,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.caseInsensitive?this.elements.find(n=>n.name.toLowerCase()===t):this.elements.find(n=>n.name===e);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.caseInsensitive?this.elements.filter(n=>n.name.toLowerCase()===t):this.elements.filter(n=>n.name===e);return(this.concatOuterScope||r.isEmpty())&&this.outerScope?r.concat(this.outerScope.getElements(e)):r}},AEt=class{static{o(this,"MapScope")}static{E(this,"MapScope")}constructor(e,t,r){this.elements=new Map,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0;for(let n of e){let i=this.caseInsensitive?n.name.toLowerCase():n.name;this.elements.set(i,n)}this.outerScope=t}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t),n=r?[r]:[];return(this.concatOuterScope||n.length>0)&&this.outerScope?Bn(n).concat(this.outerScope.getElements(e)):Bn(n)}getAllElements(){let e=Bn(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},H_e=class{static{o(this,"MultiMapScope")}static{E(this,"MultiMapScope")}constructor(e,t,r){this.elements=new ed,this.caseInsensitive=r?.caseInsensitive??!1,this.concatOuterScope=r?.concatOuterScope??!0;for(let n of e){let i=this.caseInsensitive?n.name.toLowerCase():n.name;this.elements.add(i,n)}this.outerScope=t}getElement(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t)[0];if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getElements(e){let t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);return(this.concatOuterScope||r.length===0)&&this.outerScope?Bn(r).concat(this.outerScope.getElements(e)):Bn(r)}getAllElements(){let e=Bn(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},REt={getElement(){},getElements(){return Tv},getAllElements(){return Tv}},x_=class{static{o(this,"DisposableCache")}static{E(this,"DisposableCache")}constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},CH=class extends x_{static{o(this,"SimpleCache")}static{E(this,"SimpleCache")}constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,t){this.throwIfDisposed(),this.cache.set(e,t)}get(e,t){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(t){let r=t();return this.cache.set(e,r),r}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},b_=class extends x_{static{o(this,"ContextCache")}static{E(this,"ContextCache")}constructor(e){super(),this.cache=new Map,this.converter=e??(t=>t)}has(e,t){return this.throwIfDisposed(),this.cacheForContext(e).has(t)}set(e,t,r){this.throwIfDisposed(),this.cacheForContext(e).set(t,r)}get(e,t,r){this.throwIfDisposed();let n=this.cacheForContext(e);if(n.has(t))return n.get(t);if(r){let i=r();return n.set(t,i),i}else return}delete(e,t){return this.throwIfDisposed(),this.cacheForContext(e).delete(t)}clear(e){if(this.throwIfDisposed(),e){let t=this.converter(e);this.cache.delete(t)}else this.cache.clear()}cacheForContext(e){let t=this.converter(e),r=this.cache.get(t);return r||(r=new Map,this.cache.set(t,r)),r}},U_e=class extends b_{static{o(this,"DocumentCache")}static{E(this,"DocumentCache")}constructor(e,t){super(r=>r.toString()),t?(this.toDispose.push(e.workspace.DocumentBuilder.onDocumentPhase(t,r=>{this.clear(r.uri.toString())})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,n)=>{for(let i of n)this.clear(i)}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,n)=>{let i=r.concat(n);for(let a of i)this.clear(a)}))}},wH=class extends CH{static{o(this,"WorkspaceCache")}static{E(this,"WorkspaceCache")}constructor(e,t){super(),t?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(t,()=>{this.clear()})),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((r,n)=>{n.length>0&&this.clear()}))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}},Y_e=class{static{o(this,"DefaultScopeProvider")}static{E(this,"DefaultScopeProvider")}constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new wH(e.shared)}getScope(e){let t=[],r=this.reflection.getReferenceType(e),n=wc(e.container).localSymbols;if(n){let a=e.container;do n.has(a)&&t.push(n.getStream(a).filter(s=>this.reflection.isSubtype(s.type,r))),a=a.$container;while(a)}let i=this.getGlobalScope(r,e);for(let a=t.length-1;a>=0;a--)i=this.createScope(t[a],i);return i}createScope(e,t,r){return new QG(Bn(e),t,r)}createScopeForNodes(e,t,r){let n=Bn(e).map(i=>{let a=this.nameProvider.getName(i);if(a)return this.descriptions.createDescription(i,a)}).nonNullable();return new QG(n,t,r)}getGlobalScope(e,t){return this.globalScopeCache.get(e,()=>new H_e(this.indexManager.allElements(e)))}};o(kH,"isAstNodeWithComment");E(kH,"isAstNodeWithComment");o(JG,"isIntermediateReference");E(JG,"isIntermediateReference");j_e=class{static{o(this,"DefaultJsonSerializer")}static{E(this,"DefaultJsonSerializer")}constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,t){let r=t??{},n=t?.replacer,i=E((s,l)=>this.replacer(s,l,r),"defaultReplacer"),a=n?(s,l)=>n(s,l,i):i;try{return this.currentDocument=wc(e),JSON.stringify(e,a,t?.space)}finally{this.currentDocument=void 0}}deserialize(e,t){let r=t??{},n=JSON.parse(e);return this.linkNode(n,n,r),n}replacer(e,t,{refText:r,sourceText:n,textRegions:i,comments:a,uriConverter:s}){if(!this.ignoreProperties.has(e))if(Bs(t)){let l=t.ref,u=r?t.$refText:void 0;if(l){let h=wc(l),d="";this.currentDocument&&this.currentDocument!==h&&(s?d=s(h.uri,l):d=h.uri.toString());let f=this.astNodeLocator.getAstNodePath(l);return{$ref:`${d}#${f}`,$refText:u}}else return{$error:t.error?.message??"Could not resolve reference",$refText:u}}else if(Ou(t)){let l=r?t.$refText:void 0,u=[];for(let h of t.items){let d=h.ref,f=wc(h.ref),p="";this.currentDocument&&this.currentDocument!==f&&(s?p=s(f.uri,d):p=f.uri.toString());let m=this.astNodeLocator.getAstNodePath(d);u.push(`${p}#${m}`)}return{$refs:u,$refText:l}}else if(Zi(t)){let l;if(i&&(l=this.addAstNodeRegionWithAssignmentsTo({...t}),(!e||t.$document)&&l?.$textRegion&&(l.$textRegion.documentURI=this.currentDocument?.uri.toString())),n&&!e&&(l??(l={...t}),l.$sourceText=t.$cstNode?.text),a){l??(l={...t});let u=this.commentProvider.getComment(t);u&&(l.$comment=u.replace(/\r/g,""))}return l??t}else return t}addAstNodeRegionWithAssignmentsTo(e){let t=E(r=>({offset:r.offset,end:r.end,length:r.length,range:r.range}),"createDocumentSegment");if(e.$cstNode){let r=e.$textRegion=t(e.$cstNode),n=r.assignments={};return Object.keys(e).filter(i=>!i.startsWith("$")).forEach(i=>{let a=YW(e.$cstNode,i).map(t);a.length!==0&&(n[i]=a)}),e}}linkNode(e,t,r,n,i,a){for(let[l,u]of Object.entries(e))if(Array.isArray(u))for(let h=0;h{await this.handleException(()=>e.call(t,r,n,i),"An error occurred during validation",n,r)}}async handleException(e,t,r,n){try{await e()}catch(i){if(v0(i))throw i;console.error(`${t}:`,i),i instanceof Error&&i.stack&&console.error(i.stack);let a=i instanceof Error?i.message:String(i);r("error",`${t}: ${a}`,{node:n})}}addEntry(e,t){if(e==="AstNode"){this.entries.add("AstNode",t);return}for(let r of this.reflection.getAllSubTypes(e))this.entries.add(r,t)}getChecks(e,t){let r=Bn(this.entries.get(e)).concat(this.entries.get("AstNode"));return t&&(r=r.filter(n=>t.includes(n.category))),r.map(n=>n.check)}registerBeforeDocument(e,t=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",t))}registerAfterDocument(e,t=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",t))}wrapPreparationException(e,t,r){return async(n,i,a,s)=>{await this.handleException(()=>e.call(r,n,i,a,s),t,i,n)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}getAllValidationCategories(e){return this.knownCategories}},Z_e=Object.freeze({validateNode:!0,validateChildren:!0}),Q_e=class{static{o(this,"DefaultDocumentValidator")}static{E(this,"DefaultDocumentValidator")}constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData,this.profiler=e.shared.profilers.LangiumProfiler,this.languageId=e.LanguageMetaData.languageId}async validateDocument(e,t={},r=Jn.CancellationToken.None){let n=e.parseResult,i=[];if(await Ia(r),(!t.categories||t.categories.includes("built-in"))&&(this.processLexingErrors(n,i,t),t.stopAfterLexingErrors&&i.some(a=>a.data?.code===Rl.LexingError)||(this.processParsingErrors(n,i,t),t.stopAfterParsingErrors&&i.some(a=>a.data?.code===Rl.ParsingError))||(this.processLinkingErrors(e,i,t),t.stopAfterLinkingErrors&&i.some(a=>a.data?.code===Rl.LinkingError))))return i;try{i.push(...await this.validateAst(n.value,t,r))}catch(a){if(v0(a))throw a;console.error("An error occurred during validation:",a)}return await Ia(r),i}processLexingErrors(e,t,r){let n=[...e.lexerErrors,...e.lexerReport?.diagnostics??[]];for(let i of n){let a=i.severity??"error",s={severity:WC(a),range:{start:{line:i.line-1,character:i.column-1},end:{line:i.line-1,character:i.column+i.length-1}},message:i.message,data:EH(a),source:this.getSource()};t.push(s)}}processParsingErrors(e,t,r){for(let n of e.parserErrors){let i;if(isNaN(n.token.startOffset)){if("previousToken"in n){let a=n.previousToken;if(isNaN(a.startOffset)){let s={line:0,character:0};i={start:s,end:s}}else{let s={line:a.endLine-1,character:a.endColumn};i={start:s,end:s}}}}else i=XC(n.token);if(i){let a={severity:WC("error"),range:i,message:n.message,data:qg(Rl.ParsingError),source:this.getSource()};t.push(a)}}}processLinkingErrors(e,t,r){for(let n of e.references){let i=n.error;if(i){let a={node:i.info.container,range:n.$refNode?.range,property:i.info.property,index:i.info.index,data:{code:Rl.LinkingError,containerType:i.info.container.$type,property:i.info.property,refText:i.info.reference.$refText}};t.push(this.toDiagnostic("error",i.message,a))}}}async validateAst(e,t,r=Jn.CancellationToken.None){let n=[],i=E((a,s,l)=>{n.push(this.toDiagnostic(a,s,l))},"acceptor");return await this.validateAstBefore(e,t,i,r),await this.validateAstNodes(e,t,i,r),await this.validateAstAfter(e,t,i,r),n}async validateAstBefore(e,t,r,n=Jn.CancellationToken.None){let i=this.validationRegistry.checksBefore;for(let a of i)await Ia(n),await a(e,r,t.categories??[],n)}async validateAstNodes(e,t,r,n=Jn.CancellationToken.None){if(this.profiler?.isActive("validating")){let i=this.profiler.createTask("validating",this.languageId);i.start();try{let a=kc(e).iterator();for(let s of a){i.startSubTask(s.$type);let l=this.validateSingleNodeOptions(s,t);if(l.validateNode)try{let u=this.validationRegistry.getChecks(s.$type,t.categories);for(let h of u)await h(s,r,n)}finally{i.stopSubTask(s.$type)}l.validateChildren||a.prune()}}finally{i.stop()}}else{let i=kc(e).iterator();for(let a of i){await Ia(n);let s=this.validateSingleNodeOptions(a,t);if(s.validateNode){let l=this.validationRegistry.getChecks(a.$type,t.categories);for(let u of l)await u(a,r,n)}s.validateChildren||i.prune()}}}validateSingleNodeOptions(e,t){return Z_e}async validateAstAfter(e,t,r,n=Jn.CancellationToken.None){let i=this.validationRegistry.checksAfter;for(let a of i)await Ia(n),await a(e,r,t.categories??[],n)}toDiagnostic(e,t,r){return{message:t,range:SH(r),severity:WC(e),code:r.code,codeDescription:r.codeDescription,tags:r.tags,relatedInformation:r.relatedInformation,data:r.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};o(SH,"getDiagnosticRange");E(SH,"getDiagnosticRange");o(WC,"toDiagnosticSeverity");E(WC,"toDiagnosticSeverity");o(EH,"toDiagnosticData");E(EH,"toDiagnosticData");(function(e){e.LexingError="lexing-error",e.LexingWarning="lexing-warning",e.LexingInfo="lexing-info",e.LexingHint="lexing-hint",e.ParsingError="parsing-error",e.LinkingError="linking-error"})(Rl||(Rl={}));J_e=class{static{o(this,"DefaultAstNodeDescriptionProvider")}static{E(this,"DefaultAstNodeDescriptionProvider")}constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,t,r){let n=r??wc(e);t??(t=this.nameProvider.getName(e));let i=this.astNodeLocator.getAstNodePath(e);if(!t)throw new Error(`Node at path ${i} has no name.`);let a,s=E(()=>a??(a=Av(this.nameProvider.getNameNode(e)??e.$cstNode)),"nameSegmentGetter");return{node:e,name:t,get nameSegment(){return s()},selectionSegment:Av(e.$cstNode),type:e.$type,documentUri:n.uri,path:i}}},eLe=class{static{o(this,"DefaultReferenceDescriptionProvider")}static{E(this,"DefaultReferenceDescriptionProvider")}constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,t=Jn.CancellationToken.None){let r=[],n=e.parseResult.value;for(let i of kc(n))await Ia(t),kv(i).forEach(a=>{a.reference.error||r.push(...this.createInfoDescriptions(a))});return r}createInfoDescriptions(e){let t=e.reference;if(t.error||!t.$refNode)return[];let r=[];Bs(t)&&t.$nodeDescription?r=[t.$nodeDescription]:Ou(t)&&(r=t.items.map(l=>l.$nodeDescription).filter(l=>l!==void 0));let n=wc(e.container).uri,i=this.nodeLocator.getAstNodePath(e.container),a=[],s=Av(t.$refNode);for(let l of r)a.push({sourceUri:n,sourcePath:i,targetUri:l.documentUri,targetPath:l.path,segment:s,local:$s.equals(l.documentUri,n)});return a}},tLe=class{static{o(this,"DefaultAstNodeLocator")}static{E(this,"DefaultAstNodeLocator")}constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let t=this.getAstNodePath(e.$container),r=this.getPathSegment(e);return t+this.segmentSeparator+r}return""}getPathSegment({$containerProperty:e,$containerIndex:t}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return t!==void 0?e+this.indexSeparator+t:e}getAstNode(e,t){return t.split(this.segmentSeparator).reduce((n,i)=>{if(!n||i.length===0)return n;let a=i.indexOf(this.indexSeparator);if(a>0){let s=i.substring(0,a),l=parseInt(i.substring(a+1));return n[s]?.[l]}return n[i]},e)}},T_={};mR(T_,eW(Iv(),1));rLe=class{static{o(this,"DefaultConfigurationProvider")}static{E(this,"DefaultConfigurationProvider")}constructor(e){this._ready=new Jh,this.onConfigurationSectionUpdateEmitter=new T_.Emitter,this.settings={},this.workspaceConfig=!1,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){this.workspaceConfig=e.capabilities.workspace?.configuration??!1}async initialized(e){if(this.workspaceConfig){if(e.register){let t=this.serviceRegistry.all;e.register({section:t.map(r=>this.toSectionName(r.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let t=this.serviceRegistry.all.map(n=>({section:this.toSectionName(n.LanguageMetaData.languageId)})),r=await e.fetchConfiguration(t);t.forEach((n,i)=>{this.updateSectionConfiguration(n.section,r[i])})}}this._ready.resolve()}updateConfiguration(e){typeof e.settings!="object"||e.settings===null||Object.entries(e.settings).forEach(([t,r])=>{this.updateSectionConfiguration(t,r),this.onConfigurationSectionUpdateEmitter.fire({section:t,configuration:r})})}updateSectionConfiguration(e,t){this.settings[e]=t}async getConfiguration(e,t){await this.ready;let r=this.toSectionName(e);if(this.settings[r])return this.settings[r][t]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}},$A=eW(nyt(),1);(function(e){function t(r){return{dispose:E(async()=>await r(),"dispose")}}o(t,"create"),E(t,"create"),e.create=t})(Yg||(Yg={}));nLe=class{static{o(this,"DefaultDocumentBuilder")}static{E(this,"DefaultDocumentBuilder")}constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new ed,this.documentPhaseListeners=new ed,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=en.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.fileSystemProvider=e.workspace.FileSystemProvider,this.workspaceManager=()=>e.workspace.WorkspaceManager,this.serviceRegistry=e.ServiceRegistry}async build(e,t={},r=Jn.CancellationToken.None){for(let n of e){let i=n.uri.toString();if(n.state===en.Validated){if(typeof t.validation=="boolean"&&t.validation)this.resetToState(n,en.IndexedReferences);else if(typeof t.validation=="object"){let a=this.findMissingValidationCategories(n,t);a.length>0&&(this.buildState.set(i,{completed:!1,options:{validation:{categories:a}},result:this.buildState.get(i)?.result}),n.state=en.IndexedReferences)}}else this.buildState.delete(i)}this.currentState=en.Changed,await this.emitUpdate(e.map(n=>n.uri),[]),await this.buildDocuments(e,t,r)}async update(e,t,r=Jn.CancellationToken.None){this.currentState=en.Changed;let n=[];for(let l of t){let u=this.langiumDocuments.deleteDocuments(l);for(let h of u)n.push(h.uri),this.cleanUpDeleted(h)}let i=(await Promise.all(e.map(l=>this.findChangedUris(l)))).flat();for(let l of i){let u=this.langiumDocuments.getDocument(l);u===void 0&&(u=this.langiumDocumentFactory.fromModel({$type:"INVALID"},l),u.state=en.Changed,this.langiumDocuments.addDocument(u)),this.resetToState(u,en.Changed)}let a=Bn(i).concat(n).map(l=>l.toString()).toSet();this.langiumDocuments.all.filter(l=>!a.has(l.uri.toString())&&this.shouldRelink(l,a)).forEach(l=>this.resetToState(l,en.ComputedScopes)),await this.emitUpdate(i,n),await Ia(r);let s=this.sortDocuments(this.langiumDocuments.all.filter(l=>l.state=1}findMissingValidationCategories(e,t){let r=this.buildState.get(e.uri.toString()),n=this.serviceRegistry.getServices(e.uri).validation.ValidationRegistry.getAllValidationCategories(e),i=r?.result?.validationChecks?new Set(r?.result?.validationChecks):r?.completed?n:new Set,a=t===void 0||t.validation===!0?n:typeof t.validation=="object"?t.validation.categories??n:[];return Bn(a).filter(s=>!i.has(s)).toArray()}async findChangedUris(e){if(this.langiumDocuments.getDocument(e)??this.textDocuments?.get(e))return[e];try{let r=await this.fileSystemProvider.stat(e);if(r.isDirectory)return await this.workspaceManager().searchFolder(e);if(this.workspaceManager().shouldIncludeEntry(r))return[e]}catch{}return[]}async emitUpdate(e,t){await Promise.all(this.updateListeners.map(r=>r(e,t)))}sortDocuments(e){let t=0,r=e.length-1;for(;t=0&&!this.hasTextDocument(e[r]);)r--;tr.error!==void 0)?!0:this.indexManager.isAffected(e,t)}onUpdate(e){return this.updateListeners.push(e),Yg.create(()=>{let t=this.updateListeners.indexOf(e);t>=0&&this.updateListeners.splice(t,1)})}resetToState(e,t){switch(t){case en.Changed:case en.Parsed:this.indexManager.removeContent(e.uri);case en.IndexedContent:e.localSymbols=void 0;case en.ComputedScopes:this.serviceRegistry.getServices(e.uri).references.Linker.unlink(e);case en.Linked:this.indexManager.removeReferences(e.uri);case en.IndexedReferences:e.diagnostics=void 0,this.buildState.delete(e.uri.toString());case en.Validated:}e.state>t&&(e.state=t)}cleanUpDeleted(e){this.buildState.delete(e.uri.toString()),this.indexManager.remove(e.uri),e.state=en.Changed}async buildDocuments(e,t,r){this.prepareBuild(e,t),await this.runCancelable(e,en.Parsed,r,a=>this.langiumDocumentFactory.update(a,r)),await this.runCancelable(e,en.IndexedContent,r,a=>this.indexManager.updateContent(a,r)),await this.runCancelable(e,en.ComputedScopes,r,async a=>{let s=this.serviceRegistry.getServices(a.uri).references.ScopeComputation;a.localSymbols=await s.collectLocalSymbols(a,r)});let n=e.filter(a=>this.shouldLink(a));await this.runCancelable(n,en.Linked,r,a=>this.serviceRegistry.getServices(a.uri).references.Linker.link(a,r)),await this.runCancelable(n,en.IndexedReferences,r,a=>this.indexManager.updateReferences(a,r));let i=e.filter(a=>this.shouldValidate(a)?!0:(this.markAsCompleted(a),!1));await this.runCancelable(i,en.Validated,r,async a=>{await this.validate(a,r),this.markAsCompleted(a)})}markAsCompleted(e){let t=this.buildState.get(e.uri.toString());t&&(t.completed=!0)}prepareBuild(e,t){for(let r of e){let n=r.uri.toString(),i=this.buildState.get(n);(!i||i.completed)&&this.buildState.set(n,{completed:!1,options:t,result:i?.result})}}async runCancelable(e,t,r,n){for(let a of e)a.statea.state===t);await this.notifyBuildPhase(i,t,r),this.currentState=t}onBuildPhase(e,t){return this.buildPhaseListeners.add(e,t),Yg.create(()=>{this.buildPhaseListeners.delete(e,t)})}onDocumentPhase(e,t){return this.documentPhaseListeners.add(e,t),Yg.create(()=>{this.documentPhaseListeners.delete(e,t)})}waitUntil(e,t,r){let n;return t&&"path"in t?n=t:r=t,r??(r=Jn.CancellationToken.None),n?this.awaitDocumentState(e,n,r):this.awaitBuilderState(e,r)}awaitDocumentState(e,t,r){let n=this.langiumDocuments.getDocument(t);if(n){if(n.state>=e)return Promise.resolve(t);if(r.isCancellationRequested)return Promise.reject(Pu);if(this.currentState>=e&&e>n.state)return Promise.reject(new $A.ResponseError($A.LSPErrorCodes.RequestFailed,`Document state of ${t.toString()} is ${en[n.state]}, requiring ${en[e]}, but workspace state is already ${en[this.currentState]}. Returning undefined.`))}else return Promise.reject(new $A.ResponseError($A.LSPErrorCodes.ServerCancelled,`No document found for URI: ${t.toString()}`));return new Promise((i,a)=>{let s=this.onDocumentPhase(e,u=>{$s.equals(u.uri,t)&&(s.dispose(),l.dispose(),i(u.uri))}),l=r.onCancellationRequested(()=>{s.dispose(),l.dispose(),a(Pu)})})}awaitBuilderState(e,t){return this.currentState>=e?Promise.resolve():t.isCancellationRequested?Promise.reject(Pu):new Promise((r,n)=>{let i=this.onBuildPhase(e,()=>{i.dispose(),a.dispose(),r()}),a=t.onCancellationRequested(()=>{i.dispose(),a.dispose(),n(Pu)})})}async notifyDocumentPhase(e,t,r){let i=this.documentPhaseListeners.get(t).slice();for(let a of i)try{await Ia(r),await a(e,r)}catch(s){if(!v0(s))throw s}}async notifyBuildPhase(e,t,r){if(e.length===0)return;let i=this.buildPhaseListeners.get(t).slice();for(let a of i)await Ia(r),await a(e,r)}shouldLink(e){return this.getBuildOptions(e).eagerLinking??!0}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,t){let r=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,n=this.getBuildOptions(e),i=typeof n.validation=="object"?{...n.validation}:{};i.categories=this.findMissingValidationCategories(e,n);let a=await r.validateDocument(e,i,t);e.diagnostics?e.diagnostics.push(...a):e.diagnostics=a;let s=this.buildState.get(e.uri.toString());s&&(s.result??(s.result={}),s.result.validationChecks?s.result.validationChecks=Bn(s.result.validationChecks).concat(i.categories).distinct().toArray():s.result.validationChecks=[...i.categories])}getBuildOptions(e){return this.buildState.get(e.uri.toString())?.options??{}}},iLe=class{static{o(this,"DefaultIndexManager")}static{E(this,"DefaultIndexManager")}constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new b_,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,t){let r=wc(e).uri,n=[];return this.referenceIndex.forEach(i=>{i.forEach(a=>{$s.equals(a.targetUri,r)&&a.targetPath===t&&n.push(a)})}),Bn(n)}allElements(e,t){let r=Bn(this.symbolIndex.keys());return t&&(r=r.filter(n=>!t||t.has(n))),r.map(n=>this.getFileDescriptions(n,e)).flat()}getFileDescriptions(e,t){return t?this.symbolByTypeIndex.get(e,t,()=>(this.symbolIndex.get(e)??[]).filter(i=>this.astReflection.isSubtype(i.type,t))):this.symbolIndex.get(e)??[]}remove(e){this.removeContent(e),this.removeReferences(e)}removeContent(e){let t=e.toString();this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t)}removeReferences(e){let t=e.toString();this.referenceIndex.delete(t)}async updateContent(e,t=Jn.CancellationToken.None){let n=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.collectExportedSymbols(e,t),i=e.uri.toString();this.symbolIndex.set(i,n),this.symbolByTypeIndex.clear(i)}async updateReferences(e,t=Jn.CancellationToken.None){let n=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,t);this.referenceIndex.set(e.uri.toString(),n)}isAffected(e,t){let r=this.referenceIndex.get(e.uri.toString());return r?r.some(n=>!n.local&&t.has(n.targetUri.toString())):!1}},aLe=class{static{o(this,"DefaultWorkspaceManager")}static{E(this,"DefaultWorkspaceManager")}constructor(e){this.initialBuildOptions={},this._ready=new Jh,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){this.folders=e.workspaceFolders??void 0}initialized(e){return this.mutex.write(t=>this.initializeWorkspace(this.folders??[],t))}async initializeWorkspace(e,t=Jn.CancellationToken.None){let r=await this.performStartup(e);await Ia(t),await this.documentBuilder.build(r,this.initialBuildOptions,t)}async performStartup(e){let t=[],r=E(a=>{t.push(a),this.langiumDocuments.hasDocument(a.uri)||this.langiumDocuments.addDocument(a)},"collector");await this.loadAdditionalDocuments(e,r);let n=[];await Promise.all(e.map(a=>this.getRootFolder(a)).map(async a=>this.traverseFolder(a,n)));let i=Bn(n).distinct(a=>a.toString()).filter(a=>!this.langiumDocuments.hasDocument(a));return await this.loadWorkspaceDocuments(i,r),this._ready.resolve(),t}async loadWorkspaceDocuments(e,t){await Promise.all(e.map(async r=>{let n=await this.langiumDocuments.getOrCreateDocument(r);t(n)}))}loadAdditionalDocuments(e,t){return Promise.resolve()}getRootFolder(e){return Yo.parse(e.uri)}async traverseFolder(e,t){try{let r=await this.fileSystemProvider.readDirectory(e);await Promise.all(r.map(async n=>{this.shouldIncludeEntry(n)&&(n.isDirectory?await this.traverseFolder(n.uri,t):n.isFile&&t.push(n.uri))}))}catch(r){console.error("Failure to read directory content of "+e.toString(!0),r)}}async searchFolder(e){let t=[];return await this.traverseFolder(e,t),t}shouldIncludeEntry(e){let t=$s.basename(e.uri);return t.startsWith(".")?!1:e.isDirectory?t!=="node_modules"&&t!=="out":e.isFile?this.serviceRegistry.hasServices(e.uri):!1}},sLe=class{static{o(this,"DefaultLexerErrorMessageProvider")}static{E(this,"DefaultLexerErrorMessageProvider")}buildUnexpectedCharactersMessage(e,t,r,n,i){return IG.buildUnexpectedCharactersMessage(e,t,r,n,i)}buildUnableToPopLexerModeMessage(e){return IG.buildUnableToPopLexerModeMessage(e)}},AH={mode:"full"},RH=class{static{o(this,"DefaultLexer")}static{E(this,"DefaultLexer")}constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;let t=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(t);let r=dR(t)?Object.values(t):t,n=e.LanguageMetaData.mode==="production";this.chevrotainLexer=new Fs(r,{positionTracking:"full",skipValidations:n,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,t=AH){let r=this.chevrotainLexer.tokenize(e);return{tokens:r.tokens,errors:r.errors,hidden:r.groups.hidden??[],report:this.tokenBuilder.flushLexingReport?.(e)}}toTokenTypeDictionary(e){if(dR(e))return e;let t=w_(e)?Object.values(e.modes).flat():e,r={};return t.forEach(n=>r[n.name]=n),r}};o(C_,"isTokenTypeArray");E(C_,"isTokenTypeArray");o(w_,"isIMultiModeLexerDefinition");E(w_,"isIMultiModeLexerDefinition");o(dR,"isTokenTypeDictionary");E(dR,"isTokenTypeDictionary");hw();o(_H,"parseJSDoc");E(_H,"parseJSDoc");o(LH,"isJSDoc");E(LH,"isJSDoc");o(DH,"getLines");E(DH,"getLines");iwe=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,_Et=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;o(oLe,"tokenize");E(oLe,"tokenize");o(lLe,"buildInlineTokens");E(lLe,"buildInlineTokens");LEt=/\S/,DEt=/\s*$/;o(fR,"skipWhitespace");E(fR,"skipWhitespace");o(cLe,"lastCharacter");E(cLe,"lastCharacter");o(uLe,"parseJSDocComment");E(uLe,"parseJSDocComment");o(hLe,"parseJSDocElement");E(hLe,"parseJSDocElement");o(dLe,"appendEmptyLine");E(dLe,"appendEmptyLine");o(IH,"parseJSDocText");E(IH,"parseJSDocText");o(fLe,"parseJSDocInline");E(fLe,"parseJSDocInline");o(MH,"parseJSDocTag");E(MH,"parseJSDocTag");o(NH,"parseJSDocLine");E(NH,"parseJSDocLine");o(k_,"normalizeOptions");E(k_,"normalizeOptions");o(y6,"normalizeOption");E(y6,"normalizeOption");awe=class{static{o(this,"JSDocCommentImpl")}static{E(this,"JSDocCommentImpl")}constructor(e,t){this.elements=e,this.range=t}getTag(e){return this.getAllTags().find(t=>t.name===e)}getTags(e){return this.getAllTags().filter(t=>t.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let t of this.elements)if(e.length===0)e=t.toString();else{let r=t.toString();e+=tV(e)+r}return e.trim()}toMarkdown(e){let t="";for(let r of this.elements)if(t.length===0)t=r.toMarkdown(e);else{let n=r.toMarkdown(e);t+=tV(t)+n}return t.trim()}},lz=class{static{o(this,"JSDocTagImpl")}static{E(this,"JSDocTagImpl")}constructor(e,t,r,n){this.name=e,this.content=t,this.inline=r,this.range=n}toString(){let e=`@${this.name}`,t=this.content.toString();return this.content.inlines.length===1?e=`${e} ${t}`:this.content.inlines.length>1&&(e=`${e} +${t}`),this.inline?`{${e}}`:e}toMarkdown(e){return e?.renderTag?.(this)??this.toMarkdownDefault(e)}toMarkdownDefault(e){let t=this.content.toMarkdown(e);if(this.inline){let i=pLe(this.name,t,e??{});if(typeof i=="string")return i}let r="";e?.tag==="italic"||e?.tag===void 0?r="*":e?.tag==="bold"?r="**":e?.tag==="bold-italic"&&(r="***");let n=`${r}@${this.name}${r}`;return this.content.inlines.length===1?n=`${n} \u2014 ${t}`:this.content.inlines.length>1&&(n=`${n} +${t}`),this.inline?`{${n}}`:n}};o(pLe,"renderInlineTag");E(pLe,"renderInlineTag");o(mLe,"renderLinkDefault");E(mLe,"renderLinkDefault");eV=class{static{o(this,"JSDocTextImpl")}static{E(this,"JSDocTextImpl")}constructor(e,t){this.inlines=e,this.range=t}toString(){let e="";for(let t=0;tr.range.start.line&&(e+=` +`)}return e}toMarkdown(e){let t="";for(let r=0;rn.range.start.line&&(t+=` +`)}return t}},gLe=class{static{o(this,"JSDocLineImpl")}static{E(this,"JSDocLineImpl")}constructor(e,t){this.text=e,this.range=t}toString(){return this.text}toMarkdown(){return this.text}};o(tV,"fillNewlines");E(tV,"fillNewlines");yLe=class{static{o(this,"JSDocDocumentationProvider")}static{E(this,"JSDocDocumentationProvider")}constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let t=this.commentProvider.getComment(e);if(t&&LH(t))return _H(t).toMarkdown({renderLink:E((n,i)=>this.documentationLinkRenderer(e,n,i),"renderLink"),renderTag:E(n=>this.documentationTagRenderer(e,n),"renderTag")})}documentationLinkRenderer(e,t,r){let n=this.findNameInLocalSymbols(e,t)??this.findNameInGlobalScope(e,t);if(n&&n.nameSegment){let i=n.nameSegment.range.start.line+1,a=n.nameSegment.range.start.character+1,s=n.documentUri.with({fragment:`L${i},${a}`});return`[${r}](${s.toString()})`}else return}documentationTagRenderer(e,t){}findNameInLocalSymbols(e,t){let n=wc(e).localSymbols;if(!n)return;let i=e;do{let s=n.getStream(i).find(l=>l.name===t);if(s)return s;i=i.$container}while(i)}findNameInGlobalScope(e,t){return this.indexManager.allElements().find(n=>n.name===t)}},vLe=class{static{o(this,"DefaultCommentProvider")}static{E(this,"DefaultCommentProvider")}constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){return kH(e)?e.$comment:IW(e.$cstNode,this.grammarConfig().multilineCommentRules)?.text}},xLe=class{static{o(this,"DefaultAsyncParser")}static{E(this,"DefaultAsyncParser")}constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,t){return Promise.resolve(this.syncParser.parse(e))}},IEt=class{static{o(this,"AbstractThreadedAsyncParser")}static{E(this,"AbstractThreadedAsyncParser")}constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{if(this.queue.length>0){let t=this.queue.shift();t&&(e.lock(),t.resolve(e))}}),this.workerPool.push(e)}}async parse(e,t){let r=await this.acquireParserWorker(t),n=new Jh,i,a=t.onCancellationRequested(()=>{i=setTimeout(()=>{this.terminateWorker(r)},this.terminationDelay)});return r.parse(e).then(s=>{let l=this.hydrator.hydrate(s);n.resolve(l)}).catch(s=>{n.reject(s)}).finally(()=>{a.dispose(),clearTimeout(i)}),n.promise}terminateWorker(e){e.terminate();let t=this.workerPool.indexOf(e);t>=0&&this.workerPool.splice(t,1)}async acquireParserWorker(e){this.initializeWorkers();for(let r of this.workerPool)if(r.ready)return r.lock(),r;let t=new Jh;return e.onCancellationRequested(()=>{let r=this.queue.indexOf(t);r>=0&&this.queue.splice(r,1),t.reject(Pu)}),this.queue.push(t),t.promise}},MEt=class{static{o(this,"ParserWorker")}static{E(this,"ParserWorker")}get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,t,r,n){this.onReadyEmitter=new T_.Emitter,this.deferred=new Jh,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=n,t(i=>{let a=i;this.deferred.resolve(a),this.unlock()}),r(i=>{this.deferred.reject(i),this.unlock()})}terminate(){this.deferred.reject(Pu),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new Jh,this.sendMessage(e),this.deferred.promise}},bLe=class{static{o(this,"DefaultWorkspaceLock")}static{E(this,"DefaultWorkspaceLock")}constructor(){this.previousTokenSource=new Jn.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let t=v_();return this.previousTokenSource=t,this.enqueue(this.writeQueue,e,t.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,t,r=Jn.CancellationToken.None){let n=new Jh,i={action:t,deferred:n,cancellationToken:r};return e.push(i),this.performNextOperation(),n.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:t,deferred:r,cancellationToken:n})=>{try{let i=await Promise.resolve().then(()=>t(n));r.resolve(i)}catch(i){v0(i)?r.resolve(void 0):r.reject(i)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}},TLe=class{static{o(this,"DefaultHydrator")}static{E(this,"DefaultHydrator")}constructor(e){this.grammarElementIdMap=new uR,this.tokenTypeIdMap=new uR,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(t=>({...t,message:t.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let t=new Map,r=new Map;for(let n of kc(e))t.set(n,{});if(e.$cstNode)for(let n of Ev(e.$cstNode))r.set(n,{});return{astNodes:t,cstNodes:r}}dehydrateAstNode(e,t){let r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(r.$cstNode=this.dehydrateCstNode(e.$cstNode,t));for(let[n,i]of Object.entries(e))if(!n.startsWith("$"))if(Array.isArray(i)){let a=[];r[n]=a;for(let s of i)Zi(s)?a.push(this.dehydrateAstNode(s,t)):Bs(s)?a.push(this.dehydrateReference(s,t)):a.push(s)}else Zi(i)?r[n]=this.dehydrateAstNode(i,t):Bs(i)?r[n]=this.dehydrateReference(i,t):i!==void 0&&(r[n]=i);return r}dehydrateReference(e,t){let r={};return r.$refText=e.$refText,e.$refNode&&(r.$refNode=t.cstNodes.get(e.$refNode)),r}dehydrateCstNode(e,t){let r=t.cstNodes.get(e);return vR(e)?r.fullText=e.fullText:r.grammarSource=this.getGrammarElementId(e.grammarSource),r.hidden=e.hidden,r.astNode=t.astNodes.get(e.astNode),Hh(e)?r.content=e.content.map(n=>this.dehydrateCstNode(n,t)):Jg(e)&&(r.tokenType=e.tokenType.name,r.offset=e.offset,r.length=e.length,r.startLine=e.range.start.line,r.startColumn=e.range.start.character,r.endLine=e.range.end.line,r.endColumn=e.range.end.character),r}hydrate(e){let t=e.value,r=this.createHydrationContext(t);return"$cstNode"in t&&this.hydrateCstNode(t.$cstNode,r),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(t,r)}}createHydrationContext(e){let t=new Map,r=new Map;for(let i of kc(e))t.set(i,{});let n;if(e.$cstNode)for(let i of Ev(e.$cstNode)){let a;"fullText"in i?(a=new lH(i.fullText),n=a):"content"in i?a=new f_:"tokenType"in i&&(a=this.hydrateCstLeafNode(i)),a&&(r.set(i,a),a.root=n)}return{astNodes:t,cstNodes:r}}hydrateAstNode(e,t){let r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode&&(r.$cstNode=t.cstNodes.get(e.$cstNode));for(let[n,i]of Object.entries(e))if(!n.startsWith("$"))if(Array.isArray(i)){let a=[];r[n]=a;for(let s of i)Zi(s)?a.push(this.setParent(this.hydrateAstNode(s,t),r)):Bs(s)?a.push(this.hydrateReference(s,r,n,t)):a.push(s)}else Zi(i)?r[n]=this.setParent(this.hydrateAstNode(i,t),r):Bs(i)?r[n]=this.hydrateReference(i,r,n,t):i!==void 0&&(r[n]=i);return r}setParent(e,t){return e.$container=t,e}hydrateReference(e,t,r,n){return this.linker.buildReference(t,r,n.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,t,r=0){let n=t.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(n.grammarSource=this.getGrammarElement(e.grammarSource)),n.astNode=t.astNodes.get(e.astNode),Hh(n))for(let i of e.content){let a=this.hydrateCstNode(i,t,r++);n.content.push(a)}return n}hydrateCstLeafNode(e){let t=this.getTokenType(e.tokenType),r=e.offset,n=e.length,i=e.startLine,a=e.startColumn,s=e.endLine,l=e.endColumn,u=e.hidden;return new aR(r,n,{start:{line:i,character:a},end:{line:s,character:l}},t,u)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let t of kc(this.grammar))xR(t)&&this.grammarElementIdMap.set(t,e++)}};o(hn,"createDefaultCoreModule");E(hn,"createDefaultCoreModule");o(dn,"createDefaultSharedCoreModule");E(dn,"createDefaultSharedCoreModule");(function(e){e.merge=(t,r)=>Dv(Dv({},t),r)})(rV||(rV={}));o(Mr,"inject");E(Mr,"inject");CLe=Symbol("isProxy");o(PH,"eagerLoad");E(PH,"eagerLoad");o(OH,"_inject");E(OH,"_inject");swe=Symbol();o(nV,"_resolve");E(nV,"_resolve");o(Dv,"_merge");E(Dv,"_merge");iV={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]};(function(e){e.REGULAR="indentation-sensitive",e.IGNORE_INDENTATION="ignore-indentation"})(Hg||(Hg={}));wLe=class extends g_{static{o(this,"IndentationAwareTokenBuilder")}static{E(this,"IndentationAwareTokenBuilder")}constructor(e=iV){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options={...iV,...e},this.indentTokenType=xv({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=xv({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,t){let r=super.buildTokens(e,t);if(!C_(r))throw new Error("Invalid tokens built by default builder");let{indentTokenName:n,dedentTokenName:i,whitespaceTokenName:a,ignoreIndentationDelimiters:s}=this.options,l,u,h,d=[];for(let f of r){for(let[p,m]of s)f.name===p?f.PUSH_MODE=Hg.IGNORE_INDENTATION:f.name===m&&(f.POP_MODE=!0);f.name===i?l=f:f.name===n?u=f:f.name===a?h=f:d.push(f)}if(!l||!u||!h)throw new Error("Some indentation/whitespace tokens not found!");return s.length>0?{modes:{[Hg.REGULAR]:[l,u,...d,h],[Hg.IGNORE_INDENTATION]:[...d,h]},defaultMode:Hg.REGULAR}:[l,u,h,...d]}flushLexingReport(e){return{...super.flushLexingReport(e),remainingDedents:this.flushRemainingDedents(e)}}isStartOfLine(e,t){return t===0||`\r +`.includes(e[t-1])}matchWhitespace(e,t,r,n){this.whitespaceRegExp.lastIndex=t;let i=this.whitespaceRegExp.exec(e);return{currIndentLevel:i?.[0].length??0,prevIndentLevel:this.indentationStack.at(-1),match:i}}createIndentationTokenInstance(e,t,r,n){let i=this.getLineNumber(t,n);return Rw(e,r,n,n+r.length,i,i,1,r.length)}getLineNumber(e,t){return e.substring(0,t).split(/\r\n|\r|\n/).length}indentMatcher(e,t,r,n){if(!this.isStartOfLine(e,t))return null;let{currIndentLevel:i,prevIndentLevel:a,match:s}=this.matchWhitespace(e,t,r,n);return i<=a?null:(this.indentationStack.push(i),s)}dedentMatcher(e,t,r,n){if(!this.isStartOfLine(e,t))return null;let{currIndentLevel:i,prevIndentLevel:a,match:s}=this.matchWhitespace(e,t,r,n);if(i>=a)return null;let l=this.indentationStack.lastIndexOf(i);if(l===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${i} at offset: ${t}. Current indentation stack: ${this.indentationStack}`,offset:t,length:s?.[0]?.length??0,line:this.getLineNumber(e,t),column:1}),null;let u=this.indentationStack.length-l-1,h=e.substring(0,t).match(/[\r\n]+$/)?.[0].length??1;for(let d=0;d1;)t.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],t}},NEt=class extends RH{static{o(this,"IndentationAwareLexer")}static{E(this,"IndentationAwareLexer")}constructor(e){if(super(e),e.parser.TokenBuilder instanceof wLe)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,t=AH){let r=super.tokenize(e),n=r.report;t?.mode==="full"&&r.tokens.push(...n.remainingDedents),n.remainingDedents=[];let{indentTokenType:i,dedentTokenType:a}=this.indentationTokenBuilder,s=i.tokenTypeIdx,l=a.tokenTypeIdx,u=[],h=r.tokens.length-1;for(let d=0;d=0&&u.push(r.tokens[h]),r.tokens=u,r}},BH={};yp(BH,{AstUtils:o(()=>sW,"AstUtils"),BiMap:o(()=>uR,"BiMap"),Cancellation:o(()=>Jn,"Cancellation"),ContextCache:o(()=>b_,"ContextCache"),CstUtils:o(()=>nW,"CstUtils"),DONE_RESULT:o(()=>Os,"DONE_RESULT"),Deferred:o(()=>Jh,"Deferred"),Disposable:o(()=>Yg,"Disposable"),DisposableCache:o(()=>x_,"DisposableCache"),DocumentCache:o(()=>U_e,"DocumentCache"),EMPTY_STREAM:o(()=>Tv,"EMPTY_STREAM"),ErrorWithLocation:o(()=>ER,"ErrorWithLocation"),GrammarUtils:o(()=>OW,"GrammarUtils"),MultiMap:o(()=>ed,"MultiMap"),OperationCancelled:o(()=>Pu,"OperationCancelled"),Reduction:o(()=>jC,"Reduction"),RegExpUtils:o(()=>$W,"RegExpUtils"),SimpleCache:o(()=>CH,"SimpleCache"),StreamImpl:o(()=>Nu,"StreamImpl"),TreeStreamImpl:o(()=>Cv,"TreeStreamImpl"),URI:o(()=>Yo,"URI"),UriTrie:o(()=>bH,"UriTrie"),UriUtils:o(()=>$s,"UriUtils"),WorkspaceCache:o(()=>wH,"WorkspaceCache"),assertCondition:o(()=>BW,"assertCondition"),assertUnreachable:o(()=>vp,"assertUnreachable"),delayNextTick:o(()=>y_,"delayNextTick"),interruptAndCheck:o(()=>Ia,"interruptAndCheck"),isOperationCancelled:o(()=>v0,"isOperationCancelled"),loadGrammarFromJson:o(()=>Ma,"loadGrammarFromJson"),setInterruptionPeriod:o(()=>yH,"setInterruptionPeriod"),startCancelableOperation:o(()=>v_,"startCancelableOperation"),stream:o(()=>Bn,"stream")});mR(BH,T_);kLe=class{static{o(this,"EmptyFileSystemProvider")}static{E(this,"EmptyFileSystemProvider")}stat(e){throw new Error("No file system is available.")}statSync(e){throw new Error("No file system is available.")}async exists(){return!1}existsSync(){return!1}readBinary(){throw new Error("No file system is available.")}readBinarySync(){throw new Error("No file system is available.")}readFile(){throw new Error("No file system is available.")}readFileSync(){throw new Error("No file system is available.")}async readDirectory(){return[]}readDirectorySync(){return[]}},yn={fileSystemProvider:E(()=>new kLe,"fileSystemProvider")},PEt={Grammar:E(()=>{},"Grammar"),LanguageMetaData:E(()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"}),"LanguageMetaData")},OEt={AstReflection:E(()=>new AW,"AstReflection")};o(SLe,"createMinimalGrammarServices");E(SLe,"createMinimalGrammarServices");o(Ma,"loadGrammarFromJson");E(Ma,"loadGrammarFromJson");mR(Pwe,BH);BEt=class{static{o(this,"DefaultLangiumProfiler")}static{E(this,"DefaultLangiumProfiler")}constructor(e){this.activeCategories=new Set,this.allCategories=new Set(["validating","parsing","linking"]),this.activeCategories=e??new Set(this.allCategories),this.records=new ed}isActive(e){return this.activeCategories.has(e)}start(...e){e?e.forEach(t=>this.activeCategories.add(t)):this.activeCategories=new Set(this.allCategories)}stop(...e){e?e.forEach(t=>this.activeCategories.delete(t)):this.activeCategories.clear()}createTask(e,t){if(!this.isActive(e))throw new Error(`Category "${e}" is not active.`);return console.log(`Creating profiling task for '${e}.${t}'.`),new ELe(r=>this.records.add(e,this.dumpRecord(e,r)),t)}dumpRecord(e,t){console.info(`Task ${e}.${t.identifier} executed in ${t.duration.toFixed(2)}ms and ended at ${t.date.toISOString()}`);let r=[];for(let a of t.entries.keys()){let s=t.entries.get(a),l=s.reduce((u,h)=>u+h);r.push({name:`${t.identifier}.${a}`,count:s.length,duration:l})}let n=t.duration-r.map(a=>a.duration).reduce((a,s)=>a+s,0);r.push({name:t.identifier,count:1,duration:n}),r.sort((a,s)=>s.duration-a.duration);function i(a){return Math.round(100*a)/100}return o(i,"Round"),E(i,"Round"),console.table(r.map(a=>({Element:a.name,Count:a.count,"Self %":i(100*a.duration/t.duration),"Time (ms)":i(a.duration)}))),t}getRecords(...e){return e.length===0?this.records.values():this.records.entries().filter(t=>e.some(r=>r===t[0])).flatMap(t=>t[1])}},ELe=class{static{o(this,"ProfilingTask")}static{E(this,"ProfilingTask")}constructor(e,t){this.stack=[],this.entries=new ed,this.addRecord=e,this.identifier=t}start(){if(this.startTime!==void 0)throw new Error(`Task "${this.identifier}" is already started.`);this.startTime=performance.now()}stop(){if(this.startTime===void 0)throw new Error(`Task "${this.identifier}" was not started.`);if(this.stack.length!==0)throw new Error(`Task "${this.identifier}" cannot be stopped before sub-task(s): ${this.stack.map(t=>t.id).join(", ")}.`);let e={identifier:this.identifier,date:new Date,duration:performance.now()-this.startTime,entries:this.entries};this.addRecord(e),this.startTime=void 0,this.entries.clear()}startSubTask(e){this.stack.push({id:e,start:performance.now(),content:0})}stopSubTask(e){let t=this.stack.pop();if(!t)throw new Error(`Task "${this.identifier}.${e}" was not started.`);if(t.id!==e)throw new Error(`Sub-Task "${t.id}" is not already stopped.`);let r=performance.now()-t.start;this.stack.at(-1)!==void 0&&(this.stack[this.stack.length-1].content+=r);let n=r-t.content;this.entries.add(e,n)}};(e=>{e.Terminals={ARROW_DIRECTION:/L|R|T|B/,ARROW_GROUP:/\{group\}/,ARROW_INTO:/<|>/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,ARCH_ICON:/\([\w-:]+\)/,ARCH_TITLE:/\[(?:"([^"\\]|\\.)*"|'([^'\\]|\\.)*'|[\w ]+)\]/}})(aV||(aV={}));(e=>{e.Terminals={DOMAIN_NAME:/complex|complicated|clear|chaotic|confusion/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(sV||(sV={}));(e=>{e.Terminals={EM_ID:/[_a-zA-Z][\w_]*/,EM_FID:/\d{1,3}/,EM_DATA_INLINE:/\{(.*)\}|"(.*)"|'(.*)'/,EM_DATA_BLOCK:/\{[\t ]*\r?\n(?:[\S\s]*?\r?\n)?\}(?:\r?\n|(?!\S))/,EM_ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,EM_ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,EM_TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,EM_WS:/\s+/,EM_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,EM_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,EM_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,EM_ML_COMMENT:/\/\*[\s\S]*?\*\//,EM_SL_COMMENT:/\/\/[^\n\r]*/}})(oV||(oV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,REFERENCE:/\w([-\./\w]*[-\w])?/}})(lV||(lV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(cV||(cV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(uV||(uV={}));(e=>{e.Terminals={NUMBER_PIE:/(?:-?[0-9]+\.[0-9]+(?!\.))|(?:-?(0|[1-9][0-9]*)(?!\.))/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(hV||(hV={}));(e=>{e.Terminals={GRATICULE:/circle|polygon/,BOOLEAN:/true|false/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,NUMBER:/(?:[0-9]+\.[0-9]+(?!\.))|(?:0|[1-9][0-9]*(?!\.))/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(dV||(dV={}));(e=>{e.Terminals={TITLE:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,ACC_TITLE:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ABNF_RULENAME:/[A-Za-z][A-Za-z0-9-]*/,ABNF_STRING:/"[^"]*"/,ABNF_NUMVAL:/%[xXdDbB][0-9A-Fa-f]+(?:-[0-9A-Fa-f]+|\.[0-9A-Fa-f]+)*/,ABNF_REPEAT:/[0-9]*\*[0-9]*/,ABNF_EXACT_REPEAT:/[0-9]+/,ABNF_WHITESPACE:/[\t \r\n]+/,ABNF_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,ABNF_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,ABNF_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,ABNF_COMMENT:/;[^\n\r]*/}})(fV||(fV={}));(e=>{e.Terminals={TITLE:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,ACC_TITLE:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,EBNF_ID:/[A-Z_a-z][\w-]*/,EBNF_STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,EBNF_SPECIAL_SEQUENCE:/\?(?=[^?;]*[^?\s;][^?;]*\?)[^?;]*\?/,EBNF_WHITESPACE:/[\t \r\n]+/,EBNF_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,EBNF_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,EBNF_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,EBNF_BLOCK_COMMENT:/\/\*[\s\S]*?\*\//,EBNF_ISO_COMMENT:/\(\*[\s\S]*?\*\)/}})(pV||(pV={}));(e=>{e.Terminals={TITLE:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,ACC_TITLE:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,RR_ID:/[A-Z_a-z][\w-]*/,RR_STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,RR_WHITESPACE:/[\t \r\n]+/,RR_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,RR_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,RR_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,RR_BLOCK_COMMENT:/\/\*[\s\S]*?\*\//}})(mV||(mV={}));(e=>{e.Terminals={TITLE:/title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,ACC_TITLE:/accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,PEG_ID:/[A-Z_a-z][\w-]*/,PEG_STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,PEG_WHITESPACE:/[\t \r\n]+/,PEG_YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,PEG_DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,PEG_SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/,PEG_LINE_COMMENT:/#[^\n\r]*/}})(gV||(gV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,TREEMAP_KEYWORD:/treemap-beta|treemap/,CLASS_DEF:/classDef\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\s+([^;\r\n]*))?(?:;)?/,STYLE_SEPARATOR:/:::/,SEPARATOR:/:/,COMMA:/,/,INDENTATION:/[ \t]{1,}/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,ID2:/[a-zA-Z_][a-zA-Z0-9_]*/,NUMBER2:/[0-9_\.\,]+/,STRING2:/"[^"]*"|'[^']*'/}})(yV||(yV={}));(e=>{e.Terminals={ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,CLASS_ANNOTATION:/[ \t]+:::[ \t]*[A-Za-z_][\w-]*/,ICON_ANNOTATION:/[ \t]+icon\([\w-]*(?::[\w-]+)?\)/,DESC_ANNOTATION:/[ \t]+##[^\n\r]*/,INDENTATION:/[ \t]{1,}/,QUOTED_NAME:/"[^"]*"|'[^']*'/,WS:/[ \t]+/,ML_COMMENT:/\%\%[^\n]*/,NL:/\r?\n/,BARE_NAME:/(?!:::|icon\(|##)[^ \t\n\r"'](?:(?![ \t]+:::[ \t]*[A-Za-z_]|[ \t]+icon\(|[ \t]+##)[^\n\r])*/}})(vV||(vV={}));(e=>{e.Terminals={WARDLEY_NUMBER:/[0-9]+\.[0-9]+/,ARROW:/->/,LINK_PORT:/\+<>|\+>|\+|-\.->|>|\+'[^']*'<>|\+'[^']*'<|\+'[^']*'>/,LINK_LABEL:/;[^\n\r]+/,STRATEGY:/build|buy|outsource|market/,KW_WARDLEY:/wardley-beta/,KW_SIZE:/size/,KW_EVOLUTION:/evolution/,KW_ANCHOR:/anchor/,KW_COMPONENT:/component/,KW_LABEL:/label/,KW_INERTIA:/inertia/,KW_EVOLVE:/evolve/,KW_PIPELINE:/pipeline/,KW_NOTE:/note/,KW_ANNOTATIONS:/annotations/,KW_ANNOTATION:/annotation/,KW_ACCELERATOR:/accelerator/,KW_DEACCELERATOR:/deaccelerator/,NAME_WITH_SPACES:/(?!title\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/,WS:/[ \t]+/,ACC_DESCR:/[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/,TITLE:/[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/,INT:/0|[1-9][0-9]*(?!\.)/,STRING:/"([^"\\]|\\.)*"|'([^'\\]|\\.)*'/,ID:/[\w]([-\w]*\w)?/,NEWLINE:/\r?\n/,WHITESPACE:/[\t ]+/,YAML:/---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/,DIRECTIVE:/[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/,SINGLE_LINE_COMMENT:/[\t ]*%%[^\n\r]*/}})(xV||(xV={}));GIr={...aV.Terminals,...sV.Terminals,...oV.Terminals,...lV.Terminals,...cV.Terminals,...uV.Terminals,...hV.Terminals,...dV.Terminals,...fV.Terminals,...pV.Terminals,...mV.Terminals,...gV.Terminals,...vV.Terminals,...yV.Terminals,...xV.Terminals},bV={$type:"AbnfAlternation",alternatives:"alternatives"},TV={$type:"AbnfConcatenation",elements:"elements"},v6={$type:"AbnfElement",primary:"primary",repeat:"repeat"},CV={$type:"AbnfGroup",element:"element"},wV={$type:"AbnfNumVal",value:"value"},kV={$type:"AbnfOptionalGroup",element:"element"},yg={$type:"AbnfPrimary"},x6={$type:"AbnfRule",definition:"definition",name:"name"},SV={$type:"AbnfRuleName",name:"name"},EV={$type:"AbnfStringLiteral",value:"value"},FA={$type:"Accelerator",name:"name",x:"x",y:"y"},cz={$type:"Alignment",direction:"direction",members:"members"},zA={$type:"Anchor",evolution:"evolution",name:"name",visibility:"visibility"},dC={$type:"Annotation",number:"number",text:"text",x:"x",y:"y"},uz={$type:"Annotations",x:"x",y:"y"},bc={$type:"Architecture",accDescr:"accDescr",accTitle:"accTitle",alignments:"alignments",edges:"edges",groups:"groups",junctions:"junctions",services:"services",title:"title"};o(ALe,"isArchitecture");E(ALe,"isArchitecture");GA={$type:"Axis",label:"label",name:"name"},qC={$type:"Branch",name:"name",order:"order"};o(RLe,"isBranch");E(RLe,"isBranch");owe={$type:"Checkout",branch:"branch"},VA={$type:"CherryPicking",id:"id",parent:"parent",tags:"tags"},hz={$type:"ClassDefStatement",className:"className",styleText:"styleText"},Mg={$type:"Commit",id:"id",message:"message",tags:"tags",type:"type"};o(_Le,"isCommit");E(_Le,"isCommit");WA={$type:"Common",accDescr:"accDescr",accTitle:"accTitle",title:"title"},cg={$type:"Component",decorator:"decorator",evolution:"evolution",inertia:"inertia",label:"label",name:"name",visibility:"visibility"},qA={$type:"Curve",entries:"entries",label:"label",name:"name"},cp={$type:"Cynefin",accDescr:"accDescr",accTitle:"accTitle",domains:"domains",title:"title",transitions:"transitions"};o(LLe,"isCynefin");E(LLe,"isCynefin");HA={$type:"Deaccelerator",name:"name",x:"x",y:"y"},lwe={$type:"Decorator",strategy:"strategy"},K1={$type:"Direction",accDescr:"accDescr",accTitle:"accTitle",dir:"dir",statements:"statements",title:"title"},HC={$type:"DomainBlock",domain:"domain",items:"items"};o(DLe,"isDomainBlock");E(DLe,"isDomainBlock");pR={$type:"DomainItem",label:"label"};o(ILe,"isDomainItem");E(ILe,"isDomainItem");AV={$type:"EbnfChoice",alternatives:"alternatives"},RV={$type:"EbnfExceptionPostfix",except:"except"},_V={$type:"EbnfGroup",element:"element"},LV={$type:"EbnfNonTerminal",name:"name"},DV={$type:"EbnfOneOrMorePostfix",operator:"operator"},IV={$type:"EbnfOptional",element:"element"},MV={$type:"EbnfOptionalPostfix",operator:"operator"},iv={$type:"EbnfPostfix"},tp={$type:"EbnfPrimary"},NV={$type:"EbnfRepetition",element:"element"},b6={$type:"EbnfRule",definition:"definition",name:"name"},PV={$type:"EbnfSequence",elements:"elements"},OV={$type:"EbnfSpecial",text:"text"},T6={$type:"EbnfTerm",base:"base",postfixes:"postfixes"},BV={$type:"EbnfTerminal",value:"value"},$V={$type:"EbnfZeroOrMorePostfix",operator:"operator"},Au={$type:"Edge",lhsDir:"lhsDir",lhsGroup:"lhsGroup",lhsId:"lhsId",lhsInto:"lhsInto",rhsDir:"rhsDir",rhsGroup:"rhsGroup",rhsId:"rhsId",rhsInto:"rhsInto",title:"title"},vg={$type:"EmDataEntity",dataBlockValue:"dataBlockValue",dataType:"dataType",name:"name"},rp={$type:"EmFrame"},fC={$type:"EmGwt",givenStatements:"givenStatements",sourceFrame:"sourceFrame",thenStatements:"thenStatements",whenStatements:"whenStatements"},cwe={$type:"EmGwtStatement",entityIdentifier:"entityIdentifier"},dz={$type:"EmModelEntity",name:"name"};o(MLe,"isEmModelEntityType");E(MLe,"isEmModelEntityType");UA={$type:"EmNoteEntity",dataBlockValue:"dataBlockValue",dataType:"dataType",sourceFrame:"sourceFrame"},Gh={$type:"EmResetFrame",dataInlineValue:"dataInlineValue",dataReference:"dataReference",dataType:"dataType",entityIdentifier:"entityIdentifier",modelEntityType:"modelEntityType",name:"name",sourceFrames:"sourceFrames"};o(S_,"isEmResetFrame");E(S_,"isEmResetFrame");ep={$type:"EmTimeFrame",dataInlineValue:"dataInlineValue",dataReference:"dataReference",dataType:"dataType",entityIdentifier:"entityIdentifier",modelEntityType:"modelEntityType",name:"name",sourceFrames:"sourceFrames"},fz={$type:"Entry",axis:"axis",value:"value"},_u={$type:"EventModel",accDescr:"accDescr",accTitle:"accTitle",dataEntities:"dataEntities",frames:"frames",gwtEntities:"gwtEntities",modelEntities:"modelEntities",noteEntities:"noteEntities",title:"title"},uwe={$type:"Evolution",stages:"stages"},YA={$type:"EvolutionStage",boundary:"boundary",name:"name",secondName:"secondName"},pz={$type:"Evolve",component:"component",target:"target"},up={$type:"GitGraph",accDescr:"accDescr",accTitle:"accTitle",statements:"statements",title:"title"};o(NLe,"isGitGraph");E(NLe,"isGitGraph");pC={$type:"Group",icon:"icon",id:"id",in:"in",title:"title"},mv={$type:"Info",accDescr:"accDescr",accTitle:"accTitle",title:"title"};o(PLe,"isInfo");E(PLe,"isInfo");mC={$type:"Item",classSelector:"classSelector",name:"name"},mz={$type:"Junction",id:"id",in:"in"},gC={$type:"Label",negX:"negX",negY:"negY",offsetX:"offsetX",offsetY:"offsetY"},jA={$type:"Leaf",classSelector:"classSelector",name:"name",value:"value"},ug={$type:"Link",arrow:"arrow",from:"from",fromPort:"fromPort",linkLabel:"linkLabel",to:"to",toPort:"toPort"},Ng={$type:"Merge",branch:"branch",id:"id",tags:"tags",type:"type"};o(OLe,"isMerge");E(OLe,"isMerge");XA={$type:"Note",evolution:"evolution",text:"text",visibility:"visibility"},gz={$type:"Option",name:"name",value:"value"},Pg={$type:"Packet",accDescr:"accDescr",accTitle:"accTitle",blocks:"blocks",title:"title"};o(BLe,"isPacket");E(BLe,"isPacket");Og={$type:"PacketBlock",bits:"bits",end:"end",label:"label",start:"start"};o($Le,"isPacketBlock");E($Le,"isPacketBlock");FV={$type:"PegAny",dot:"dot"},zV={$type:"PegGroup",element:"element"},GV={$type:"PegIdentifier",name:"name"},VV={$type:"PegLiteral",value:"value"},WV={$type:"PegOrderedChoice",alternatives:"alternatives"},C6={$type:"PegPrefix",operator:"operator",suffix:"suffix"},av={$type:"PegPrimary"},w6={$type:"PegRule",definition:"definition",name:"name"},qV={$type:"PegSequence",elements:"elements"},k6={$type:"PegSuffix",operator:"operator",primary:"primary"},hp={$type:"Pie",accDescr:"accDescr",accTitle:"accTitle",sections:"sections",showData:"showData",title:"title"};o(FLe,"isPie");E(FLe,"isPie");UC={$type:"PieSection",label:"label",value:"value"};o(zLe,"isPieSection");E(zLe,"isPieSection");yz={$type:"Pipeline",components:"components",parent:"parent"},KA={$type:"PipelineComponent",evolution:"evolution",label:"label",name:"name"},np={$type:"Radar",accDescr:"accDescr",accTitle:"accTitle",axes:"axes",curves:"curves",options:"options",title:"title"},Bg={$type:"Railroad",accDescr:"accDescr",accTitle:"accTitle",rules:"rules",title:"title"};o(GLe,"isRailroad");E(GLe,"isRailroad");$g={$type:"RailroadAbnf",accDescr:"accDescr",accTitle:"accTitle",rules:"rules",title:"title"};o(VLe,"isRailroadAbnf");E(VLe,"isRailroadAbnf");HV={$type:"RailroadChoiceExpr",alternatives:"alternatives"},Fg={$type:"RailroadEbnf",accDescr:"accDescr",accTitle:"accTitle",rules:"rules",title:"title"};o(WLe,"isRailroadEbnf");E(WLe,"isRailroadEbnf");Lu={$type:"RailroadExpression"},UV={$type:"RailroadNonTerminalExpr",name:"name"},YV={$type:"RailroadOneOrMoreExpr",element:"element"},jV={$type:"RailroadOptionalExpr",element:"element"},zg={$type:"RailroadPeg",accDescr:"accDescr",accTitle:"accTitle",rules:"rules",title:"title"};o(qLe,"isRailroadPeg");E(qLe,"isRailroadPeg");S6={$type:"RailroadRule",definition:"definition",name:"name"},XV={$type:"RailroadSequenceExpr",elements:"elements"},KV={$type:"RailroadSpecialExpr",text:"text"},ZV={$type:"RailroadTerminalExpr",value:"value"},QV={$type:"RailroadZeroOrMoreExpr",element:"element"},vz={$type:"Section",classSelector:"classSelector",name:"name"},Z1={$type:"Service",icon:"icon",iconText:"iconText",id:"id",in:"in",title:"title"},xz={$type:"Size",height:"height",width:"width"},xg={$type:"Statement"},gv={$type:"Transition",from:"from",label:"label",to:"to"};o(HLe,"isTransition");E(HLe,"isTransition");Gg={$type:"Treemap",accDescr:"accDescr",accTitle:"accTitle",title:"title",TreemapRows:"TreemapRows"};o(ULe,"isTreemap");E(ULe,"isTreemap");bz={$type:"TreemapRow",indent:"indent",item:"item"},bg={$type:"TreeNode",classAnnotation:"classAnnotation",descAnnotation:"descAnnotation",iconAnnotation:"iconAnnotation",indent:"indent",name:"name"},sv={$type:"TreeView",accDescr:"accDescr",accTitle:"accTitle",nodes:"nodes",title:"title"},La={$type:"Wardley",accDescr:"accDescr",accelerators:"accelerators",accTitle:"accTitle",anchors:"anchors",annotation:"annotation",annotations:"annotations",components:"components",deaccelerators:"deaccelerators",evolution:"evolution",evolves:"evolves",links:"links",notes:"notes",pipelines:"pipelines",size:"size",title:"title"};o(YLe,"isWardley");E(YLe,"isWardley");jLe=class extends aW{static{o(this,"MermaidAstReflection")}constructor(){super(...arguments),this.types={AbnfAlternation:{name:bV.$type,properties:{alternatives:{name:bV.alternatives,defaultValue:[]}},superTypes:[]},AbnfConcatenation:{name:TV.$type,properties:{elements:{name:TV.elements,defaultValue:[]}},superTypes:[]},AbnfElement:{name:v6.$type,properties:{primary:{name:v6.primary},repeat:{name:v6.repeat}},superTypes:[]},AbnfGroup:{name:CV.$type,properties:{element:{name:CV.element}},superTypes:[yg.$type]},AbnfNumVal:{name:wV.$type,properties:{value:{name:wV.value}},superTypes:[yg.$type]},AbnfOptionalGroup:{name:kV.$type,properties:{element:{name:kV.element}},superTypes:[yg.$type]},AbnfPrimary:{name:yg.$type,properties:{},superTypes:[]},AbnfRule:{name:x6.$type,properties:{definition:{name:x6.definition},name:{name:x6.name}},superTypes:[]},AbnfRuleName:{name:SV.$type,properties:{name:{name:SV.name}},superTypes:[yg.$type]},AbnfStringLiteral:{name:EV.$type,properties:{value:{name:EV.value}},superTypes:[yg.$type]},Accelerator:{name:FA.$type,properties:{name:{name:FA.name},x:{name:FA.x},y:{name:FA.y}},superTypes:[]},Alignment:{name:cz.$type,properties:{direction:{name:cz.direction},members:{name:cz.members,defaultValue:[]}},superTypes:[]},Anchor:{name:zA.$type,properties:{evolution:{name:zA.evolution},name:{name:zA.name},visibility:{name:zA.visibility}},superTypes:[]},Annotation:{name:dC.$type,properties:{number:{name:dC.number},text:{name:dC.text},x:{name:dC.x},y:{name:dC.y}},superTypes:[]},Annotations:{name:uz.$type,properties:{x:{name:uz.x},y:{name:uz.y}},superTypes:[]},Architecture:{name:bc.$type,properties:{accDescr:{name:bc.accDescr},accTitle:{name:bc.accTitle},alignments:{name:bc.alignments,defaultValue:[]},edges:{name:bc.edges,defaultValue:[]},groups:{name:bc.groups,defaultValue:[]},junctions:{name:bc.junctions,defaultValue:[]},services:{name:bc.services,defaultValue:[]},title:{name:bc.title}},superTypes:[]},Axis:{name:GA.$type,properties:{label:{name:GA.label},name:{name:GA.name}},superTypes:[]},Branch:{name:qC.$type,properties:{name:{name:qC.name},order:{name:qC.order}},superTypes:[xg.$type]},Checkout:{name:owe.$type,properties:{branch:{name:owe.branch}},superTypes:[xg.$type]},CherryPicking:{name:VA.$type,properties:{id:{name:VA.id},parent:{name:VA.parent},tags:{name:VA.tags,defaultValue:[]}},superTypes:[xg.$type]},ClassDefStatement:{name:hz.$type,properties:{className:{name:hz.className},styleText:{name:hz.styleText}},superTypes:[]},Commit:{name:Mg.$type,properties:{id:{name:Mg.id},message:{name:Mg.message},tags:{name:Mg.tags,defaultValue:[]},type:{name:Mg.type}},superTypes:[xg.$type]},Common:{name:WA.$type,properties:{accDescr:{name:WA.accDescr},accTitle:{name:WA.accTitle},title:{name:WA.title}},superTypes:[]},Component:{name:cg.$type,properties:{decorator:{name:cg.decorator},evolution:{name:cg.evolution},inertia:{name:cg.inertia,defaultValue:!1},label:{name:cg.label},name:{name:cg.name},visibility:{name:cg.visibility}},superTypes:[]},Curve:{name:qA.$type,properties:{entries:{name:qA.entries,defaultValue:[]},label:{name:qA.label},name:{name:qA.name}},superTypes:[]},Cynefin:{name:cp.$type,properties:{accDescr:{name:cp.accDescr},accTitle:{name:cp.accTitle},domains:{name:cp.domains,defaultValue:[]},title:{name:cp.title},transitions:{name:cp.transitions,defaultValue:[]}},superTypes:[]},Deaccelerator:{name:HA.$type,properties:{name:{name:HA.name},x:{name:HA.x},y:{name:HA.y}},superTypes:[]},Decorator:{name:lwe.$type,properties:{strategy:{name:lwe.strategy}},superTypes:[]},Direction:{name:K1.$type,properties:{accDescr:{name:K1.accDescr},accTitle:{name:K1.accTitle},dir:{name:K1.dir},statements:{name:K1.statements,defaultValue:[]},title:{name:K1.title}},superTypes:[up.$type]},DomainBlock:{name:HC.$type,properties:{domain:{name:HC.domain},items:{name:HC.items,defaultValue:[]}},superTypes:[]},DomainItem:{name:pR.$type,properties:{label:{name:pR.label}},superTypes:[]},EbnfChoice:{name:AV.$type,properties:{alternatives:{name:AV.alternatives,defaultValue:[]}},superTypes:[]},EbnfExceptionPostfix:{name:RV.$type,properties:{except:{name:RV.except}},superTypes:[iv.$type]},EbnfGroup:{name:_V.$type,properties:{element:{name:_V.element}},superTypes:[tp.$type]},EbnfNonTerminal:{name:LV.$type,properties:{name:{name:LV.name}},superTypes:[tp.$type]},EbnfOneOrMorePostfix:{name:DV.$type,properties:{operator:{name:DV.operator}},superTypes:[iv.$type]},EbnfOptional:{name:IV.$type,properties:{element:{name:IV.element}},superTypes:[tp.$type]},EbnfOptionalPostfix:{name:MV.$type,properties:{operator:{name:MV.operator}},superTypes:[iv.$type]},EbnfPostfix:{name:iv.$type,properties:{},superTypes:[]},EbnfPrimary:{name:tp.$type,properties:{},superTypes:[]},EbnfRepetition:{name:NV.$type,properties:{element:{name:NV.element}},superTypes:[tp.$type]},EbnfRule:{name:b6.$type,properties:{definition:{name:b6.definition},name:{name:b6.name}},superTypes:[]},EbnfSequence:{name:PV.$type,properties:{elements:{name:PV.elements,defaultValue:[]}},superTypes:[]},EbnfSpecial:{name:OV.$type,properties:{text:{name:OV.text}},superTypes:[tp.$type]},EbnfTerm:{name:T6.$type,properties:{base:{name:T6.base},postfixes:{name:T6.postfixes,defaultValue:[]}},superTypes:[]},EbnfTerminal:{name:BV.$type,properties:{value:{name:BV.value}},superTypes:[tp.$type]},EbnfZeroOrMorePostfix:{name:$V.$type,properties:{operator:{name:$V.operator}},superTypes:[iv.$type]},Edge:{name:Au.$type,properties:{lhsDir:{name:Au.lhsDir},lhsGroup:{name:Au.lhsGroup,defaultValue:!1},lhsId:{name:Au.lhsId},lhsInto:{name:Au.lhsInto,defaultValue:!1},rhsDir:{name:Au.rhsDir},rhsGroup:{name:Au.rhsGroup,defaultValue:!1},rhsId:{name:Au.rhsId},rhsInto:{name:Au.rhsInto,defaultValue:!1},title:{name:Au.title}},superTypes:[]},EmDataEntity:{name:vg.$type,properties:{dataBlockValue:{name:vg.dataBlockValue},dataType:{name:vg.dataType},name:{name:vg.name}},superTypes:[]},EmFrame:{name:rp.$type,properties:{},superTypes:[]},EmGwt:{name:fC.$type,properties:{givenStatements:{name:fC.givenStatements,defaultValue:[]},sourceFrame:{name:fC.sourceFrame,referenceType:rp.$type},thenStatements:{name:fC.thenStatements,defaultValue:[]},whenStatements:{name:fC.whenStatements,defaultValue:[]}},superTypes:[]},EmGwtStatement:{name:cwe.$type,properties:{entityIdentifier:{name:cwe.entityIdentifier,referenceType:dz.$type}},superTypes:[]},EmModelEntity:{name:dz.$type,properties:{name:{name:dz.name}},superTypes:[]},EmNoteEntity:{name:UA.$type,properties:{dataBlockValue:{name:UA.dataBlockValue},dataType:{name:UA.dataType},sourceFrame:{name:UA.sourceFrame,referenceType:rp.$type}},superTypes:[]},EmResetFrame:{name:Gh.$type,properties:{dataInlineValue:{name:Gh.dataInlineValue},dataReference:{name:Gh.dataReference,referenceType:vg.$type},dataType:{name:Gh.dataType},entityIdentifier:{name:Gh.entityIdentifier},modelEntityType:{name:Gh.modelEntityType},name:{name:Gh.name},sourceFrames:{name:Gh.sourceFrames,defaultValue:[],referenceType:rp.$type}},superTypes:[rp.$type]},EmTimeFrame:{name:ep.$type,properties:{dataInlineValue:{name:ep.dataInlineValue},dataReference:{name:ep.dataReference,referenceType:vg.$type},dataType:{name:ep.dataType},entityIdentifier:{name:ep.entityIdentifier},modelEntityType:{name:ep.modelEntityType},name:{name:ep.name},sourceFrames:{name:ep.sourceFrames,defaultValue:[],referenceType:rp.$type}},superTypes:[rp.$type]},Entry:{name:fz.$type,properties:{axis:{name:fz.axis,referenceType:GA.$type},value:{name:fz.value}},superTypes:[]},EventModel:{name:_u.$type,properties:{accDescr:{name:_u.accDescr},accTitle:{name:_u.accTitle},dataEntities:{name:_u.dataEntities,defaultValue:[]},frames:{name:_u.frames,defaultValue:[]},gwtEntities:{name:_u.gwtEntities,defaultValue:[]},modelEntities:{name:_u.modelEntities,defaultValue:[]},noteEntities:{name:_u.noteEntities,defaultValue:[]},title:{name:_u.title}},superTypes:[]},Evolution:{name:uwe.$type,properties:{stages:{name:uwe.stages,defaultValue:[]}},superTypes:[]},EvolutionStage:{name:YA.$type,properties:{boundary:{name:YA.boundary},name:{name:YA.name},secondName:{name:YA.secondName}},superTypes:[]},Evolve:{name:pz.$type,properties:{component:{name:pz.component},target:{name:pz.target}},superTypes:[]},GitGraph:{name:up.$type,properties:{accDescr:{name:up.accDescr},accTitle:{name:up.accTitle},statements:{name:up.statements,defaultValue:[]},title:{name:up.title}},superTypes:[]},Group:{name:pC.$type,properties:{icon:{name:pC.icon},id:{name:pC.id},in:{name:pC.in},title:{name:pC.title}},superTypes:[]},Info:{name:mv.$type,properties:{accDescr:{name:mv.accDescr},accTitle:{name:mv.accTitle},title:{name:mv.title}},superTypes:[]},Item:{name:mC.$type,properties:{classSelector:{name:mC.classSelector},name:{name:mC.name}},superTypes:[]},Junction:{name:mz.$type,properties:{id:{name:mz.id},in:{name:mz.in}},superTypes:[]},Label:{name:gC.$type,properties:{negX:{name:gC.negX,defaultValue:!1},negY:{name:gC.negY,defaultValue:!1},offsetX:{name:gC.offsetX},offsetY:{name:gC.offsetY}},superTypes:[]},Leaf:{name:jA.$type,properties:{classSelector:{name:jA.classSelector},name:{name:jA.name},value:{name:jA.value}},superTypes:[mC.$type]},Link:{name:ug.$type,properties:{arrow:{name:ug.arrow},from:{name:ug.from},fromPort:{name:ug.fromPort},linkLabel:{name:ug.linkLabel},to:{name:ug.to},toPort:{name:ug.toPort}},superTypes:[]},Merge:{name:Ng.$type,properties:{branch:{name:Ng.branch},id:{name:Ng.id},tags:{name:Ng.tags,defaultValue:[]},type:{name:Ng.type}},superTypes:[xg.$type]},Note:{name:XA.$type,properties:{evolution:{name:XA.evolution},text:{name:XA.text},visibility:{name:XA.visibility}},superTypes:[]},Option:{name:gz.$type,properties:{name:{name:gz.name},value:{name:gz.value,defaultValue:!1}},superTypes:[]},Packet:{name:Pg.$type,properties:{accDescr:{name:Pg.accDescr},accTitle:{name:Pg.accTitle},blocks:{name:Pg.blocks,defaultValue:[]},title:{name:Pg.title}},superTypes:[]},PacketBlock:{name:Og.$type,properties:{bits:{name:Og.bits},end:{name:Og.end},label:{name:Og.label},start:{name:Og.start}},superTypes:[]},PegAny:{name:FV.$type,properties:{dot:{name:FV.dot}},superTypes:[av.$type]},PegGroup:{name:zV.$type,properties:{element:{name:zV.element}},superTypes:[av.$type]},PegIdentifier:{name:GV.$type,properties:{name:{name:GV.name}},superTypes:[av.$type]},PegLiteral:{name:VV.$type,properties:{value:{name:VV.value}},superTypes:[av.$type]},PegOrderedChoice:{name:WV.$type,properties:{alternatives:{name:WV.alternatives,defaultValue:[]}},superTypes:[]},PegPrefix:{name:C6.$type,properties:{operator:{name:C6.operator},suffix:{name:C6.suffix}},superTypes:[]},PegPrimary:{name:av.$type,properties:{},superTypes:[]},PegRule:{name:w6.$type,properties:{definition:{name:w6.definition},name:{name:w6.name}},superTypes:[]},PegSequence:{name:qV.$type,properties:{elements:{name:qV.elements,defaultValue:[]}},superTypes:[]},PegSuffix:{name:k6.$type,properties:{operator:{name:k6.operator},primary:{name:k6.primary}},superTypes:[]},Pie:{name:hp.$type,properties:{accDescr:{name:hp.accDescr},accTitle:{name:hp.accTitle},sections:{name:hp.sections,defaultValue:[]},showData:{name:hp.showData,defaultValue:!1},title:{name:hp.title}},superTypes:[]},PieSection:{name:UC.$type,properties:{label:{name:UC.label},value:{name:UC.value}},superTypes:[]},Pipeline:{name:yz.$type,properties:{components:{name:yz.components,defaultValue:[]},parent:{name:yz.parent}},superTypes:[]},PipelineComponent:{name:KA.$type,properties:{evolution:{name:KA.evolution},label:{name:KA.label},name:{name:KA.name}},superTypes:[]},Radar:{name:np.$type,properties:{accDescr:{name:np.accDescr},accTitle:{name:np.accTitle},axes:{name:np.axes,defaultValue:[]},curves:{name:np.curves,defaultValue:[]},options:{name:np.options,defaultValue:[]},title:{name:np.title}},superTypes:[]},Railroad:{name:Bg.$type,properties:{accDescr:{name:Bg.accDescr},accTitle:{name:Bg.accTitle},rules:{name:Bg.rules,defaultValue:[]},title:{name:Bg.title}},superTypes:[]},RailroadAbnf:{name:$g.$type,properties:{accDescr:{name:$g.accDescr},accTitle:{name:$g.accTitle},rules:{name:$g.rules,defaultValue:[]},title:{name:$g.title}},superTypes:[]},RailroadChoiceExpr:{name:HV.$type,properties:{alternatives:{name:HV.alternatives,defaultValue:[]}},superTypes:[Lu.$type]},RailroadEbnf:{name:Fg.$type,properties:{accDescr:{name:Fg.accDescr},accTitle:{name:Fg.accTitle},rules:{name:Fg.rules,defaultValue:[]},title:{name:Fg.title}},superTypes:[]},RailroadExpression:{name:Lu.$type,properties:{},superTypes:[]},RailroadNonTerminalExpr:{name:UV.$type,properties:{name:{name:UV.name}},superTypes:[Lu.$type]},RailroadOneOrMoreExpr:{name:YV.$type,properties:{element:{name:YV.element}},superTypes:[Lu.$type]},RailroadOptionalExpr:{name:jV.$type,properties:{element:{name:jV.element}},superTypes:[Lu.$type]},RailroadPeg:{name:zg.$type,properties:{accDescr:{name:zg.accDescr},accTitle:{name:zg.accTitle},rules:{name:zg.rules,defaultValue:[]},title:{name:zg.title}},superTypes:[]},RailroadRule:{name:S6.$type,properties:{definition:{name:S6.definition},name:{name:S6.name}},superTypes:[]},RailroadSequenceExpr:{name:XV.$type,properties:{elements:{name:XV.elements,defaultValue:[]}},superTypes:[Lu.$type]},RailroadSpecialExpr:{name:KV.$type,properties:{text:{name:KV.text}},superTypes:[Lu.$type]},RailroadTerminalExpr:{name:ZV.$type,properties:{value:{name:ZV.value}},superTypes:[Lu.$type]},RailroadZeroOrMoreExpr:{name:QV.$type,properties:{element:{name:QV.element}},superTypes:[Lu.$type]},Section:{name:vz.$type,properties:{classSelector:{name:vz.classSelector},name:{name:vz.name}},superTypes:[mC.$type]},Service:{name:Z1.$type,properties:{icon:{name:Z1.icon},iconText:{name:Z1.iconText},id:{name:Z1.id},in:{name:Z1.in},title:{name:Z1.title}},superTypes:[]},Size:{name:xz.$type,properties:{height:{name:xz.height},width:{name:xz.width}},superTypes:[]},Statement:{name:xg.$type,properties:{},superTypes:[]},Transition:{name:gv.$type,properties:{from:{name:gv.from},label:{name:gv.label},to:{name:gv.to}},superTypes:[]},TreeNode:{name:bg.$type,properties:{classAnnotation:{name:bg.classAnnotation},descAnnotation:{name:bg.descAnnotation},iconAnnotation:{name:bg.iconAnnotation},indent:{name:bg.indent},name:{name:bg.name}},superTypes:[]},TreeView:{name:sv.$type,properties:{accDescr:{name:sv.accDescr},accTitle:{name:sv.accTitle},nodes:{name:sv.nodes,defaultValue:[]},title:{name:sv.title}},superTypes:[]},Treemap:{name:Gg.$type,properties:{accDescr:{name:Gg.accDescr},accTitle:{name:Gg.accTitle},title:{name:Gg.title},TreemapRows:{name:Gg.TreemapRows,defaultValue:[]}},superTypes:[]},TreemapRow:{name:bz.$type,properties:{indent:{name:bz.indent},item:{name:bz.item}},superTypes:[]},Wardley:{name:La.$type,properties:{accDescr:{name:La.accDescr},accelerators:{name:La.accelerators,defaultValue:[]},accTitle:{name:La.accTitle},anchors:{name:La.anchors,defaultValue:[]},annotation:{name:La.annotation,defaultValue:[]},annotations:{name:La.annotations,defaultValue:[]},components:{name:La.components,defaultValue:[]},deaccelerators:{name:La.deaccelerators,defaultValue:[]},evolution:{name:La.evolution},evolves:{name:La.evolves,defaultValue:[]},links:{name:La.links,defaultValue:[]},notes:{name:La.notes,defaultValue:[]},pipelines:{name:La.pipelines,defaultValue:[]},size:{name:La.size},title:{name:La.title}},superTypes:[]}}}static{E(this,"MermaidAstReflection")}},Fi=new jLe,$Et=E(()=>hwe??(hwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"ArchitectureGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"alignments","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Alignment","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"align"},{"$type":"Assignment","feature":"direction","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"row"},{"$type":"Keyword","value":"column"}]}},{"$type":"Assignment","feature":"members","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Assignment","feature":"members","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},"cardinality":"+"},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@20"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[(?:\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'|[\\\\w ]+)\\\\]/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)),"ArchitectureGrammarGrammar"),FEt=E(()=>dwe??(dwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"CynefinGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Cynefin","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"cynefin-beta"},{"$type":"Keyword","value":"cynefin-beta:"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"domains","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"transitions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"DomainBlock","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"domain","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Assignment","feature":"items","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"DomainItem","definition":{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Transition","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Keyword","value":"-->"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"DOMAIN_NAME","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"complex"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"complicated"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"clear"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"chaotic"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"confusion"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"CynefinGrammarGrammar"),zEt=E(()=>fwe??(fwe=Ma('{"$type":"Grammar","isDeclared":true,"name":"EventModeling","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","entry":true,"name":"EventModel","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"eventmodeling"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"frames","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"dataEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"noteEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"gwtEntities","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmModelEntityType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rmo"},{"$type":"Keyword","value":"readmodel"},{"$type":"Keyword","value":"ui"},{"$type":"Keyword","value":"cmd"},{"$type":"Keyword","value":"command"},{"$type":"Keyword","value":"evt"},{"$type":"Keyword","value":"event"},{"$type":"Keyword","value":"pcr"},{"$type":"Keyword","value":"processor"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmDataType","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"json"},{"$type":"Keyword","value":"jsobj"},{"$type":"Keyword","value":"figma"},{"$type":"Keyword","value":"salt"},{"$type":"Keyword","value":"uri"},{"$type":"Keyword","value":"md"},{"$type":"Keyword","value":"html"},{"$type":"Keyword","value":"text"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"EmDataInline","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"`"},{"$type":"Assignment","feature":"dataType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":"`"}],"cardinality":"?"},{"$type":"Assignment","feature":"dataInlineValue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"EmDataBlock","definition":{"$type":"Group","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"`"},{"$type":"Assignment","feature":"dataType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":"`"}],"cardinality":"?"},{"$type":"Assignment","feature":"dataBlockValue","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"QualifiedName","dataType":"string","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"."},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmTimeFrame","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"tf"},{"$type":"Keyword","value":"timeframe"}]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntityType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"->>"},{"$type":"Assignment","feature":"sourceFrames","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"[["},{"$type":"Assignment","feature":"dataReference","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@10"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"]]"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmResetFrame","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"rf"},{"$type":"Keyword","value":"resetframe"}]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"modelEntityType","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"->>"},{"$type":"Assignment","feature":"sourceFrames","operator":"+=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"[["},{"$type":"Assignment","feature":"dataReference","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@10"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"]]"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmFrame","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmModelEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"entity"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmDataEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"data"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmNoteEntity","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"note"},{"$type":"Assignment","feature":"sourceFrame","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmGwt","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"gwt"},{"$type":"Assignment","feature":"sourceFrame","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@8"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":"given"},{"$type":"Assignment","feature":"givenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"},{"$type":"Group","elements":[{"$type":"Keyword","value":"when"},{"$type":"Assignment","feature":"whenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"}],"cardinality":"?"},{"$type":"Keyword","value":"then"},{"$type":"Assignment","feature":"thenStatements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"+"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EmGwtStatement","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},{"$type":"Assignment","feature":"entityIdentifier","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@9"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EM_EID","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EM_FI","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"EM_ID","definition":{"$type":"RegexToken","regex":"/[_a-zA-Z][\\\\w_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_FID","definition":{"$type":"RegexToken","regex":"/\\\\d{1,3}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_DATA_INLINE","definition":{"$type":"RegexToken","regex":"/\\\\{(.*)\\\\}|\\"(.*)\\"|\'(.*)\'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_DATA_BLOCK","definition":{"$type":"RegexToken","regex":"/\\\\{[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?\\\\}(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EM_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"EM_WS","definition":{"$type":"RegexToken","regex":"/\\\\s+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EM_SL_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\/[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"imports":[],"types":[]}')),"EventModelingGrammar"),GEt=E(()=>pwe??(pwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"GitGraphGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[],"types":[]}`)),"GitGraphGrammarGrammar"),VEt=E(()=>mwe??(mwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"InfoGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"InfoGrammarGrammar"),WEt=E(()=>gwe??(gwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"PacketGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"PacketGrammarGrammar"),qEt=E(()=>ywe??(ywe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"PieGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"PieGrammarGrammar"),HEt=E(()=>vwe??(vwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"RadarGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false,"isMulti":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}},"isMulti":false}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"types":[]}`)),"RadarGrammarGrammar"),UEt=E(()=>xwe??(xwe=Ma('{"$type":"Grammar","isDeclared":true,"name":"RailroadAbnfGrammar","rules":[{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_RULENAME","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[A-Za-z][A-Za-z0-9-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_NUMVAL","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/%[xXdDbB][0-9A-Fa-f]+(?:-[0-9A-Fa-f]+|\\\\.[0-9A-Fa-f]+)*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_REPEAT","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[0-9]*\\\\*[0-9]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ABNF_EXACT_REPEAT","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[0-9]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t \\\\r\\\\n]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ABNF_COMMENT","definition":{"$type":"RegexToken","regex":"/;[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"ParserRule","entry":true,"name":"RailroadAbnf","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"railroad-abnf-beta"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfRule","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Keyword","value":"="},{"$type":"Assignment","feature":"definition","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Keyword","value":";"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfAlternation","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"/"},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfConcatenation","returnType":{"$ref":"#/interfaces@3"},"definition":{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},"cardinality":"+"},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfElement","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"repeat","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"repeat","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"primary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfPrimary","returnType":{"$ref":"#/interfaces@5"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfStringLiteral","returnType":{"$ref":"#/interfaces@6"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfNumVal","returnType":{"$ref":"#/interfaces@7"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfRuleName","returnType":{"$ref":"#/interfaces@8"},"definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfGroup","returnType":{"$ref":"#/interfaces@9"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"AbnfOptionalGroup","returnType":{"$ref":"#/interfaces@10"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"RailroadAbnf","attributes":[{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"rules","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfRule","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"definition","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfAlternation","attributes":[{"$type":"TypeAttribute","name":"alternatives","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@3"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfConcatenation","attributes":[{"$type":"TypeAttribute","name":"elements","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@4"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfElement","attributes":[{"$type":"TypeAttribute","name":"repeat","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"primary","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@5"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"AbnfPrimary","attributes":[],"superTypes":[]},{"$type":"Interface","name":"AbnfStringLiteral","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"AbnfNumVal","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"AbnfRuleName","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"AbnfGroup","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"AbnfOptionalGroup","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]}],"imports":[],"types":[]}')),"RailroadAbnfGrammarGrammar"),YEt=E(()=>bwe??(bwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"RailroadEbnfGrammar","rules":[{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EBNF_ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[A-Z_a-z][\\\\w-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EBNF_STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"EBNF_SPECIAL_SEQUENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\?(?=[^?;]*[^?\\\\s;][^?;]*\\\\?)[^?;]*\\\\?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t \\\\r\\\\n]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_BLOCK_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"EBNF_ISO_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\(\\\\*[\\\\s\\\\S]*?\\\\*\\\\)/","parenthesized":false},"fragment":false},{"$type":"ParserRule","entry":true,"name":"RailroadEbnf","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"railroad-ebnf-beta"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfRule","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"="},{"$type":"Keyword","value":"::="}]},{"$type":"Assignment","feature":"definition","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":";"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfChoice","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"|"},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfSequence","returnType":{"$ref":"#/interfaces@3"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":",","cardinality":"?"},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfTerm","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"base","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Assignment","feature":"postfixes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfPrimary","returnType":{"$ref":"#/interfaces@5"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfTerminal","returnType":{"$ref":"#/interfaces@7"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfNonTerminal","returnType":{"$ref":"#/interfaces@8"},"definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfSpecial","returnType":{"$ref":"#/interfaces@9"},"definition":{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfGroup","returnType":{"$ref":"#/interfaces@10"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfOptional","returnType":{"$ref":"#/interfaces@11"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfRepetition","returnType":{"$ref":"#/interfaces@12"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":"}"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfPostfix","returnType":{"$ref":"#/interfaces@6"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfOptionalPostfix","returnType":{"$ref":"#/interfaces@13"},"definition":{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"?"}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfZeroOrMorePostfix","returnType":{"$ref":"#/interfaces@14"},"definition":{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"*"}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfOneOrMorePostfix","returnType":{"$ref":"#/interfaces@15"},"definition":{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"+"}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EbnfExceptionPostfix","returnType":{"$ref":"#/interfaces@16"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"except","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"RailroadEbnf","attributes":[{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"rules","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfRule","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"definition","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfChoice","attributes":[{"$type":"TypeAttribute","name":"alternatives","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@3"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfSequence","attributes":[{"$type":"TypeAttribute","name":"elements","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@4"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfTerm","attributes":[{"$type":"TypeAttribute","name":"base","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@5"}},"isOptional":false},{"$type":"TypeAttribute","name":"postfixes","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@6"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"EbnfPrimary","attributes":[],"superTypes":[]},{"$type":"Interface","name":"EbnfPostfix","attributes":[],"superTypes":[]},{"$type":"Interface","name":"EbnfTerminal","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfNonTerminal","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfSpecial","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"text","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfGroup","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"EbnfOptional","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"EbnfRepetition","superTypes":[{"$ref":"#/interfaces@5"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"EbnfOptionalPostfix","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"operator","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfZeroOrMorePostfix","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"operator","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfOneOrMorePostfix","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"operator","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"EbnfExceptionPostfix","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"except","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@5"}},"isOptional":false}]}],"imports":[],"types":[]}`)),"RailroadEbnfGrammarGrammar"),jEt=E(()=>Twe??(Twe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"RailroadGrammar","rules":[{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"RR_ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[A-Z_a-z][\\\\w-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"RR_STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"RR_WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t \\\\r\\\\n]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"RR_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"RR_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"RR_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"RR_BLOCK_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//","parenthesized":false},"fragment":false},{"$type":"ParserRule","entry":true,"name":"Railroad","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"railroad-beta"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadRule","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Keyword","value":"="},{"$type":"Assignment","feature":"definition","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":";"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadExpression","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadSequenceExpr","returnType":{"$ref":"#/interfaces@3"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"sequence"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadChoiceExpr","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"choice"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"*"},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadOptionalExpr","returnType":{"$ref":"#/interfaces@5"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"optional"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadOneOrMoreExpr","returnType":{"$ref":"#/interfaces@6"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"oneOrMore"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadZeroOrMoreExpr","returnType":{"$ref":"#/interfaces@7"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"zeroOrMore"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadTerminalExpr","returnType":{"$ref":"#/interfaces@8"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"terminal"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadNonTerminalExpr","returnType":{"$ref":"#/interfaces@9"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"nonterminal"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"RailroadSpecialExpr","returnType":{"$ref":"#/interfaces@10"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"special"},{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"Railroad","attributes":[{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"rules","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"RailroadRule","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"definition","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"RailroadExpression","attributes":[],"superTypes":[]},{"$type":"Interface","name":"RailroadSequenceExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"elements","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}}},"isOptional":false}]},{"$type":"Interface","name":"RailroadChoiceExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"alternatives","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}}},"isOptional":false}]},{"$type":"Interface","name":"RailroadOptionalExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"RailroadOneOrMoreExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"RailroadZeroOrMoreExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"RailroadTerminalExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"RailroadNonTerminalExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"RailroadSpecialExpr","superTypes":[{"$ref":"#/interfaces@2"}],"attributes":[{"$type":"TypeAttribute","name":"text","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]}],"imports":[],"types":[]}`)),"RailroadGrammarGrammar"),XEt=E(()=>Cwe??(Cwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"RailroadPegGrammar","rules":[{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PEG_ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[A-Z_a-z][\\\\w-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PEG_STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t \\\\r\\\\n]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"PEG_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/#[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false},{"$type":"ParserRule","entry":true,"name":"RailroadPeg","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"railroad-peg-beta"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"},{"$type":"Assignment","feature":"rules","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegRule","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Keyword","value":"<-"},{"$type":"Assignment","feature":"definition","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":";"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegOrderedChoice","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"/"},{"$type":"Assignment","feature":"alternatives","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegSequence","returnType":{"$ref":"#/interfaces@3"},"definition":{"$type":"Assignment","feature":"elements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"+"},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegPrefix","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"&"}},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"!"}}],"cardinality":"?"},{"$type":"Assignment","feature":"suffix","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegSuffix","returnType":{"$ref":"#/interfaces@5"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"primary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"?"}},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"*"}},{"$type":"Assignment","feature":"operator","operator":"=","terminal":{"$type":"Keyword","value":"+"}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegPrimary","returnType":{"$ref":"#/interfaces@6"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegLiteral","returnType":{"$ref":"#/interfaces@7"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegIdentifier","returnType":{"$ref":"#/interfaces@8"},"definition":{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegGroup","returnType":{"$ref":"#/interfaces@9"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"element","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PegAny","returnType":{"$ref":"#/interfaces@10"},"definition":{"$type":"Assignment","feature":"dot","operator":"=","terminal":{"$type":"Keyword","value":"."}},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"RailroadPeg","attributes":[{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"rules","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@1"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegRule","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"definition","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegOrderedChoice","attributes":[{"$type":"TypeAttribute","name":"alternatives","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@3"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegSequence","attributes":[{"$type":"TypeAttribute","name":"elements","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@4"}}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegPrefix","attributes":[{"$type":"TypeAttribute","name":"operator","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"suffix","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@5"}},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"PegSuffix","attributes":[{"$type":"TypeAttribute","name":"primary","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@6"}},"isOptional":false},{"$type":"TypeAttribute","name":"operator","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"PegPrimary","attributes":[],"superTypes":[]},{"$type":"Interface","name":"PegLiteral","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"PegIdentifier","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]},{"$type":"Interface","name":"PegGroup","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"element","type":{"$type":"SimpleType","typeRef":{"$ref":"#/interfaces@2"}},"isOptional":false}]},{"$type":"Interface","name":"PegAny","superTypes":[{"$ref":"#/interfaces@6"}],"attributes":[{"$type":"TypeAttribute","name":"dot","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}]}],"imports":[],"types":[]}`)),"RailroadPegGrammarGrammar"),KEt=E(()=>wwe??(wwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"TreemapGrammar","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/","parenthesized":false},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@15"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}`)),"TreemapGrammarGrammar"),ZEt=E(()=>kwe??(kwe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"TreeViewGrammar","rules":[{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"TreeView","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"treeView-beta"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"nodes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"CLASS_ANNOTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+:::[ \\\\t]*[A-Za-z_][\\\\w-]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ICON_ANNOTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+icon\\\\([\\\\w-]*(?::[\\\\w-]+)?\\\\)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"DESC_ANNOTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+##[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"QUOTED_NAME","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","name":"BARE_NAME","definition":{"$type":"RegexToken","regex":"/(?!:::|icon\\\\(|##)[^ \\\\t\\\\n\\\\r\\"'](?:(?![ \\\\t]+:::[ \\\\t]*[A-Za-z_]|[ \\\\t]+icon\\\\(|[ \\\\t]+##)[^\\\\n\\\\r])*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"TreeNode","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"classAnnotation","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"iconAnnotation","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"descAnnotation","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},"entry":false,"fragment":false,"parameters":[]}],"interfaces":[{"$type":"Interface","name":"TreeView","attributes":[{"$type":"TypeAttribute","name":"nodes","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"imports":[],"types":[],"$comment":"/**\\n * TreeView grammar for Langium\\n *\\n * Supports both quoted labels (\\"my file\\") and bare labels (index.js).\\n * Annotations (:::class, icon(), ## description) are parsed directly into\\n * AST fields by the grammar. Value conversion for stripping quotes, extracting\\n * class names, icon names, and description text happens in valueConverter.ts.\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treeView keyword, allowing for empty lines and comments before the\\n * treeView declaration.\\n */"}`)),"TreeViewGrammarGrammar"),QEt=E(()=>Swe??(Swe=Ma(`{"$type":"Grammar","isDeclared":true,"name":"WardleyGrammar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Wardley","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@25"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@42"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"size","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"anchors","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"components","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"links","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"evolves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"pipelines","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"notes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"annotations","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Assignment","feature":"annotation","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accelerators","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Assignment","feature":"deaccelerators","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}]},"entry":false,"parameters":[]},{"$type":"ParserRule","name":"Size","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@26"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"width","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"height","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Evolution","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@27"},"arguments":[]},{"$type":"Assignment","feature":"stages","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]},{"$type":"Assignment","feature":"stages","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"EvolutionStage","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"@"},{"$type":"Assignment","feature":"boundary","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}}],"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"/"},{"$type":"Assignment","feature":"secondName","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}}],"cardinality":"?"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Anchor","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Component","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"decorator","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"inertia","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"inertia","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@31"},"arguments":[]}},{"$type":"Keyword","value":")"}]}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Label","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@30"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"negX","operator":"?=","terminal":{"$type":"Keyword","value":"-"},"cardinality":"?"},{"$type":"Assignment","feature":"offsetX","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"negY","operator":"?=","terminal":{"$type":"Keyword","value":"-"},"cardinality":"?"},{"$type":"Assignment","feature":"offsetY","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Decorator","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"("},{"$type":"Assignment","feature":"strategy","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]}},{"$type":"Keyword","value":")"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Link","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"from","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"fromPort","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"arrow","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]},"cardinality":"?"},{"$type":"Assignment","feature":"to","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"toPort","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"linkLabel","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Evolve","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@32"},"arguments":[]},{"$type":"Assignment","feature":"component","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Assignment","feature":"target","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Pipeline","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@33"},"arguments":[]},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"components","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"+"},{"$type":"Keyword","value":"}"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"PipelineComponent","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Note","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@34"},"arguments":[]},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"visibility","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"evolution","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Annotations","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@35"},"arguments":[]},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Annotation","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@36"},"arguments":[]},{"$type":"Assignment","feature":"number","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"Assignment","feature":"text","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"CoordinateValue","dataType":"number","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@48"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Accelerator","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@37"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","name":"Deaccelerator","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@38"},"arguments":[]},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@50"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@51"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@39"},"arguments":[]}]}},{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"x","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"y","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Keyword","value":"]"},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"TerminalRule","name":"WARDLEY_NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"->"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_PORT","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+<>"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+>"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"+<"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_ARROW","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"-->"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"-.->"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":">"},"parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+'[^']*'<>/","parenthesized":false}],"parenthesized":false},{"$type":"RegexToken","regex":"/\\\\+'[^']*'/","parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"LINK_LABEL","definition":{"$type":"RegexToken","regex":"/;[^\\\\n\\\\r]+/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRATEGY","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"build"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"buy"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"outsource"},"parenthesized":false}],"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"market"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_WARDLEY","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"wardley-beta"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_SIZE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"size"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_EVOLUTION","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"evolution"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANCHOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"anchor"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_COMPONENT","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"component"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_LABEL","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"label"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_INERTIA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"inertia"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_EVOLVE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"evolve"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_PIPELINE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"pipeline"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_NOTE","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"note"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANNOTATIONS","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"annotations"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ANNOTATION","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"annotation"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_ACCELERATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"accelerator"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"KW_DEACCELERATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":"deaccelerator"},"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NAME_WITH_SPACES","definition":{"$type":"RegexToken","regex":"/(?!title\\\\s|accTitle|accDescr)[A-Za-z](?:[A-Za-z0-9_()&]|-(?!>))*(?:[ \\\\t]+[A-Za-z(](?:[A-Za-z0-9_()&]|-(?!>))*)*/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/","parenthesized":false},"fragment":false},{"$type":"ParserRule","name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@52"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"entry":false,"fragment":false,"parameters":[]},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@44"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@45"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@46"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@41"},"arguments":[]}],"cardinality":"+"},"entry":false,"parameters":[]},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"},"parenthesized":false},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@47"},"parenthesized":false},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@48"},"parenthesized":false}],"parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|'([^'\\\\\\\\]|\\\\\\\\.)*'/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/","parenthesized":false},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/","parenthesized":false},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/","parenthesized":false},"fragment":false}],"interfaces":[],"types":[]}`)),"WardleyGrammarGrammar"),JEt={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},e4t={languageId:"cynefin",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},t4t={languageId:"eventmodeling",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},r4t={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},n4t={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},i4t={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},a4t={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},s4t={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},o4t={languageId:"railroadAbnf",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},l4t={languageId:"railroadEbnf",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},c4t={languageId:"railroad",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},u4t={languageId:"railroadPeg",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},h4t={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},d4t={languageId:"treeView",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},f4t={languageId:"wardley",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},An={AstReflection:E(()=>new jLe,"AstReflection")},$H={Grammar:E(()=>$Et(),"Grammar"),LanguageMetaData:E(()=>JEt,"LanguageMetaData"),parser:{}},FH={Grammar:E(()=>FEt(),"Grammar"),LanguageMetaData:E(()=>e4t,"LanguageMetaData"),parser:{}},zH={Grammar:E(()=>zEt(),"Grammar"),LanguageMetaData:E(()=>t4t,"LanguageMetaData"),parser:{}},GH={Grammar:E(()=>GEt(),"Grammar"),LanguageMetaData:E(()=>r4t,"LanguageMetaData"),parser:{}},VH={Grammar:E(()=>VEt(),"Grammar"),LanguageMetaData:E(()=>n4t,"LanguageMetaData"),parser:{}},WH={Grammar:E(()=>WEt(),"Grammar"),LanguageMetaData:E(()=>i4t,"LanguageMetaData"),parser:{}},qH={Grammar:E(()=>qEt(),"Grammar"),LanguageMetaData:E(()=>a4t,"LanguageMetaData"),parser:{}},HH={Grammar:E(()=>HEt(),"Grammar"),LanguageMetaData:E(()=>s4t,"LanguageMetaData"),parser:{}},UH={Grammar:E(()=>UEt(),"Grammar"),LanguageMetaData:E(()=>o4t,"LanguageMetaData"),parser:{}},YH={Grammar:E(()=>YEt(),"Grammar"),LanguageMetaData:E(()=>l4t,"LanguageMetaData"),parser:{}},jH={Grammar:E(()=>jEt(),"Grammar"),LanguageMetaData:E(()=>c4t,"LanguageMetaData"),parser:{}},XH={Grammar:E(()=>XEt(),"Grammar"),LanguageMetaData:E(()=>u4t,"LanguageMetaData"),parser:{}},KH={Grammar:E(()=>KEt(),"Grammar"),LanguageMetaData:E(()=>h4t,"LanguageMetaData"),parser:{}},ZH={Grammar:E(()=>ZEt(),"Grammar"),LanguageMetaData:E(()=>d4t,"LanguageMetaData"),parser:{}},QH={Grammar:E(()=>QEt(),"Grammar"),LanguageMetaData:E(()=>f4t,"LanguageMetaData"),parser:{}},p4t=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,m4t=/accTitle[\t ]*:([^\n\r]*)/,g4t=/title([\t ][^\n\r]*|)/,y4t={ACC_DESCR:p4t,ACC_TITLE:m4t,TITLE:g4t},Qi=class extends gH{static{o(this,"AbstractMermaidValueConverter")}static{E(this,"AbstractMermaidValueConverter")}runConverter(e,t,r){let n=this.runCommonConverter(e,t,r);return n===void 0&&(n=this.runCustomConverter(e,t,r)),n===void 0?super.runConverter(e,t,r):n}runCommonConverter(e,t,r){let n=y4t[e.name];if(n===void 0)return;let i=n.exec(t);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` +`)}}},Jo=class extends Qi{static{o(this,"CommonValueConverter")}static{E(this,"CommonValueConverter")}runCustomConverter(e,t,r){}},Mn=class extends g_{static{o(this,"AbstractMermaidTokenBuilder")}static{E(this,"AbstractMermaidTokenBuilder")}constructor(e){super(),this.keywords=new Set(e)}buildKeywordTokens(e,t,r){let n=super.buildKeywordTokens(e,t,r);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},v4t=class extends Mn{static{o(this,"CommonTokenBuilder")}static{E(this,"CommonTokenBuilder")}};});function A_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),HH,E_);return t.ServiceRegistry.register(r),{shared:t,Radar:r}}var x4t,E_,JH=F(()=>{"use strict";vn();x4t=class extends Mn{static{o(this,"RadarTokenBuilder")}static{E(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},E_={parser:{TokenBuilder:E(()=>new x4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(A_,"createRadarServices");E(A_,"createRadarServices")});function Vv(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),jH,R_);return t.ServiceRegistry.register(r),{shared:t,Railroad:r}}var b4t,XLe,T4t,R_,eU=F(()=>{"use strict";vn();b4t=class extends Mn{static{o(this,"RailroadTokenBuilder")}static{E(this,"RailroadTokenBuilder")}constructor(){super(["railroad-beta"])}},XLe=E(e=>{let t=e.slice(1,-1),r="";for(let n=0;nnew b4t,"TokenBuilder"),ValueConverter:E(()=>new T4t,"ValueConverter")}};o(Vv,"createRailroadServices");E(Vv,"createRailroadServices")});function Wv(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),YH,__);return t.ServiceRegistry.register(r),{shared:t,RailroadEbnf:r}}var C4t,KLe,w4t,__,tU=F(()=>{"use strict";vn();C4t=class extends Mn{static{o(this,"RailroadEbnfTokenBuilder")}static{E(this,"RailroadEbnfTokenBuilder")}constructor(){super(["railroad-ebnf-beta"])}},KLe=E(e=>{let t=e.slice(1,-1),r="";for(let n=0;nnew C4t,"TokenBuilder"),ValueConverter:E(()=>new w4t,"ValueConverter")}};o(Wv,"createRailroadEbnfServices");E(Wv,"createRailroadEbnfServices")});function qv(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),UH,L_);return t.ServiceRegistry.register(r),{shared:t,RailroadAbnf:r}}var k4t,S4t,L_,rU=F(()=>{"use strict";vn();k4t=class extends Mn{static{o(this,"RailroadAbnfTokenBuilder")}static{E(this,"RailroadAbnfTokenBuilder")}constructor(){super(["railroad-abnf-beta"])}},S4t=class extends Qi{static{o(this,"RailroadAbnfValueConverter")}static{E(this,"RailroadAbnfValueConverter")}runConverter(e,t,r){let n=super.runConverter(e,t,r);if(e.name==="TITLE"&&typeof n=="string"){let i=n.trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))return i.slice(1,-1)}return n}runCustomConverter(e,t,r){if(e.name==="ABNF_STRING")return t.slice(1,-1)}},L_={parser:{TokenBuilder:E(()=>new k4t,"TokenBuilder"),ValueConverter:E(()=>new S4t,"ValueConverter")}};o(qv,"createRailroadAbnfServices");E(qv,"createRailroadAbnfServices")});function Hv(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),XH,D_);return t.ServiceRegistry.register(r),{shared:t,RailroadPeg:r}}var E4t,ZLe,A4t,D_,nU=F(()=>{"use strict";vn();E4t=class extends Mn{static{o(this,"RailroadPegTokenBuilder")}static{E(this,"RailroadPegTokenBuilder")}constructor(){super(["railroad-peg-beta"])}},ZLe=E(e=>{let t=e.slice(1,-1),r="";for(let n=0;nnew E4t,"TokenBuilder"),ValueConverter:E(()=>new A4t,"ValueConverter")}};o(Hv,"createRailroadPegServices");E(Hv,"createRailroadPegServices")});function QLe(e){let t=e.validation.TreemapValidator,r=e.validation.ValidationRegistry;if(r){let n={Treemap:t.checkSingleRoot.bind(t)};r.register(n,t)}}function M_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),KH,I_);return t.ServiceRegistry.register(r),QLe(r),{shared:t,Treemap:r}}var R4t,_4t,L4t,D4t,I_,iU=F(()=>{"use strict";vn();R4t=class extends Mn{static{o(this,"TreemapTokenBuilder")}static{E(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},_4t=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,L4t=class extends Qi{static{o(this,"TreemapValueConverter")}static{E(this,"TreemapValueConverter")}runCustomConverter(e,t,r){if(e.name==="NUMBER2")return parseFloat(t.replace(/,/g,""));if(e.name==="SEPARATOR")return t.substring(1,t.length-1);if(e.name==="STRING2")return t.substring(1,t.length-1);if(e.name==="INDENTATION")return t.length;if(e.name==="ClassDef"){if(typeof t!="string")return t;let n=_4t.exec(t);if(n)return{$type:"ClassDefStatement",className:n[1],styleText:n[2]||void 0}}}};o(QLe,"registerValidationChecks");E(QLe,"registerValidationChecks");D4t=class{static{o(this,"TreemapValidator")}static{E(this,"TreemapValidator")}checkSingleRoot(e,t){let r;for(let n of e.TreemapRows)n.item&&(r===void 0&&n.indent===void 0?r=0:n.indent===void 0?t("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}):r!==void 0&&r>=parseInt(n.indent,10)&&t("error","Multiple root nodes are not allowed in a treemap.",{node:n,property:"item"}))}},I_={parser:{TokenBuilder:E(()=>new R4t,"TokenBuilder"),ValueConverter:E(()=>new L4t,"ValueConverter")},validation:{TreemapValidator:E(()=>new D4t,"TreemapValidator")}};o(M_,"createTreemapServices");E(M_,"createTreemapServices")});function P_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),QH,N_);return t.ServiceRegistry.register(r),{shared:t,Wardley:r}}var I4t,N_,aU=F(()=>{"use strict";vn();I4t=class extends Qi{static{o(this,"WardleyValueConverter")}static{E(this,"WardleyValueConverter")}runCustomConverter(e,t,r){switch(e.name.toUpperCase()){case"LINK_LABEL":return t.substring(1).trim();default:return}}},N_={parser:{ValueConverter:E(()=>new I4t,"ValueConverter")}};o(P_,"createWardleyServices");E(P_,"createWardleyServices")});function B_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),FH,O_);return t.ServiceRegistry.register(r),{shared:t,Cynefin:r}}var M4t,O_,sU=F(()=>{"use strict";vn();M4t=class extends Mn{static{o(this,"CynefinTokenBuilder")}static{E(this,"CynefinTokenBuilder")}constructor(){super(["cynefin-beta"])}},O_={parser:{TokenBuilder:E(()=>new M4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(B_,"createCynefinServices");E(B_,"createCynefinServices")});function F_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),GH,$_);return t.ServiceRegistry.register(r),{shared:t,GitGraph:r}}var N4t,$_,oU=F(()=>{"use strict";vn();N4t=class extends Mn{static{o(this,"GitGraphTokenBuilder")}static{E(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},$_={parser:{TokenBuilder:E(()=>new N4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(F_,"createGitGraphServices");E(F_,"createGitGraphServices")});function G_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),VH,z_);return t.ServiceRegistry.register(r),{shared:t,Info:r}}var P4t,z_,lU=F(()=>{"use strict";vn();P4t=class extends Mn{static{o(this,"InfoTokenBuilder")}static{E(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},z_={parser:{TokenBuilder:E(()=>new P4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(G_,"createInfoServices");E(G_,"createInfoServices")});function W_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),WH,V_);return t.ServiceRegistry.register(r),{shared:t,Packet:r}}var O4t,V_,cU=F(()=>{"use strict";vn();O4t=class extends Mn{static{o(this,"PacketTokenBuilder")}static{E(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},V_={parser:{TokenBuilder:E(()=>new O4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")}};o(W_,"createPacketServices");E(W_,"createPacketServices")});function H_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),qH,q_);return t.ServiceRegistry.register(r),{shared:t,Pie:r}}var B4t,$4t,q_,uU=F(()=>{"use strict";vn();B4t=class extends Mn{static{o(this,"PieTokenBuilder")}static{E(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},$4t=class extends Qi{static{o(this,"PieValueConverter")}static{E(this,"PieValueConverter")}runCustomConverter(e,t,r){if(e.name==="PIE_SECTION_LABEL")return t.replace(/"/g,"").trim()}},q_={parser:{TokenBuilder:E(()=>new B4t,"TokenBuilder"),ValueConverter:E(()=>new $4t,"ValueConverter")}};o(H_,"createPieServices");E(H_,"createPieServices")});function Y_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),ZH,U_);return t.ServiceRegistry.register(r),{shared:t,TreeView:r}}var F4t,z4t,U_,hU=F(()=>{"use strict";vn();F4t=class extends Qi{static{o(this,"TreeViewValueConverter")}static{E(this,"TreeViewValueConverter")}runCustomConverter(e,t,r){if(e.name==="INDENTATION")return t?.length||0;if(e.name==="QUOTED_NAME")return t.substring(1,t.length-1);if(e.name==="BARE_NAME")return t.replace(/[\t ]+$/,"");if(e.name==="CLASS_ANNOTATION")return t.trim().substring(3).trim();if(e.name==="ICON_ANNOTATION"){let n=t.trim();return n.substring(5,n.length-1)}if(e.name==="DESC_ANNOTATION")return t.trim().substring(2).trim()}},z4t=class extends Mn{static{o(this,"TreeViewTokenBuilder")}static{E(this,"TreeViewTokenBuilder")}constructor(){super(["treeView-beta"])}},U_={parser:{TokenBuilder:E(()=>new z4t,"TokenBuilder"),ValueConverter:E(()=>new F4t,"ValueConverter")}};o(Y_,"createTreeViewServices");E(Y_,"createTreeViewServices")});function X_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),$H,j_);return t.ServiceRegistry.register(r),{shared:t,Architecture:r}}var G4t,V4t,j_,dU=F(()=>{"use strict";vn();G4t=class extends Mn{static{o(this,"ArchitectureTokenBuilder")}static{E(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},V4t=class extends Qi{static{o(this,"ArchitectureValueConverter")}static{E(this,"ArchitectureValueConverter")}runCustomConverter(e,t,r){if(e.name==="ARCH_ICON")return t.replace(/[()]/g,"").trim();if(e.name==="ARCH_TEXT_ICON")return t.replace(/["()]/g,"");if(e.name==="ARCH_TITLE"){let n=t.replace(/^\[|]$/g,"").trim();return(n.startsWith('"')&&n.endsWith('"')||n.startsWith("'")&&n.endsWith("'"))&&(n=n.slice(1,-1),n=n.replace(/\\"/g,'"').replace(/\\'/g,"'")),n.trim()}}},j_={parser:{TokenBuilder:E(()=>new G4t,"TokenBuilder"),ValueConverter:E(()=>new V4t,"ValueConverter")}};o(X_,"createArchitectureServices");E(X_,"createArchitectureServices")});function nDe(e){let t=e.validation.EventModelingValidator,r=e.validation.ValidationRegistry;if(r){let n={EmTimeFrame:t.checkSourceFrameTypes.bind(t),EmResetFrame:t.checkSourceFrameTypes.bind(t)};r.register(n,t)}}function Z_(e=yn){let t=Mr(dn(e),An),r=Mr(hn({shared:t}),zH,K_);return t.ServiceRegistry.register(r),nDe(r),{shared:t,EventModel:r}}var W4t,JLe,eDe,fU,tDe,rDe,q4t,K_,pU=F(()=>{"use strict";vn();W4t=class extends Mn{static{o(this,"EventModelingTokenBuilder")}static{E(this,"EventModelingTokenBuilder")}constructor(){super(["eventmodeling"])}},JLe=new Set(["cmd","command"]),eDe=new Set(["evt","event"]),fU=new Set(["rmo","readmodel"]),tDe=new Set(["pcr","processor"]),rDe=new Set(["ui"]);o(nDe,"registerValidationChecks");E(nDe,"registerValidationChecks");q4t=class{static{o(this,"EventModelingValidator")}static{E(this,"EventModelingValidator")}checkSourceFrameTypes(e,t){e.sourceFrames.length!==0&&(JLe.has(e.modelEntityType)?this.validateSources(e,new Set([...rDe,...tDe]),"command","ui or processor",t):eDe.has(e.modelEntityType)?this.validateSources(e,JLe,"event","command",t):fU.has(e.modelEntityType)?this.validateSources(e,eDe,"read model","event",t):tDe.has(e.modelEntityType)?this.validateSources(e,fU,"processor","read model",t):rDe.has(e.modelEntityType)&&this.validateSources(e,fU,"ui","read model",t))}validateSources(e,t,r,n,i){for(let a of e.sourceFrames){let s=a.ref;s!==void 0&&!t.has(s.modelEntityType)&&i("error",`A ${r} can only receive input from a ${n}, not from '${s.modelEntityType}'.`,{node:e,property:"sourceFrames"})}}},K_={parser:{TokenBuilder:E(()=>new W4t,"TokenBuilder"),ValueConverter:E(()=>new Jo,"ValueConverter")},validation:{EventModelingValidator:E(()=>new q4t,"EventModelingValidator")}};o(Z_,"createEventModelingServices");E(Z_,"createEventModelingServices")});var iDe={};ir(iDe,{InfoModule:()=>z_,createInfoServices:()=>G_});var aDe=F(()=>{"use strict";lU();vn()});var sDe={};ir(sDe,{PacketModule:()=>V_,createPacketServices:()=>W_});var oDe=F(()=>{"use strict";cU();vn()});var lDe={};ir(lDe,{PieModule:()=>q_,createPieServices:()=>H_});var cDe=F(()=>{"use strict";uU();vn()});var uDe={};ir(uDe,{TreeViewModule:()=>U_,createTreeViewServices:()=>Y_});var hDe=F(()=>{"use strict";hU();vn()});var dDe={};ir(dDe,{ArchitectureModule:()=>j_,createArchitectureServices:()=>X_});var fDe=F(()=>{"use strict";dU();vn()});var pDe={};ir(pDe,{GitGraphModule:()=>$_,createGitGraphServices:()=>F_});var mDe=F(()=>{"use strict";oU();vn()});var gDe={};ir(gDe,{EventModelingModule:()=>K_,createEventModelingServices:()=>Z_});var yDe=F(()=>{"use strict";pU();vn()});var vDe={};ir(vDe,{RadarModule:()=>E_,createRadarServices:()=>A_});var xDe=F(()=>{"use strict";JH();vn()});var bDe={};ir(bDe,{RailroadModule:()=>R_,createRailroadServices:()=>Vv});var TDe=F(()=>{"use strict";eU();vn()});var CDe={};ir(CDe,{RailroadEbnfModule:()=>__,createRailroadEbnfServices:()=>Wv});var wDe=F(()=>{"use strict";tU();vn()});var kDe={};ir(kDe,{RailroadAbnfModule:()=>L_,createRailroadAbnfServices:()=>qv});var SDe=F(()=>{"use strict";rU();vn()});var EDe={};ir(EDe,{RailroadPegModule:()=>D_,createRailroadPegServices:()=>Hv});var ADe=F(()=>{"use strict";nU();vn()});var RDe={};ir(RDe,{TreemapModule:()=>I_,createTreemapServices:()=>M_});var _De=F(()=>{"use strict";iU();vn()});var LDe={};ir(LDe,{WardleyModule:()=>N_,createWardleyServices:()=>P_});var DDe=F(()=>{"use strict";aU();vn()});var IDe={};ir(IDe,{CynefinModule:()=>O_,createCynefinServices:()=>B_});var MDe=F(()=>{"use strict";sU();vn()});async function Si(e,t){let r=H4t[e];if(!r)throw new Error(`Unknown diagram type: ${e}`);ja[e]||await r();let i=ja[e].parse(t);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new ad(i);return i.value}var ja,H4t,ad,Xa=F(()=>{"use strict";JH();eU();tU();rU();nU();iU();aU();sU();oU();lU();cU();uU();hU();dU();pU();vn();ja={},H4t={info:E(async()=>{let{createInfoServices:e}=await Promise.resolve().then(()=>(aDe(),iDe)),t=e().Info.parser.LangiumParser;ja.info=t},"info"),packet:E(async()=>{let{createPacketServices:e}=await Promise.resolve().then(()=>(oDe(),sDe)),t=e().Packet.parser.LangiumParser;ja.packet=t},"packet"),pie:E(async()=>{let{createPieServices:e}=await Promise.resolve().then(()=>(cDe(),lDe)),t=e().Pie.parser.LangiumParser;ja.pie=t},"pie"),treeView:E(async()=>{let{createTreeViewServices:e}=await Promise.resolve().then(()=>(hDe(),uDe)),t=e().TreeView.parser.LangiumParser;ja.treeView=t},"treeView"),architecture:E(async()=>{let{createArchitectureServices:e}=await Promise.resolve().then(()=>(fDe(),dDe)),t=e().Architecture.parser.LangiumParser;ja.architecture=t},"architecture"),gitGraph:E(async()=>{let{createGitGraphServices:e}=await Promise.resolve().then(()=>(mDe(),pDe)),t=e().GitGraph.parser.LangiumParser;ja.gitGraph=t},"gitGraph"),eventmodeling:E(async()=>{let{createEventModelingServices:e}=await Promise.resolve().then(()=>(yDe(),gDe)),t=e().EventModel.parser.LangiumParser;ja.eventmodeling=t},"eventmodeling"),radar:E(async()=>{let{createRadarServices:e}=await Promise.resolve().then(()=>(xDe(),vDe)),t=e().Radar.parser.LangiumParser;ja.radar=t},"radar"),railroad:E(async()=>{let{createRailroadServices:e}=await Promise.resolve().then(()=>(TDe(),bDe)),t=e().Railroad.parser.LangiumParser;ja.railroad=t},"railroad"),railroadEbnf:E(async()=>{let{createRailroadEbnfServices:e}=await Promise.resolve().then(()=>(wDe(),CDe)),t=e().RailroadEbnf.parser.LangiumParser;ja.railroadEbnf=t},"railroadEbnf"),railroadAbnf:E(async()=>{let{createRailroadAbnfServices:e}=await Promise.resolve().then(()=>(SDe(),kDe)),t=e().RailroadAbnf.parser.LangiumParser;ja.railroadAbnf=t},"railroadAbnf"),railroadPeg:E(async()=>{let{createRailroadPegServices:e}=await Promise.resolve().then(()=>(ADe(),EDe)),t=e().RailroadPeg.parser.LangiumParser;ja.railroadPeg=t},"railroadPeg"),treemap:E(async()=>{let{createTreemapServices:e}=await Promise.resolve().then(()=>(_De(),RDe)),t=e().Treemap.parser.LangiumParser;ja.treemap=t},"treemap"),wardley:E(async()=>{let{createWardleyServices:e}=await Promise.resolve().then(()=>(DDe(),LDe)),t=e().Wardley.parser.LangiumParser;ja.wardley=t},"wardley"),cynefin:E(async()=>{let{createCynefinServices:e}=await Promise.resolve().then(()=>(MDe(),IDe)),t=e().Cynefin.parser.LangiumParser;ja.cynefin=t},"cynefin")};o(Si,"parse");E(Si,"parse");ad=class extends Error{static{o(this,"MermaidParseError")}constructor(e){let t=e.lexerErrors.map(n=>{let i=n.line!==void 0&&!isNaN(n.line)?n.line:"?",a=n.column!==void 0&&!isNaN(n.column)?n.column:"?";return`Lexer error on line ${i}, column ${a}: ${n.message}`}).join(` +`),r=e.parserErrors.map(n=>{let i=n.token.startLine!==void 0&&!isNaN(n.token.startLine)?n.token.startLine:"?",a=n.token.startColumn!==void 0&&!isNaN(n.token.startColumn)?n.token.startColumn:"?";return`Parse error on line ${i}, column ${a}: ${n.message}`}).join(` +`);super(`Parsing failed: ${t} ${r}`),this.result=e}static{E(this,"MermaidParseError")}}});function Gn(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}var Hs=F(()=>{"use strict";o(Gn,"populateCommonDb")});var Rn,Q_=F(()=>{"use strict";Rn={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4}});var Cp,J_=F(()=>{"use strict";Cp=class{constructor(t){this.init=t;this.records=this.init()}static{o(this,"ImperativeState")}reset(){this.records=this.init()}}});function mU(){return dP({length:7})}function Y4t(e,t){let r=Object.create(null);return e.reduce((n,i)=>{let a=t(i);return r[a]||(r[a]=!0,n.push(i)),n},[])}function NDe(e,t,r){let n=e.indexOf(t);n===-1?e.push(r):e.splice(n,1,r)}function ODe(e){let t=e.reduce((i,a)=>i.seq>a.seq?i:a,e[0]),r="";e.forEach(function(i){i===t?r+=" *":r+=" |"});let n=[r,t.id,t.seq];for(let i in Vt.records.branches)Vt.records.branches.get(i)===t.id&&n.push(i);if(Z.debug(n.join(" ")),t.parents&&t.parents.length==2&&t.parents[0]&&t.parents[1]){let i=Vt.records.commits.get(t.parents[0]);NDe(e,t,i),t.parents[1]&&e.push(Vt.records.commits.get(t.parents[1]))}else{if(t.parents.length==0)return;if(t.parents[0]){let i=Vt.records.commits.get(t.parents[0]);NDe(e,t,i)}}e=Y4t(e,i=>i.id),ODe(e)}var U4t,x0,Vt,j4t,X4t,K4t,Z4t,Q4t,J4t,e3t,PDe,t3t,r3t,n3t,i3t,a3t,BDe,s3t,o3t,l3t,eL,gU=F(()=>{"use strict";vt();Qt();ur();Vr();Nn();Q_();J_();Wi();U4t=cr.gitGraph,x0=o(()=>qr({...U4t,..._t().gitGraph}),"getConfig"),Vt=new Cp(()=>{let e=x0(),t=e.mainBranchName,r=e.mainBranchOrder;return{mainBranchName:t,commits:new Map,head:null,branchConfig:new Map([[t,{name:t,order:r}]]),branches:new Map([[t,null]]),currBranch:t,direction:"LR",seq:0,options:{}}});o(mU,"getID");o(Y4t,"uniqBy");j4t=o(function(e){Vt.records.direction=e},"setDirection"),X4t=o(function(e){Z.debug("options str",e),e=e?.trim(),e=e||"{}";try{Vt.records.options=JSON.parse(e)}catch(t){Z.error("error while parsing gitGraph options",t.message)}},"setOptions"),K4t=o(function(){return Vt.records.options},"getOptions"),Z4t=o(function(e){let t=e.msg,r=e.id,n=e.type,i=e.tags;Z.info("commit",t,r,n,i),Z.debug("Entering commit:",t,r,n,i);let a=x0();r=xt.sanitizeText(r,a),t=xt.sanitizeText(t,a),i=i?.map(l=>xt.sanitizeText(l,a));let s={id:r||Vt.records.seq+"-"+mU(),message:t,seq:Vt.records.seq++,type:n??Rn.NORMAL,tags:i??[],parents:Vt.records.head==null?[]:[Vt.records.head.id],branch:Vt.records.currBranch};Vt.records.head=s,Z.info("main branch",a.mainBranchName),Vt.records.commits.has(s.id)&&Z.warn(`Commit ID ${s.id} already exists`),Vt.records.commits.set(s.id,s),Vt.records.branches.set(Vt.records.currBranch,s.id),Z.debug("in pushCommit "+s.id)},"commit"),Q4t=o(function(e){let t=e.name,r=e.order;if(t=xt.sanitizeText(t,x0()),Vt.records.branches.has(t))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${t}")`);Vt.records.branches.set(t,Vt.records.head!=null?Vt.records.head.id:null),Vt.records.branchConfig.set(t,{name:t,order:r}),PDe(t),Z.debug("in createBranch")},"branch"),J4t=o(e=>{let t=e.branch,r=e.id,n=e.type,i=e.tags,a=x0();t=xt.sanitizeText(t,a),r&&(r=xt.sanitizeText(r,a));let s=Vt.records.branches.get(Vt.records.currBranch),l=Vt.records.branches.get(t),u=s?Vt.records.commits.get(s):void 0,h=l?Vt.records.commits.get(l):void 0;if(u&&h&&u.branch===t)throw new Error(`Cannot merge branch '${t}' into itself.`);if(Vt.records.currBranch===t){let p=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["branch abc"]},p}if(u===void 0||!u){let p=new Error(`Incorrect usage of "merge". Current branch (${Vt.records.currBranch})has no commits`);throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["commit"]},p}if(!Vt.records.branches.has(t)){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") does not exist");throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:[`branch ${t}`]},p}if(h===void 0||!h){let p=new Error('Incorrect usage of "merge". Branch to be merged ('+t+") has no commits");throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:['"commit"']},p}if(u===h){let p=new Error('Incorrect usage of "merge". Both branches have same head');throw p.hash={text:`merge ${t}`,token:`merge ${t}`,expected:["branch abc"]},p}if(r&&Vt.records.commits.has(r)){let p=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom id");throw p.hash={text:`merge ${t} ${r} ${n} ${i?.join(" ")}`,token:`merge ${t} ${r} ${n} ${i?.join(" ")}`,expected:[`merge ${t} ${r}_UNIQUE ${n} ${i?.join(" ")}`]},p}let d=l||"",f={id:r||`${Vt.records.seq}-${mU()}`,message:`merged branch ${t} into ${Vt.records.currBranch}`,seq:Vt.records.seq++,parents:Vt.records.head==null?[]:[Vt.records.head.id,d],branch:Vt.records.currBranch,type:Rn.MERGE,customType:n,customId:!!r,tags:i??[]};Vt.records.head=f,Vt.records.commits.set(f.id,f),Vt.records.branches.set(Vt.records.currBranch,f.id),Z.debug(Vt.records.branches),Z.debug("in mergeBranch")},"merge"),e3t=o(function(e){let t=e.id,r=e.targetId,n=e.tags,i=e.parent;Z.debug("Entering cherryPick:",t,r,n);let a=x0();if(t=xt.sanitizeText(t,a),r=xt.sanitizeText(r,a),n=n?.map(u=>xt.sanitizeText(u,a)),i=xt.sanitizeText(i,a),!t||!Vt.records.commits.has(t)){let u=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw u.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},u}let s=Vt.records.commits.get(t);if(s===void 0||!s)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(i&&!(Array.isArray(s.parents)&&s.parents.includes(i)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let l=s.branch;if(s.type===Rn.MERGE&&!i)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!r||!Vt.records.commits.has(r)){if(l===Vt.records.currBranch){let f=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw f.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},f}let u=Vt.records.branches.get(Vt.records.currBranch);if(u===void 0||!u){let f=new Error(`Incorrect usage of "cherry-pick". Current branch (${Vt.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},f}let h=Vt.records.commits.get(u);if(h===void 0||!h){let f=new Error(`Incorrect usage of "cherry-pick". Current branch (${Vt.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${t} ${r}`,token:`cherryPick ${t} ${r}`,expected:["cherry-pick abc"]},f}let d={id:Vt.records.seq+"-"+mU(),message:`cherry-picked ${s?.message} into ${Vt.records.currBranch}`,seq:Vt.records.seq++,parents:Vt.records.head==null?[]:[Vt.records.head.id,s.id],branch:Vt.records.currBranch,type:Rn.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${s.id}${s.type===Rn.MERGE?`|parent:${i}`:""}`]};Vt.records.head=d,Vt.records.commits.set(d.id,d),Vt.records.branches.set(Vt.records.currBranch,d.id),Z.debug(Vt.records.branches),Z.debug("in cherryPick")}},"cherryPick"),PDe=o(function(e){if(e=xt.sanitizeText(e,x0()),Vt.records.branches.has(e)){Vt.records.currBranch=e;let t=Vt.records.branches.get(Vt.records.currBranch);t===void 0||!t?Vt.records.head=null:Vt.records.head=Vt.records.commits.get(t)??null}else{let t=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${e}")`);throw t.hash={text:`checkout ${e}`,token:`checkout ${e}`,expected:[`branch ${e}`]},t}},"checkout");o(NDe,"upsert");o(ODe,"prettyPrintCommitHistory");t3t=o(function(){Z.debug(Vt.records.commits);let e=BDe()[0];ODe([e])},"prettyPrint"),r3t=o(function(){Vt.reset(),yr()},"clear"),n3t=o(function(){return[...Vt.records.branchConfig.values()].map((t,r)=>t.order!==null&&t.order!==void 0?t:{...t,order:parseFloat(`0.${r}`)}).sort((t,r)=>(t.order??0)-(r.order??0)).map(({name:t})=>({name:t}))},"getBranchesAsObjArray"),i3t=o(function(){return Vt.records.branches},"getBranches"),a3t=o(function(){return Vt.records.commits},"getCommits"),BDe=o(function(){let e=[...Vt.records.commits.values()];return e.forEach(function(t){Z.debug(t.id)}),e.sort((t,r)=>t.seq-r.seq),e},"getCommitsArray"),s3t=o(function(){return Vt.records.currBranch},"getCurrentBranch"),o3t=o(function(){return Vt.records.direction},"getDirection"),l3t=o(function(){return Vt.records.head},"getHead"),eL={commitType:Rn,getConfig:x0,setDirection:j4t,setOptions:X4t,getOptions:K4t,commit:Z4t,branch:Q4t,merge:J4t,cherryPick:e3t,checkout:PDe,prettyPrint:t3t,clear:r3t,getBranchesAsObjArray:n3t,getBranches:i3t,getCommits:a3t,getCommitsArray:BDe,getCurrentBranch:s3t,getDirection:o3t,getHead:l3t,setAccTitle:kr,getAccTitle:Ar,getAccDescription:_r,setAccDescription:Rr,setDiagramTitle:Or,getDiagramTitle:Lr}});var c3t,u3t,h3t,d3t,f3t,p3t,m3t,$De,FDe=F(()=>{"use strict";Xa();vt();Hs();gU();Q_();c3t=o((e,t)=>{Gn(e,t),e.dir&&t.setDirection(e.dir);for(let r of e.statements)u3t(r,t)},"populate"),u3t=o((e,t)=>{let n={Commit:o(i=>t.commit(h3t(i)),"Commit"),Branch:o(i=>t.branch(d3t(i)),"Branch"),Merge:o(i=>t.merge(f3t(i)),"Merge"),Checkout:o(i=>t.checkout(p3t(i)),"Checkout"),CherryPicking:o(i=>t.cherryPick(m3t(i)),"CherryPicking")}[e.$type];n?n(e):Z.error(`Unknown statement type: ${e.$type}`)},"parseStatement"),h3t=o(e=>({id:e.id,msg:e.message??"",type:e.type!==void 0?Rn[e.type]:Rn.NORMAL,tags:e.tags??void 0}),"parseCommit"),d3t=o(e=>({name:e.name,order:e.order??0}),"parseBranch"),f3t=o(e=>({branch:e.branch,id:e.id??"",type:e.type!==void 0?Rn[e.type]:void 0,tags:e.tags??void 0}),"parseMerge"),p3t=o(e=>e.branch,"parseCheckout"),m3t=o(e=>({id:e.id,targetId:"",tags:e.tags?.length===0?void 0:e.tags,parent:e.parent}),"parseCherryPicking"),$De={parse:o(async e=>{let t=await Si("gitGraph",e);Z.debug(t),c3t(t,eL)},"parse")}});var wp,kp,Wu,sd,b0,nL,yU,vU,g3t,T0,So,Eo,tL,Iw,rL,od,rn,y3t,GDe,VDe,v3t,x3t,b3t,T3t,C3t,w3t,k3t,S3t,E3t,A3t,R3t,_3t,zDe,L3t,Mw,D3t,I3t,M3t,N3t,P3t,WDe,qDe=F(()=>{"use strict";$r();Xt();vt();Qt();Q_();wp=10,kp=40,Wu=4,sd=2,b0=8,nL=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),yU=12,vU=new Set(["redux-color","redux-dark-color"]),g3t=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),T0=o((e,t,r=!1)=>r&&e>0?(e-1)%(t-1)+1:e%t,"calcColorIndex"),So=new Map,Eo=new Map,tL=30,Iw=new Map,rL=[],od=0,rn="LR",y3t=o(()=>{So.clear(),Eo.clear(),Iw.clear(),od=0,rL=[],rn="LR"},"clear"),GDe=o(e=>{let t=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof e=="string"?e.split(/\\n|\n|/gi):e).forEach(n=>{let i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),i.setAttribute("class","row"),i.textContent=n.trim(),t.appendChild(i)}),t},"drawText"),VDe=o(e=>{let t,r,n;return rn==="BT"?(r=o((i,a)=>i<=a,"comparisonFunc"),n=1/0):(r=o((i,a)=>i>=a,"comparisonFunc"),n=0),e.forEach(i=>{let a=rn==="TB"||rn=="BT"?Eo.get(i)?.y:Eo.get(i)?.x;a!==void 0&&r(a,n)&&(t=i,n=a)}),t},"findClosestParent"),v3t=o(e=>{let t="",r=1/0;return e.forEach(n=>{let i=Eo.get(n).y;i<=r&&(t=n,r=i)}),t||void 0},"findClosestParentBT"),x3t=o((e,t,r)=>{let n=r,i=r,a=[];e.forEach(s=>{let l=t.get(s);if(!l)throw new Error(`Commit not found for key ${s}`);l.parents.length?(n=T3t(l),i=Math.max(n,i)):a.push(l),C3t(l,n)}),n=i,a.forEach(s=>{w3t(s,n,r)}),e.forEach(s=>{let l=t.get(s);if(l?.parents.length){let u=v3t(l.parents);n=Eo.get(u).y-kp,n<=i&&(i=n);let h=So.get(l.branch).pos,d=n-wp;Eo.set(l.id,{x:h,y:d})}})},"setParallelBTPos"),b3t=o(e=>{let t=VDe(e.parents.filter(n=>n!==null));if(!t)throw new Error(`Closest parent not found for commit ${e.id}`);let r=Eo.get(t)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${e.id}`);return r},"findClosestParentPos"),T3t=o(e=>b3t(e)+kp,"calculateCommitPosition"),C3t=o((e,t)=>{let r=So.get(e.branch);if(!r)throw new Error(`Branch not found for commit ${e.id}`);let n=r.pos,i=t+wp;return Eo.set(e.id,{x:n,y:i}),{x:n,y:i}},"setCommitPosition"),w3t=o((e,t,r)=>{let n=So.get(e.branch);if(!n)throw new Error(`Branch not found for commit ${e.id}`);let i=t+r,a=n.pos;Eo.set(e.id,{x:a,y:i})},"setRootPosition"),k3t=o((e,t,r,n,i,a)=>{let{theme:s}=Ae(),l=nL.has(s??""),u=vU.has(s??""),h=g3t.has(s??"");if(a===Rn.HIGHLIGHT)e.append("rect").attr("x",r.x-10+(l?3:0)).attr("y",r.y-10+(l?3:0)).attr("width",l?14:20).attr("height",l?14:20).attr("class",`commit ${t.id} commit-highlight${T0(i,b0,u)} ${n}-outer`),e.append("rect").attr("x",r.x-6+(l?2:0)).attr("y",r.y-6+(l?2:0)).attr("width",l?8:12).attr("height",l?8:12).attr("class",`commit ${t.id} commit${T0(i,b0,u)} ${n}-inner`);else if(a===Rn.CHERRY_PICK)e.append("circle").attr("cx",r.x).attr("cy",r.y).attr("r",l?7:10).attr("class",`commit ${t.id} ${n}`),e.append("circle").attr("cx",r.x-3).attr("cy",r.y+2).attr("r",l?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${t.id} ${n}`),e.append("circle").attr("cx",r.x+3).attr("cy",r.y+2).attr("r",l?2.5:2.75).attr("fill",h?"#000000":"#fff").attr("class",`commit ${t.id} ${n}`),e.append("line").attr("x1",r.x+3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${t.id} ${n}`),e.append("line").attr("x1",r.x-3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke",h?"#000000":"#fff").attr("class",`commit ${t.id} ${n}`);else{let d=e.append("circle");if(d.attr("cx",r.x),d.attr("cy",r.y),d.attr("r",l?7:10),d.attr("class",`commit ${t.id} commit${T0(i,b0,u)}`),a===Rn.MERGE){let f=e.append("circle");f.attr("cx",r.x),f.attr("cy",r.y),f.attr("r",l?5:6),f.attr("class",`commit ${n} ${t.id} commit${T0(i,b0,u)}`)}if(a===Rn.REVERSE){let f=e.append("path"),p=l?4:5;f.attr("d",`M ${r.x-p},${r.y-p}L${r.x+p},${r.y+p}M${r.x-p},${r.y+p}L${r.x+p},${r.y-p}`).attr("class",`commit ${n} ${t.id} commit${T0(i,b0,u)}`)}}},"drawCommitBullet"),S3t=o((e,t,r,n,i)=>{if(t.type!==Rn.CHERRY_PICK&&(t.customId&&t.type===Rn.MERGE||t.type!==Rn.MERGE)&&i.showCommitLabel){let a=e.append("g"),s=a.insert("rect").attr("class","commit-label-bkg"),l=a.append("text").attr("x",n).attr("y",r.y+25).attr("class","commit-label").text(t.id),u=l.node()?.getBBox();if(u&&(s.attr("x",r.posWithOffset-u.width/2-sd).attr("y",r.y+13.5).attr("width",u.width+2*sd).attr("height",u.height+2*sd),rn==="TB"||rn==="BT"?(s.attr("x",r.x-(u.width+4*Wu+5)).attr("y",r.y-12),l.attr("x",r.x-(u.width+4*Wu)).attr("y",r.y+u.height-12)):l.attr("x",r.posWithOffset-u.width/2),i.rotateCommitLabel))if(rn==="TB"||rn==="BT")l.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),s.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let h=-7.5-(u.width+10)/25*9.5,d=10+u.width/25*8.5;a.attr("transform","translate("+h+", "+d+") rotate(-45, "+n+", "+r.y+")")}}},"drawCommitLabel"),E3t=o((e,t,r,n)=>{if(t.tags.length>0){let i=0,a=0,s=0,l=[];for(let u of t.tags.reverse()){let h=e.insert("polygon"),d=e.append("circle"),f=e.append("text").attr("y",r.y-16-i).attr("class","tag-label").text(u),p=f.node()?.getBBox();if(!p)throw new Error("Tag bbox not found");a=Math.max(a,p.width),s=Math.max(s,p.height),f.attr("x",r.posWithOffset-p.width/2),l.push({tag:f,hole:d,rect:h,yOffset:i}),i+=20}for(let{tag:u,hole:h,rect:d,yOffset:f}of l){let p=s/2,m=r.y-19.2-f;if(d.attr("class","tag-label-bkg").attr("points",` + ${n-a/2-Wu/2},${m+sd} + ${n-a/2-Wu/2},${m-sd} + ${r.posWithOffset-a/2-Wu},${m-p-sd} + ${r.posWithOffset+a/2+Wu},${m-p-sd} + ${r.posWithOffset+a/2+Wu},${m+p+sd} + ${r.posWithOffset-a/2-Wu},${m+p+sd}`),h.attr("cy",m).attr("cx",n-a/2+Wu/2).attr("r",1.5).attr("class","tag-hole"),rn==="TB"||rn==="BT"){let g=n+f;d.attr("class","tag-label-bkg").attr("points",` + ${r.x},${g+2} + ${r.x},${g-2} + ${r.x+wp},${g-p-2} + ${r.x+wp+a+4},${g-p-2} + ${r.x+wp+a+4},${g+p+2} + ${r.x+wp},${g+p+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),h.attr("cx",r.x+Wu/2).attr("cy",g).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),u.attr("x",r.x+5).attr("y",g+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+n+")")}}}},"drawCommitTags"),A3t=o(e=>{switch(e.customType??e.type){case Rn.NORMAL:return"commit-normal";case Rn.REVERSE:return"commit-reverse";case Rn.HIGHLIGHT:return"commit-highlight";case Rn.MERGE:return"commit-merge";case Rn.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),R3t=o((e,t,r,n)=>{let i={x:0,y:0};if(e.parents.length>0){let a=VDe(e.parents);if(a){let s=n.get(a)??i;return t==="TB"?s.y+kp:t==="BT"?(n.get(e.id)??i).y-kp:s.x+kp}}else return t==="TB"?tL:t==="BT"?(n.get(e.id)??i).y-kp:0;return 0},"calculatePosition"),_3t=o((e,t,r)=>{let n=rn==="BT"&&r?t:t+wp,i=So.get(e.branch)?.pos,a=rn==="TB"||rn==="BT"?So.get(e.branch)?.pos:n;if(a===void 0||i===void 0)throw new Error(`Position were undefined for commit ${e.id}`);let s=nL.has(Ae().theme??""),l=rn==="TB"||rn==="BT"?n:i+(s?yU/2+1:-2);return{x:a,y:l,posWithOffset:n}},"getCommitPosition"),zDe=o((e,t,r,n)=>{let i=e.append("g").attr("class","commit-bullets"),a=e.append("g").attr("class","commit-labels"),s=rn==="TB"||rn==="BT"?tL:0,l=[...t.keys()],u=n.parallelCommits??!1,h=o((f,p)=>{let m=t.get(f)?.seq,g=t.get(p)?.seq;return m!==void 0&&g!==void 0?m-g:0},"sortKeys"),d=l.sort(h);rn==="BT"&&(u&&x3t(d,t,s),d=d.reverse()),d.forEach(f=>{let p=t.get(f);if(!p)throw new Error(`Commit not found for key ${f}`);u&&(s=R3t(p,rn,s,Eo));let m=_3t(p,s,u);if(r){let g=A3t(p),y=p.customType??p.type,v=So.get(p.branch)?.index??0;k3t(i,p,m,g,v,y),S3t(a,p,m,s,n),E3t(a,p,m,s)}rn==="TB"||rn==="BT"?Eo.set(p.id,{x:m.x,y:m.posWithOffset}):Eo.set(p.id,{x:m.posWithOffset,y:m.y}),s=rn==="BT"&&u?s+kp:s+kp+wp,s>od&&(od=s)})},"drawCommits"),L3t=o((e,t,r,n,i)=>{let s=(rn==="TB"||rn==="BT"?r.xh.branch===s,"isOnBranchToGetCurve"),u=o(h=>h.seq>e.seq&&h.sequ(h)&&l(h))},"shouldRerouteArrow"),Mw=o((e,t,r=0)=>{let n=e+Math.abs(e-t)/2;if(r>5)return n;if(rL.every(s=>Math.abs(s-n)>=10))return rL.push(n),n;let a=Math.abs(e-t);return Mw(e,t-a/5,r+1)},"findLane"),D3t=o((e,t,r,n)=>{let{theme:i}=Ae(),a=vU.has(i??""),s=Eo.get(t.id),l=Eo.get(r.id);if(s===void 0||l===void 0)throw new Error(`Commit positions not found for commits ${t.id} and ${r.id}`);let u=L3t(t,r,s,l,n),h="",d="",f=0,p=0,m=So.get(r.branch)?.index;r.type===Rn.MERGE&&t.id!==r.parents[0]&&(m=So.get(t.branch)?.index);let g;if(u){h="A 10 10, 0, 0, 0,",d="A 10 10, 0, 0, 1,",f=10,p=10;let y=s.yl.x&&(h="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",f=20,p=20,r.type===Rn.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${s.x} ${l.y-f} ${d} ${s.x-p} ${l.y} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${l.x+f} ${s.y} ${h} ${l.x} ${s.y+p} L ${l.x} ${l.y}`),s.x===l.x&&(g=`M ${s.x} ${s.y} L ${l.x} ${l.y}`)):rn==="BT"?(s.xl.x&&(h="A 20 20, 0, 0, 0,",d="A 20 20, 0, 0, 1,",f=20,p=20,r.type===Rn.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${s.x} ${l.y+f} ${h} ${s.x-p} ${l.y} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${l.x+f} ${s.y} ${d} ${l.x} ${s.y-p} L ${l.x} ${l.y}`),s.x===l.x&&(g=`M ${s.x} ${s.y} L ${l.x} ${l.y}`)):(s.yl.y&&(r.type===Rn.MERGE&&t.id!==r.parents[0]?g=`M ${s.x} ${s.y} L ${l.x-f} ${s.y} ${h} ${l.x} ${s.y-p} L ${l.x} ${l.y}`:g=`M ${s.x} ${s.y} L ${s.x} ${l.y+f} ${d} ${s.x+p} ${l.y} L ${l.x} ${l.y}`),s.y===l.y&&(g=`M ${s.x} ${s.y} L ${l.x} ${l.y}`));if(g===void 0)throw new Error("Line definition not found");e.append("path").attr("d",g).attr("class","arrow arrow"+T0(m,b0,a))},"drawArrow"),I3t=o((e,t)=>{let r=e.append("g").attr("class","commit-arrows");[...t.keys()].forEach(n=>{let i=t.get(n);i.parents&&i.parents.length>0&&i.parents.forEach(a=>{D3t(r,t.get(a),i,t)})})},"drawArrows"),M3t=o((e,t,r,n)=>{let{look:i,theme:a,themeVariables:s}=Ae(),{dropShadow:l,THEME_COLOR_LIMIT:u}=s,h=nL.has(a??""),d=vU.has(a??""),f=e.append("g");t.forEach((p,m)=>{let g=T0(m,h?u:b0,d),y=So.get(p.name)?.pos;if(y===void 0)throw new Error(`Position not found for branch ${p.name}`);let v=rn==="TB"||rn==="BT"?y:h?y+yU/2+1:y-2,x=f.append("line");x.attr("x1",0),x.attr("y1",v),x.attr("x2",od),x.attr("y2",v),x.attr("class","branch branch"+g),rn==="TB"?(x.attr("y1",tL),x.attr("x1",y),x.attr("y2",od),x.attr("x2",y)):rn==="BT"&&(x.attr("y1",od),x.attr("x1",y),x.attr("y2",tL),x.attr("x2",y)),rL.push(v);let b=p.name,T=GDe(b),k=f.insert("rect"),w=f.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+g);w.node().appendChild(T);let S=T.getBBox(),R=h?0:4,L=h?16:0,N=h?yU:0;i==="neo"&&k.attr("data-look","neo"),k.attr("class","branchLabelBkg label"+g).attr("style",i==="neo"?`filter:${h?`url(#${n}-drop-shadow)`:l}`:"").attr("rx",R).attr("ry",R).attr("x",-S.width-4-(r.rotateCommitLabel===!0?30:0)).attr("y",-S.height/2+10).attr("width",S.width+18+L).attr("height",S.height+4+N),w.attr("transform","translate("+(-S.width-14-(r.rotateCommitLabel===!0?30:0)+L/2)+", "+(v-S.height/2-2)+")"),rn==="TB"?(k.attr("x",y-S.width/2-10).attr("y",0),w.attr("transform","translate("+(y-S.width/2-5)+", 0)"),h&&(k.attr("transform",`translate(${-L/2-3}, ${-N-10})`),w.attr("transform","translate("+(y-S.width/2-5)+", "+(-N*2+7)+")"))):rn==="BT"?(k.attr("x",y-S.width/2-10).attr("y",od),w.attr("transform","translate("+(y-S.width/2-5)+", "+od+")"),h&&(k.attr("transform",`translate(${-L/2-3}, ${N+10})`),w.attr("transform","translate("+(y-S.width/2-5)+", "+(od+N*2+4)+")"))):k.attr("transform","translate(-19, "+(v-12-N/2)+")")})},"drawBranches"),N3t=o(function(e,t,r,n,i){return So.set(e,{pos:t,index:r}),t+=50+(i?40:0)+(rn==="TB"||rn==="BT"?n.width/2:0),t},"setBranchPosition"),P3t=o(function(e,t,r,n){y3t(),Z.debug("in gitgraph renderer",e+` +`,"id:",t,r);let i=n.db;if(!i.getConfig){Z.error("getConfig method is not available on db");return}let a=i.getConfig(),s=a.rotateCommitLabel??!1;Iw=i.getCommits();let l=i.getBranchesAsObjArray();rn=i.getDirection();let u=et(`[id="${t}"]`),{look:h,theme:d,themeVariables:f}=Ae(),{useGradient:p,gradientStart:m,gradientStop:g,filterColor:y}=f;if(p){let x=u.append("defs").append("linearGradient").attr("id",t+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");x.append("stop").attr("offset","0%").attr("stop-color",m).attr("stop-opacity",1),x.append("stop").attr("offset","100%").attr("stop-color",g).attr("stop-opacity",1)}h==="neo"&&nL.has(d??"")&&u.append("defs").append("filter").attr("id",t+"-drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",y);let v=0;l.forEach((x,b)=>{let T=GDe(x.name),k=u.append("g"),C=k.insert("g").attr("class","branchLabel"),w=C.insert("g").attr("class","label branch-label");w.node()?.appendChild(T);let S=T.getBBox();v=N3t(x.name,v,b,S,s),w.remove(),C.remove(),k.remove()}),zDe(u,Iw,!1,a),a.showBranches&&M3t(u,l,a,t),I3t(u,Iw),zDe(u,Iw,!0,a),Zt.insertTitle(u,"gitTitleText",a.titleTopMargin??0,i.getDiagramTitle()),hb(void 0,u,a.diagramPadding,a.useMaxWidth)},"draw"),WDe={draw:P3t}});var HDe,UDe,O3t,B3t,$3t,F3t,z3t,G3t,V3t,W3t,YDe,jDe=F(()=>{"use strict";ur();HDe=8,UDe=new Set(["redux","redux-dark","redux-color","redux-dark-color"]),O3t=new Set(["redux-color","redux-dark-color"]),B3t=new Set(["neo","neo-dark"]),$3t=new Set(["dark","redux-dark","redux-dark-color","neo-dark"]),F3t=new Set(["redux","redux-dark","redux-color","redux-dark-color","neo","neo-dark"]),z3t=o(e=>{let{svgId:t}=e,r="";if(e.useGradient&&t)for(let n=0;n{let t=_t(),{theme:r,themeVariables:n}=t,{borderColorArray:i}=n,a=UDe.has(r);if(B3t.has(r)){let s="";for(let l=0;l`${Array.from({length:e.THEME_COLOR_LIMIT},(t,r)=>r).map(t=>{let r=t%HDe;return` + .branch-label${t} { fill: ${e["gitBranchLabel"+r]}; } + .commit${t} { stroke: ${e["git"+r]}; fill: ${e["git"+r]}; } + .commit-highlight${t} { stroke: ${e["gitInv"+r]}; fill: ${e["gitInv"+r]}; } + .label${t} { fill: ${e["git"+r]}; } + .arrow${t} { stroke: ${e["git"+r]}; } + `}).join(` +`)}`,"normalTheme"),W3t=o(e=>{let t=_t(),{theme:r}=t,n=F3t.has(r);return` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + + ${n?G3t(e):V3t(e)} + + .branch { + stroke-width: ${e.strokeWidth}; + stroke: ${e.commitLineColor??e.lineColor}; + stroke-dasharray: ${n?"4 2":"2"}; + } + .commit-label { font-size: ${e.commitLabelFontSize}; fill: ${n?e.nodeBorder:e.commitLabelColor}; ${n?`font-weight:${e.noteFontWeight};`:""}} + .commit-label-bkg { font-size: ${e.commitLabelFontSize}; fill: ${n?"transparent":e.commitLabelBackground}; opacity: ${n?"":.5}; } + .tag-label { font-size: ${e.tagLabelFontSize}; fill: ${e.tagLabelColor};} + .tag-label-bkg { fill: ${n?e.mainBkg:e.tagLabelBackground}; stroke: ${n?e.nodeBorder:e.tagLabelBorder}; ${n?`filter:${e.dropShadow}`:""} } + .tag-hole { fill: ${e.textColor}; } + + .commit-merge { + stroke: ${n?e.mainBkg:e.primaryColor}; + fill: ${n?e.mainBkg:e.primaryColor}; + } + .commit-reverse { + stroke: ${n?e.mainBkg:e.primaryColor}; + fill: ${n?e.mainBkg:e.primaryColor}; + stroke-width: ${n?e.strokeWidth:3}; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${n?e.mainBkg:e.primaryColor}; + fill: ${n?e.mainBkg:e.primaryColor}; + } + + .arrow { + /* Intentional: neo themes keep the bold 8px arrow (like classic themes); only redux-geometry themes use the thinner options.strokeWidth. */ + stroke-width: ${UDe.has(r)?e.strokeWidth:8}; + stroke-linecap: round; + fill: none + } + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } +`},"getStyles"),YDe=W3t});var XDe={};ir(XDe,{diagram:()=>q3t});var q3t,KDe=F(()=>{"use strict";FDe();gU();qDe();jDe();q3t={parser:$De,db:eL,renderer:WDe,styles:YDe}});var xU,JDe,e7e=F(()=>{"use strict";xU=(function(){var e=o(function(A,M,D,P){for(D=D||{},P=A.length;P--;D[A[P]]=M);return D},"o"),t=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],r=[1,26],n=[1,27],i=[1,28],a=[1,29],s=[1,30],l=[1,31],u=[1,32],h=[1,33],d=[1,34],f=[1,9],p=[1,10],m=[1,11],g=[1,12],y=[1,13],v=[1,14],x=[1,15],b=[1,16],T=[1,19],k=[1,20],C=[1,21],w=[1,22],S=[1,23],R=[1,25],L=[1,35],N={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:o(function(M,D,P,B,O,$,V){var G=$.length-1;switch(O){case 1:return $[G-1];case 2:this.$=[];break;case 3:$[G-1].push($[G]),this.$=$[G-1];break;case 4:case 5:this.$=$[G];break;case 6:case 7:this.$=[];break;case 8:B.setWeekday("monday");break;case 9:B.setWeekday("tuesday");break;case 10:B.setWeekday("wednesday");break;case 11:B.setWeekday("thursday");break;case 12:B.setWeekday("friday");break;case 13:B.setWeekday("saturday");break;case 14:B.setWeekday("sunday");break;case 15:B.setWeekend("friday");break;case 16:B.setWeekend("saturday");break;case 17:B.setDateFormat($[G].substr(11)),this.$=$[G].substr(11);break;case 18:B.enableInclusiveEndDates(),this.$=$[G].substr(18);break;case 19:B.TopAxis(),this.$=$[G].substr(8);break;case 20:B.setAxisFormat($[G].substr(11)),this.$=$[G].substr(11);break;case 21:B.setTickInterval($[G].substr(13)),this.$=$[G].substr(13);break;case 22:B.setExcludes($[G].substr(9)),this.$=$[G].substr(9);break;case 23:B.setIncludes($[G].substr(9)),this.$=$[G].substr(9);break;case 24:B.setTodayMarker($[G].substr(12)),this.$=$[G].substr(12);break;case 27:B.setDiagramTitle($[G].substr(6)),this.$=$[G].substr(6);break;case 28:this.$=$[G].trim(),B.setAccTitle(this.$);break;case 29:case 30:this.$=$[G].trim(),B.setAccDescription(this.$);break;case 31:B.addSection($[G].substr(8)),this.$=$[G].substr(8);break;case 33:B.addTask($[G-1],$[G]),this.$="task";break;case 34:this.$=$[G-1],B.setClickEvent($[G-1],$[G],null);break;case 35:this.$=$[G-2],B.setClickEvent($[G-2],$[G-1],$[G]);break;case 36:this.$=$[G-2],B.setClickEvent($[G-2],$[G-1],null),B.setLink($[G-2],$[G]);break;case 37:this.$=$[G-3],B.setClickEvent($[G-3],$[G-2],$[G-1]),B.setLink($[G-3],$[G]);break;case 38:this.$=$[G-2],B.setClickEvent($[G-2],$[G],null),B.setLink($[G-2],$[G-1]);break;case 39:this.$=$[G-3],B.setClickEvent($[G-3],$[G-1],$[G]),B.setLink($[G-3],$[G-2]);break;case 40:this.$=$[G-1],B.setLink($[G-1],$[G]);break;case 41:case 47:this.$=$[G-1]+" "+$[G];break;case 42:case 43:case 45:this.$=$[G-2]+" "+$[G-1]+" "+$[G];break;case 44:case 46:this.$=$[G-3]+" "+$[G-2]+" "+$[G-1]+" "+$[G];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:d,22:f,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:k,33:C,35:w,36:S,37:24,38:R,40:L},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:36,11:17,12:r,13:n,14:i,15:a,16:s,17:l,18:u,19:18,20:h,21:d,22:f,23:p,24:m,25:g,26:y,27:v,28:x,29:b,30:T,31:k,33:C,35:w,36:S,37:24,38:R,40:L},e(t,[2,5]),e(t,[2,6]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,20]),e(t,[2,21]),e(t,[2,22]),e(t,[2,23]),e(t,[2,24]),e(t,[2,25]),e(t,[2,26]),e(t,[2,27]),{32:[1,37]},{34:[1,38]},e(t,[2,30]),e(t,[2,31]),e(t,[2,32]),{39:[1,39]},e(t,[2,8]),e(t,[2,9]),e(t,[2,10]),e(t,[2,11]),e(t,[2,12]),e(t,[2,13]),e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),{41:[1,40],43:[1,41]},e(t,[2,4]),e(t,[2,28]),e(t,[2,29]),e(t,[2,33]),e(t,[2,34],{42:[1,42],43:[1,43]}),e(t,[2,40],{41:[1,44]}),e(t,[2,35],{43:[1,45]}),e(t,[2,36]),e(t,[2,38],{42:[1,46]}),e(t,[2,37]),e(t,[2,39])],defaultActions:{},parseError:o(function(M,D){if(D.recoverable)this.trace(M);else{var P=new Error(M);throw P.hash=D,P}},"parseError"),parse:o(function(M){var D=this,P=[0],B=[],O=[null],$=[],V=this.table,G="",z=0,W=0,H=0,j=2,Q=1,U=$.slice.call(arguments,1),oe=Object.create(this.lexer),te={yy:{}};for(var le in this.yy)Object.prototype.hasOwnProperty.call(this.yy,le)&&(te.yy[le]=this.yy[le]);oe.setInput(M,te.yy),te.yy.lexer=oe,te.yy.parser=this,typeof oe.yylloc>"u"&&(oe.yylloc={});var ie=oe.yylloc;$.push(ie);var ae=oe.options&&oe.options.ranges;typeof te.yy.parseError=="function"?this.parseError=te.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Re(we){P.length=P.length-2*we,O.length=O.length-we,$.length=$.length-we}o(Re,"popStack");function be(){var we;return we=B.pop()||oe.lex()||Q,typeof we!="number"&&(we instanceof Array&&(B=we,we=B.pop()),we=D.symbols_[we]||we),we}o(be,"lex");for(var Pe,Ge,Oe,ue,ye,ke,ce={},re,J,se,ge;;){if(Oe=P[P.length-1],this.defaultActions[Oe]?ue=this.defaultActions[Oe]:((Pe===null||typeof Pe>"u")&&(Pe=be()),ue=V[Oe]&&V[Oe][Pe]),typeof ue>"u"||!ue.length||!ue[0]){var Te="";ge=[];for(re in V[Oe])this.terminals_[re]&&re>j&&ge.push("'"+this.terminals_[re]+"'");oe.showPosition?Te="Parse error on line "+(z+1)+`: +`+oe.showPosition()+` +Expecting `+ge.join(", ")+", got '"+(this.terminals_[Pe]||Pe)+"'":Te="Parse error on line "+(z+1)+": Unexpected "+(Pe==Q?"end of input":"'"+(this.terminals_[Pe]||Pe)+"'"),this.parseError(Te,{text:oe.match,token:this.terminals_[Pe]||Pe,line:oe.yylineno,loc:ie,expected:ge})}if(ue[0]instanceof Array&&ue.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Oe+", token: "+Pe);switch(ue[0]){case 1:P.push(Pe),O.push(oe.yytext),$.push(oe.yylloc),P.push(ue[1]),Pe=null,Ge?(Pe=Ge,Ge=null):(W=oe.yyleng,G=oe.yytext,z=oe.yylineno,ie=oe.yylloc,H>0&&H--);break;case 2:if(J=this.productions_[ue[1]][1],ce.$=O[O.length-J],ce._$={first_line:$[$.length-(J||1)].first_line,last_line:$[$.length-1].last_line,first_column:$[$.length-(J||1)].first_column,last_column:$[$.length-1].last_column},ae&&(ce._$.range=[$[$.length-(J||1)].range[0],$[$.length-1].range[1]]),ke=this.performAction.apply(ce,[G,W,z,te.yy,ue[1],O,$].concat(U)),typeof ke<"u")return ke;J&&(P=P.slice(0,-1*J*2),O=O.slice(0,-1*J),$=$.slice(0,-1*J)),P.push(this.productions_[ue[1]][0]),O.push(ce.$),$.push(ce._$),se=V[P[P.length-2]][P[P.length-1]],P.push(se);break;case 3:return!0}}return!0},"parse")},I=(function(){var A={EOF:1,parseError:o(function(D,P){if(this.yy.parser)this.yy.parser.parseError(D,P);else throw new Error(D)},"parseError"),setInput:o(function(M,D){return this.yy=D||this.yy||{},this._input=M,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var M=this._input[0];this.yytext+=M,this.yyleng++,this.offset++,this.match+=M,this.matched+=M;var D=M.match(/(?:\r\n?|\n).*/g);return D?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),M},"input"),unput:o(function(M){var D=M.length,P=M.split(/(?:\r\n?|\n)/g);this._input=M+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-D),this.offset-=D;var B=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),P.length-1&&(this.yylineno-=P.length-1);var O=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:P?(P.length===B.length?this.yylloc.first_column:0)+B[B.length-P.length].length-P[0].length:this.yylloc.first_column-D},this.options.ranges&&(this.yylloc.range=[O[0],O[0]+this.yyleng-D]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(M){this.unput(this.match.slice(M))},"less"),pastInput:o(function(){var M=this.matched.substr(0,this.matched.length-this.match.length);return(M.length>20?"...":"")+M.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var M=this.match;return M.length<20&&(M+=this._input.substr(0,20-M.length)),(M.substr(0,20)+(M.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var M=this.pastInput(),D=new Array(M.length+1).join("-");return M+this.upcomingInput()+` +`+D+"^"},"showPosition"),test_match:o(function(M,D){var P,B,O;if(this.options.backtrack_lexer&&(O={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(O.yylloc.range=this.yylloc.range.slice(0))),B=M[0].match(/(?:\r\n?|\n).*/g),B&&(this.yylineno+=B.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:B?B[B.length-1].length-B[B.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+M[0].length},this.yytext+=M[0],this.match+=M[0],this.matches=M,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(M[0].length),this.matched+=M[0],P=this.performAction.call(this,this.yy,this,D,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),P)return P;if(this._backtrack){for(var $ in O)this[$]=O[$];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var M,D,P,B;this._more||(this.yytext="",this.match="");for(var O=this._currentRules(),$=0;$D[0].length)){if(D=P,B=$,this.options.backtrack_lexer){if(M=this.test_match(P,O[$]),M!==!1)return M;if(this._backtrack){D=!1;continue}else return!1}else if(!this.options.flex)break}return D?(M=this.test_match(D,O[B]),M!==!1?M:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var D=this.next();return D||this.lex()},"lex"),begin:o(function(D){this.conditionStack.push(D)},"begin"),popState:o(function(){var D=this.conditionStack.length-1;return D>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(D){return D=this.conditionStack.length-1-Math.abs(D||0),D>=0?this.conditionStack[D]:"INITIAL"},"topState"),pushState:o(function(D){this.begin(D)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(D,P,B,O){var $=O;switch(B){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return A})();N.lexer=I;function _(){this.yy={}}return o(_,"Parser"),_.prototype=N,N.Parser=_,new _})();xU.parser=xU;JDe=xU});var t7e=Io((bU,TU)=>{"use strict";(function(e,t){typeof bU=="object"&&typeof TU<"u"?TU.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_isoWeek=t()})(bU,(function(){"use strict";var e="day";return function(t,r,n){var i=o(function(l){return l.add(4-l.isoWeekday(),e)},"a"),a=r.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(l){if(!this.$utils().u(l))return this.add(7*(l-this.isoWeek()),e);var u,h,d,f,p=i(this),m=(u=this.isoWeekYear(),h=this.$u,d=(h?n.utc:n)().year(u).startOf("year"),f=4-d.isoWeekday(),d.isoWeekday()>4&&(f+=7),d.add(f,e));return p.diff(m,"week")+1},a.isoWeekday=function(l){return this.$utils().u(l)?this.day()||7:this.day(this.day()%7?l:l-7)};var s=a.startOf;a.startOf=function(l,u){var h=this.$utils(),d=!!h.u(u)||u;return h.p(l)==="isoweek"?d?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(l,u)}}}))});var r7e=Io((CU,wU)=>{"use strict";(function(e,t){typeof CU=="object"&&typeof wU<"u"?wU.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_customParseFormat=t()})(CU,(function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,n=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,s={},l=o(function(g){return(g=+g)+(g>68?1900:2e3)},"a"),u=o(function(g){return function(y){this[g]=+y}},"f"),h=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=(function(y){if(!y||y==="Z")return 0;var v=y.match(/([+-]|\d\d)/g),x=60*v[1]+(+v[2]||0);return x===0?0:v[0]==="+"?-x:x})(g)}],d=o(function(g){var y=s[g];return y&&(y.indexOf?y:y.s.concat(y.f))},"u"),f=o(function(g,y){var v,x=s.meridiem;if(x){for(var b=1;b<=24;b+=1)if(g.indexOf(x(b,0,y))>-1){v=b>12;break}}else v=g===(y?"pm":"PM");return v},"d"),p={A:[a,function(g){this.afternoon=f(g,!1)}],a:[a,function(g){this.afternoon=f(g,!0)}],Q:[r,function(g){this.month=3*(g-1)+1}],S:[r,function(g){this.milliseconds=100*+g}],SS:[n,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[i,u("seconds")],ss:[i,u("seconds")],m:[i,u("minutes")],mm:[i,u("minutes")],H:[i,u("hours")],h:[i,u("hours")],HH:[i,u("hours")],hh:[i,u("hours")],D:[i,u("day")],DD:[n,u("day")],Do:[a,function(g){var y=s.ordinal,v=g.match(/\d+/);if(this.day=v[0],y)for(var x=1;x<=31;x+=1)y(x).replace(/\[|\]/g,"")===g&&(this.day=x)}],w:[i,u("week")],ww:[n,u("week")],M:[i,u("month")],MM:[n,u("month")],MMM:[a,function(g){var y=d("months"),v=(d("monthsShort")||y.map((function(x){return x.slice(0,3)}))).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var y=d("months").indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],Y:[/[+-]?\d+/,u("year")],YY:[n,function(g){this.year=l(g)}],YYYY:[/\d{4}/,u("year")],Z:h,ZZ:h};function m(g){var y,v;y=g,v=s&&s.formats;for(var x=(g=y.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(R,L,N){var I=N&&N.toUpperCase();return L||v[N]||e[N]||v[I].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(_,A,M){return A||M.slice(1)}))}))).match(t),b=x.length,T=0;T-1)return new Date((P==="X"?1e3:1)*D);var $=m(P)(D),V=$.year,G=$.month,z=$.day,W=$.hours,H=$.minutes,j=$.seconds,Q=$.milliseconds,U=$.zone,oe=$.week,te=new Date,le=z||(V||G?1:te.getDate()),ie=V||te.getFullYear(),ae=0;V&&!G||(ae=G>0?G-1:te.getMonth());var Re,be=W||0,Pe=H||0,Ge=j||0,Oe=Q||0;return U?new Date(Date.UTC(ie,ae,le,be,Pe,Ge,Oe+60*U.offset*1e3)):B?new Date(Date.UTC(ie,ae,le,be,Pe,Ge,Oe)):(Re=new Date(ie,ae,le,be,Pe,Ge,Oe),oe&&(Re=O(Re).week(oe).toDate()),Re)}catch{return new Date("")}})(k,S,C,v),this.init(),I&&I!==!0&&(this.$L=this.locale(I).$L),N&&k!=this.format(S)&&(this.$d=new Date("")),s={}}else if(S instanceof Array)for(var _=S.length,A=1;A<=_;A+=1){w[1]=S[A-1];var M=v.apply(this,w);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}A===_&&(this.$d=new Date(""))}else b.call(this,T)}}}))});var n7e=Io((kU,SU)=>{"use strict";(function(e,t){typeof kU=="object"&&typeof SU<"u"?SU.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_advancedFormat=t()})(kU,(function(){"use strict";return function(e,t){var r=t.prototype,n=r.format;r.format=function(i){var a=this,s=this.$locale();if(!this.isValid())return n.bind(this)(i);var l=this.$utils(),u=(i||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(h){switch(h){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return s.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return s.ordinal(a.week(),"W");case"w":case"ww":return l.s(a.week(),h==="w"?1:2,"0");case"W":case"WW":return l.s(a.isoWeek(),h==="W"?1:2,"0");case"k":case"kk":return l.s(String(a.$H===0?24:a.$H),h==="k"?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return h}}));return n.bind(this)(u)}}}))});function b7e(e,t,r){let n=!0;for(;n;)n=!1,r.forEach(function(i){let a="^\\s*"+i+"\\s*$",s=new RegExp(a);e[0].match(s)&&(t[i]=!0,e.shift(1),n=!0)})}var s7e,el,o7e,l7e,c7e,i7e,qu,_U,LU,DU,jv,Xv,IU,MU,sL,Kv,NU,u7e,PU,Uv,Nw,OU,BU,oL,EU,j3t,X3t,K3t,Z3t,Q3t,J3t,e5t,t5t,r5t,n5t,i5t,a5t,s5t,o5t,l5t,c5t,h7e,u5t,h5t,d5t,f5t,p5t,m5t,g5t,y5t,d7e,v5t,x5t,b5t,f7e,T5t,AU,p7e,m7e,iL,Yv,C5t,w5t,RU,aL,fa,g7e,k5t,C0,S5t,a7e,E5t,y7e,A5t,v7e,R5t,_5t,x7e,T7e=F(()=>{"use strict";s7e=Xs(Ly(),1),el=Xs(vk(),1),o7e=Xs(t7e(),1),l7e=Xs(r7e(),1),c7e=Xs(n7e(),1);vt();Xt();Qt();Nn();el.default.extend(o7e.default);el.default.extend(l7e.default);el.default.extend(c7e.default);i7e={friday:5,saturday:6},qu="",_U="",DU="",jv=[],Xv=[],IU=new Map,MU=[],sL=[],Kv="",NU="",u7e=["active","done","crit","milestone","vert"],PU=[],Uv="",Nw=!1,OU=!1,BU="sunday",oL="saturday",EU=0,j3t=o(function(){MU=[],sL=[],Kv="",PU=[],iL=0,RU=void 0,aL=void 0,fa=[],qu="",_U="",NU="",LU=void 0,DU="",jv=[],Xv=[],Nw=!1,OU=!1,EU=0,IU=new Map,Uv="",yr(),BU="sunday",oL="saturday"},"clear"),X3t=o(function(e){Uv=e},"setDiagramId"),K3t=o(function(e){_U=e},"setAxisFormat"),Z3t=o(function(){return _U},"getAxisFormat"),Q3t=o(function(e){LU=e},"setTickInterval"),J3t=o(function(){return LU},"getTickInterval"),e5t=o(function(e){DU=e},"setTodayMarker"),t5t=o(function(){return DU},"getTodayMarker"),r5t=o(function(e){qu=e},"setDateFormat"),n5t=o(function(){Nw=!0},"enableInclusiveEndDates"),i5t=o(function(){return Nw},"endDatesAreInclusive"),a5t=o(function(){OU=!0},"enableTopAxis"),s5t=o(function(){return OU},"topAxisEnabled"),o5t=o(function(e){NU=e},"setDisplayMode"),l5t=o(function(){return NU},"getDisplayMode"),c5t=o(function(){return qu},"getDateFormat"),h7e=o((e,t)=>{let r=t.toLowerCase().split(/[\s,]+/).filter(n=>n!=="");return[...new Set([...e,...r])]},"mergeTokens"),u5t=o(function(e){jv=h7e(jv,e)},"setIncludes"),h5t=o(function(){return jv},"getIncludes"),d5t=o(function(e){Xv=h7e(Xv,e)},"setExcludes"),f5t=o(function(){return Xv},"getExcludes"),p5t=o(function(){return IU},"getLinks"),m5t=o(function(e){Kv=e,MU.push(e)},"addSection"),g5t=o(function(){return MU},"getSections"),y5t=o(function(){let e=a7e(),t=10,r=0;for(;!e&&rl))throw new Error("Failed to find a valid date that was not excluded by `excludes` after 10,000 iterations.");e=e.add(1,"d")}return[t,s]},"fixTaskDates"),AU=o(function(e,t,r){if(r=r.trim(),o(l=>{let u=l.trim();return u==="x"||u==="X"},"isTimestampFormat")(t)&&/^\d+$/.test(r))return new Date(Number(r));let a=/^after\s+(?[\d\w- ]+)/.exec(r);if(a!==null){let l=null;for(let h of a.groups.ids.split(" ")){let d=C0(h);d!==void 0&&(!l||d.endTime>l.endTime)&&(l=d)}if(l)return l.endTime;let u=new Date;return u.setHours(0,0,0,0),u}let s=(0,el.default)(r,t.trim(),!0);if(s.isValid())return s.toDate();{Z.debug("Invalid date:"+r),Z.debug("With date format:"+t.trim());let l=new Date(r);if(l===void 0||isNaN(l.getTime())||l.getFullYear()<-1e4||l.getFullYear()>1e4)throw new Error("Invalid date:"+r);return l}},"getStartDate"),p7e=o(function(e){let t=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(e.trim());return t!==null?[Number.parseFloat(t[1]),t[2]]:[NaN,"ms"]},"parseDuration"),m7e=o(function(e,t,r,n=!1){r=r.trim();let a=/^until\s+(?[\d\w- ]+)/.exec(r);if(a!==null){let d=null;for(let p of a.groups.ids.split(" ")){let m=C0(p);m!==void 0&&(!d||m.startTime{window.open(r,"_self")}),IU.set(n,r))}),y7e(e,"clickable")},"setLink"),y7e=o(function(e,t){e.split(",").forEach(function(r){let n=C0(r);n!==void 0&&n.classes.push(t)})},"setClass"),A5t=o(function(e,t,r){if(Ae().securityLevel!=="loose"||t===void 0)return;let n=[];if(typeof r=="string"){n=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let a=0;a{Zt.runFunc(t,...n)})},"setClickFun"),v7e=o(function(e,t){PU.push(function(){let r=Uv?`${Uv}-${e}`:e,n=document.querySelector(`[id="${r}"]`);n!==null&&n.addEventListener("click",function(){t()})},function(){let r=Uv?`${Uv}-${e}`:e,n=document.querySelector(`[id="${r}-text"]`);n!==null&&n.addEventListener("click",function(){t()})})},"pushFun"),R5t=o(function(e,t,r){e.split(",").forEach(function(n){A5t(n,t,r)}),y7e(e,"clickable")},"setClickEvent"),_5t=o(function(e){PU.forEach(function(t){t(e)})},"bindFunctions"),x7e={getConfig:o(()=>Ae().gantt,"getConfig"),clear:j3t,setDateFormat:r5t,getDateFormat:c5t,enableInclusiveEndDates:n5t,endDatesAreInclusive:i5t,enableTopAxis:a5t,topAxisEnabled:s5t,setAxisFormat:K3t,getAxisFormat:Z3t,setTickInterval:Q3t,getTickInterval:J3t,setTodayMarker:e5t,getTodayMarker:t5t,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,setDiagramId:X3t,setDisplayMode:o5t,getDisplayMode:l5t,setAccDescription:Rr,getAccDescription:_r,addSection:m5t,getSections:g5t,getTasks:y5t,addTask:k5t,findTaskById:C0,addTaskOrg:S5t,setIncludes:u5t,getIncludes:h5t,setExcludes:d5t,getExcludes:f5t,setClickEvent:R5t,setLink:E5t,getLinks:p5t,bindFunctions:_5t,parseDuration:p7e,isInvalidDate:d7e,setWeekday:v5t,getWeekday:x5t,setWeekend:b5t};o(b7e,"getTaskTags")});var C7e=Io(($U,FU)=>{"use strict";(function(e,t){typeof $U=="object"&&typeof FU<"u"?FU.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs_plugin_duration=t()})($U,(function(){"use strict";var e,t,r=1e3,n=6e4,i=36e5,a=864e5,s=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,l=31536e6,u=2628e6,h=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:l,months:u,days:a,hours:i,minutes:n,seconds:r,milliseconds:1,weeks:6048e5},f=o(function(k){return k instanceof b},"c"),p=o(function(k,C,w){return new b(k,w,C.$l)},"f"),m=o(function(k){return t.p(k)+"s"},"m"),g=o(function(k){return k<0},"l"),y=o(function(k){return g(k)?Math.ceil(k):Math.floor(k)},"$"),v=o(function(k){return Math.abs(k)},"y"),x=o(function(k,C){return k?g(k)?{negative:!0,format:""+v(k)+C}:{negative:!1,format:""+k+C}:{negative:!1,format:""}},"v"),b=(function(){function k(w,S,R){var L=this;if(this.$d={},this.$l=R,w===void 0&&(this.$ms=0,this.parseFromMilliseconds()),S)return p(w*d[m(S)],this);if(typeof w=="number")return this.$ms=w,this.parseFromMilliseconds(),this;if(typeof w=="object")return Object.keys(w).forEach((function(_){L.$d[m(_)]=w[_]})),this.calMilliseconds(),this;if(typeof w=="string"){var N=w.match(h);if(N){var I=N.slice(2).map((function(_){return _!=null?Number(_):0}));return this.$d.years=I[0],this.$d.months=I[1],this.$d.weeks=I[2],this.$d.days=I[3],this.$d.hours=I[4],this.$d.minutes=I[5],this.$d.seconds=I[6],this.calMilliseconds(),this}}return this}o(k,"l");var C=k.prototype;return C.calMilliseconds=function(){var w=this;this.$ms=Object.keys(this.$d).reduce((function(S,R){return S+(w.$d[R]||0)*d[R]}),0)},C.parseFromMilliseconds=function(){var w=this.$ms;this.$d.years=y(w/l),w%=l,this.$d.months=y(w/u),w%=u,this.$d.days=y(w/a),w%=a,this.$d.hours=y(w/i),w%=i,this.$d.minutes=y(w/n),w%=n,this.$d.seconds=y(w/r),w%=r,this.$d.milliseconds=w},C.toISOString=function(){var w=x(this.$d.years,"Y"),S=x(this.$d.months,"M"),R=+this.$d.days||0;this.$d.weeks&&(R+=7*this.$d.weeks);var L=x(R,"D"),N=x(this.$d.hours,"H"),I=x(this.$d.minutes,"M"),_=this.$d.seconds||0;this.$d.milliseconds&&(_+=this.$d.milliseconds/1e3,_=Math.round(1e3*_)/1e3);var A=x(_,"S"),M=w.negative||S.negative||L.negative||N.negative||I.negative||A.negative,D=N.format||I.format||A.format?"T":"",P=(M?"-":"")+"P"+w.format+S.format+L.format+D+N.format+I.format+A.format;return P==="P"||P==="-P"?"P0D":P},C.toJSON=function(){return this.toISOString()},C.format=function(w){var S=w||"YYYY-MM-DDTHH:mm:ss",R={Y:this.$d.years,YY:t.s(this.$d.years,2,"0"),YYYY:t.s(this.$d.years,4,"0"),M:this.$d.months,MM:t.s(this.$d.months,2,"0"),D:this.$d.days,DD:t.s(this.$d.days,2,"0"),H:this.$d.hours,HH:t.s(this.$d.hours,2,"0"),m:this.$d.minutes,mm:t.s(this.$d.minutes,2,"0"),s:this.$d.seconds,ss:t.s(this.$d.seconds,2,"0"),SSS:t.s(this.$d.milliseconds,3,"0")};return S.replace(s,(function(L,N){return N||String(R[L])}))},C.as=function(w){return this.$ms/d[m(w)]},C.get=function(w){var S=this.$ms,R=m(w);return R==="milliseconds"?S%=1e3:S=R==="weeks"?y(S/d[R]):this.$d[R],S||0},C.add=function(w,S,R){var L;return L=S?w*d[m(S)]:f(w)?w.$ms:p(w,this).$ms,p(this.$ms+L*(R?-1:1),this)},C.subtract=function(w,S){return this.add(w,S,!0)},C.locale=function(w){var S=this.clone();return S.$l=w,S},C.clone=function(){return p(this.$ms,this)},C.humanize=function(w){return e().add(this.$ms,"ms").locale(this.$l).fromNow(!w)},C.valueOf=function(){return this.asMilliseconds()},C.milliseconds=function(){return this.get("milliseconds")},C.asMilliseconds=function(){return this.as("milliseconds")},C.seconds=function(){return this.get("seconds")},C.asSeconds=function(){return this.as("seconds")},C.minutes=function(){return this.get("minutes")},C.asMinutes=function(){return this.as("minutes")},C.hours=function(){return this.get("hours")},C.asHours=function(){return this.as("hours")},C.days=function(){return this.get("days")},C.asDays=function(){return this.as("days")},C.weeks=function(){return this.get("weeks")},C.asWeeks=function(){return this.as("weeks")},C.months=function(){return this.get("months")},C.asMonths=function(){return this.as("months")},C.years=function(){return this.get("years")},C.asYears=function(){return this.as("years")},k})(),T=o(function(k,C,w){return k.add(C.years()*w,"y").add(C.months()*w,"M").add(C.days()*w,"d").add(C.hours()*w,"h").add(C.minutes()*w,"m").add(C.seconds()*w,"s").add(C.milliseconds()*w,"ms")},"p");return function(k,C,w){e=w,t=w().$utils(),w.duration=function(L,N){var I=w.locale();return p(L,{$l:I},N)},w.isDuration=f;var S=C.prototype.add,R=C.prototype.subtract;C.prototype.add=function(L,N){return f(L)?T(this,L,1):S.bind(this)(L,N)},C.prototype.subtract=function(L,N){return f(L)?T(this,L,-1):R.bind(this)(L,N)}}}))});var Zv,k7e,L5t,w7e,D5t,ld,zU,I5t,S7e,E7e=F(()=>{"use strict";Zv=Xs(vk(),1),k7e=Xs(C7e(),1);vt();$r();Vr();Xt();$n();Zv.default.extend(k7e.default);L5t=o(function(){Z.debug("Something is calling, setConf, remove the call")},"setConf"),w7e={monday:Gd,tuesday:mE,wednesday:gE,thursday:Qc,friday:yE,saturday:vE,sunday:Zl},D5t=o((e,t)=>{let r=[...e].map(()=>-1/0),n=[...e].sort((a,s)=>a.startTime-s.startTime||a.order-s.order),i=0;for(let a of n)for(let s=0;s=r[s]){r[s]=a.endTime,a.order=s+t,s>i&&(i=s);break}return i},"getMaxIntersections"),zU=1e4,I5t=o(function(e,t,r,n){let i=Ae().gantt;n.db.setDiagramId(t);let a=Ae().securityLevel,s;a==="sandbox"&&(s=et("#i"+t));let l=a==="sandbox"?et(s.nodes()[0].contentDocument.body):et("body"),u=a==="sandbox"?s.nodes()[0].contentDocument:document,h=u.getElementById(t);ld=h.parentElement.offsetWidth,ld===void 0&&(ld=1200),i.useWidth!==void 0&&(ld=i.useWidth);let d=n.db.getTasks(),f=d.filter(N=>!N.vert),p=[];for(let N of f)p.push(N.type);p=L(p);let m={},g=2*i.topPadding;if(n.db.getDisplayMode()==="compact"||i.displayMode==="compact"){let N={};for(let _ of f)N[_.section]===void 0?N[_.section]=[_]:N[_.section].push(_);let I=0;for(let _ of Object.keys(N)){let A=D5t(N[_],I)+1;I+=A,g+=A*(i.barHeight+i.barGap),m[_]=A}}else{g+=f.length*(i.barHeight+i.barGap);for(let N of p)m[N]=f.filter(I=>I.type===N).length}h.setAttribute("viewBox","0 0 "+ld+" "+g);let y=l.select(`[id="${t}"]`),v=TE().domain([ES(d,function(N){return N.startTime}),SS(d,function(N){return N.endTime})]).rangeRound([0,ld-i.leftPadding-i.rightPadding]);function x(N,I){let _=N.startTime,A=I.startTime,M=0;return _>A?M=1:_W.vert===H.vert?0:W.vert?1:-1);let B=N.filter(W=>!W.vert),$=[...new Set(B.map(W=>W.order))].map(W=>B.find(H=>H.order===W));y.append("g").selectAll("rect").data($).enter().append("rect").attr("x",0).attr("y",function(W,H){return H=W.order,H*I+_-2}).attr("width",function(){return P-i.rightPadding/2}).attr("height",I).attr("class",function(W){for(let[H,j]of p.entries())if(W.type===j)return"section section"+H%i.numberSectionStyles;return"section section0"}).enter();let V=y.append("g").selectAll("rect").data(N).enter(),G=n.db.getLinks();if(V.append("rect").attr("id",function(W){return t+"-"+W.id}).attr("rx",3).attr("ry",3).attr("x",function(W){return W.milestone?v(W.startTime)+A+.5*(v(W.endTime)-v(W.startTime))-.5*M:v(W.startTime)+A}).attr("y",function(W,H){return H=W.order,W.vert?i.gridLineStartPadding:H*I+_}).attr("width",function(W){return W.milestone?M:W.vert?.08*M:v(W.renderEndTime||W.endTime)-v(W.startTime)}).attr("height",function(W){return W.vert?B.length*(i.barHeight+i.barGap)+i.barHeight*2:M}).attr("transform-origin",function(W,H){return H=W.order,(v(W.startTime)+A+.5*(v(W.endTime)-v(W.startTime))).toString()+"px "+(H*I+_+.5*M).toString()+"px"}).attr("class",function(W){let H="task",j="";W.classes.length>0&&(j=W.classes.join(" "));let Q=0;for(let[oe,te]of p.entries())W.type===te&&(Q=oe%i.numberSectionStyles);let U="";return W.active?W.crit?U+=" activeCrit":U=" active":W.done?W.crit?U=" doneCrit":U=" done":W.crit&&(U+=" crit"),U.length===0&&(U=" task"),W.milestone&&(U=" milestone "+U),W.vert&&(U=" vert "+U),U+=Q,U+=" "+j,H+U}),V.append("text").attr("id",function(W){return t+"-"+W.id+"-text"}).text(function(W){return W.task}).attr("font-size",i.fontSize).attr("x",function(W){let H=v(W.startTime),j=v(W.renderEndTime||W.endTime);if(W.milestone&&(H+=.5*(v(W.endTime)-v(W.startTime))-.5*M,j=H+M),W.vert)return v(W.startTime)+A;let Q=this.getBBox().width;return Q>j-H?j+Q+1.5*i.leftPadding>P?H+A-5:j+A+5:(j-H)/2+H+A}).attr("y",function(W,H){return W.vert?i.gridLineStartPadding+B.length*(i.barHeight+i.barGap)+60:(H=W.order,H*I+i.barHeight/2+(i.fontSize/2-2)+_)}).attr("text-height",M).attr("class",function(W){let H=v(W.startTime),j=v(W.endTime);W.milestone&&(j=H+M);let Q=this.getBBox().width,U="";W.classes.length>0&&(U=W.classes.join(" "));let oe=0;for(let[le,ie]of p.entries())W.type===ie&&(oe=le%i.numberSectionStyles);let te="";return W.active&&(W.crit?te="activeCritText"+oe:te="activeText"+oe),W.done?W.crit?te=te+" doneCritText"+oe:te=te+" doneText"+oe:W.crit&&(te=te+" critText"+oe),W.milestone&&(te+=" milestoneText"),W.vert&&(te+=" vertText"),Q>j-H?j+Q+1.5*i.leftPadding>P?U+" taskTextOutsideLeft taskTextOutside"+oe+" "+te:U+" taskTextOutsideRight taskTextOutside"+oe+" "+te+" width-"+Q:U+" taskText taskText"+oe+" "+te+" width-"+Q}),Ae().securityLevel==="sandbox"){let W;W=et("#i"+t);let H=W.nodes()[0].contentDocument;V.filter(function(j){return G.has(j.id)}).each(function(j){var Q=H.querySelector("#"+CSS.escape(t+"-"+j.id)),U=H.querySelector("#"+CSS.escape(t+"-"+j.id+"-text"));let oe=Q.parentNode;var te=H.createElement("a");te.setAttribute("xlink:href",G.get(j.id)),te.setAttribute("target","_top"),oe.appendChild(te),te.appendChild(Q),te.appendChild(U)})}}o(T,"drawRects");function k(N,I,_,A,M,D,P,B){if(P.length===0&&B.length===0)return;let O,$;for(let{startTime:j,endTime:Q}of D)(O===void 0||j$)&&($=Q);if(!O||!$)return;if((0,Zv.default)($).diff((0,Zv.default)(O),"year")>5){Z.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let V=n.db.getDateFormat(),G=[],z=null,W=(0,Zv.default)(O);for(;W.valueOf()<=$;)n.db.isInvalidDate(W,V,P,B)?z?z.end=W:z={start:W,end:W}:z&&(G.push(z),z=null),W=W.add(1,"d");y.append("g").selectAll("rect").data(G).enter().append("rect").attr("id",j=>t+"-exclude-"+j.start.format("YYYY-MM-DD")).attr("x",j=>v(j.start.startOf("day"))+_).attr("y",i.gridLineStartPadding).attr("width",j=>v(j.end.endOf("day"))-v(j.start.startOf("day"))).attr("height",M-I-i.gridLineStartPadding).attr("transform-origin",function(j,Q){return(v(j.start)+_+.5*(v(j.end)-v(j.start))).toString()+"px "+(Q*N+.5*M).toString()+"px"}).attr("class","exclude-range")}o(k,"drawExcludeDays");function C(N,I,_,A){if(_<=0||N>I)return 1/0;let M=I-N,D=Zv.default.duration({[A??"day"]:_}).asMilliseconds();return D<=0?1/0:Math.ceil(M/D)}o(C,"getEstimatedTickCount");function w(N,I,_,A){let M=n.db.getDateFormat(),D=n.db.getAxisFormat(),P;D?P=D:M==="D"?P="%d":P=i.axisFormat??"%Y-%m-%d";let B=N8(v).tickSize(-A+I+i.gridLineStartPadding).tickFormat(um(P)),$=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||i.tickInterval);if($!==null){let V=parseInt($[1],10);if(isNaN(V)||V<=0)Z.warn(`Invalid tick interval value: "${$[1]}". Skipping custom tick interval.`);else{let G=$[2],z=n.db.getWeekday()||i.weekday,W=v.domain(),H=W[0],j=W[1],Q=C(H,j,V,G);if(Q>zU)Z.warn(`The tick interval "${V}${G}" would generate ${Q} ticks, which exceeds the maximum allowed (${zU}). This may indicate an invalid date or time range. Skipping custom tick interval.`);else switch(G){case"millisecond":B.ticks(Kc.every(V));break;case"second":B.ticks(Bo.every(V));break;case"minute":B.ticks(ph.every(V));break;case"hour":B.ticks(mh.every(V));break;case"day":B.ticks(hl.every(V));break;case"week":B.ticks(w7e[z].every(V));break;case"month":B.ticks(gh.every(V));break}}}if(y.append("g").attr("class","grid").attr("transform","translate("+N+", "+(A-50)+")").call(B).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),n.db.topAxisEnabled()||i.topAxis){let V=M8(v).tickSize(-A+I+i.gridLineStartPadding).tickFormat(um(P));if($!==null){let G=parseInt($[1],10);if(isNaN(G)||G<=0)Z.warn(`Invalid tick interval value: "${$[1]}". Skipping custom tick interval.`);else{let z=$[2],W=n.db.getWeekday()||i.weekday,H=v.domain(),j=H[0],Q=H[1];if(C(j,Q,G,z)<=zU)switch(z){case"millisecond":V.ticks(Kc.every(G));break;case"second":V.ticks(Bo.every(G));break;case"minute":V.ticks(ph.every(G));break;case"hour":V.ticks(mh.every(G));break;case"day":V.ticks(hl.every(G));break;case"week":V.ticks(w7e[W].every(G));break;case"month":V.ticks(gh.every(G));break}}}y.append("g").attr("class","grid").attr("transform","translate("+N+", "+I+")").call(V).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}o(w,"makeGrid");function S(N,I){let _=0,A=Object.keys(m).map(M=>[M,m[M]]);y.append("g").selectAll("text").data(A).enter().append(function(M){let D=M[0].split(xt.lineBreakRegex),P=-(D.length-1)/2,B=u.createElementNS("http://www.w3.org/2000/svg","text");B.setAttribute("dy",P+"em");for(let[O,$]of D.entries()){let V=u.createElementNS("http://www.w3.org/2000/svg","tspan");V.setAttribute("alignment-baseline","central"),V.setAttribute("x","10"),O>0&&V.setAttribute("dy","1em"),V.textContent=$,B.appendChild(V)}return B}).attr("x",10).attr("y",function(M,D){if(D>0)for(let P=0;P{"use strict";M5t=o(e=>` + .mermaid-main-font { + font-family: ${e.fontFamily}; + } + + .exclude-range { + fill: ${e.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${e.sectionBkgColor}; + } + + .section2 { + fill: ${e.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${e.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${e.titleColor}; + } + + .sectionTitle1 { + fill: ${e.titleColor}; + } + + .sectionTitle2 { + fill: ${e.titleColor}; + } + + .sectionTitle3 { + fill: ${e.titleColor}; + } + + .sectionTitle { + text-anchor: start; + font-family: ${e.fontFamily}; + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${e.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + } + + .grid .tick text { + font-family: ${e.fontFamily}; + fill: ${e.textColor}; + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${e.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: ${e.fontFamily}; + } + + .taskTextOutsideRight { + fill: ${e.taskTextDarkColor}; + text-anchor: start; + font-family: ${e.fontFamily}; + } + + .taskTextOutsideLeft { + fill: ${e.taskTextDarkColor}; + text-anchor: end; + } + + + /* Special case clickable */ + + .task.clickable { + cursor: pointer; + } + + .taskText.clickable { + cursor: pointer; + fill: ${e.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${e.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${e.taskTextClickableColor} !important; + font-weight: bold; + } + + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${e.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${e.taskBkgColor}; + stroke: ${e.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${e.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${e.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${e.activeTaskBkgColor}; + stroke: ${e.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${e.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${e.doneTaskBorderColor}; + fill: ${e.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${e.taskTextDarkColor} !important; + } + + /* Done task text displayed outside the bar sits against the diagram background, + not against the done-task bar, so it must use the outside/contrast color. */ + .doneText0.taskTextOutsideLeft, + .doneText0.taskTextOutsideRight, + .doneText1.taskTextOutsideLeft, + .doneText1.taskTextOutsideRight, + .doneText2.taskTextOutsideLeft, + .doneText2.taskTextOutsideRight, + .doneText3.taskTextOutsideLeft, + .doneText3.taskTextOutsideRight { + fill: ${e.taskTextOutsideColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${e.critBorderColor}; + fill: ${e.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${e.critBorderColor}; + fill: ${e.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${e.critBorderColor}; + fill: ${e.doneTaskBkgColor}; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; + } + + .milestone { + transform: rotate(45deg) scale(0.8,0.8); + } + + .milestoneText { + font-style: italic; + } + .doneCritText0, + .doneCritText1, + .doneCritText2, + .doneCritText3 { + fill: ${e.taskTextDarkColor} !important; + } + + /* Done-crit task text outside the bar \u2014 same reasoning as doneText above. */ + .doneCritText0.taskTextOutsideLeft, + .doneCritText0.taskTextOutsideRight, + .doneCritText1.taskTextOutsideLeft, + .doneCritText1.taskTextOutsideRight, + .doneCritText2.taskTextOutsideLeft, + .doneCritText2.taskTextOutsideRight, + .doneCritText3.taskTextOutsideLeft, + .doneCritText3.taskTextOutsideRight { + fill: ${e.taskTextOutsideColor} !important; + } + + .vert { + stroke: ${e.vertLineColor}; + } + + .vertText { + font-size: 15px; + text-anchor: middle; + fill: ${e.vertLineColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${e.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.titleColor||e.textColor}; + font-family: ${e.fontFamily}; + } +`,"getStyles"),A7e=M5t});var _7e={};ir(_7e,{diagram:()=>N5t});var N5t,L7e=F(()=>{"use strict";e7e();T7e();E7e();R7e();N5t={parser:JDe,db:x7e,renderer:S7e,styles:A7e}});var M7e,N7e=F(()=>{"use strict";Xa();vt();M7e={parse:o(async e=>{let t=await Si("info",e);Z.debug(t)},"parse")}});var $5t,F5t,P7e,O7e=F(()=>{"use strict";$5t={version:"11.16.0"},F5t=o(()=>$5t.version,"getVersion"),P7e={getVersion:F5t}});var xn,Ka=F(()=>{"use strict";$r();Xt();xn=o(e=>{let{securityLevel:t}=Ae(),r=et("body");if(t==="sandbox"){let a=et(`#i${e}`).node()?.contentDocument??document;r=et(a.body)}return r.select(`#${e}`)},"selectSvgElement")});var z5t,B7e,$7e=F(()=>{"use strict";vt();Ka();$n();z5t=o((e,t,r)=>{Z.debug(`rendering info diagram +`+e);let n=xn(t);Wr(n,100,400,!0),n.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${r}`)},"draw"),B7e={draw:z5t}});var F7e={};ir(F7e,{diagram:()=>G5t});var G5t,z7e=F(()=>{"use strict";N7e();O7e();$7e();G5t={parser:M7e,db:P7e,renderer:B7e}});var W7e,GU,lL,VU,q5t,H5t,U5t,Y5t,j5t,X5t,K5t,cL,WU=F(()=>{"use strict";vt();Nn();Wi();W7e=cr.pie,GU={sections:new Map,showData:!1,config:W7e},lL=GU.sections,VU=GU.showData,q5t=structuredClone(W7e),H5t=o(()=>structuredClone(q5t),"getConfig"),U5t=o(()=>{lL=new Map,VU=GU.showData,yr()},"clear"),Y5t=o(({label:e,value:t})=>{if(t<0)throw new Error(`"${e}" has invalid value: ${t}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);lL.has(e)||(lL.set(e,t),Z.debug(`added new section: ${e}, with value: ${t}`))},"addSection"),j5t=o(()=>lL,"getSections"),X5t=o(e=>{VU=e},"setShowData"),K5t=o(()=>VU,"getShowData"),cL={getConfig:H5t,clear:U5t,setDiagramTitle:Or,getDiagramTitle:Lr,setAccTitle:kr,getAccTitle:Ar,setAccDescription:Rr,getAccDescription:_r,addSection:Y5t,getSections:j5t,setShowData:X5t,getShowData:K5t}});var Z5t,q7e,H7e=F(()=>{"use strict";Xa();vt();Hs();WU();Z5t=o((e,t)=>{Gn(e,t),t.setShowData(e.showData),e.sections.map(t.addSection)},"populateDb"),q7e={parse:o(async e=>{let t=await Si("pie",e);Z.debug(t),Z5t(t,cL)},"parse")}});var Q5t,U7e,Y7e=F(()=>{"use strict";Q5t=o(e=>` + .pieCircle{ + stroke: ${e.pieStrokeColor}; + stroke-width : ${e.pieStrokeWidth}; + opacity : ${e.pieOpacity}; + } + .pieCircle.highlighted{ + scale: 1.05; + opacity: 1; + } + .pieCircle.highlightedOnHover:hover{ + transition-duration: 250ms; + scale: 1.05; + opacity: 1; + } + .pieOuterCircle{ + stroke: ${e.pieOuterStrokeColor}; + stroke-width: ${e.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${e.pieTitleTextSize}; + fill: ${e.pieTitleTextColor}; + font-family: ${e.fontFamily}; + } + .slice { + font-family: ${e.fontFamily}; + fill: ${e.pieSectionTextColor}; + font-size:${e.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${e.pieLegendTextColor}; + font-family: ${e.fontFamily}; + font-size: ${e.pieLegendTextSize}; + } +`,"getStyles"),U7e=Q5t});var J5t,eAt,j7e,X7e=F(()=>{"use strict";$r();Xt();vt();Ka();$n();Qt();J5t=o(e=>{let t=[...e.values()].reduce((i,a)=>i+a,0),r=[...e.entries()].map(([i,a])=>({label:i,value:a})).filter(i=>i.value/t*100>=1);return AE().value(i=>i.value).sort(null)(r)},"createPieArcs"),eAt=o((e,t,r,n)=>{Z.debug(`rendering pie chart +`+e);let i=n.db,a=Ae(),s=qr(i.getConfig(),a.pie),l=40,u=18,h=4,d=450,f=d,p=xn(t),m=p.append("g");m.attr("transform","translate("+f/2+","+d/2+")");let{themeVariables:g}=a,[y]=As(g.pieOuterStrokeWidth);y??=2;let v=s.legendPosition,x=s.textPosition,b=s.donutHole>0&&s.donutHole<=.9?s.donutHole:0,T=Math.min(f,d)/2-l,k=ec().innerRadius(b*T).outerRadius(T),C=ec().innerRadius(T*x).outerRadius(T*x),w=m.append("g");w.append("circle").attr("cx",0).attr("cy",0).attr("r",T+y/2).attr("class","pieOuterCircle");let S=i.getSections(),R=J5t(S),L=[g.pie1,g.pie2,g.pie3,g.pie4,g.pie5,g.pie6,g.pie7,g.pie8,g.pie9,g.pie10,g.pie11,g.pie12],N=0;S.forEach(U=>{N+=U});let I=R.filter(U=>(U.data.value/N*100).toFixed(0)!=="0"),_=Oo(L).domain([...S.keys()]);w.selectAll("mySlices").data(I).enter().append("path").attr("d",k).attr("fill",U=>_(U.data.label)).attr("class",U=>{let oe="pieCircle";return s.highlightSlice==="hover"?oe+=" highlightedOnHover":s.highlightSlice===U.data.label&&(oe+=" highlighted"),oe}),w.selectAll("mySlices").data(I).enter().append("text").text(U=>(U.data.value/N*100).toFixed(0)+"%").attr("transform",U=>"translate("+C.centroid(U)+")").style("text-anchor","middle").attr("class","slice");let A=m.append("text").text(i.getDiagramTitle()).attr("x",0).attr("y",-(d-50)/2).attr("class","pieTitleText"),M=[...S.entries()].map(([U,oe])=>({label:U,value:oe})),D=m.selectAll(".legend").data(M).enter().append("g").attr("class","legend");D.append("rect").attr("width",u).attr("height",u).style("fill",U=>_(U.label)).style("stroke",U=>_(U.label)),D.append("text").attr("x",u+h).attr("y",u-h).text(U=>i.getShowData()?`${U.label} [${U.value}]`:U.label);let P=Math.max(...D.selectAll("text").nodes().map(U=>U?.getBoundingClientRect().width??0)),B=d,O=f+l,$=u+h,V=M.length*$;switch(v){case"center":D.attr("transform",(U,oe)=>{let te=$*M.length/2,le=-P/2-(u+h),ie=oe*$-te;return"translate("+le+","+ie+")"});break;case"top":B+=V,D.attr("transform",(U,oe)=>{let te=T,le=-P/2-(u+h),ie=oe*$-te;return`translate(${le}, ${ie})`}),w.attr("transform",()=>`translate(0, ${V+$})`);break;case"bottom":B+=V,D.attr("transform",(U,oe)=>{let te=-T-$,le=-P/2-(u+h),ie=oe*$-te;return"translate("+le+","+ie+")"});break;case"left":O+=u+h+P,D.attr("transform",(U,oe)=>{let te=$*M.length/2,le=-T-(u+h),ie=oe*$-te;return"translate("+le+","+ie+")"}),w.attr("transform",()=>`translate(${P+u+h}, 0)`);break;case"right":default:O+=u+h+P,D.attr("transform",(U,oe)=>{let te=$*M.length/2,le=12*u,ie=oe*$-te;return"translate("+le+","+ie+")"});break}let G=A.node()?.getBoundingClientRect().width??0,z=f/2-G/2,W=f/2+G/2,H=Math.min(0,z),Q=Math.max(O,W)-H;p.attr("viewBox",`${H} 0 ${Q} ${B}`),Wr(p,B,Q,s.useMaxWidth)},"draw"),j7e={draw:eAt}});var K7e={};ir(K7e,{diagram:()=>tAt});var tAt,Z7e=F(()=>{"use strict";H7e();WU();Y7e();X7e();tAt={parser:q7e,db:cL,renderer:j7e,styles:U7e}});var qU,J7e,e8e=F(()=>{"use strict";qU=(function(){var e=o(function(X,fe,K,qe){for(K=K||{},qe=X.length;qe--;K[X[qe]]=fe);return K},"o"),t=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[1,7],s=[1,4,5,10,12,13,14,15,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,15,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],u=[55,56,57],h=[2,36],d=[1,37],f=[1,36],p=[1,38],m=[1,35],g=[1,43],y=[1,41],v=[1,45],x=[1,14],b=[1,23],T=[1,18],k=[1,19],C=[1,20],w=[1,21],S=[1,22],R=[1,24],L=[1,25],N=[1,26],I=[1,27],_=[1,28],A=[1,29],M=[1,32],D=[1,33],P=[1,34],B=[1,39],O=[1,40],$=[1,42],V=[1,44],G=[1,63],z=[1,62],W=[4,5,8,10,12,13,14,15,18,44,47,49,55,56,57,63,64,65,66,67],H=[1,66],j=[1,67],Q=[1,68],U=[1,69],oe=[1,70],te=[1,71],le=[1,72],ie=[1,73],ae=[1,74],Re=[1,75],be=[1,76],Pe=[1,77],Ge=[4,5,6,7,8,9,10,11,12,13,14,15,18],Oe=[1,91],ue=[1,92],ye=[1,93],ke=[1,100],ce=[1,94],re=[1,97],J=[1,95],se=[1,96],ge=[1,98],Te=[1,99],we=[1,103],Me=[10,55,56,57],ve=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],ne={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:o(function(fe,K,qe,_e,Be,Ne,He){var $e=Ne.length-1;switch(Be){case 23:this.$=Ne[$e];break;case 24:this.$=Ne[$e-1]+""+Ne[$e];break;case 26:this.$=Ne[$e-1]+Ne[$e];break;case 27:this.$=[Ne[$e].trim()];break;case 28:Ne[$e-2].push(Ne[$e].trim()),this.$=Ne[$e-2];break;case 29:this.$=Ne[$e-4],_e.addClass(Ne[$e-2],Ne[$e]);break;case 37:this.$=[];break;case 42:this.$=Ne[$e].trim(),_e.setDiagramTitle(this.$);break;case 43:this.$=Ne[$e].trim(),_e.setAccTitle(this.$);break;case 44:case 45:this.$=Ne[$e].trim(),_e.setAccDescription(this.$);break;case 46:_e.addSection(Ne[$e].substr(8)),this.$=Ne[$e].substr(8);break;case 47:_e.addPoint(Ne[$e-3],"",Ne[$e-1],Ne[$e],[]);break;case 48:_e.addPoint(Ne[$e-4],Ne[$e-3],Ne[$e-1],Ne[$e],[]);break;case 49:_e.addPoint(Ne[$e-4],"",Ne[$e-2],Ne[$e-1],Ne[$e]);break;case 50:_e.addPoint(Ne[$e-5],Ne[$e-4],Ne[$e-2],Ne[$e-1],Ne[$e]);break;case 51:_e.setXAxisLeftText(Ne[$e-2]),_e.setXAxisRightText(Ne[$e]);break;case 52:Ne[$e-1].text+=" \u27F6 ",_e.setXAxisLeftText(Ne[$e-1]);break;case 53:_e.setXAxisLeftText(Ne[$e]);break;case 54:_e.setYAxisBottomText(Ne[$e-2]),_e.setYAxisTopText(Ne[$e]);break;case 55:Ne[$e-1].text+=" \u27F6 ",_e.setYAxisBottomText(Ne[$e-1]);break;case 56:_e.setYAxisBottomText(Ne[$e]);break;case 57:_e.setQuadrant1Text(Ne[$e]);break;case 58:_e.setQuadrant2Text(Ne[$e]);break;case 59:_e.setQuadrant3Text(Ne[$e]);break;case 60:_e.setQuadrant4Text(Ne[$e]);break;case 64:this.$={text:Ne[$e],type:"text"};break;case 65:this.$={text:Ne[$e-1].text+""+Ne[$e],type:Ne[$e-1].type};break;case 66:this.$={text:Ne[$e],type:"text"};break;case 67:this.$={text:Ne[$e],type:"markdown"};break;case 68:this.$=Ne[$e];break;case 69:this.$=Ne[$e-1]+""+Ne[$e];break}},"anonymous"),table:[{18:t,26:1,27:2,28:r,55:n,56:i,57:a},{1:[3]},{18:t,26:8,27:2,28:r,55:n,56:i,57:a},{18:t,26:9,27:2,28:r,55:n,56:i,57:a},e(s,[2,33],{29:10}),e(l,[2,61]),e(l,[2,62]),e(l,[2,63]),{1:[2,30]},{1:[2,31]},e(u,h,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:d,5:f,10:p,12:m,13:g,14:y,15:v,18:x,25:b,35:T,37:k,39:C,41:w,42:S,48:R,50:L,51:N,52:I,53:_,54:A,60:M,61:D,63:P,64:B,65:O,66:$,67:V}),e(s,[2,34]),{27:46,55:n,56:i,57:a},e(u,[2,37]),e(u,h,{24:13,32:15,33:16,34:17,43:30,58:31,31:47,4:d,5:f,10:p,12:m,13:g,14:y,15:v,18:x,25:b,35:T,37:k,39:C,41:w,42:S,48:R,50:L,51:N,52:I,53:_,54:A,60:M,61:D,63:P,64:B,65:O,66:$,67:V}),e(u,[2,39]),e(u,[2,40]),e(u,[2,41]),{36:[1,48]},{38:[1,49]},{40:[1,50]},e(u,[2,45]),e(u,[2,46]),{18:[1,51]},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:52,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:53,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:54,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:55,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:56,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,10:p,12:m,13:g,14:y,15:v,43:57,58:31,60:M,61:D,63:P,64:B,65:O,66:$,67:V},{4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,44:[1,58],47:[1,59],58:61,59:60,63:P,64:B,65:O,66:$,67:V},e(W,[2,64]),e(W,[2,66]),e(W,[2,67]),e(W,[2,70]),e(W,[2,71]),e(W,[2,72]),e(W,[2,73]),e(W,[2,74]),e(W,[2,75]),e(W,[2,76]),e(W,[2,77]),e(W,[2,78]),e(W,[2,79]),e(W,[2,80]),e(W,[2,81]),e(s,[2,35]),e(u,[2,38]),e(u,[2,42]),e(u,[2,43]),e(u,[2,44]),{3:65,4:H,5:j,6:Q,7:U,8:oe,9:te,10:le,11:ie,12:ae,13:Re,14:be,15:Pe,21:64},e(u,[2,53],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,49:[1,78],63:P,64:B,65:O,66:$,67:V}),e(u,[2,56],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,49:[1,79],63:P,64:B,65:O,66:$,67:V}),e(u,[2,57],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,58],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,59],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,60],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),{45:[1,80]},{44:[1,81]},e(W,[2,65]),e(W,[2,82]),e(W,[2,83]),e(W,[2,84]),{3:83,4:H,5:j,6:Q,7:U,8:oe,9:te,10:le,11:ie,12:ae,13:Re,14:be,15:Pe,18:[1,82]},e(Ge,[2,23]),e(Ge,[2,1]),e(Ge,[2,2]),e(Ge,[2,3]),e(Ge,[2,4]),e(Ge,[2,5]),e(Ge,[2,6]),e(Ge,[2,7]),e(Ge,[2,8]),e(Ge,[2,9]),e(Ge,[2,10]),e(Ge,[2,11]),e(Ge,[2,12]),e(u,[2,52],{58:31,43:84,4:d,5:f,10:p,12:m,13:g,14:y,15:v,60:M,61:D,63:P,64:B,65:O,66:$,67:V}),e(u,[2,55],{58:31,43:85,4:d,5:f,10:p,12:m,13:g,14:y,15:v,60:M,61:D,63:P,64:B,65:O,66:$,67:V}),{46:[1,86]},{45:[1,87]},{4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,16:90,17:J,18:se,19:ge,20:Te,22:89,23:88},e(Ge,[2,24]),e(u,[2,51],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,54],{59:60,58:61,4:d,5:f,8:G,10:p,12:m,13:g,14:y,15:v,18:z,63:P,64:B,65:O,66:$,67:V}),e(u,[2,47],{22:89,16:90,23:101,4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,17:J,18:se,19:ge,20:Te}),{46:[1,102]},e(u,[2,29],{10:we}),e(Me,[2,27],{16:104,4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,17:J,18:se,19:ge,20:Te}),e(ve,[2,25]),e(ve,[2,13]),e(ve,[2,14]),e(ve,[2,15]),e(ve,[2,16]),e(ve,[2,17]),e(ve,[2,18]),e(ve,[2,19]),e(ve,[2,20]),e(ve,[2,21]),e(ve,[2,22]),e(u,[2,49],{10:we}),e(u,[2,48],{22:89,16:90,23:105,4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,17:J,18:se,19:ge,20:Te}),{4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,16:90,17:J,18:se,19:ge,20:Te,22:106},e(ve,[2,26]),e(u,[2,50],{10:we}),e(Me,[2,28],{16:104,4:Oe,5:ue,6:ye,8:ke,11:ce,13:re,17:J,18:se,19:ge,20:Te})],defaultActions:{8:[2,30],9:[2,31]},parseError:o(function(fe,K){if(K.recoverable)this.trace(fe);else{var qe=new Error(fe);throw qe.hash=K,qe}},"parseError"),parse:o(function(fe){var K=this,qe=[0],_e=[],Be=[null],Ne=[],He=this.table,$e="",Xe=0,Fe=0,Ke=0,xe=2,mt=1,Le=Ne.slice.call(arguments,1),ft=Object.create(this.lexer),wt={yy:{}};for(var zt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,zt)&&(wt.yy[zt]=this.yy[zt]);ft.setInput(fe,wt.yy),wt.yy.lexer=ft,wt.yy.parser=this,typeof ft.yylloc>"u"&&(ft.yylloc={});var St=ft.yylloc;Ne.push(St);var At=ft.options&&ft.options.ranges;typeof wt.yy.parseError=="function"?this.parseError=wt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function bt(De){qe.length=qe.length-2*De,Be.length=Be.length-De,Ne.length=Ne.length-De}o(bt,"popStack");function me(){var De;return De=_e.pop()||ft.lex()||mt,typeof De!="number"&&(De instanceof Array&&(_e=De,De=_e.pop()),De=K.symbols_[De]||De),De}o(me,"lex");for(var lt,gt,Ze,Ee,tt,at,ot={},Wt,Bt,qt,vr;;){if(Ze=qe[qe.length-1],this.defaultActions[Ze]?Ee=this.defaultActions[Ze]:((lt===null||typeof lt>"u")&&(lt=me()),Ee=He[Ze]&&He[Ze][lt]),typeof Ee>"u"||!Ee.length||!Ee[0]){var Tt="";vr=[];for(Wt in He[Ze])this.terminals_[Wt]&&Wt>xe&&vr.push("'"+this.terminals_[Wt]+"'");ft.showPosition?Tt="Parse error on line "+(Xe+1)+`: +`+ft.showPosition()+` +Expecting `+vr.join(", ")+", got '"+(this.terminals_[lt]||lt)+"'":Tt="Parse error on line "+(Xe+1)+": Unexpected "+(lt==mt?"end of input":"'"+(this.terminals_[lt]||lt)+"'"),this.parseError(Tt,{text:ft.match,token:this.terminals_[lt]||lt,line:ft.yylineno,loc:St,expected:vr})}if(Ee[0]instanceof Array&&Ee.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ze+", token: "+lt);switch(Ee[0]){case 1:qe.push(lt),Be.push(ft.yytext),Ne.push(ft.yylloc),qe.push(Ee[1]),lt=null,gt?(lt=gt,gt=null):(Fe=ft.yyleng,$e=ft.yytext,Xe=ft.yylineno,St=ft.yylloc,Ke>0&&Ke--);break;case 2:if(Bt=this.productions_[Ee[1]][1],ot.$=Be[Be.length-Bt],ot._$={first_line:Ne[Ne.length-(Bt||1)].first_line,last_line:Ne[Ne.length-1].last_line,first_column:Ne[Ne.length-(Bt||1)].first_column,last_column:Ne[Ne.length-1].last_column},At&&(ot._$.range=[Ne[Ne.length-(Bt||1)].range[0],Ne[Ne.length-1].range[1]]),at=this.performAction.apply(ot,[$e,Fe,Xe,wt.yy,Ee[1],Be,Ne].concat(Le)),typeof at<"u")return at;Bt&&(qe=qe.slice(0,-1*Bt*2),Be=Be.slice(0,-1*Bt),Ne=Ne.slice(0,-1*Bt)),qe.push(this.productions_[Ee[1]][0]),Be.push(ot.$),Ne.push(ot._$),qt=He[qe[qe.length-2]][qe[qe.length-1]],qe.push(qt);break;case 3:return!0}}return!0},"parse")},q=(function(){var X={EOF:1,parseError:o(function(K,qe){if(this.yy.parser)this.yy.parser.parseError(K,qe);else throw new Error(K)},"parseError"),setInput:o(function(fe,K){return this.yy=K||this.yy||{},this._input=fe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var fe=this._input[0];this.yytext+=fe,this.yyleng++,this.offset++,this.match+=fe,this.matched+=fe;var K=fe.match(/(?:\r\n?|\n).*/g);return K?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),fe},"input"),unput:o(function(fe){var K=fe.length,qe=fe.split(/(?:\r\n?|\n)/g);this._input=fe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-K),this.offset-=K;var _e=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),qe.length-1&&(this.yylineno-=qe.length-1);var Be=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:qe?(qe.length===_e.length?this.yylloc.first_column:0)+_e[_e.length-qe.length].length-qe[0].length:this.yylloc.first_column-K},this.options.ranges&&(this.yylloc.range=[Be[0],Be[0]+this.yyleng-K]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(fe){this.unput(this.match.slice(fe))},"less"),pastInput:o(function(){var fe=this.matched.substr(0,this.matched.length-this.match.length);return(fe.length>20?"...":"")+fe.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var fe=this.match;return fe.length<20&&(fe+=this._input.substr(0,20-fe.length)),(fe.substr(0,20)+(fe.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var fe=this.pastInput(),K=new Array(fe.length+1).join("-");return fe+this.upcomingInput()+` +`+K+"^"},"showPosition"),test_match:o(function(fe,K){var qe,_e,Be;if(this.options.backtrack_lexer&&(Be={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Be.yylloc.range=this.yylloc.range.slice(0))),_e=fe[0].match(/(?:\r\n?|\n).*/g),_e&&(this.yylineno+=_e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:_e?_e[_e.length-1].length-_e[_e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+fe[0].length},this.yytext+=fe[0],this.match+=fe[0],this.matches=fe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(fe[0].length),this.matched+=fe[0],qe=this.performAction.call(this,this.yy,this,K,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),qe)return qe;if(this._backtrack){for(var Ne in Be)this[Ne]=Be[Ne];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var fe,K,qe,_e;this._more||(this.yytext="",this.match="");for(var Be=this._currentRules(),Ne=0;NeK[0].length)){if(K=qe,_e=Ne,this.options.backtrack_lexer){if(fe=this.test_match(qe,Be[Ne]),fe!==!1)return fe;if(this._backtrack){K=!1;continue}else return!1}else if(!this.options.flex)break}return K?(fe=this.test_match(K,Be[_e]),fe!==!1?fe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var K=this.next();return K||this.lex()},"lex"),begin:o(function(K){this.conditionStack.push(K)},"begin"),popState:o(function(){var K=this.conditionStack.length-1;return K>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(K){return K=this.conditionStack.length-1-Math.abs(K||0),K>=0?this.conditionStack[K]:"INITIAL"},"topState"),pushState:o(function(K){this.begin(K)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(K,qe,_e,Be){var Ne=Be;switch(_e){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 15;case 37:return 11;case 38:return 64;case 39:return 10;case 40:return 65;case 41:return 65;case 42:return 14;case 43:return 13;case 44:return 67;case 45:return 66;case 46:return 12;case 47:return 8;case 48:return 5;case 49:return 18;case 50:return 56;case 51:return 63;case 52:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?:[^\x00-\x7F]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return X})();ne.lexer=q;function he(){this.yy={}}return o(he,"Parser"),he.prototype=ne,ne.Parser=he,new he})();qU.parser=qU;J7e=qU});var Us,uL,t8e=F(()=>{"use strict";$r();Wi();vt();Pc();Us=ma(),uL=class{constructor(){this.classes=new Map;this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{o(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:cr.quadrantChart?.chartWidth||500,chartWidth:cr.quadrantChart?.chartHeight||500,titlePadding:cr.quadrantChart?.titlePadding||10,titleFontSize:cr.quadrantChart?.titleFontSize||20,quadrantPadding:cr.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:cr.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:cr.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:cr.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:cr.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:cr.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:cr.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:cr.quadrantChart?.pointTextPadding||5,pointLabelFontSize:cr.quadrantChart?.pointLabelFontSize||12,pointRadius:cr.quadrantChart?.pointRadius||5,xAxisPosition:cr.quadrantChart?.xAxisPosition||"top",yAxisPosition:cr.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:cr.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:cr.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:Us.quadrant1Fill,quadrant2Fill:Us.quadrant2Fill,quadrant3Fill:Us.quadrant3Fill,quadrant4Fill:Us.quadrant4Fill,quadrant1TextFill:Us.quadrant1TextFill,quadrant2TextFill:Us.quadrant2TextFill,quadrant3TextFill:Us.quadrant3TextFill,quadrant4TextFill:Us.quadrant4TextFill,quadrantPointFill:Us.quadrantPointFill,quadrantPointTextFill:Us.quadrantPointTextFill,quadrantXAxisTextFill:Us.quadrantXAxisTextFill,quadrantYAxisTextFill:Us.quadrantYAxisTextFill,quadrantTitleFill:Us.quadrantTitleFill,quadrantInternalBorderStrokeFill:Us.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:Us.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,Z.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,r){this.classes.set(t,r)}setConfig(t){Z.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){Z.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,r,n,i){let a=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,s={top:t==="top"&&r?a:0,bottom:t==="bottom"&&r?a:0},l=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,u={left:this.config.yAxisPosition==="left"&&n?l:0,right:this.config.yAxisPosition==="right"&&n?l:0},h=this.config.titleFontSize+this.config.titlePadding*2,d={top:i?h:0},f=this.config.quadrantPadding+u.left,p=this.config.quadrantPadding+s.top+d.top,m=this.config.chartWidth-this.config.quadrantPadding*2-u.left-u.right,g=this.config.chartHeight-this.config.quadrantPadding*2-s.top-s.bottom-d.top,y=m/2,v=g/2;return{xAxisSpace:s,yAxisSpace:u,titleSpace:d,quadrantSpace:{quadrantLeft:f,quadrantTop:p,quadrantWidth:m,quadrantHalfWidth:y,quadrantHeight:g,quadrantHalfHeight:v}}}getAxisLabels(t,r,n,i){let{quadrantSpace:a,titleSpace:s}=i,{quadrantHalfHeight:l,quadrantHeight:u,quadrantLeft:h,quadrantHalfWidth:d,quadrantTop:f,quadrantWidth:p}=a,m=!!this.data.xAxisRightText,g=!!this.data.yAxisTopText,y=[];return this.data.xAxisLeftText&&r&&y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+(m?d/2:0),y:t==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+f+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&r&&y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:h+d+(m?d/2:0),y:t==="top"?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+f+u+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&n&&y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:f+u-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&n&&y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+h+p+this.config.quadrantPadding,y:f+l-(g?l/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:g?"center":"left",horizontalPos:"top",rotation:-90}),y}getQuadrants(t){let{quadrantSpace:r}=t,{quadrantHalfHeight:n,quadrantLeft:i,quadrantHalfWidth:a,quadrantTop:s}=r,l=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s,width:a,height:n,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s,width:a,height:n,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:i+a,y:s+n,width:a,height:n,fill:this.themeConfig.quadrant4Fill}];for(let u of l)u.text.x=u.x+u.width/2,this.data.points.length===0?(u.text.y=u.y+u.height/2,u.text.horizontalPos="middle"):(u.text.y=u.y+this.config.quadrantTextTopPadding,u.text.horizontalPos="top");return l}getQuadrantPoints(t){let{quadrantSpace:r}=t,{quadrantHeight:n,quadrantLeft:i,quadrantTop:a,quadrantWidth:s}=r,l=Kl().domain([0,1]).range([i,s+i]),u=Kl().domain([0,1]).range([n+a,a]);return this.data.points.map(d=>{let f=this.classes.get(d.className);return f&&(d={...f,...d}),{x:l(d.x),y:u(d.y),fill:d.color??this.themeConfig.quadrantPointFill,radius:d.radius??this.config.pointRadius,text:{text:d.text,fill:this.themeConfig.quadrantPointTextFill,x:l(d.x),y:u(d.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:d.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:d.strokeWidth??"0px"}})}getBorders(t){let r=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:n}=t,{quadrantHalfHeight:i,quadrantHeight:a,quadrantLeft:s,quadrantHalfWidth:l,quadrantTop:u,quadrantWidth:h}=n;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u,x2:s+h+r,y2:u},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+h,y1:u+r,x2:s+h,y2:u+a-r},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-r,y1:u+a,x2:s+h+r,y2:u+a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:u+r,x2:s,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+l,y1:u+r,x2:s+l,y2:u+a-r},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:u+i,x2:s+h-r,y2:u+i}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){let t=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),r=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),n=this.config.showTitle&&!!this.data.titleText,i=this.data.points.length>0?"bottom":this.config.xAxisPosition,a=this.calculateSpace(i,t,r,n);return{points:this.getQuadrantPoints(a),quadrants:this.getQuadrants(a),axisLabels:this.getAxisLabels(i,t,r,a),borderLines:this.getBorders(a),title:this.getTitle(n)}}}});function HU(e){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(e)}function r8e(e){return!/^\d+$/.test(e)}function n8e(e){return!/^\d+px$/.test(e)}var w0,i8e=F(()=>{"use strict";w0=class extends Error{static{o(this,"InvalidStyleError")}constructor(t,r,n){super(`value for ${t} ${r} is invalid, please use a valid ${n}`),this.name="InvalidStyleError"}};o(HU,"validateHexCode");o(r8e,"validateNumber");o(n8e,"validateSizeInPixels")});function cd(e){return mr(e.trim(),Ae())}function iAt(e){Za.setData({quadrant1Text:cd(e.text)})}function aAt(e){Za.setData({quadrant2Text:cd(e.text)})}function sAt(e){Za.setData({quadrant3Text:cd(e.text)})}function oAt(e){Za.setData({quadrant4Text:cd(e.text)})}function lAt(e){Za.setData({xAxisLeftText:cd(e.text)})}function cAt(e){Za.setData({xAxisRightText:cd(e.text)})}function uAt(e){Za.setData({yAxisTopText:cd(e.text)})}function hAt(e){Za.setData({yAxisBottomText:cd(e.text)})}function UU(e){let t={};for(let r of e){let[n,i]=r.trim().split(/\s*:\s*/);if(n==="radius"){if(r8e(i))throw new w0(n,i,"number");t.radius=parseInt(i)}else if(n==="color"){if(HU(i))throw new w0(n,i,"hex code");t.color=i}else if(n==="stroke-color"){if(HU(i))throw new w0(n,i,"hex code");t.strokeColor=i}else if(n==="stroke-width"){if(n8e(i))throw new w0(n,i,"number of pixels (eg. 10px)");t.strokeWidth=i}else throw new Error(`style named ${n} is not supported.`)}return t}function dAt(e,t,r,n,i){let a=UU(i);Za.addPoints([{x:r,y:n,text:cd(e.text),className:t,...a}])}function fAt(e,t){Za.addClass(e,UU(t))}function pAt(e){Za.setConfig({chartWidth:e})}function mAt(e){Za.setConfig({chartHeight:e})}function gAt(){let e=Ae(),{themeVariables:t,quadrantChart:r}=e;return r&&Za.setConfig(r),Za.setThemeConfig({quadrant1Fill:t.quadrant1Fill,quadrant2Fill:t.quadrant2Fill,quadrant3Fill:t.quadrant3Fill,quadrant4Fill:t.quadrant4Fill,quadrant1TextFill:t.quadrant1TextFill,quadrant2TextFill:t.quadrant2TextFill,quadrant3TextFill:t.quadrant3TextFill,quadrant4TextFill:t.quadrant4TextFill,quadrantPointFill:t.quadrantPointFill,quadrantPointTextFill:t.quadrantPointTextFill,quadrantXAxisTextFill:t.quadrantXAxisTextFill,quadrantYAxisTextFill:t.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:t.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:t.quadrantInternalBorderStrokeFill,quadrantTitleFill:t.quadrantTitleFill}),Za.setData({titleText:Lr()}),Za.build()}var Za,yAt,a8e,s8e=F(()=>{"use strict";Xt();Vr();Nn();t8e();i8e();o(cd,"textSanitizer");Za=new uL;o(iAt,"setQuadrant1Text");o(aAt,"setQuadrant2Text");o(sAt,"setQuadrant3Text");o(oAt,"setQuadrant4Text");o(lAt,"setXAxisLeftText");o(cAt,"setXAxisRightText");o(uAt,"setYAxisTopText");o(hAt,"setYAxisBottomText");o(UU,"parseStyles");o(dAt,"addPoint");o(fAt,"addClass");o(pAt,"setWidth");o(mAt,"setHeight");o(gAt,"getQuadrantData");yAt=o(function(){Za.clear(),yr()},"clear"),a8e={setWidth:pAt,setHeight:mAt,setQuadrant1Text:iAt,setQuadrant2Text:aAt,setQuadrant3Text:sAt,setQuadrant4Text:oAt,setXAxisLeftText:lAt,setXAxisRightText:cAt,setYAxisTopText:uAt,setYAxisBottomText:hAt,parseStyles:UU,addPoint:dAt,addClass:fAt,getQuadrantData:gAt,clear:yAt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr}});var vAt,o8e,l8e=F(()=>{"use strict";$r();Xt();vt();$n();vAt=o((e,t,r,n)=>{function i(R){return R==="top"?"hanging":"middle"}o(i,"getDominantBaseLine");function a(R){return R==="left"?"start":"middle"}o(a,"getTextAnchor");function s(R){return`translate(${R.x}, ${R.y}) rotate(${R.rotation||0})`}o(s,"getTransformation");let l=Ae();Z.debug(`Rendering quadrant chart +`+e);let u=l.securityLevel,h;u==="sandbox"&&(h=et("#i"+t));let f=(u==="sandbox"?et(h.nodes()[0].contentDocument.body):et("body")).select(`[id="${t}"]`),p=f.append("g").attr("class","main"),m=l.quadrantChart?.chartWidth??500,g=l.quadrantChart?.chartHeight??500;Wr(f,g,m,l.quadrantChart?.useMaxWidth??!0),f.attr("viewBox","0 0 "+m+" "+g),n.db.setHeight(g),n.db.setWidth(m);let y=n.db.getQuadrantData(),v=p.append("g").attr("class","quadrants"),x=p.append("g").attr("class","border"),b=p.append("g").attr("class","data-points"),T=p.append("g").attr("class","labels"),k=p.append("g").attr("class","title");y.title&&k.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",i(y.title.horizontalPos)).attr("text-anchor",a(y.title.verticalPos)).attr("transform",s(y.title)).text(y.title.text),y.borderLines&&x.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",R=>R.x1).attr("y1",R=>R.y1).attr("x2",R=>R.x2).attr("y2",R=>R.y2).style("stroke",R=>R.strokeFill).style("stroke-width",R=>R.strokeWidth);let C=v.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");C.append("rect").attr("x",R=>R.x).attr("y",R=>R.y).attr("width",R=>R.width).attr("height",R=>R.height).attr("fill",R=>R.fill),C.append("text").attr("x",0).attr("y",0).attr("fill",R=>R.text.fill).attr("font-size",R=>R.text.fontSize).attr("dominant-baseline",R=>i(R.text.horizontalPos)).attr("text-anchor",R=>a(R.text.verticalPos)).attr("transform",R=>s(R.text)).text(R=>R.text.text),T.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(R=>R.text).attr("fill",R=>R.fill).attr("font-size",R=>R.fontSize).attr("dominant-baseline",R=>i(R.horizontalPos)).attr("text-anchor",R=>a(R.verticalPos)).attr("transform",R=>s(R));let S=b.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");S.append("circle").attr("cx",R=>R.x).attr("cy",R=>R.y).attr("r",R=>R.radius).attr("fill",R=>R.fill).attr("stroke",R=>R.strokeColor).attr("stroke-width",R=>R.strokeWidth),S.append("text").attr("x",0).attr("y",0).text(R=>R.text.text).attr("fill",R=>R.text.fill).attr("font-size",R=>R.text.fontSize).attr("dominant-baseline",R=>i(R.text.horizontalPos)).attr("text-anchor",R=>a(R.text.verticalPos)).attr("transform",R=>s(R.text))},"draw"),o8e={draw:vAt}});var c8e={};ir(c8e,{diagram:()=>xAt});var xAt,u8e=F(()=>{"use strict";e8e();s8e();l8e();xAt={parser:J7e,db:a8e,renderer:o8e,styles:o(()=>"","styles")}});var YU,f8e,p8e=F(()=>{"use strict";YU=(function(){var e=o(function(P,B,O,$){for(O=O||{},$=P.length;$--;O[P[$]]=B);return O},"o"),t=[1,10,12,14,16,18,19,21,23],r=[2,6],n=[1,3],i=[1,5],a=[1,6],s=[1,7],l=[1,5,10,12,14,16,18,19,21,23,36,37,38],u=[1,25],h=[1,26],d=[1,28],f=[1,29],p=[1,30],m=[1,31],g=[1,32],y=[1,33],v=[1,34],x=[1,35],b=[1,36],T=[1,37],k=[1,43],C=[1,42],w=[1,47],S=[1,50],R=[1,10,12,14,16,18,19,21,23,36,37,38],L=[1,10,12,14,16,18,19,21,23,24,26,28,29,36,37,38],N=[1,10,12,14,16,18,19,21,23,24,26,28,29,36,37,38,42,43,44,45,46,47,48,49,50,51],I=[1,65],_=[26,28],A={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,dataPoints:25,SQUARE_BRACES_END:26,dataPoint:27,COMMA:28,NUMBER_WITH_DECIMAL:29,STR:30,xAxisData:31,bandData:32,ARROW_DELIMITER:33,commaSeparatedTexts:34,yAxisData:35,NEWLINE:36,SEMI:37,EOF:38,alphaNum:39,MD_STR:40,alphaNumToken:41,AMP:42,NUM:43,ALPHA:44,PLUS:45,EQUALS:46,MULT:47,DOT:48,BRKT:49,MINUS:50,UNDERSCORE:51,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",28:"COMMA",29:"NUMBER_WITH_DECIMAL",30:"STR",33:"ARROW_DELIMITER",36:"NEWLINE",37:"SEMI",38:"EOF",40:"MD_STR",42:"AMP",43:"NUM",44:"ALPHA",45:"PLUS",46:"EQUALS",47:"MULT",48:"DOT",49:"BRKT",50:"MINUS",51:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[27,2],[27,1],[13,1],[13,2],[13,1],[31,1],[31,3],[32,3],[34,3],[34,1],[15,1],[15,2],[15,1],[35,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[39,1],[39,2],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1],[41,1]],performAction:o(function(B,O,$,V,G,z,W){var H=z.length-1;switch(G){case 5:V.setOrientation(z[H]);break;case 9:V.setDiagramTitle(z[H].text.trim());break;case 12:V.setLineData({text:"",type:"text"},z[H]);break;case 13:V.setLineData(z[H-1],z[H]);break;case 14:V.setBarData({text:"",type:"text"},z[H]);break;case 15:V.setBarData(z[H-1],z[H]);break;case 16:this.$=z[H].trim(),V.setAccTitle(this.$);break;case 17:case 18:this.$=z[H].trim(),V.setAccDescription(this.$);break;case 19:this.$=z[H-1];break;case 20:case 30:this.$=[z[H-2],...z[H]];break;case 21:case 31:this.$=[z[H]];break;case 22:this.$={value:Number(z[H-1]),label:z[H]};break;case 23:this.$={value:Number(z[H]),label:""};break;case 24:V.setXAxisTitle(z[H]);break;case 25:V.setXAxisTitle(z[H-1]);break;case 26:V.setXAxisTitle({type:"text",text:""});break;case 27:V.setXAxisBand(z[H]);break;case 28:V.setXAxisRangeData(Number(z[H-2]),Number(z[H]));break;case 29:this.$=z[H-1];break;case 32:V.setYAxisTitle(z[H]);break;case 33:V.setYAxisTitle(z[H-1]);break;case 34:V.setYAxisTitle({type:"text",text:""});break;case 35:V.setYAxisRangeData(Number(z[H-2]),Number(z[H]));break;case 39:this.$={text:z[H],type:"text"};break;case 40:this.$={text:z[H],type:"text"};break;case 41:this.$={text:z[H],type:"markdown"};break;case 42:this.$=z[H];break;case 43:this.$=z[H-1]+""+z[H];break}},"anonymous"),table:[e(t,r,{3:1,4:2,7:4,5:n,36:i,37:a,38:s}),{1:[3]},e(t,r,{4:2,7:4,3:8,5:n,36:i,37:a,38:s}),e(t,r,{4:2,7:4,6:9,3:10,5:n,8:[1,11],36:i,37:a,38:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},e(l,[2,36]),e(l,[2,37]),e(l,[2,38]),{1:[2,1]},e(t,r,{4:2,7:4,3:21,5:n,36:i,37:a,38:s}),{1:[2,3]},e(l,[2,5]),e(t,[2,7],{4:22,36:i,37:a,38:s}),{11:23,30:u,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{11:39,13:38,24:k,29:C,30:u,31:40,32:41,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{11:45,15:44,29:w,30:u,35:46,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{11:49,17:48,24:S,30:u,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{11:52,17:51,24:S,30:u,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},{20:[1,53]},{22:[1,54]},e(R,[2,18]),{1:[2,2]},e(R,[2,8]),e(R,[2,9]),e(L,[2,39],{41:55,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T}),e(L,[2,40]),e(L,[2,41]),e(N,[2,42]),e(N,[2,44]),e(N,[2,45]),e(N,[2,46]),e(N,[2,47]),e(N,[2,48]),e(N,[2,49]),e(N,[2,50]),e(N,[2,51]),e(N,[2,52]),e(N,[2,53]),e(R,[2,10]),e(R,[2,24],{32:41,31:56,24:k,29:C}),e(R,[2,26]),e(R,[2,27]),{33:[1,57]},{11:59,30:u,34:58,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},e(R,[2,11]),e(R,[2,32],{35:60,29:w}),e(R,[2,34]),{33:[1,61]},e(R,[2,12]),{17:62,24:S},{25:63,27:64,29:I},e(R,[2,14]),{17:66,24:S},e(R,[2,16]),e(R,[2,17]),e(N,[2,43]),e(R,[2,25]),{29:[1,67]},{26:[1,68]},{26:[2,31],28:[1,69]},e(R,[2,33]),{29:[1,70]},e(R,[2,13]),{26:[1,71]},{26:[2,21],28:[1,72]},e(_,[2,23],{30:[1,73]}),e(R,[2,15]),e(R,[2,28]),e(R,[2,29]),{11:59,30:u,34:74,39:24,40:h,41:27,42:d,43:f,44:p,45:m,46:g,47:y,48:v,49:x,50:b,51:T},e(R,[2,35]),e(R,[2,19]),{25:75,27:64,29:I},e(_,[2,22]),{26:[2,30]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],74:[2,30],75:[2,20]},parseError:o(function(B,O){if(O.recoverable)this.trace(B);else{var $=new Error(B);throw $.hash=O,$}},"parseError"),parse:o(function(B){var O=this,$=[0],V=[],G=[null],z=[],W=this.table,H="",j=0,Q=0,U=0,oe=2,te=1,le=z.slice.call(arguments,1),ie=Object.create(this.lexer),ae={yy:{}};for(var Re in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Re)&&(ae.yy[Re]=this.yy[Re]);ie.setInput(B,ae.yy),ae.yy.lexer=ie,ae.yy.parser=this,typeof ie.yylloc>"u"&&(ie.yylloc={});var be=ie.yylloc;z.push(be);var Pe=ie.options&&ie.options.ranges;typeof ae.yy.parseError=="function"?this.parseError=ae.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ge(ne){$.length=$.length-2*ne,G.length=G.length-ne,z.length=z.length-ne}o(Ge,"popStack");function Oe(){var ne;return ne=V.pop()||ie.lex()||te,typeof ne!="number"&&(ne instanceof Array&&(V=ne,ne=V.pop()),ne=O.symbols_[ne]||ne),ne}o(Oe,"lex");for(var ue,ye,ke,ce,re,J,se={},ge,Te,we,Me;;){if(ke=$[$.length-1],this.defaultActions[ke]?ce=this.defaultActions[ke]:((ue===null||typeof ue>"u")&&(ue=Oe()),ce=W[ke]&&W[ke][ue]),typeof ce>"u"||!ce.length||!ce[0]){var ve="";Me=[];for(ge in W[ke])this.terminals_[ge]&&ge>oe&&Me.push("'"+this.terminals_[ge]+"'");ie.showPosition?ve="Parse error on line "+(j+1)+`: +`+ie.showPosition()+` +Expecting `+Me.join(", ")+", got '"+(this.terminals_[ue]||ue)+"'":ve="Parse error on line "+(j+1)+": Unexpected "+(ue==te?"end of input":"'"+(this.terminals_[ue]||ue)+"'"),this.parseError(ve,{text:ie.match,token:this.terminals_[ue]||ue,line:ie.yylineno,loc:be,expected:Me})}if(ce[0]instanceof Array&&ce.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ke+", token: "+ue);switch(ce[0]){case 1:$.push(ue),G.push(ie.yytext),z.push(ie.yylloc),$.push(ce[1]),ue=null,ye?(ue=ye,ye=null):(Q=ie.yyleng,H=ie.yytext,j=ie.yylineno,be=ie.yylloc,U>0&&U--);break;case 2:if(Te=this.productions_[ce[1]][1],se.$=G[G.length-Te],se._$={first_line:z[z.length-(Te||1)].first_line,last_line:z[z.length-1].last_line,first_column:z[z.length-(Te||1)].first_column,last_column:z[z.length-1].last_column},Pe&&(se._$.range=[z[z.length-(Te||1)].range[0],z[z.length-1].range[1]]),J=this.performAction.apply(se,[H,Q,j,ae.yy,ce[1],G,z].concat(le)),typeof J<"u")return J;Te&&($=$.slice(0,-1*Te*2),G=G.slice(0,-1*Te),z=z.slice(0,-1*Te)),$.push(this.productions_[ce[1]][0]),G.push(se.$),z.push(se._$),we=W[$[$.length-2]][$[$.length-1]],$.push(we);break;case 3:return!0}}return!0},"parse")},M=(function(){var P={EOF:1,parseError:o(function(O,$){if(this.yy.parser)this.yy.parser.parseError(O,$);else throw new Error(O)},"parseError"),setInput:o(function(B,O){return this.yy=O||this.yy||{},this._input=B,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var B=this._input[0];this.yytext+=B,this.yyleng++,this.offset++,this.match+=B,this.matched+=B;var O=B.match(/(?:\r\n?|\n).*/g);return O?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),B},"input"),unput:o(function(B){var O=B.length,$=B.split(/(?:\r\n?|\n)/g);this._input=B+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-O),this.offset-=O;var V=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),$.length-1&&(this.yylineno-=$.length-1);var G=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:$?($.length===V.length?this.yylloc.first_column:0)+V[V.length-$.length].length-$[0].length:this.yylloc.first_column-O},this.options.ranges&&(this.yylloc.range=[G[0],G[0]+this.yyleng-O]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(B){this.unput(this.match.slice(B))},"less"),pastInput:o(function(){var B=this.matched.substr(0,this.matched.length-this.match.length);return(B.length>20?"...":"")+B.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var B=this.match;return B.length<20&&(B+=this._input.substr(0,20-B.length)),(B.substr(0,20)+(B.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var B=this.pastInput(),O=new Array(B.length+1).join("-");return B+this.upcomingInput()+` +`+O+"^"},"showPosition"),test_match:o(function(B,O){var $,V,G;if(this.options.backtrack_lexer&&(G={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(G.yylloc.range=this.yylloc.range.slice(0))),V=B[0].match(/(?:\r\n?|\n).*/g),V&&(this.yylineno+=V.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:V?V[V.length-1].length-V[V.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+B[0].length},this.yytext+=B[0],this.match+=B[0],this.matches=B,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(B[0].length),this.matched+=B[0],$=this.performAction.call(this,this.yy,this,O,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),$)return $;if(this._backtrack){for(var z in G)this[z]=G[z];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var B,O,$,V;this._more||(this.yytext="",this.match="");for(var G=this._currentRules(),z=0;zO[0].length)){if(O=$,V=z,this.options.backtrack_lexer){if(B=this.test_match($,G[z]),B!==!1)return B;if(this._backtrack){O=!1;continue}else return!1}else if(!this.options.flex)break}return O?(B=this.test_match(O,G[V]),B!==!1?B:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var O=this.next();return O||this.lex()},"lex"),begin:o(function(O){this.conditionStack.push(O)},"begin"),popState:o(function(){var O=this.conditionStack.length-1;return O>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(O){return O=this.conditionStack.length-1-Math.abs(O||0),O>=0?this.conditionStack[O]:"INITIAL"},"topState"),pushState:o(function(O){this.begin(O)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(O,$,V,G){var z=G;switch(V){case 0:break;case 1:break;case 2:return this.popState(),36;break;case 3:return this.popState(),36;break;case 4:return 36;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";break;case 18:return this.pushState("axis_data"),"Y_AXIS";break;case 19:return this.pushState("axis_band_data"),24;break;case 20:return 33;case 21:return this.pushState("data"),16;break;case 22:return this.pushState("data"),18;break;case 23:return this.pushState("data_inner"),24;break;case 24:return 29;case 25:return this.popState(),26;break;case 26:this.popState();break;case 27:this.pushState("string");break;case 28:this.popState();break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 44;case 33:return"COLON";case 34:return 45;case 35:return 28;case 36:return 46;case 37:return 47;case 38:return 49;case 39:return 51;case 40:return 48;case 41:return 42;case 42:return 50;case 43:return 43;case 44:break;case 45:return 37;case 46:return 38}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\})/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}};return P})();A.lexer=M;function D(){this.yy={}}return o(D,"Parser"),D.prototype=A,A.Parser=D,new D})();YU.parser=YU;f8e=YU});function jU(e){return e.type==="bar"}function Pw(e){return e.type==="band"}function Qv(e){return e.type==="linear"}var hL=F(()=>{"use strict";o(jU,"isBarPlot");o(Pw,"isBandAxisData");o(Qv,"isLinearAxisData")});var Jv,XU=F(()=>{"use strict";Ls();Jv=class{constructor(t){this.parentGroup=t}static{o(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,r){if(!this.parentGroup)return{width:t.reduce((a,s)=>Math.max(s.length,a),0)*r,height:r};let n={width:0,height:0},i=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",r);for(let a of t){let s=Nse(i,1,a),l=s?s.width:a.length*r,u=s?s.height:r;n.width=Math.max(n.width,l),n.height=Math.max(n.height,u)}return i.remove(),n}}});var ex,KU=F(()=>{"use strict";ex=class{constructor(t,r,n,i){this.axisConfig=t;this.title=r;this.textDimensionCalculator=n;this.axisThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0};this.axisPosition="left";this.showTitle=!1;this.showLabel=!1;this.showTick=!1;this.showAxisLine=!1;this.outerPadding=0;this.titleTextHeight=0;this.labelTextHeight=0;this.normalizedLabelRotationInRad=0;this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.normalizedLabelRotationInRad=this.axisConfig.labelRotation>=-90&&this.axisConfig.labelRotation<=90?this.axisConfig.labelRotation*Math.PI/180:0}static{o(this,"BaseAxis")}setRange(t){this.range=t,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){let t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let r=t.height;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*t.width;this.outerPadding=Math.min(n.width/2,i);let a=n.height;this.axisPosition==="bottom"&&this.normalizedLabelRotationInRad!==0&&(a=Math.max(a,Math.abs(Math.sin(this.normalizedLabelRotationInRad)*n.width)+Math.abs(Math.cos(this.normalizedLabelRotationInRad)*n.height))),a+=this.axisConfig.labelPadding*2,this.labelTextHeight=n.height,a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-r}calculateSpaceIfDrawnVertical(t){let r=t.width;if(this.axisConfig.showAxisLine&&r>this.axisConfig.axisLineWidth&&(r-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let n=this.getLabelDimension(),i=.2*t.height;this.outerPadding=Math.min(n.height/2,i);let a=n.width+this.axisConfig.labelPadding*2;a<=r&&(r-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&r>=this.axisConfig.tickLength&&(this.showTick=!0,r-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let n=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),i=n.height+this.axisConfig.titlePadding*2;this.titleTextHeight=n.height,i<=r&&(r-=i,this.showTitle=!0)}this.boundingRect.width=t.width-r,this.boundingRect.height=t.height}calculateSpace(t){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateOffsetByRotation(t){let r=this.normalizedLabelRotationInRad;return r===0?0:Math.sin(r)*this.getLabelDimension()[t]/2}getDrawableElementsForLeftAxis(){let t=[];if(this.showAxisLine){let r=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${r},${this.boundingRect.y} L ${r},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(r),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let r=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${r},${this.getScaleValue(n)} L ${r-this.axisConfig.tickLength},${this.getScaleValue(n)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){let t=[];if(this.showAxisLine){let r=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r)+this.calculateOffsetByRotation("height"),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0)+Math.abs(this.calculateOffsetByRotation("width")),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:this.normalizedLabelRotationInRad*180/Math.PI,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r} L ${this.getScaleValue(n)},${r+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){let t=[];if(this.showAxisLine){let r=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${r} L ${this.boundingRect.x+this.boundingRect.width},${r}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(r=>({text:r.toString(),x:this.getScaleValue(r),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let r=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(n=>({path:`M ${this.getScaleValue(n)},${r+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(n)},${r+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}});var dL,m8e=F(()=>{"use strict";$r();vt();KU();dL=class extends ex{static{o(this,"BandAxis")}constructor(t,r,n,i,a){super(t,i,a,r),this.categories=n,this.scale=by().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=by().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),Z.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}}});var fL,g8e=F(()=>{"use strict";$r();KU();fL=class extends ex{static{o(this,"LinearAxis")}constructor(t,r,n,i,a){super(t,i,a,r),this.domain=n,this.scale=Kl().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let t=[...this.domain];this.axisPosition==="left"&&t.reverse(),this.scale=Kl().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}}});function ZU(e,t,r,n){let i=new Jv(n);return Pw(e)?new dL(t,r,e.categories,e.title,i):new fL(t,r,[e.min,e.max],e.title,i)}var y8e=F(()=>{"use strict";hL();XU();m8e();g8e();o(ZU,"getAxis")});function v8e(e,t,r,n){let i=new Jv(n);return new QU(i,e,t,r)}var QU,x8e=F(()=>{"use strict";XU();QU=class{constructor(t,r,n,i){this.textDimensionCalculator=t;this.chartConfig=r;this.chartData=n;this.chartThemeConfig=i;this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{o(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){let r=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),n=Math.max(r.width,t.width),i=r.height+2*this.chartConfig.titlePadding;return r.width<=n&&r.height<=i&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=n,this.boundingRect.height=i,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}};o(v8e,"getChartTitleComponent")});var pL,b8e=F(()=>{"use strict";$r();pL=class{constructor(t,r,n,i,a){this.plotData=t;this.xAxis=r;this.yAxis=n;this.orientation=i;this.plotIndex=a}static{o(this,"LinePlot")}getDrawableElement(){let t=this.plotData.data.map(i=>[this.xAxis.getScaleValue(i[0]),this.yAxis.getScaleValue(i[1])]),r;if(this.orientation==="horizontal"?r=tc().y(i=>i[0]).x(i=>i[1])(t):r=tc().x(i=>i[0]).y(i=>i[1])(t),!r)return[];let n=[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:r,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}];if(this.plotData.pointLabels&&this.plotData.pointLabels.length>0){let s=[];for(let[l,[u,h]]of t.entries()){let d=this.plotData.pointLabels[l];d&&(this.orientation==="horizontal"?s.push({x:h+10,y:u,text:d,fill:this.plotData.strokeFill,verticalPos:"middle",horizontalPos:"left",fontSize:12,rotation:0}):s.push({x:u,y:h-10,text:d,fill:this.plotData.strokeFill,verticalPos:"middle",horizontalPos:"center",fontSize:12,rotation:0}))}s.length>0&&n.push({groupTexts:["plot",`line-plot-${this.plotIndex}`,"labels"],type:"text",data:s})}return n}}});var mL,T8e=F(()=>{"use strict";mL=class{constructor(t,r,n,i,a,s){this.barData=t;this.boundingRect=r;this.xAxis=n;this.yAxis=i;this.orientation=a;this.plotIndex=s}static{o(this,"BarPlot")}getDrawableElement(){let t=this.barData.data.map(a=>[this.xAxis.getScaleValue(a[0]),this.yAxis.getScaleValue(a[1])]),n=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),i=n/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(a=>({x:this.boundingRect.x,y:a[0]-i,height:n,width:a[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(a=>({x:a[0]-i,y:a[1],width:n,height:this.boundingRect.y+this.boundingRect.height-a[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}});function C8e(e,t,r){return new JU(e,t,r)}var JU,w8e=F(()=>{"use strict";b8e();T8e();JU=class{constructor(t,r,n){this.chartConfig=t;this.chartData=r;this.chartThemeConfig=n;this.boundingRect={x:0,y:0,width:0,height:0}}static{o(this,"BasePlot")}setAxes(t,r){this.xAxis=t,this.yAxis=r}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let t=[];for(let[r,n]of this.chartData.plots.entries())switch(n.type){case"line":{let i=new pL(n,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);t.push(...i.getDrawableElement())}break;case"bar":{let i=new mL(n,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,r);t.push(...i.getDrawableElement())}break}return t}};o(C8e,"getPlotComponent")});var gL,k8e=F(()=>{"use strict";y8e();x8e();w8e();hL();gL=class{constructor(t,r,n,i){this.chartConfig=t;this.chartData=r;this.componentStore={title:v8e(t,r,n,i),plot:C8e(t,r,n),xAxis:ZU(r.xAxis,t.xAxis,{titleColor:n.xAxisTitleColor,labelColor:n.xAxisLabelColor,tickColor:n.xAxisTickColor,axisLineColor:n.xAxisLineColor},i),yAxis:ZU(r.yAxis,t.yAxis,{titleColor:n.yAxisTitleColor,labelColor:n.yAxisLabelColor,tickColor:n.yAxisTickColor,axisLineColor:n.yAxisLineColor},i)}}static{o(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),l=this.componentStore.plot.calculateSpace({width:a,height:s});t-=l.width,r-=l.height,l=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),i=l.height,r-=l.height,this.componentStore.xAxis.setAxisPosition("bottom"),l=this.componentStore.xAxis.calculateSpace({width:t,height:r}),r-=l.height,this.componentStore.yAxis.setAxisPosition("left"),l=this.componentStore.yAxis.calculateSpace({width:t,height:r}),n=l.width,t-=l.width,t>0&&(a+=t,t=0),r>0&&(s+=r,r=0),this.componentStore.plot.calculateSpace({width:a,height:s}),this.componentStore.plot.setBoundingBoxXY({x:n,y:i}),this.componentStore.xAxis.setRange([n,n+a]),this.componentStore.xAxis.setBoundingBoxXY({x:n,y:i+s}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(u=>jU(u))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,r=this.chartConfig.height,n=0,i=0,a=0,s=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),l=Math.floor(r*this.chartConfig.plotReservedSpacePercent/100),u=this.componentStore.plot.calculateSpace({width:s,height:l});t-=u.width,r-=u.height,u=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:r}),n=u.height,r-=u.height,this.componentStore.xAxis.setAxisPosition("left"),u=this.componentStore.xAxis.calculateSpace({width:t,height:r}),t-=u.width,i=u.width,this.componentStore.yAxis.setAxisPosition("top"),u=this.componentStore.yAxis.calculateSpace({width:t,height:r}),r-=u.height,a=n+u.height,t>0&&(s+=t,t=0),r>0&&(l+=r,r=0),this.componentStore.plot.calculateSpace({width:s,height:l}),this.componentStore.plot.setBoundingBoxXY({x:i,y:a}),this.componentStore.yAxis.setRange([i,i+s]),this.componentStore.yAxis.setBoundingBoxXY({x:i,y:n}),this.componentStore.xAxis.setRange([a,a+l]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some(h=>jU(h))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let r of Object.values(this.componentStore))t.push(...r.getDrawableElements());return t}}});var yL,S8e=F(()=>{"use strict";k8e();yL=class{static{o(this,"XYChartBuilder")}static build(t,r,n,i){return new gL(t,r,n,i).getDrawableElement()}}});function A8e(){let e=ma(),t=_t();return qr(e.xyChart,t.themeVariables.xyChart)}function R8e(){let e=_t();return qr(cr.xyChart,e.xyChart)}function _8e(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function xL(e){let t=_t();return mr(e.trim(),t)}function wAt(e){E8e=e}function kAt(e){e==="horizontal"?Bw.chartOrientation="horizontal":Bw.chartOrientation="vertical"}function SAt(e){fn.xAxis.title=xL(e.text)}function L8e(e,t){fn.xAxis={type:"linear",title:fn.xAxis.title,min:e,max:t},vL=!0}function EAt(e){fn.xAxis={type:"band",title:fn.xAxis.title,categories:e.map(t=>xL(t.text))},vL=!0}function AAt(e){fn.yAxis.title=xL(e.text)}function RAt(e,t){fn.yAxis={type:"linear",title:fn.yAxis.title,min:e,max:t},tY=!0}function _At(e){let t=Math.min(...e),r=Math.max(...e),n=Qv(fn.yAxis)?fn.yAxis.min:1/0,i=Qv(fn.yAxis)?fn.yAxis.max:-1/0;fn.yAxis={type:"linear",title:fn.yAxis.title,min:Math.min(n,t),max:Math.max(i,r)}}function D8e(e){let t=[];if(e.length===0)return t;if(!vL){let r=Qv(fn.xAxis)?fn.xAxis.min:1/0,n=Qv(fn.xAxis)?fn.xAxis.max:-1/0;L8e(Math.min(r,1),Math.max(n,e.length))}if(Pw(fn.xAxis)&&e.length>fn.xAxis.categories.length&&(e=e.slice(0,fn.xAxis.categories.length)),tY||_At(e),Pw(fn.xAxis)&&(t=fn.xAxis.categories.map((r,n)=>[r,e[n]])),Qv(fn.xAxis)){let r=fn.xAxis.min,n=fn.xAxis.max,i=(n-r)/(e.length-1),a=[];for(let s=r;s<=n;s+=i)a.push(`${s}`);t=a.map((s,l)=>[s,e[l]])}return t}function I8e(e){return eY[e===0?0:e%eY.length]}function LAt(e,t){let r=t.map(s=>s.value),n=t.map(s=>s.label?xL(s.label):""),i=D8e(r),a=n.some(s=>s!=="");fn.plots.push({type:"line",strokeFill:I8e(Ow),strokeWidth:2,data:i,...a?{pointLabels:n}:{}}),Ow++}function DAt(e,t){let r=t.map(i=>i.value),n=D8e(r);fn.plots.push({type:"bar",fill:I8e(Ow),data:n}),Ow++}function IAt(){if(fn.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return fn.title=Lr(),yL.build(Bw,fn,$w,E8e)}function MAt(){return $w}function NAt(){return Bw}function PAt(){return fn}var Ow,E8e,Bw,$w,fn,eY,vL,tY,OAt,M8e,N8e=F(()=>{"use strict";ur();Wi();Pc();Qt();Vr();Nn();S8e();hL();Ow=0,Bw=R8e(),$w=A8e(),fn=_8e(),eY=$w.plotColorPalette.split(",").map(e=>e.trim()),vL=!1,tY=!1;o(A8e,"getChartDefaultThemeConfig");o(R8e,"getChartDefaultConfig");o(_8e,"getChartDefaultData");o(xL,"textSanitizer");o(wAt,"setTmpSVGG");o(kAt,"setOrientation");o(SAt,"setXAxisTitle");o(L8e,"setXAxisRangeData");o(EAt,"setXAxisBand");o(AAt,"setYAxisTitle");o(RAt,"setYAxisRangeData");o(_At,"setYAxisRangeFromPlotData");o(D8e,"transformDataWithoutCategory");o(I8e,"getPlotColorFromPalette");o(LAt,"setLineData");o(DAt,"setBarData");o(IAt,"getDrawableElem");o(MAt,"getChartThemeConfig");o(NAt,"getChartConfig");o(PAt,"getXYChartData");OAt=o(function(){yr(),Ow=0,Bw=R8e(),fn=_8e(),$w=A8e(),eY=$w.plotColorPalette.split(",").map(e=>e.trim()),vL=!1,tY=!1},"clear"),M8e={getDrawableElem:IAt,clear:OAt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr,setOrientation:kAt,setXAxisTitle:SAt,setXAxisRangeData:L8e,setXAxisBand:EAt,setYAxisTitle:AAt,setYAxisRangeData:RAt,setLineData:LAt,setBarData:DAt,setTmpSVGG:wAt,getChartThemeConfig:MAt,getChartConfig:NAt,getXYChartData:PAt}});var BAt,P8e,O8e=F(()=>{"use strict";vt();Ka();$n();BAt=o((e,t,r,n)=>{let i=n.db,a=i.getChartThemeConfig(),s=i.getChartConfig(),l=i.getXYChartData().plots[0].data.map(T=>T[1]);function u(T){return T==="top"?"text-before-edge":"middle"}o(u,"getDominantBaseLine");function h(T){return T==="left"?"start":T==="right"?"end":"middle"}o(h,"getTextAnchor");function d(T){return`translate(${T.x}, ${T.y}) rotate(${T.rotation||0})`}o(d,"getTextTransformation"),Z.debug(`Rendering xychart chart +`+e);let f=xn(t),p=f.append("g").attr("class","main"),m=p.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background");Wr(f,s.height,s.width,!0),f.attr("viewBox",`0 0 ${s.width} ${s.height}`),m.attr("fill",a.backgroundColor),i.setTmpSVGG(f.append("g").attr("class","mermaid-tmp-group"));let g=i.getDrawableElem(),y={};function v(T){let k=p,C="";for(let[w]of T.entries()){let S=p;w>0&&y[C]&&(S=y[C]),C+=T[w],k=y[C],k||(k=y[C]=S.append("g").attr("class",T[w]))}return k}o(v,"getGroup");for(let T of g){if(T.data.length===0)continue;let k=v(T.groupTexts);switch(T.type){case"rect":if(k.selectAll("rect").data(T.data).enter().append("rect").attr("x",C=>C.x).attr("y",C=>C.y).attr("width",C=>C.width).attr("height",C=>C.height).attr("fill",C=>C.fill).attr("stroke",C=>C.strokeFill).attr("stroke-width",C=>C.strokeWidth),s.showDataLabel){let C=s.showDataLabelOutsideBar;if(s.chartOrientation==="horizontal"){let L=function(A,M){let{data:D,label:P}=A;return M*P.length*.7<=D.width-10};var x=L;o(L,"fitsHorizontally");let w=.7,S=10,R=T.data.map((A,M)=>({data:A,label:l[M].toString()})).filter(A=>A.data.width>0&&A.data.height>0),N=R.map(A=>{let{data:M}=A,D=M.height*.7;for(;!L(A,D)&&D>0;)D-=1;return D}),I=Math.floor(Math.min(...N)),_=o(A=>C?A.data.x+A.data.width+10:A.data.x+A.data.width-10,"determineLabelXPosition");k.selectAll("text").data(R).enter().append("text").attr("x",_).attr("y",A=>A.data.y+A.data.height/2).attr("text-anchor",C?"start":"end").attr("dominant-baseline","middle").attr("fill",a.dataLabelColor).attr("font-size",`${I}px`).text(A=>A.label)}else{let R=function(_,A,M){let{data:D,label:P}=_,O=A*P.length*.7,$=D.x+D.width/2,V=$-O/2,G=$+O/2,z=V>=D.x&&G<=D.x+D.width,W=D.y+M+A<=D.y+D.height;return z&&W};var b=R;o(R,"fitsInBar");let w=10,S=T.data.map((_,A)=>({data:_,label:l[A].toString()})).filter(_=>_.data.width>0&&_.data.height>0),L=S.map(_=>{let{data:A,label:M}=_,D=A.width/(M.length*.7);for(;!R(_,D,10)&&D>0;)D-=1;return D}),N=Math.floor(Math.min(...L)),I=o(_=>C?_.data.y-10:_.data.y+10,"determineLabelYPosition");k.selectAll("text").data(S).enter().append("text").attr("x",_=>_.data.x+_.data.width/2).attr("y",I).attr("text-anchor","middle").attr("dominant-baseline",C?"auto":"hanging").attr("fill",a.dataLabelColor).attr("font-size",`${N}px`).text(_=>_.label)}}break;case"text":k.selectAll("text").data(T.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",C=>C.fill).attr("font-size",C=>C.fontSize).attr("dominant-baseline",C=>u(C.verticalPos)).attr("text-anchor",C=>h(C.horizontalPos)).attr("transform",C=>d(C)).text(C=>C.text);break;case"path":k.selectAll("path").data(T.data).enter().append("path").attr("d",C=>C.path).attr("fill",C=>C.fill?C.fill:"none").attr("stroke",C=>C.strokeFill).attr("stroke-width",C=>C.strokeWidth);break}}},"draw"),P8e={draw:BAt}});var B8e={};ir(B8e,{diagram:()=>$At});var $At,$8e=F(()=>{"use strict";p8e();N8e();O8e();$At={parser:f8e,db:M8e,renderer:P8e}});var rY,G8e,V8e=F(()=>{"use strict";rY=(function(){var e=o(function(ve,ne,q,he){for(q=q||{},he=ve.length;he--;q[ve[he]]=ne);return q},"o"),t=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],s=[1,22],l=[2,7],u=[1,26],h=[1,27],d=[1,28],f=[1,29],p=[1,33],m=[1,34],g=[1,35],y=[1,36],v=[1,37],x=[1,38],b=[1,24],T=[1,31],k=[1,32],C=[1,30],w=[1,39],S=[1,40],R=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],L=[1,61],N=[89,90],I=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],_=[27,29],A=[1,70],M=[1,71],D=[1,72],P=[1,73],B=[1,74],O=[1,75],$=[1,76],V=[1,83],G=[1,80],z=[1,84],W=[1,85],H=[1,86],j=[1,87],Q=[1,88],U=[1,89],oe=[1,90],te=[1,91],le=[1,92],ie=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],ae=[63,64],Re=[1,101],be=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],Pe=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Ge=[1,110],Oe=[1,106],ue=[1,107],ye=[1,108],ke=[1,109],ce=[1,111],re=[1,116],J=[1,117],se=[1,114],ge=[1,115],Te={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:o(function(ne,q,he,X,fe,K,qe){var _e=K.length-1;switch(fe){case 4:this.$=K[_e].trim(),X.setAccTitle(this.$);break;case 5:case 6:this.$=K[_e].trim(),X.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:X.setDirection("TB");break;case 18:X.setDirection("BT");break;case 19:X.setDirection("RL");break;case 20:X.setDirection("LR");break;case 21:X.addRequirement(K[_e-3],K[_e-4]);break;case 22:X.addRequirement(K[_e-5],K[_e-6]),X.setClass([K[_e-5]],K[_e-3]);break;case 23:X.setNewReqId(K[_e-2]);break;case 24:X.setNewReqText(K[_e-2]);break;case 25:X.setNewReqRisk(K[_e-2]);break;case 26:X.setNewReqVerifyMethod(K[_e-2]);break;case 29:this.$=X.RequirementType.REQUIREMENT;break;case 30:this.$=X.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=X.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=X.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=X.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=X.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=X.RiskLevel.LOW_RISK;break;case 36:this.$=X.RiskLevel.MED_RISK;break;case 37:this.$=X.RiskLevel.HIGH_RISK;break;case 38:this.$=X.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=X.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=X.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=X.VerifyType.VERIFY_TEST;break;case 42:X.addElement(K[_e-3]);break;case 43:X.addElement(K[_e-5]),X.setClass([K[_e-5]],K[_e-3]);break;case 44:X.setNewElementType(K[_e-2]);break;case 45:X.setNewElementDocRef(K[_e-2]);break;case 48:X.addRelationship(K[_e-2],K[_e],K[_e-4]);break;case 49:X.addRelationship(K[_e-2],K[_e-4],K[_e]);break;case 50:this.$=X.Relationships.CONTAINS;break;case 51:this.$=X.Relationships.COPIES;break;case 52:this.$=X.Relationships.DERIVES;break;case 53:this.$=X.Relationships.SATISFIES;break;case 54:this.$=X.Relationships.VERIFIES;break;case 55:this.$=X.Relationships.REFINES;break;case 56:this.$=X.Relationships.TRACES;break;case 57:this.$=K[_e-2],X.defineClass(K[_e-1],K[_e]);break;case 58:X.setClass(K[_e-1],K[_e]);break;case 59:X.setClass([K[_e-2]],K[_e]);break;case 60:case 62:this.$=[K[_e]];break;case 61:case 63:this.$=K[_e-2].concat([K[_e]]);break;case 64:this.$=K[_e-2],X.setCssStyle(K[_e-1],K[_e]);break;case 65:this.$=[K[_e]];break;case 66:K[_e-2].push(K[_e]),this.$=K[_e-2];break;case 68:this.$=K[_e-1]+K[_e];break}},"anonymous"),table:[{3:1,4:2,6:t,9:r,11:n,13:i},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:r,11:n,13:i},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(a,[2,6]),{3:12,4:2,6:t,9:r,11:n,13:i},{1:[2,2]},{4:17,5:s,7:13,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},e(a,[2,4]),e(a,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:s,7:42,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:43,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:44,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:45,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:46,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:47,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:48,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:49,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{4:17,5:s,7:50,8:l,9:r,11:n,13:i,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:u,22:h,23:d,24:f,25:23,33:25,41:p,42:m,43:g,44:y,45:v,46:x,54:b,72:T,74:k,77:C,89:w,90:S},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},e(R,[2,17]),e(R,[2,18]),e(R,[2,19]),e(R,[2,20]),{30:60,33:62,75:L,89:w,90:S},{30:63,33:62,75:L,89:w,90:S},{30:64,33:62,75:L,89:w,90:S},e(N,[2,29]),e(N,[2,30]),e(N,[2,31]),e(N,[2,32]),e(N,[2,33]),e(N,[2,34]),e(I,[2,81]),e(I,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},e(_,[2,79]),e(_,[2,80]),{27:[1,67],29:[1,68]},e(_,[2,85]),e(_,[2,86]),{62:69,65:A,66:M,67:D,68:P,69:B,70:O,71:$},{62:77,65:A,66:M,67:D,68:P,69:B,70:O,71:$},{30:78,33:62,75:L,89:w,90:S},{73:79,75:V,76:G,78:81,79:82,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le},e(ie,[2,60]),e(ie,[2,62]),{73:93,75:V,76:G,78:81,79:82,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le},{30:94,33:62,75:L,76:G,89:w,90:S},{5:[1,95]},{30:96,33:62,75:L,89:w,90:S},{5:[1,97]},{30:98,33:62,75:L,89:w,90:S},{63:[1,99]},e(ae,[2,50]),e(ae,[2,51]),e(ae,[2,52]),e(ae,[2,53]),e(ae,[2,54]),e(ae,[2,55]),e(ae,[2,56]),{64:[1,100]},e(R,[2,59],{76:G}),e(R,[2,64],{76:Re}),{33:103,75:[1,102],89:w,90:S},e(be,[2,65],{79:104,75:V,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le}),e(Pe,[2,67]),e(Pe,[2,69]),e(Pe,[2,70]),e(Pe,[2,71]),e(Pe,[2,72]),e(Pe,[2,73]),e(Pe,[2,74]),e(Pe,[2,75]),e(Pe,[2,76]),e(Pe,[2,77]),e(Pe,[2,78]),e(R,[2,57],{76:Re}),e(R,[2,58],{76:G}),{5:Ge,28:105,31:Oe,34:ue,36:ye,38:ke,40:ce},{27:[1,112],76:G},{5:re,40:J,56:113,57:se,59:ge},{27:[1,118],76:G},{33:119,89:w,90:S},{33:120,89:w,90:S},{75:V,78:121,79:82,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le},e(ie,[2,61]),e(ie,[2,63]),e(Pe,[2,68]),e(R,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:Ge,28:126,31:Oe,34:ue,36:ye,38:ke,40:ce},e(R,[2,28]),{5:[1,127]},e(R,[2,42]),{32:[1,128]},{32:[1,129]},{5:re,40:J,56:130,57:se,59:ge},e(R,[2,47]),{5:[1,131]},e(R,[2,48]),e(R,[2,49]),e(be,[2,66],{79:104,75:V,80:z,81:W,82:H,83:j,84:Q,85:U,86:oe,87:te,88:le}),{33:132,89:w,90:S},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},e(R,[2,27]),{5:Ge,28:145,31:Oe,34:ue,36:ye,38:ke,40:ce},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},e(R,[2,46]),{5:re,40:J,56:152,57:se,59:ge},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},e(R,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},e(R,[2,43]),{5:Ge,28:159,31:Oe,34:ue,36:ye,38:ke,40:ce},{5:Ge,28:160,31:Oe,34:ue,36:ye,38:ke,40:ce},{5:Ge,28:161,31:Oe,34:ue,36:ye,38:ke,40:ce},{5:Ge,28:162,31:Oe,34:ue,36:ye,38:ke,40:ce},{5:re,40:J,56:163,57:se,59:ge},{5:re,40:J,56:164,57:se,59:ge},e(R,[2,23]),e(R,[2,24]),e(R,[2,25]),e(R,[2,26]),e(R,[2,44]),e(R,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:o(function(ne,q){if(q.recoverable)this.trace(ne);else{var he=new Error(ne);throw he.hash=q,he}},"parseError"),parse:o(function(ne){var q=this,he=[0],X=[],fe=[null],K=[],qe=this.table,_e="",Be=0,Ne=0,He=0,$e=2,Xe=1,Fe=K.slice.call(arguments,1),Ke=Object.create(this.lexer),xe={yy:{}};for(var mt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,mt)&&(xe.yy[mt]=this.yy[mt]);Ke.setInput(ne,xe.yy),xe.yy.lexer=Ke,xe.yy.parser=this,typeof Ke.yylloc>"u"&&(Ke.yylloc={});var Le=Ke.yylloc;K.push(Le);var ft=Ke.options&&Ke.options.ranges;typeof xe.yy.parseError=="function"?this.parseError=xe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function wt(Bt){he.length=he.length-2*Bt,fe.length=fe.length-Bt,K.length=K.length-Bt}o(wt,"popStack");function zt(){var Bt;return Bt=X.pop()||Ke.lex()||Xe,typeof Bt!="number"&&(Bt instanceof Array&&(X=Bt,Bt=X.pop()),Bt=q.symbols_[Bt]||Bt),Bt}o(zt,"lex");for(var St,At,bt,me,lt,gt,Ze={},Ee,tt,at,ot;;){if(bt=he[he.length-1],this.defaultActions[bt]?me=this.defaultActions[bt]:((St===null||typeof St>"u")&&(St=zt()),me=qe[bt]&&qe[bt][St]),typeof me>"u"||!me.length||!me[0]){var Wt="";ot=[];for(Ee in qe[bt])this.terminals_[Ee]&&Ee>$e&&ot.push("'"+this.terminals_[Ee]+"'");Ke.showPosition?Wt="Parse error on line "+(Be+1)+`: +`+Ke.showPosition()+` +Expecting `+ot.join(", ")+", got '"+(this.terminals_[St]||St)+"'":Wt="Parse error on line "+(Be+1)+": Unexpected "+(St==Xe?"end of input":"'"+(this.terminals_[St]||St)+"'"),this.parseError(Wt,{text:Ke.match,token:this.terminals_[St]||St,line:Ke.yylineno,loc:Le,expected:ot})}if(me[0]instanceof Array&&me.length>1)throw new Error("Parse Error: multiple actions possible at state: "+bt+", token: "+St);switch(me[0]){case 1:he.push(St),fe.push(Ke.yytext),K.push(Ke.yylloc),he.push(me[1]),St=null,At?(St=At,At=null):(Ne=Ke.yyleng,_e=Ke.yytext,Be=Ke.yylineno,Le=Ke.yylloc,He>0&&He--);break;case 2:if(tt=this.productions_[me[1]][1],Ze.$=fe[fe.length-tt],Ze._$={first_line:K[K.length-(tt||1)].first_line,last_line:K[K.length-1].last_line,first_column:K[K.length-(tt||1)].first_column,last_column:K[K.length-1].last_column},ft&&(Ze._$.range=[K[K.length-(tt||1)].range[0],K[K.length-1].range[1]]),gt=this.performAction.apply(Ze,[_e,Ne,Be,xe.yy,me[1],fe,K].concat(Fe)),typeof gt<"u")return gt;tt&&(he=he.slice(0,-1*tt*2),fe=fe.slice(0,-1*tt),K=K.slice(0,-1*tt)),he.push(this.productions_[me[1]][0]),fe.push(Ze.$),K.push(Ze._$),at=qe[he[he.length-2]][he[he.length-1]],he.push(at);break;case 3:return!0}}return!0},"parse")},we=(function(){var ve={EOF:1,parseError:o(function(q,he){if(this.yy.parser)this.yy.parser.parseError(q,he);else throw new Error(q)},"parseError"),setInput:o(function(ne,q){return this.yy=q||this.yy||{},this._input=ne,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var ne=this._input[0];this.yytext+=ne,this.yyleng++,this.offset++,this.match+=ne,this.matched+=ne;var q=ne.match(/(?:\r\n?|\n).*/g);return q?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ne},"input"),unput:o(function(ne){var q=ne.length,he=ne.split(/(?:\r\n?|\n)/g);this._input=ne+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-q),this.offset-=q;var X=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),he.length-1&&(this.yylineno-=he.length-1);var fe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:he?(he.length===X.length?this.yylloc.first_column:0)+X[X.length-he.length].length-he[0].length:this.yylloc.first_column-q},this.options.ranges&&(this.yylloc.range=[fe[0],fe[0]+this.yyleng-q]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(ne){this.unput(this.match.slice(ne))},"less"),pastInput:o(function(){var ne=this.matched.substr(0,this.matched.length-this.match.length);return(ne.length>20?"...":"")+ne.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var ne=this.match;return ne.length<20&&(ne+=this._input.substr(0,20-ne.length)),(ne.substr(0,20)+(ne.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var ne=this.pastInput(),q=new Array(ne.length+1).join("-");return ne+this.upcomingInput()+` +`+q+"^"},"showPosition"),test_match:o(function(ne,q){var he,X,fe;if(this.options.backtrack_lexer&&(fe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(fe.yylloc.range=this.yylloc.range.slice(0))),X=ne[0].match(/(?:\r\n?|\n).*/g),X&&(this.yylineno+=X.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:X?X[X.length-1].length-X[X.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ne[0].length},this.yytext+=ne[0],this.match+=ne[0],this.matches=ne,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ne[0].length),this.matched+=ne[0],he=this.performAction.call(this,this.yy,this,q,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),he)return he;if(this._backtrack){for(var K in fe)this[K]=fe[K];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ne,q,he,X;this._more||(this.yytext="",this.match="");for(var fe=this._currentRules(),K=0;Kq[0].length)){if(q=he,X=K,this.options.backtrack_lexer){if(ne=this.test_match(he,fe[K]),ne!==!1)return ne;if(this._backtrack){q=!1;continue}else return!1}else if(!this.options.flex)break}return q?(ne=this.test_match(q,fe[X]),ne!==!1?ne:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var q=this.next();return q||this.lex()},"lex"),begin:o(function(q){this.conditionStack.push(q)},"begin"),popState:o(function(){var q=this.conditionStack.length-1;return q>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(q){return q=this.conditionStack.length-1-Math.abs(q||0),q>=0?this.conditionStack[q]:"INITIAL"},"topState"),pushState:o(function(q){this.begin(q)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(q,he,X,fe){var K=fe;switch(X){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:break;case 14:break;case 15:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;break;case 50:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 56:break;case 57:this.begin("string");break;case 58:this.popState();break;case 59:return this.begin("style"),72;break;case 60:return this.begin("style"),74;break;case 61:return 61;case 62:return 64;case 63:return 63;case 64:this.begin("string");break;case 65:this.popState();break;case 66:return"qString";case 67:return he.yytext=he.yytext.trim(),89;break;case 68:return 75;case 69:return 80;case 70:return 76}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}};return ve})();Te.lexer=we;function Me(){this.yy={}}return o(Me,"Parser"),Me.prototype=Te,Te.Parser=Me,new Me})();rY.parser=rY;G8e=rY});var bL,W8e=F(()=>{"use strict";Xt();vt();Nn();bL=class{constructor(){this.relations=[];this.latestRequirement=this.getInitialRequirement();this.requirements=new Map;this.latestElement=this.getInitialElement();this.elements=new Map;this.classes=new Map;this.direction="TB";this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"};this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"};this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"};this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"};this.setAccTitle=kr;this.getAccTitle=Ar;this.setAccDescription=Rr;this.getAccDescription=_r;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getConfig=o(()=>Ae().requirement,"getConfig");this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{o(this,"RequirementDB")}getDirection(){return this.direction}setDirection(t){this.direction=t}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(t,r){return this.requirements.has(t)||this.requirements.set(t,{name:t,type:r,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(t)}getRequirements(){return this.requirements}setNewReqId(t){this.latestRequirement!==void 0&&(this.latestRequirement.requirementId=t)}setNewReqText(t){this.latestRequirement!==void 0&&(this.latestRequirement.text=t)}setNewReqRisk(t){this.latestRequirement!==void 0&&(this.latestRequirement.risk=t)}setNewReqVerifyMethod(t){this.latestRequirement!==void 0&&(this.latestRequirement.verifyMethod=t)}addElement(t){return this.elements.has(t)||(this.elements.set(t,{name:t,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),Z.info("Added new element: ",t)),this.resetLatestElement(),this.elements.get(t)}getElements(){return this.elements}setNewElementType(t){this.latestElement!==void 0&&(this.latestElement.type=t)}setNewElementDocRef(t){this.latestElement!==void 0&&(this.latestElement.docRef=t)}addRelationship(t,r,n){this.relations.push({type:t,src:r,dst:n})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,yr()}setCssStyle(t,r){for(let n of t){let i=this.requirements.get(n)??this.elements.get(n);if(!r||!i)return;for(let a of r)a.includes(",")?i.cssStyles.push(...a.split(",")):i.cssStyles.push(a)}}setClass(t,r){for(let n of t){let i=this.requirements.get(n)??this.elements.get(n);if(i)for(let a of r){i.classes.push(a);let s=this.classes.get(a)?.styles;s&&i.cssStyles.push(...s)}}}defineClass(t,r){for(let n of t){let i=this.classes.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.classes.set(n,i)),r&&r.forEach(function(a){if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.requirements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))}),this.elements.forEach(a=>{a.classes.includes(n)&&a.cssStyles.push(...r.flatMap(s=>s.split(",")))})}}getClasses(){return this.classes}getData(){let t=Ae(),r=[],n=[];for(let i of this.requirements.values()){let a=i;a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),a.shape="requirementBox",a.look=t.look,a.colorIndex=r.length,r.push(a)}for(let i of this.elements.values()){let a=i;a.shape="requirementBox",a.look=t.look,a.id=i.name,a.cssStyles=i.cssStyles,a.cssClasses=i.classes.join(" "),a.colorIndex=r.length,r.push(a)}for(let i of this.relations){let a=0,s=i.type===this.Relationships.CONTAINS,l={id:`${i.src}-${i.dst}-${a}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",s?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:s?"normal":"dashed",arrowTypeStart:s?"requirement_contains":"",arrowTypeEnd:s?"":"requirement_arrow",look:t.look,labelType:"markdown"};n.push(l),a++}return{nodes:r,edges:n,other:{},config:t,direction:this.getDirection()}}}});var VAt,WAt,q8e,H8e=F(()=>{"use strict";ur();VAt=o(e=>{let t=_t(),{themeVariables:r,look:n}=t,{bkgColorArray:i,borderColorArray:a}=r;if(!a?.length)return"";let s="";for(let l=0;l{let t=_t(),{look:r,themeVariables:n}=t,{requirementEdgeLabelBackground:i}=n;return` + ${VAt(e)} + marker { + fill: ${e.relationColor}; + stroke: ${e.relationColor}; + } + + marker.cross { + stroke: ${e.lineColor}; + } + + svg { + font-family: ${e.fontFamily}; + font-size: ${e.fontSize}; + } + + .reqBox { + fill: ${e.requirementBackground}; + fill-opacity: 1.0; + stroke: ${e.requirementBorderColor}; + stroke-width: ${e.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${e.requirementTextColor}; + } + .reqLabelBox { + fill: ${e.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${e.requirementBorderColor}; + stroke-width: ${e.requirementBorderSize}; + } + .relationshipLine { + stroke: ${e.relationColor}; + stroke-width: ${r==="neo"?e.strokeWidth:"1px"}; + } + .relationshipLabel { + fill: ${e.relationLabelColor}; + } + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + } + .edgeLabel .label rect { + fill: ${e.edgeLabelBackground}; + } + .edgeLabel .label text { + fill: ${e.relationLabelColor}; + } + .divider { + stroke: ${e.nodeBorder}; + stroke-width: 1; + } + .label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .label text,span { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + .labelBkg { + background-color: ${i??e.edgeLabelBackground}; + } + +`},"getStyles"),q8e=WAt});var nY={};ir(nY,{draw:()=>qAt});var qAt,U8e=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();qAt=o(async function(e,t,r,n){Z.info("REF0:"),Z.info("Drawing requirement diagram (unified)",t);let{securityLevel:i,state:a,layout:s,look:l}=Ae(),u=n.db.getData(),h=pl(t,i);u.type=n.type,u.layoutAlgorithm=Su(s),u.nodeSpacing=a?.nodeSpacing??50,u.rankSpacing=a?.rankSpacing??50,u.markers=l==="neo"?["requirement_contains_neo","requirement_arrow_neo"]:["requirement_contains","requirement_arrow"],u.diagramId=t,await Al(u,h);let d=8;Zt.insertTitle(h,"requirementDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),vo(h,d,"requirementDiagram",a?.useMaxWidth??!0)},"draw")});var Y8e={};ir(Y8e,{diagram:()=>HAt});var HAt,j8e=F(()=>{"use strict";V8e();W8e();H8e();U8e();HAt={parser:G8e,get db(){return new bL},renderer:nY,styles:q8e}});var iY,Z8e,Q8e=F(()=>{"use strict";iY=(function(){var e=o(function(Ne,He,$e,Xe){for($e=$e||{},Xe=Ne.length;Xe--;$e[Ne[Xe]]=He);return $e},"o"),t=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,12],u=[1,14],h=[1,15],d=[1,17],f=[1,18],p=[1,19],m=[1,25],g=[1,26],y=[1,27],v=[1,28],x=[1,29],b=[1,30],T=[1,31],k=[1,32],C=[1,33],w=[1,34],S=[1,35],R=[1,36],L=[1,37],N=[1,38],I=[1,39],_=[1,40],A=[1,42],M=[1,43],D=[1,44],P=[1,45],B=[1,46],O=[1,47],$=[1,4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,49,50,51,53,54,56,61,62,63,64,73],V=[1,74],G=[1,80],z=[1,81],W=[1,82],H=[1,83],j=[1,84],Q=[1,85],U=[1,86],oe=[1,87],te=[1,88],le=[1,89],ie=[1,90],ae=[1,91],Re=[1,92],be=[1,93],Pe=[1,94],Ge=[1,95],Oe=[1,96],ue=[1,97],ye=[1,98],ke=[1,99],ce=[1,100],re=[1,101],J=[1,102],se=[1,103],ge=[1,104],Te=[1,105],we=[2,78],Me=[4,5,17,51,53,54],ve=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],ne=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,50,51,53,54,56,61,62,63,64,73],q=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,49,51,53,54,56,61,62,63,64,73],he=[4,5,10,14,15,17,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,48,51,53,54,56,61,62,63,64,73],X=[5,52],fe=[70,71,72,73],K=[1,151],qe={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,INVALID:10,box_section:11,box_line:12,participant_statement:13,create:14,box:15,restOfLine:16,end:17,signal:18,autonumber:19,NUM:20,off:21,activate:22,actor:23,deactivate:24,note_statement:25,links_statement:26,link_statement:27,properties_statement:28,details_statement:29,title:30,legacy_title:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,loop:37,rect:38,opt:39,alt:40,else_sections:41,par:42,par_sections:43,par_over:44,critical:45,option_sections:46,break:47,option:48,and:49,else:50,participant:51,AS:52,participant_actor:53,destroy:54,actor_with_config:55,note:56,placement:57,text2:58,over:59,actor_pair:60,links:61,link:62,properties:63,details:64,spaceList:65,",":66,left_of:67,right_of:68,signaltype:69,"+":70,"-":71,"()":72,ACTOR:73,config_object:74,CONFIG_START:75,CONFIG_CONTENT:76,CONFIG_END:77,SOLID_OPEN_ARROW:78,DOTTED_OPEN_ARROW:79,SOLID_ARROW:80,SOLID_ARROW_TOP:81,SOLID_ARROW_BOTTOM:82,STICK_ARROW_TOP:83,STICK_ARROW_BOTTOM:84,SOLID_ARROW_TOP_DOTTED:85,SOLID_ARROW_BOTTOM_DOTTED:86,STICK_ARROW_TOP_DOTTED:87,STICK_ARROW_BOTTOM_DOTTED:88,SOLID_ARROW_TOP_REVERSE:89,SOLID_ARROW_BOTTOM_REVERSE:90,STICK_ARROW_TOP_REVERSE:91,STICK_ARROW_BOTTOM_REVERSE:92,SOLID_ARROW_TOP_REVERSE_DOTTED:93,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:94,STICK_ARROW_TOP_REVERSE_DOTTED:95,STICK_ARROW_BOTTOM_REVERSE_DOTTED:96,BIDIRECTIONAL_SOLID_ARROW:97,DOTTED_ARROW:98,BIDIRECTIONAL_DOTTED_ARROW:99,SOLID_CROSS:100,DOTTED_CROSS:101,SOLID_POINT:102,DOTTED_POINT:103,TXT:104,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",10:"INVALID",14:"create",15:"box",16:"restOfLine",17:"end",19:"autonumber",20:"NUM",21:"off",22:"activate",24:"deactivate",30:"title",31:"legacy_title",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"loop",38:"rect",39:"opt",40:"alt",42:"par",44:"par_over",45:"critical",47:"break",48:"option",49:"and",50:"else",51:"participant",52:"AS",53:"participant_actor",54:"destroy",56:"note",59:"over",61:"links",62:"link",63:"properties",64:"details",66:",",67:"left_of",68:"right_of",70:"+",71:"-",72:"()",73:"ACTOR",75:"CONFIG_START",76:"CONFIG_CONTENT",77:"CONFIG_END",78:"SOLID_OPEN_ARROW",79:"DOTTED_OPEN_ARROW",80:"SOLID_ARROW",81:"SOLID_ARROW_TOP",82:"SOLID_ARROW_BOTTOM",83:"STICK_ARROW_TOP",84:"STICK_ARROW_BOTTOM",85:"SOLID_ARROW_TOP_DOTTED",86:"SOLID_ARROW_BOTTOM_DOTTED",87:"STICK_ARROW_TOP_DOTTED",88:"STICK_ARROW_BOTTOM_DOTTED",89:"SOLID_ARROW_TOP_REVERSE",90:"SOLID_ARROW_BOTTOM_REVERSE",91:"STICK_ARROW_TOP_REVERSE",92:"STICK_ARROW_BOTTOM_REVERSE",93:"SOLID_ARROW_TOP_REVERSE_DOTTED",94:"SOLID_ARROW_BOTTOM_REVERSE_DOTTED",95:"STICK_ARROW_TOP_REVERSE_DOTTED",96:"STICK_ARROW_BOTTOM_REVERSE_DOTTED",97:"BIDIRECTIONAL_SOLID_ARROW",98:"DOTTED_ARROW",99:"BIDIRECTIONAL_DOTTED_ARROW",100:"SOLID_CROSS",101:"DOTTED_CROSS",102:"SOLID_POINT",103:"DOTTED_POINT",104:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[8,1],[11,0],[11,2],[12,2],[12,1],[12,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[46,1],[46,4],[43,1],[43,4],[41,1],[41,4],[13,5],[13,3],[13,5],[13,3],[13,3],[13,5],[13,3],[13,5],[13,3],[25,4],[25,4],[26,3],[27,3],[28,3],[29,3],[65,2],[65,1],[60,3],[60,1],[57,1],[57,1],[18,5],[18,5],[18,5],[18,5],[18,6],[18,4],[55,2],[74,3],[23,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[58,1]],performAction:o(function(He,$e,Xe,Fe,Ke,xe,mt){var Le=xe.length-1;switch(Ke){case 3:return Fe.apply(xe[Le]),xe[Le];break;case 4:case 10:this.$=[];break;case 5:case 11:xe[Le-1].push(xe[Le]),this.$=xe[Le-1];break;case 6:case 7:case 12:case 13:this.$=xe[Le];break;case 8:case 9:case 14:this.$=[];break;case 16:xe[Le].type="createParticipant",this.$=xe[Le];break;case 17:xe[Le-1].unshift({type:"boxStart",boxData:Fe.parseBoxData(xe[Le-2])}),xe[Le-1].push({type:"boxEnd",boxText:xe[Le-2]}),this.$=xe[Le-1];break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(xe[Le-2]),sequenceIndexStep:Number(xe[Le-1]),sequenceVisible:!0,signalType:Fe.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceIndex:Number(xe[Le-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:Fe.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:Fe.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:Fe.LINETYPE.AUTONUMBER};break;case 23:this.$={type:"activeStart",signalType:Fe.LINETYPE.ACTIVE_START,actor:xe[Le-1].actor};break;case 24:this.$={type:"activeEnd",signalType:Fe.LINETYPE.ACTIVE_END,actor:xe[Le-1].actor};break;case 30:Fe.setDiagramTitle(xe[Le].substring(6)),this.$=xe[Le].substring(6);break;case 31:Fe.setDiagramTitle(xe[Le].substring(7)),this.$=xe[Le].substring(7);break;case 32:this.$=xe[Le].trim(),Fe.setAccTitle(this.$);break;case 33:case 34:this.$=xe[Le].trim(),Fe.setAccDescription(this.$);break;case 35:xe[Le-1].unshift({type:"loopStart",loopText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.LOOP_START}),xe[Le-1].push({type:"loopEnd",loopText:xe[Le-2],signalType:Fe.LINETYPE.LOOP_END}),this.$=xe[Le-1];break;case 36:xe[Le-1].unshift({type:"rectStart",color:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.RECT_START}),xe[Le-1].push({type:"rectEnd",color:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.RECT_END}),this.$=xe[Le-1];break;case 37:xe[Le-1].unshift({type:"optStart",optText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.OPT_START}),xe[Le-1].push({type:"optEnd",optText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.OPT_END}),this.$=xe[Le-1];break;case 38:xe[Le-1].unshift({type:"altStart",altText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.ALT_START}),xe[Le-1].push({type:"altEnd",signalType:Fe.LINETYPE.ALT_END}),this.$=xe[Le-1];break;case 39:xe[Le-1].unshift({type:"parStart",parText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.PAR_START}),xe[Le-1].push({type:"parEnd",signalType:Fe.LINETYPE.PAR_END}),this.$=xe[Le-1];break;case 40:xe[Le-1].unshift({type:"parStart",parText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.PAR_OVER_START}),xe[Le-1].push({type:"parEnd",signalType:Fe.LINETYPE.PAR_END}),this.$=xe[Le-1];break;case 41:xe[Le-1].unshift({type:"criticalStart",criticalText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.CRITICAL_START}),xe[Le-1].push({type:"criticalEnd",signalType:Fe.LINETYPE.CRITICAL_END}),this.$=xe[Le-1];break;case 42:xe[Le-1].unshift({type:"breakStart",breakText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.BREAK_START}),xe[Le-1].push({type:"breakEnd",optText:Fe.parseMessage(xe[Le-2]),signalType:Fe.LINETYPE.BREAK_END}),this.$=xe[Le-1];break;case 44:this.$=xe[Le-3].concat([{type:"option",optionText:Fe.parseMessage(xe[Le-1]),signalType:Fe.LINETYPE.CRITICAL_OPTION},xe[Le]]);break;case 46:this.$=xe[Le-3].concat([{type:"and",parText:Fe.parseMessage(xe[Le-1]),signalType:Fe.LINETYPE.PAR_AND},xe[Le]]);break;case 48:this.$=xe[Le-3].concat([{type:"else",altText:Fe.parseMessage(xe[Le-1]),signalType:Fe.LINETYPE.ALT_ELSE},xe[Le]]);break;case 49:xe[Le-3].draw="participant",xe[Le-3].type="addParticipant",xe[Le-3].description=Fe.parseMessage(xe[Le-1]),this.$=xe[Le-3];break;case 50:xe[Le-1].draw="participant",xe[Le-1].type="addParticipant",this.$=xe[Le-1];break;case 51:xe[Le-3].draw="actor",xe[Le-3].type="addParticipant",xe[Le-3].description=Fe.parseMessage(xe[Le-1]),this.$=xe[Le-3];break;case 52:case 57:xe[Le-1].draw="actor",xe[Le-1].type="addParticipant",this.$=xe[Le-1];break;case 53:xe[Le-1].type="destroyParticipant",this.$=xe[Le-1];break;case 54:xe[Le-3].draw="participant",xe[Le-3].type="addParticipant",xe[Le-3].description=Fe.parseMessage(xe[Le-1]),this.$=xe[Le-3];break;case 55:xe[Le-1].draw="participant",xe[Le-1].type="addParticipant",this.$=xe[Le-1];break;case 56:xe[Le-3].draw="actor",xe[Le-3].type="addParticipant",xe[Le-3].description=Fe.parseMessage(xe[Le-1]),this.$=xe[Le-3];break;case 58:this.$=[xe[Le-1],{type:"addNote",placement:xe[Le-2],actor:xe[Le-1].actor,text:xe[Le]}];break;case 59:xe[Le-2]=[].concat(xe[Le-1],xe[Le-1]).slice(0,2),xe[Le-2][0]=xe[Le-2][0].actor,xe[Le-2][1]=xe[Le-2][1].actor,this.$=[xe[Le-1],{type:"addNote",placement:Fe.PLACEMENT.OVER,actor:xe[Le-2].slice(0,2),text:xe[Le]}];break;case 60:this.$=[xe[Le-1],{type:"addLinks",actor:xe[Le-1].actor,text:xe[Le]}];break;case 61:this.$=[xe[Le-1],{type:"addALink",actor:xe[Le-1].actor,text:xe[Le]}];break;case 62:this.$=[xe[Le-1],{type:"addProperties",actor:xe[Le-1].actor,text:xe[Le]}];break;case 63:this.$=[xe[Le-1],{type:"addDetails",actor:xe[Le-1].actor,text:xe[Le]}];break;case 66:this.$=[xe[Le-2],xe[Le]];break;case 67:this.$=xe[Le];break;case 68:this.$=Fe.PLACEMENT.LEFTOF;break;case 69:this.$=Fe.PLACEMENT.RIGHTOF;break;case 70:this.$=[xe[Le-4],xe[Le-1],{type:"addMessage",from:xe[Le-4].actor,to:xe[Le-1].actor,signalType:xe[Le-3],msg:xe[Le],activate:!0},{type:"activeStart",signalType:Fe.LINETYPE.ACTIVE_START,actor:xe[Le-1].actor}];break;case 71:this.$=[xe[Le-4],xe[Le-1],{type:"addMessage",from:xe[Le-4].actor,to:xe[Le-1].actor,signalType:xe[Le-3],msg:xe[Le]},{type:"activeEnd",signalType:Fe.LINETYPE.ACTIVE_END,actor:xe[Le-4].actor}];break;case 72:this.$=[xe[Le-4],xe[Le-1],{type:"addMessage",from:xe[Le-4].actor,to:xe[Le-1].actor,signalType:xe[Le-3],msg:xe[Le],activate:!0,centralConnection:Fe.LINETYPE.CENTRAL_CONNECTION},{type:"centralConnection",signalType:Fe.LINETYPE.CENTRAL_CONNECTION,actor:xe[Le-1].actor}];break;case 73:this.$=[xe[Le-4],xe[Le-1],{type:"addMessage",from:xe[Le-4].actor,to:xe[Le-1].actor,signalType:xe[Le-2],msg:xe[Le],activate:!1,centralConnection:Fe.LINETYPE.CENTRAL_CONNECTION_REVERSE},{type:"centralConnectionReverse",signalType:Fe.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:xe[Le-4].actor}];break;case 74:this.$=[xe[Le-5],xe[Le-1],{type:"addMessage",from:xe[Le-5].actor,to:xe[Le-1].actor,signalType:xe[Le-3],msg:xe[Le],activate:!0,centralConnection:Fe.LINETYPE.CENTRAL_CONNECTION_DUAL},{type:"centralConnection",signalType:Fe.LINETYPE.CENTRAL_CONNECTION,actor:xe[Le-1].actor},{type:"centralConnectionReverse",signalType:Fe.LINETYPE.CENTRAL_CONNECTION_REVERSE,actor:xe[Le-5].actor}];break;case 75:this.$=[xe[Le-3],xe[Le-1],{type:"addMessage",from:xe[Le-3].actor,to:xe[Le-1].actor,signalType:xe[Le-2],msg:xe[Le]}];break;case 76:this.$={type:"addParticipant",actor:xe[Le-1],config:xe[Le]};break;case 77:this.$=xe[Le-1].trim();break;case 78:this.$={type:"addParticipant",actor:xe[Le]};break;case 79:this.$=Fe.LINETYPE.SOLID_OPEN;break;case 80:this.$=Fe.LINETYPE.DOTTED_OPEN;break;case 81:this.$=Fe.LINETYPE.SOLID;break;case 82:this.$=Fe.LINETYPE.SOLID_TOP;break;case 83:this.$=Fe.LINETYPE.SOLID_BOTTOM;break;case 84:this.$=Fe.LINETYPE.STICK_TOP;break;case 85:this.$=Fe.LINETYPE.STICK_BOTTOM;break;case 86:this.$=Fe.LINETYPE.SOLID_TOP_DOTTED;break;case 87:this.$=Fe.LINETYPE.SOLID_BOTTOM_DOTTED;break;case 88:this.$=Fe.LINETYPE.STICK_TOP_DOTTED;break;case 89:this.$=Fe.LINETYPE.STICK_BOTTOM_DOTTED;break;case 90:this.$=Fe.LINETYPE.SOLID_ARROW_TOP_REVERSE;break;case 91:this.$=Fe.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE;break;case 92:this.$=Fe.LINETYPE.STICK_ARROW_TOP_REVERSE;break;case 93:this.$=Fe.LINETYPE.STICK_ARROW_BOTTOM_REVERSE;break;case 94:this.$=Fe.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED;break;case 95:this.$=Fe.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED;break;case 96:this.$=Fe.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED;break;case 97:this.$=Fe.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED;break;case 98:this.$=Fe.LINETYPE.BIDIRECTIONAL_SOLID;break;case 99:this.$=Fe.LINETYPE.DOTTED;break;case 100:this.$=Fe.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 101:this.$=Fe.LINETYPE.SOLID_CROSS;break;case 102:this.$=Fe.LINETYPE.DOTTED_CROSS;break;case 103:this.$=Fe.LINETYPE.SOLID_POINT;break;case 104:this.$=Fe.LINETYPE.DOTTED_POINT;break;case 105:this.$=Fe.parseMessage(xe[Le].trim().substring(1));break}},"anonymous"),table:[{3:1,4:t,5:r,6:n},{1:[3]},{3:5,4:t,5:r,6:n},{3:6,4:t,5:r,6:n},e([1,4,5,10,14,15,19,22,24,30,31,32,34,36,37,38,39,40,42,44,45,47,51,53,54,56,61,62,63,64,73],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},e($,[2,5]),{9:48,13:13,14:u,15:h,18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},e($,[2,7]),e($,[2,8]),e($,[2,9]),e($,[2,15]),{13:49,51:N,53:I,54:_},{16:[1,50]},{5:[1,51]},{5:[1,54],20:[1,52],21:[1,53]},{23:55,73:O},{23:56,73:O},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},{5:[1,61]},e($,[2,30]),e($,[2,31]),{33:[1,62]},{35:[1,63]},e($,[2,34]),{16:[1,64]},{16:[1,65]},{16:[1,66]},{16:[1,67]},{16:[1,68]},{16:[1,69]},{16:[1,70]},{16:[1,71]},{23:72,55:73,73:V},{23:75,55:76,73:V},{23:77,73:O},{69:78,72:[1,79],78:G,79:z,80:W,81:H,82:j,83:Q,84:U,85:oe,86:te,87:le,88:ie,89:ae,90:Re,91:be,92:Pe,93:Ge,94:Oe,95:ue,96:ye,97:ke,98:ce,99:re,100:J,101:se,102:ge,103:Te},{57:106,59:[1,107],67:[1,108],68:[1,109]},{23:110,73:O},{23:111,73:O},{23:112,73:O},{23:113,73:O},e([5,66,72,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],we),e($,[2,6]),e($,[2,16]),e(Me,[2,10],{11:114}),e($,[2,18]),{5:[1,116],20:[1,115]},{5:[1,117]},e($,[2,22]),{5:[1,118]},{5:[1,119]},e($,[2,25]),e($,[2,26]),e($,[2,27]),e($,[2,28]),e($,[2,29]),e($,[2,32]),e($,[2,33]),e(ve,i,{7:120}),e(ve,i,{7:121}),e(ve,i,{7:122}),e(ne,i,{41:123,7:124}),e(q,i,{43:125,7:126}),e(q,i,{7:126,43:127}),e(he,i,{46:128,7:129}),e(ve,i,{7:130}),{5:[1,132],52:[1,131]},{5:[1,134],52:[1,133]},e(X,we,{74:135,75:[1,136]}),{5:[1,138],52:[1,137]},{5:[1,140],52:[1,139]},{5:[1,141]},{23:145,70:[1,142],71:[1,143],72:[1,144],73:O},{69:146,78:G,79:z,80:W,81:H,82:j,83:Q,84:U,85:oe,86:te,87:le,88:ie,89:ae,90:Re,91:be,92:Pe,93:Ge,94:Oe,95:ue,96:ye,97:ke,98:ce,99:re,100:J,101:se,102:ge,103:Te},e(fe,[2,79]),e(fe,[2,80]),e(fe,[2,81]),e(fe,[2,82]),e(fe,[2,83]),e(fe,[2,84]),e(fe,[2,85]),e(fe,[2,86]),e(fe,[2,87]),e(fe,[2,88]),e(fe,[2,89]),e(fe,[2,90]),e(fe,[2,91]),e(fe,[2,92]),e(fe,[2,93]),e(fe,[2,94]),e(fe,[2,95]),e(fe,[2,96]),e(fe,[2,97]),e(fe,[2,98]),e(fe,[2,99]),e(fe,[2,100]),e(fe,[2,101]),e(fe,[2,102]),e(fe,[2,103]),e(fe,[2,104]),{23:147,73:O},{23:149,60:148,73:O},{73:[2,68]},{73:[2,69]},{58:150,104:K},{58:152,104:K},{58:153,104:K},{58:154,104:K},{4:[1,157],5:[1,159],12:156,13:158,17:[1,155],51:N,53:I,54:_},{5:[1,160]},e($,[2,20]),e($,[2,21]),e($,[2,23]),e($,[2,24]),{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,161],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,162],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,163],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{17:[1,164]},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[2,47],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,50:[1,165],51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{17:[1,166]},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[2,45],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,49:[1,167],51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{17:[1,168]},{17:[1,169]},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[2,43],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,48:[1,170],51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{4:a,5:s,8:8,9:10,10:l,13:13,14:u,15:h,17:[1,171],18:16,19:d,22:f,23:41,24:p,25:20,26:21,27:22,28:23,29:24,30:m,31:g,32:y,34:v,36:x,37:b,38:T,39:k,40:C,42:w,44:S,45:R,47:L,51:N,53:I,54:_,56:A,61:M,62:D,63:P,64:B,73:O},{16:[1,172]},e($,[2,50]),{16:[1,173]},e($,[2,55]),e(X,[2,76]),{76:[1,174]},{16:[1,175]},e($,[2,52]),{16:[1,176]},e($,[2,57]),e($,[2,53]),{23:177,73:O},{23:178,73:O},{23:179,73:O},{58:180,104:K},{23:181,72:[1,182],73:O},{58:183,104:K},{58:184,104:K},{66:[1,185],104:[2,67]},{5:[2,60]},{5:[2,105]},{5:[2,61]},{5:[2,62]},{5:[2,63]},e($,[2,17]),e(Me,[2,11]),{13:186,51:N,53:I,54:_},e(Me,[2,13]),e(Me,[2,14]),e($,[2,19]),e($,[2,35]),e($,[2,36]),e($,[2,37]),e($,[2,38]),{16:[1,187]},e($,[2,39]),{16:[1,188]},e($,[2,40]),e($,[2,41]),{16:[1,189]},e($,[2,42]),{5:[1,190]},{5:[1,191]},{77:[1,192]},{5:[1,193]},{5:[1,194]},{58:195,104:K},{58:196,104:K},{58:197,104:K},{5:[2,75]},{58:198,104:K},{23:199,73:O},{5:[2,58]},{5:[2,59]},{23:200,73:O},e(Me,[2,12]),e(ne,i,{7:124,41:201}),e(q,i,{7:126,43:202}),e(he,i,{7:129,46:203}),e($,[2,49]),e($,[2,54]),e(X,[2,77]),e($,[2,51]),e($,[2,56]),{5:[2,70]},{5:[2,71]},{5:[2,72]},{5:[2,73]},{58:204,104:K},{104:[2,66]},{17:[2,48]},{17:[2,46]},{17:[2,44]},{5:[2,74]}],defaultActions:{5:[2,1],6:[2,2],108:[2,68],109:[2,69],150:[2,60],151:[2,105],152:[2,61],153:[2,62],154:[2,63],180:[2,75],183:[2,58],184:[2,59],195:[2,70],196:[2,71],197:[2,72],198:[2,73],200:[2,66],201:[2,48],202:[2,46],203:[2,44],204:[2,74]},parseError:o(function(He,$e){if($e.recoverable)this.trace(He);else{var Xe=new Error(He);throw Xe.hash=$e,Xe}},"parseError"),parse:o(function(He){var $e=this,Xe=[0],Fe=[],Ke=[null],xe=[],mt=this.table,Le="",ft=0,wt=0,zt=0,St=2,At=1,bt=xe.slice.call(arguments,1),me=Object.create(this.lexer),lt={yy:{}};for(var gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,gt)&&(lt.yy[gt]=this.yy[gt]);me.setInput(He,lt.yy),lt.yy.lexer=me,lt.yy.parser=this,typeof me.yylloc>"u"&&(me.yylloc={});var Ze=me.yylloc;xe.push(Ze);var Ee=me.options&&me.options.ranges;typeof lt.yy.parseError=="function"?this.parseError=lt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function tt(Ht){Xe.length=Xe.length-2*Ht,Ke.length=Ke.length-Ht,xe.length=xe.length-Ht}o(tt,"popStack");function at(){var Ht;return Ht=Fe.pop()||me.lex()||At,typeof Ht!="number"&&(Ht instanceof Array&&(Fe=Ht,Ht=Fe.pop()),Ht=$e.symbols_[Ht]||Ht),Ht}o(at,"lex");for(var ot,Wt,Bt,qt,vr,Tt,De={},it,We,rt,yt;;){if(Bt=Xe[Xe.length-1],this.defaultActions[Bt]?qt=this.defaultActions[Bt]:((ot===null||typeof ot>"u")&&(ot=at()),qt=mt[Bt]&&mt[Bt][ot]),typeof qt>"u"||!qt.length||!qt[0]){var Yt="";yt=[];for(it in mt[Bt])this.terminals_[it]&&it>St&&yt.push("'"+this.terminals_[it]+"'");me.showPosition?Yt="Parse error on line "+(ft+1)+`: +`+me.showPosition()+` +Expecting `+yt.join(", ")+", got '"+(this.terminals_[ot]||ot)+"'":Yt="Parse error on line "+(ft+1)+": Unexpected "+(ot==At?"end of input":"'"+(this.terminals_[ot]||ot)+"'"),this.parseError(Yt,{text:me.match,token:this.terminals_[ot]||ot,line:me.yylineno,loc:Ze,expected:yt})}if(qt[0]instanceof Array&&qt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Bt+", token: "+ot);switch(qt[0]){case 1:Xe.push(ot),Ke.push(me.yytext),xe.push(me.yylloc),Xe.push(qt[1]),ot=null,Wt?(ot=Wt,Wt=null):(wt=me.yyleng,Le=me.yytext,ft=me.yylineno,Ze=me.yylloc,zt>0&&zt--);break;case 2:if(We=this.productions_[qt[1]][1],De.$=Ke[Ke.length-We],De._$={first_line:xe[xe.length-(We||1)].first_line,last_line:xe[xe.length-1].last_line,first_column:xe[xe.length-(We||1)].first_column,last_column:xe[xe.length-1].last_column},Ee&&(De._$.range=[xe[xe.length-(We||1)].range[0],xe[xe.length-1].range[1]]),Tt=this.performAction.apply(De,[Le,wt,ft,lt.yy,qt[1],Ke,xe].concat(bt)),typeof Tt<"u")return Tt;We&&(Xe=Xe.slice(0,-1*We*2),Ke=Ke.slice(0,-1*We),xe=xe.slice(0,-1*We)),Xe.push(this.productions_[qt[1]][0]),Ke.push(De.$),xe.push(De._$),rt=mt[Xe[Xe.length-2]][Xe[Xe.length-1]],Xe.push(rt);break;case 3:return!0}}return!0},"parse")},_e=(function(){var Ne={EOF:1,parseError:o(function($e,Xe){if(this.yy.parser)this.yy.parser.parseError($e,Xe);else throw new Error($e)},"parseError"),setInput:o(function(He,$e){return this.yy=$e||this.yy||{},this._input=He,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var He=this._input[0];this.yytext+=He,this.yyleng++,this.offset++,this.match+=He,this.matched+=He;var $e=He.match(/(?:\r\n?|\n).*/g);return $e?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),He},"input"),unput:o(function(He){var $e=He.length,Xe=He.split(/(?:\r\n?|\n)/g);this._input=He+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-$e),this.offset-=$e;var Fe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Xe.length-1&&(this.yylineno-=Xe.length-1);var Ke=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Xe?(Xe.length===Fe.length?this.yylloc.first_column:0)+Fe[Fe.length-Xe.length].length-Xe[0].length:this.yylloc.first_column-$e},this.options.ranges&&(this.yylloc.range=[Ke[0],Ke[0]+this.yyleng-$e]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(He){this.unput(this.match.slice(He))},"less"),pastInput:o(function(){var He=this.matched.substr(0,this.matched.length-this.match.length);return(He.length>20?"...":"")+He.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var He=this.match;return He.length<20&&(He+=this._input.substr(0,20-He.length)),(He.substr(0,20)+(He.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var He=this.pastInput(),$e=new Array(He.length+1).join("-");return He+this.upcomingInput()+` +`+$e+"^"},"showPosition"),test_match:o(function(He,$e){var Xe,Fe,Ke;if(this.options.backtrack_lexer&&(Ke={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ke.yylloc.range=this.yylloc.range.slice(0))),Fe=He[0].match(/(?:\r\n?|\n).*/g),Fe&&(this.yylineno+=Fe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Fe?Fe[Fe.length-1].length-Fe[Fe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+He[0].length},this.yytext+=He[0],this.match+=He[0],this.matches=He,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(He[0].length),this.matched+=He[0],Xe=this.performAction.call(this,this.yy,this,$e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Xe)return Xe;if(this._backtrack){for(var xe in Ke)this[xe]=Ke[xe];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var He,$e,Xe,Fe;this._more||(this.yytext="",this.match="");for(var Ke=this._currentRules(),xe=0;xe$e[0].length)){if($e=Xe,Fe=xe,this.options.backtrack_lexer){if(He=this.test_match(Xe,Ke[xe]),He!==!1)return He;if(this._backtrack){$e=!1;continue}else return!1}else if(!this.options.flex)break}return $e?(He=this.test_match($e,Ke[Fe]),He!==!1?He:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var $e=this.next();return $e||this.lex()},"lex"),begin:o(function($e){this.conditionStack.push($e)},"begin"),popState:o(function(){var $e=this.conditionStack.length-1;return $e>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function($e){return $e=this.conditionStack.length-1-Math.abs($e||0),$e>=0?this.conditionStack[$e]:"INITIAL"},"topState"),pushState:o(function($e){this.begin($e)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function($e,Xe,Fe,Ke){var xe=Ke;switch(Fe){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 20;case 7:return this.begin("CONFIG"),75;break;case 8:return 76;case 9:return this.popState(),this.begin("ALIAS"),77;break;case 10:return this.popState(),this.popState(),77;break;case 11:return Xe.yytext=Xe.yytext.trim(),73;break;case 12:return Xe.yytext=Xe.yytext.trim(),this.begin("ALIAS"),73;break;case 13:return Xe.yytext=Xe.yytext.trim(),this.popState(),73;break;case 14:return this.popState(),10;break;case 15:return Xe.yytext=Xe.yytext.trim(),this.popState(),10;break;case 16:return this.begin("LINE"),15;break;case 17:return this.begin("ID"),51;break;case 18:return this.begin("ID"),53;break;case 19:return 14;case 20:return this.begin("ID"),54;break;case 21:return this.popState(),this.popState(),this.begin("LINE"),52;break;case 22:return this.popState(),this.popState(),5;break;case 23:return this.begin("LINE"),37;break;case 24:return this.begin("LINE"),38;break;case 25:return this.begin("LINE"),39;break;case 26:return this.begin("LINE"),40;break;case 27:return this.begin("LINE"),50;break;case 28:return this.begin("LINE"),42;break;case 29:return this.begin("LINE"),44;break;case 30:return this.begin("LINE"),49;break;case 31:return this.begin("LINE"),45;break;case 32:return this.begin("LINE"),48;break;case 33:return this.begin("LINE"),47;break;case 34:return this.popState(),16;break;case 35:return 17;case 36:return 67;case 37:return 68;case 38:return 61;case 39:return 62;case 40:return 63;case 41:return 64;case 42:return 59;case 43:return 56;case 44:return this.begin("ID"),22;break;case 45:return this.begin("ID"),24;break;case 46:return 30;case 47:return 31;case 48:return this.begin("acc_title"),32;break;case 49:return this.popState(),"acc_title_value";break;case 50:return this.begin("acc_descr"),34;break;case 51:return this.popState(),"acc_descr_value";break;case 52:this.begin("acc_descr_multiline");break;case 53:this.popState();break;case 54:return"acc_descr_multiline_value";case 55:return 6;case 56:return 19;case 57:return 21;case 58:return 66;case 59:return 5;case 60:return Xe.yytext=Xe.yytext.trim(),73;break;case 61:return 80;case 62:return 97;case 63:return 98;case 64:return 99;case 65:return 78;case 66:return 79;case 67:return 100;case 68:return 101;case 69:return 102;case 70:return 103;case 71:return 85;case 72:return 86;case 73:return 87;case 74:return 88;case 75:return 93;case 76:return 94;case 77:return 95;case 78:return 96;case 79:return 81;case 80:return 82;case 81:return 83;case 82:return 84;case 83:return 89;case 84:return 90;case 85:return 91;case 86:return 92;case 87:return 104;case 88:return 104;case 89:return 70;case 90:return 71;case 91:return 72;case 92:return 5;case 93:return 10}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:([0-9]+(\.[0-9]{1,2})?|\.[0-9]{1,2})(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\}(?=\s+as\s))/i,/^(?:\})/i,/^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i,/^(?:[^<>:\n,;@\s]+(?=\s+as\s))/i,/^(?:[^<>:\n,;@]+(?=\s*[\n;#]|$))/i,/^(?:[^<>:\n,;@]*<[^\n]*)/i,/^(?:[^\n]+)/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\/\\\+\()\+<\->\->:\n,;]+((?!(-x|--x|-\)|--\)|-\|\\|-\\|-\/|-\/\/|-\|\/|\/\|-|\\\|-|\/\/-|\\\\-|\/\|-|--\|\\|--|\(\)))[\-]*[^\+<\->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?:--\|\\)/i,/^(?:--\|\/)/i,/^(?:--\\\\)/i,/^(?:--\/\/)/i,/^(?:\/\|--)/i,/^(?:\\\|--)/i,/^(?:\/\/--)/i,/^(?:\\\\--)/i,/^(?:-\|\\)/i,/^(?:-\|\/)/i,/^(?:-\\\\)/i,/^(?:-\/\/)/i,/^(?:\/\|-)/i,/^(?:\\\|-)/i,/^(?:\/\/-)/i,/^(?:\\\\-)/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:\(\))/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[53,54],inclusive:!1},acc_descr:{rules:[51],inclusive:!1},acc_title:{rules:[49],inclusive:!1},ID:{rules:[2,3,7,11,12,13,14,15],inclusive:!1},ALIAS:{rules:[2,3,21,22],inclusive:!1},LINE:{rules:[2,3,34],inclusive:!1},CONFIG:{rules:[8,9,10],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,16,17,18,19,20,23,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,52,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93],inclusive:!0}}};return Ne})();qe.lexer=_e;function Be(){this.yy={}}return o(Be,"Parser"),Be.prototype=qe,qe.Parser=Be,new Be})();iY.parser=iY;Z8e=iY});var XAt,KAt,ZAt,Fw,TL,aY=F(()=>{"use strict";Xt();A2();vt();J_();Vr();Nn();XAt={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34,SOLID_TOP:41,SOLID_BOTTOM:42,STICK_TOP:43,STICK_BOTTOM:44,SOLID_ARROW_TOP_REVERSE:45,SOLID_ARROW_BOTTOM_REVERSE:46,STICK_ARROW_TOP_REVERSE:47,STICK_ARROW_BOTTOM_REVERSE:48,SOLID_TOP_DOTTED:51,SOLID_BOTTOM_DOTTED:52,STICK_TOP_DOTTED:53,STICK_BOTTOM_DOTTED:54,SOLID_ARROW_TOP_REVERSE_DOTTED:55,SOLID_ARROW_BOTTOM_REVERSE_DOTTED:56,STICK_ARROW_TOP_REVERSE_DOTTED:57,STICK_ARROW_BOTTOM_REVERSE_DOTTED:58,CENTRAL_CONNECTION:59,CENTRAL_CONNECTION_REVERSE:60,CENTRAL_CONNECTION_DUAL:61},KAt={FILLED:0,OPEN:1},ZAt={LEFTOF:0,RIGHTOF:1,OVER:2},Fw={ACTOR:"actor",BOUNDARY:"boundary",COLLECTIONS:"collections",CONTROL:"control",DATABASE:"database",ENTITY:"entity",PARTICIPANT:"participant",QUEUE:"queue"},TL=class{constructor(){this.state=new Cp(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0}));this.setAccTitle=kr;this.setAccDescription=Rr;this.setDiagramTitle=Or;this.getAccTitle=Ar;this.getAccDescription=_r;this.getDiagramTitle=Lr;this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap(Ae().wrap),this.LINETYPE=XAt,this.ARROWTYPE=KAt,this.PLACEMENT=ZAt}static{o(this,"SequenceDB")}addBox(t){this.state.records.boxes.push({name:t.text,wrap:t.wrap??this.autoWrap(),fill:t.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(t,r,n,i,a){let s=this.state.records.currentBox,l;if(a!==void 0){let h;a.includes(` +`)?h=a+` +`:h=`{ +`+a+` +}`,l=Qd(h,{schema:Zd})}i=l?.type??i,l?.alias&&(!n||n.text===r)&&(n={text:l.alias,wrap:n?.wrap,type:i});let u=this.state.records.actors.get(t);if(u){if(this.state.records.currentBox&&u.box&&this.state.records.currentBox!==u.box)throw new Error(`A same participant should only be defined in one Box: ${u.name} can't be in '${u.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(s=u.box?u.box:this.state.records.currentBox,u.box=s,u&&r===u.name&&n==null)return}if(n?.text==null&&(n={text:r,type:i}),(i==null||n.text==null)&&(n={text:r,type:i}),this.state.records.actors.set(t,{box:s,name:r,description:n.text,wrap:n.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:i??"participant"}),this.state.records.prevActor){let h=this.state.records.actors.get(this.state.records.prevActor);h&&(h.nextActor=t)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(t),this.state.records.prevActor=t}activationCount(t){let r,n=0;if(!t)return 0;for(r=0;r>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},u}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:r,message:n?.text??"",wrap:n?.wrap??this.autoWrap(),type:i,activate:a,centralConnection:s??0}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some(t=>t.name)}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(t){return this.state.records.actors.get(t)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(t){this.state.records.wrapEnabled=t}extractWrap(t){if(t===void 0)return{};t=t.trim();let r=/^:?wrap:/.exec(t)!==null?!0:/^:?nowrap:/.exec(t)!==null?!1:void 0;return{cleanedText:(r===void 0?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:r}}autoWrap(){return this.state.records.wrapEnabled!==void 0?this.state.records.wrapEnabled:Ae().sequence?.wrap??!1}clear(){this.state.reset(),yr()}parseMessage(t){let r=t.trim(),{wrap:n,cleanedText:i}=this.extractWrap(r),a={text:i,wrap:n};return Z.debug(`parseMessage: ${JSON.stringify(a)}`),a}parseBoxData(t){let r=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t),n=r?.[1]?r[1].trim():"transparent",i=r?.[2]?r[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",n)||(n="transparent",i=t.trim());else{let l=new Option().style;l.color=n,l.color!==n&&(n="transparent",i=t.trim())}let{wrap:a,cleanedText:s}=this.extractWrap(i);return{text:s?mr(s,Ae()):void 0,color:n,wrap:a}}addNote(t,r,n){let i={actor:t,placement:r,message:n.text,wrap:n.wrap??this.autoWrap()},a=[].concat(t,t);this.state.records.notes.push(i),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:a[0],to:a[1],message:n.text,wrap:n.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:r})}addLinks(t,r){let n=this.getActor(t);try{let i=mr(r.text,Ae());i=i.replace(/=/g,"="),i=i.replace(/&/g,"&");let a=JSON.parse(i);this.insertLinks(n,a)}catch(i){Z.error("error while parsing actor link text",i)}}addALink(t,r){let n=this.getActor(t);try{let i={},a=mr(r.text,Ae()),s=a.indexOf("@");a=a.replace(/=/g,"="),a=a.replace(/&/g,"&");let l=a.slice(0,s-1).trim(),u=a.slice(s+1).trim();i[l]=u,this.insertLinks(n,i)}catch(i){Z.error("error while parsing actor link text",i)}}insertLinks(t,r){if(t.links==null)t.links=r;else for(let n in r)t.links[n]=r[n]}addProperties(t,r){let n=this.getActor(t);try{let i=mr(r.text,Ae()),a=JSON.parse(i);this.insertProperties(n,a)}catch(i){Z.error("error while parsing actor properties text",i)}}insertProperties(t,r){if(t.properties==null)t.properties=r;else for(let n in r)t.properties[n]=r[n]}boxEnd(){this.state.records.currentBox=void 0}addDetails(t,r){let n=this.getActor(t),i=document.getElementById(r.text);try{let a=i.innerHTML,s=JSON.parse(a);s.properties&&this.insertProperties(n,s.properties),s.links&&this.insertLinks(n,s.links)}catch(a){Z.error("error while parsing actor details text",a)}}getActorProperty(t,r){if(t?.properties!==void 0)return t.properties[r]}apply(t){if(Array.isArray(t))t.forEach(r=>{this.apply(r)});else switch(t.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":this.addActor(t.actor,t.actor,t.description,t.draw,t.config);break;case"createParticipant":if(this.state.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=t.actor,this.addActor(t.actor,t.actor,t.description,t.draw,t.config),this.state.records.createdActors.set(t.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=t.actor,this.state.records.destroyedActors.set(t.actor,this.state.records.messages.length);break;case"activeStart":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"centralConnection":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"centralConnectionReverse":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"activeEnd":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"addNote":this.addNote(t.actor,t.placement,t.text);break;case"addLinks":this.addLinks(t.actor,t.text);break;case"addALink":this.addALink(t.actor,t.text);break;case"addProperties":this.addProperties(t.actor,t.text);break;case"addDetails":this.addDetails(t.actor,t.text);break;case"addMessage":if(this.state.records.lastCreated){if(t.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(t.to!==this.state.records.lastDestroyed&&t.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(t.from,t.to,t.msg,t.signalType,t.activate,t.centralConnection);break;case"boxStart":this.addBox(t.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"rectStart":this.addSignal(void 0,void 0,t.color,t.signalType);break;case"rectEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"optStart":this.addSignal(void 0,void 0,t.optText,t.signalType);break;case"optEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"altStart":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"else":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"altEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"setAccTitle":kr(t.text);break;case"parStart":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"and":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"parEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,t.criticalText,t.signalType);break;case"option":this.addSignal(void 0,void 0,t.optionText,t.signalType);break;case"criticalEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"breakStart":this.addSignal(void 0,void 0,t.breakText,t.signalType);break;case"breakEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break}}getConfig(){return Ae().sequence}}});var QAt,J8e,eIe=F(()=>{"use strict";Xt();QAt=o(e=>{let t=e.dropShadow??"none",{look:r}=Ae();return`.actor { + stroke: ${e.actorBorder}; + fill: ${e.actorBkg}; + stroke-width: ${e.strokeWidth??1}; + } + + rect.actor.outer-path[data-look="neo"] { + filter: ${t}; + } + + rect.note[data-look="neo"] { + stroke:${e.noteBorderColor}; + fill:${e.noteBkgColor}; + filter: ${t}; + } + + text.actor > tspan { + fill: ${e.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${e.actorLineColor}; + } + + .innerArc { + stroke-width: 1.5; + stroke-dasharray: none; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${e.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${e.signalColor}; + } + + [id$="-arrowhead"] path { + fill: ${e.signalColor}; + stroke: ${e.signalColor}; + } + + .sequenceNumber { + fill: ${e.sequenceNumberColor}; + } + + [id$="-sequencenumber"] { + fill: ${e.signalColor}; + } + + [id$="-crosshead"] path { + fill: ${e.signalColor}; + stroke: ${e.signalColor}; + } + + .messageText { + fill: ${e.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${e.labelBoxBorderColor}; + fill: ${e.labelBoxBkgColor}; + filter: ${r==="neo"?t:"none"}; + } + + .labelText, .labelText > tspan { + fill: ${e.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${e.loopTextColor}; + stroke: none; + } + + .sectionTitle, .sectionTitle > tspan { + fill: ${e.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${e.labelBoxBorderColor}; + fill: ${e.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${e.noteBorderColor}; + fill: ${e.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${e.noteTextColor}; + stroke: none; + ${e.noteFontWeight?`font-weight: ${e.noteFontWeight};`:""} + } + + .activation0 { + fill: ${e.activationBkgColor}; + stroke: ${e.activationBorderColor}; + } + + .activation1 { + fill: ${e.activationBkgColor}; + stroke: ${e.activationBorderColor}; + } + + .activation2 { + fill: ${e.activationBkgColor}; + stroke: ${e.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${e.actorBkg}; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); +} + .actor-man circle, line { + fill: ${e.actorBkg}; + stroke-width: 2px; + } + + g rect.rect { + filter: ${t}; + stroke: ${e.nodeBorder}; + } +`},"getStyles"),J8e=QAt});var sY,Sp,Ep,Ap,CL,k0,ud,zw,JAt,wL,Gw,S0,tIe,nn,oY,e6t,t6t,r6t,n6t,i6t,a6t,s6t,o6t,l6t,c6t,u6t,h6t,d6t,rIe,f6t,p6t,m6t,g6t,y6t,v6t,x6t,b6t,nIe,T6t,hd,C6t,w6t,k6t,S6t,E6t,Un,iIe=F(()=>{"use strict";sY=Xs(Ly(),1);ur();Qt();Vr();Hd();Sp=36,Ep="actor-top",Ap="actor-bottom",CL="actor-box",k0="actor-man",ud=new Set(["redux-color","redux-dark-color"]),zw=o(function(e,t){let r=dm(e,t);return _t().look==="neo"&&r.attr("data-look","neo"),r},"drawRect"),JAt=o(function(e,t,r,n,i){if(t.links===void 0||t.links===null||Object.keys(t.links).length===0)return{height:0,width:0};let a=t.links,s=t.actorCnt,l=t.rectData;var u="none";i&&(u="block !important");let h=e.append("g");h.attr("id","actor"+s+"_popup"),h.attr("class","actorPopupMenu"),h.attr("display",u);var d="";l.class!==void 0&&(d=" "+l.class);let f=l.width>r?l.width:r,p=h.append("rect");if(p.attr("class","actorPopupMenuPanel"+d),p.attr("x",l.x),p.attr("y",l.height),p.attr("fill",l.fill),p.attr("stroke",l.stroke),p.attr("width",f),p.attr("height",l.height),p.attr("rx",l.rx),p.attr("ry",l.ry),a!=null){var m=20;for(let v in a){var g=h.append("a"),y=(0,sY.sanitizeUrl)(a[v]);g.attr("xlink:href",y),g.attr("target","_blank"),C6t(n)(v,g,l.x+10,l.height+m,f,20,{class:"actor"},n),m+=30}}return p.attr("height",m),{height:l.height+m,width:f}},"drawPopup"),wL=o(function(e){return"var pu = document.getElementById('"+e+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),Gw=o(async function(e,t,r=null){let n=e.append("foreignObject"),i=await ey(t.text,_t()),s=n.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(i).node().getBoundingClientRect();if(n.attr("height",Math.round(s.height)).attr("width",Math.round(s.width)),t.class==="noteText"){let l=e.node().firstChild;l.setAttribute("height",s.height+2*t.textMargin);let u=l.getBBox();n.attr("x",Math.round(u.x+u.width/2-s.width/2)).attr("y",Math.round(u.y+u.height/2-s.height/2))}else if(r){let{startx:l,stopx:u,starty:h}=r;if(l>u){let d=l;l=u,u=d}n.attr("x",Math.round(l+Math.abs(l-u)/2-s.width/2)),t.class==="loopText"?n.attr("y",Math.round(h)):n.attr("y",Math.round(h-s.height))}return[n]},"drawKatex"),S0=o(function(e,t){let r=0,n=0,i=t.text.split(xt.lineBreakRegex),[a,s]=As(t.fontSize),l=[],u=0,h=o(()=>t.y,"yfunc");if(t.valign!==void 0&&t.textMargin!==void 0&&t.textMargin>0)switch(t.valign){case"top":case"start":h=o(()=>Math.round(t.y+t.textMargin),"yfunc");break;case"middle":case"center":h=o(()=>Math.round(t.y+(r+n+t.textMargin)/2),"yfunc");break;case"bottom":case"end":h=o(()=>Math.round(t.y+(r+n+2*t.textMargin)-t.textMargin),"yfunc");break}if(t.anchor!==void 0&&t.textMargin!==void 0&&t.width!==void 0)switch(t.anchor){case"left":case"start":t.x=Math.round(t.x+t.textMargin),t.anchor="start",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"middle":case"center":t.x=Math.round(t.x+t.width/2),t.anchor="middle",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"right":case"end":t.x=Math.round(t.x+t.width-t.textMargin),t.anchor="end",t.dominantBaseline="middle",t.alignmentBaseline="middle";break}for(let[d,f]of i.entries()){t.textMargin!==void 0&&t.textMargin===0&&a!==void 0&&(u=d*a);let p=e.append("text");p.attr("x",t.x),p.attr("y",h()),t.anchor!==void 0&&p.attr("text-anchor",t.anchor).attr("dominant-baseline",t.dominantBaseline).attr("alignment-baseline",t.alignmentBaseline),t.fontFamily!==void 0&&p.style("font-family",t.fontFamily),s!==void 0&&p.style("font-size",s),t.fontWeight!==void 0&&p.style("font-weight",t.fontWeight),t.fill!==void 0&&p.attr("fill",t.fill),t.class!==void 0&&p.attr("class",t.class),t.dy!==void 0?p.attr("dy",t.dy):u!==0&&p.attr("dy",u);let m=f||oP;if(t.tspan){let g=p.append("tspan");g.attr("x",t.x),t.fill!==void 0&&g.attr("fill",t.fill),g.text(m)}else p.text(m);t.valign!==void 0&&t.textMargin!==void 0&&t.textMargin>0&&(n+=(p._groups||p)[0][0].getBBox().height,r=n),l.push(p)}return l},"drawText"),tIe=o(function(e,t){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=e.append("polygon");return n.attr("points",r(t.x,t.y,t.width,t.height,7)),n.attr("class","labelBox"),t.y=t.y+t.height/2,S0(e,t),n},"drawLabel"),nn=-1,oY=o((e,t,r,n)=>{e.select&&r.forEach(i=>{let a=t.get(i),s=e.select("#actor"+a.actorCnt);!n.mirrorActors&&a.stopy?s.attr("y2",a.stopy+a.height/2):n.mirrorActors&&s.attr("y2",a.stopy)})},"fixLifeLineHeights"),e6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower();var g=m;n||(nn++,Object.keys(t.links||{}).length&&!r.forceMenus&&g.attr("onclick",wL(`actor${nn}_popup`)).attr("cursor","pointer"),g.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),g=m.append("g"),t.actorCnt=nn,t.links!=null&&g.attr("id","root-"+nn),u==="neo"&&g.attr("data-look","neo"));let y=Fa();var v="actor";t.properties?.class?v=t.properties.class:y.fill="#eaeaea",n?v+=` ${Ap}`:v+=` ${Ep}`,y.x=t.x,y.y=a,y.width=t.width,y.height=t.height,y.class=v,y.rx=3,y.ry=3,y.name=t.name,u==="neo"&&(y.rx=6,y.ry=6);let x=zw(g,y),b=i.get(t.name)??0;if(ud.has(h)&&(x.style("stroke",p[b%p.length]),x.style("fill",f[b%p.length])),u==="neo"&&x.attr("filter","url(#drop-shadow)"),t.rectData=y,t.properties?.icon){let k=t.properties.icon.trim();k.charAt(0)==="@"?zE(g,y.x+y.width-20,y.y+10,k.substr(1)):FE(g,y.x+y.width-20,y.y+10,k)}n||(g.attr("data-et","participant"),g.attr("data-type","participant"),g.attr("data-id",t.name)),hd(r,ni(t.description))(t.description,g,y.x,y.y,y.width,y.height,{class:`actor ${CL}`},r);let T=t.height;if(x.node){let k=x.node().getBBox();t.height=k.height,T=k.height}return T},"drawActorTypeParticipant"),t6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower();var g=m;n||(nn++,Object.keys(t.links||{}).length&&!r.forceMenus&&g.attr("onclick",wL(`actor${nn}_popup`)).attr("cursor","pointer"),g.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),g=m.append("g"),t.actorCnt=nn,t.links!=null&&g.attr("id","root-"+nn),u==="neo"&&g.attr("data-look","neo"));let y=Fa();var v="actor";t.properties?.class?v=t.properties.class:y.fill="#eaeaea",n?v+=` ${Ap}`:v+=` ${Ep}`,y.x=t.x,y.y=a,y.width=t.width,y.height=t.height,y.class=v,y.name=t.name;let x=6,b={...y,x:y.x+-x,y:y.y+ +x,class:"actor"},T=zw(g,y),k=zw(g,b);t.rectData=y,u==="neo"&&g.attr("filter","url(#drop-shadow)");let C=i.get(t.name)??0;if(ud.has(h)&&(T.style("stroke",p[C%p.length]),T.style("fill",f[C%p.length]),k.style("stroke",p[C%p.length]),k.style("fill",f[C%p.length])),t.properties?.icon){let S=t.properties.icon.trim();S.charAt(0)==="@"?zE(g,y.x+y.width-20,y.y+10,S.substr(1)):FE(g,y.x+y.width-20,y.y+10,S)}hd(r,ni(t.description))(t.description,g,y.x-x,y.y+x,y.width,y.height,{class:`actor ${CL}`},r);let w=t.height;if(T.node){let S=T.node().getBBox();t.height=S.height,w=S.height}return n||(g.attr("data-et","participant"),g.attr("data-type","collections"),g.attr("data-id",t.name)),w},"drawActorTypeCollections"),r6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower(),g=m;n||(nn++,Object.keys(t.links||{}).length&&!r.forceMenus&&g.attr("onclick",wL(`actor${nn}_popup`)).attr("cursor","pointer"),g.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),g=m.append("g"),t.actorCnt=nn,t.links!=null&&g.attr("id","root-"+nn),u==="neo"&&g.attr("data-look","neo"));let y=Fa(),v="actor";t.properties?.class?v=t.properties.class:y.fill="#eaeaea",n?v+=` ${Ap}`:v+=` ${Ep}`,g.attr("class",v),y.x=t.x,y.y=a,y.width=t.width,y.height=t.height,y.name=t.name;let x=y.height/2,b=x/(2.5+y.height/50),T=g.append("g"),k=g.append("g"),C=`M ${y.x},${y.y+x} + a ${b},${x} 0 0 0 0,${y.height} + h ${y.width-2*b} + a ${b},${x} 0 0 0 0,-${y.height} + Z + `;T.append("path").attr("d",C),k.append("path").attr("d",`M ${y.x},${y.y+x} + a ${b},${x} 0 0 0 0,${y.height}`),T.attr("transform",`translate(${b}, ${-(y.height/2)})`),k.attr("transform",`translate(${y.width-b}, ${-y.height/2})`),t.rectData=y,u==="neo"&&T.attr("filter","url(#drop-shadow)");let w=i.get(t.name)??0;if(ud.has(h)&&(T.style("stroke",p[w%p.length]),T.style("fill",f[w%p.length]),k.style("stroke",p[w%p.length]),k.style("fill",f[w%p.length])),t.properties?.icon){let L=t.properties.icon.trim(),N=y.x+y.width-20,I=y.y+10;L.charAt(0)==="@"?zE(g,N,I,L.substr(1)):FE(g,N,I,L)}hd(r,ni(t.description))(t.description,g,y.x,y.y,y.width,y.height,{class:`actor ${CL}`},r);let S=t.height,R=T.select("path:last-child");if(R.node()){let L=R.node().getBBox();t.height=L.height,S=L.height}return n||(g.attr("data-et","participant"),g.attr("data-type","queue"),g.attr("data-id",t.name)),S},"drawActorTypeQueue"),n6t=o(function(e,t,r,n,i,a){let s=n?t.stopy:t.starty,l=t.x+t.width/2,u=s+75,{look:h,theme:d,themeVariables:f}=r,{bkgColorArray:p,borderColorArray:m,actorBorder:g,actorBkg:y}=f,v=e.append("g").lower();n||(nn++,v.append("line").attr("id","actor"+nn).attr("x1",l).attr("y1",u).attr("x2",l).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=nn);let x=e.append("g"),b=k0;n?b+=` ${Ap}`:b+=` ${Ep}`,x.attr("class",b),x.attr("name",t.name);let T=Fa();T.x=t.x,T.y=s,T.fill="#eaeaea",T.width=t.width,T.height=t.height,T.class="actor";let k=t.x+t.width/2,C=s+32,w=22;x.append("defs").append("marker").attr("id",i+"-filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").attr("stroke-width",1.2).append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),x.append("circle").attr("cx",k).attr("cy",C).attr("r",w).attr("filter",`${h==="neo"?"url(#drop-shadow)":""}`),x.append("line").attr("marker-end","url(#"+i+"-filled-head-control)").attr("transform",`translate(${k}, ${C-w})`);let S=a.get(t.name)??0;ud.has(d)?(x.style("stroke",m[S%m.length]),x.style("fill",p[S%m.length])):(x.style("stroke",g),x.style("fill",y));let R=x.node().getBBox();return t.height=R.height+2*(r?.sequence?.labelBoxHeight??0),hd(r,ni(t.description))(t.description,x,T.x,T.y+w+(n?5:12),T.width,T.height,{class:`actor ${k0}`},r),n||(x.attr("data-et","participant"),x.attr("data-type","control"),x.attr("data-id",t.name)),t.height},"drawActorTypeControl"),i6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+75,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p}=d,m=e.append("g").lower(),g=e.append("g"),y="actor";n?y+=` ${Ap}`:y+=` ${Ep}`,g.attr("class",y),g.attr("name",t.name);let v=Fa();v.x=t.x,v.y=a,v.fill="#eaeaea",v.width=t.width,v.height=t.height,v.class="actor";let x=t.x+t.width/2,b=a+(n?10:25),T=22;g.append("circle").attr("cx",x).attr("cy",b).attr("r",T).attr("width",t.width).attr("height",t.height),g.append("line").attr("x1",x-T).attr("x2",x+T).attr("y1",b+T).attr("y2",b+T).attr("stroke-width",2),u==="neo"&&g.attr("filter","url(#drop-shadow)");let k=i.get(t.name)??0;ud.has(h)&&(g.style("stroke",p[k%p.length]),g.style("fill",f[k%p.length]));let C=g.node().getBBox();return t.height=C.height+(r?.sequence?.labelBoxHeight??0),n||(nn++,m.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=nn),hd(r,ni(t.description))(t.description,g,v.x,v.y+(n?15:30),v.width,v.height,{class:`actor ${k0}`},r),n?g.attr("transform",`translate(0, ${T})`):(g.attr("transform",`translate(0, ${T/2-5})`),g.attr("data-et","participant"),g.attr("data-type","entity"),g.attr("data-id",t.name)),t.height},"drawActorTypeEntity"),a6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+t.height+2*r.boxTextMargin,{theme:u,themeVariables:h,look:d}=r,{bkgColorArray:f,borderColorArray:p,actorBorder:m}=h,g=e.append("g").lower(),y=g;n||(nn++,Object.keys(t.links||{}).length&&!r.forceMenus&&y.attr("onclick",wL(`actor${nn}_popup`)).attr("cursor","pointer"),y.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),y=g.append("g"),t.actorCnt=nn,t.links!=null&&y.attr("id","root-"+nn),d==="neo"&&y.attr("data-look","neo"));let v=Fa(),x="actor";t.properties?.class?x=t.properties.class:v.fill="#eaeaea",n?x+=` ${Ap}`:x+=` ${Ep}`,v.x=t.x,v.y=a,v.width=t.width,v.height=t.height,v.class=x,v.name=t.name,v.x=t.x,v.y=a;let b=v.width/3,T=v.width/3,k=b/2,C=k/(2.5+b/50),w=y.append("g");w.attr("class",x);let S=` + M ${v.x},${v.y+C} + a ${k},${C} 0 0 0 ${b},0 + a ${k},${C} 0 0 0 -${b},0 + l 0,${T-2*C} + a ${k},${C} 0 0 0 ${b},0 + l 0,-${T-2*C} +`;w.append("path").attr("d",S),d==="neo"&&w.attr("filter","url(#drop-shadow)");let R=i.get(t.name)??0;ud.has(u)?(w.style("stroke",p[R%p.length]),w.style("fill",f[R%p.length])):w.style("stroke",m),w.attr("transform",`translate(${b}, ${C})`),t.rectData=v,hd(r,ni(t.description))(t.description,y,v.x,v.y+35,v.width,v.height,{class:`actor ${CL}`},r);let L=w.select("path:last-child");if(L.node()){let N=L.node().getBBox();t.height=N.height+(r.sequence.labelBoxHeight??0)}return n||(y.attr("data-et","participant"),y.attr("data-type","database"),y.attr("data-id",t.name)),t.height},"drawActorTypeDatabase"),s6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+80,u=22,h=e.append("g").lower(),{look:d,theme:f,themeVariables:p}=r,{bkgColorArray:m,borderColorArray:g,actorBorder:y}=p;n||(nn++,h.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=nn);let v=e.append("g"),x=k0;n?x+=` ${Ap}`:x+=` ${Ep}`,v.attr("class",x),v.attr("name",t.name);let b=Fa();b.x=t.x,b.y=a,b.fill="#eaeaea",b.width=t.width,b.height=t.height,b.class="actor",v.append("line").attr("id","actor-man-torso"+nn).attr("x1",t.x+t.width/2-u*2.5).attr("y1",a+12).attr("x2",t.x+t.width/2-15).attr("y2",a+12),v.append("line").attr("id","actor-man-arms"+nn).attr("x1",t.x+t.width/2-u*2.5).attr("y1",a+2).attr("x2",t.x+t.width/2-u*2.5).attr("y2",a+22),v.append("circle").attr("cx",t.x+t.width/2).attr("cy",a+12).attr("r",u),d==="neo"&&v.attr("filter","url(#drop-shadow)");let T=i.get(t.name)??0;ud.has(f)?(v.style("stroke",g[T%g.length]),v.style("fill",m[T%g.length])):v.style("stroke",y);let k=v.node().getBBox();return t.height=k.height+(r.sequence.labelBoxHeight??0),hd(r,ni(t.description))(t.description,v,b.x,b.y+15,b.width,b.height,{class:`actor ${k0}`},r),v.attr("transform",`translate(0,${u/2+10})`),n||(v.attr("data-et","participant"),v.attr("data-type","boundary"),v.attr("data-id",t.name)),t.height},"drawActorTypeBoundary"),o6t=o(function(e,t,r,n,i){let a=n?t.stopy:t.starty,s=t.x+t.width/2,l=a+80,{look:u,theme:h,themeVariables:d}=r,{bkgColorArray:f,borderColorArray:p,actorBorder:m}=d,g=e.append("g").lower();n||(nn++,g.append("line").attr("id","actor"+nn).attr("x1",s).attr("y1",l).attr("x2",s).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",t.name).attr("data-et","life-line").attr("data-id",t.name),t.actorCnt=nn);let y=e.append("g"),v=k0;n?v+=` ${Ap}`:v+=` ${Ep}`,y.attr("class",v),y.attr("name",t.name),n||y.attr("data-et","participant").attr("data-type","actor").attr("data-id",t.name);let x=u==="neo"?.5:1,b=u==="neo"?a+(1-x)*30:a;y.append("line").attr("id","actor-man-torso"+nn).attr("x1",s).attr("y1",b+25*x).attr("x2",s).attr("y2",b+45*x),y.append("line").attr("id","actor-man-arms"+nn).attr("x1",s-Sp/2*x).attr("y1",b+33*x).attr("x2",s+Sp/2*x).attr("y2",b+33*x),y.append("line").attr("x1",s-Sp/2*x).attr("y1",b+60*x).attr("x2",s).attr("y2",b+45*x),y.append("line").attr("x1",s).attr("y1",b+45*x).attr("x2",s+(Sp/2-2)*x).attr("y2",b+60*x);let T=y.append("circle");T.attr("cx",t.x+t.width/2),T.attr("cy",b+10*x),T.attr("r",15*x),T.attr("width",t.width*x),T.attr("height",t.height*x);let k=y.node().getBBox();t.height=k.height;let C=Fa();C.x=t.x,C.y=b,C.fill="#eaeaea",C.width=t.width,C.height=t.height/x,C.class="actor",C.rx=3,C.ry=3;let w=i.get(t.name)??0;return ud.has(h)?(y.style("stroke",p[w%p.length]),y.style("fill",f[w%p.length])):y.style("stroke",m),hd(r,ni(t.description))(t.description,y,C.x,b+35*x-(u==="neo"?10:0),C.width,C.height,{class:`actor ${k0}`},r),t.height},"drawActorTypeActor"),l6t=o(async function(e,t,r,n,i,a,s){let l=s??new Map([...a.db.getActors().values()].map((u,h)=>[u.name,h]));switch(t.type){case"actor":return await o6t(e,t,r,n,l);case"participant":return await e6t(e,t,r,n,l);case"boundary":return await s6t(e,t,r,n,l);case"control":return await n6t(e,t,r,n,i,l);case"entity":return await i6t(e,t,r,n,l);case"database":return await a6t(e,t,r,n,l);case"collections":return await t6t(e,t,r,n,l);case"queue":return await r6t(e,t,r,n,l)}},"drawActor"),c6t=o(function(e,t,r){let i=e.append("g");rIe(i,t),t.name&&hd(r)(t.name,i,t.x,t.y+r.boxTextMargin+(t.textMaxHeight||0)/2,t.width,0,{class:"text"},r),i.lower()},"drawBox"),u6t=o(function(e){return e.append("g")},"anchorElement"),h6t=o(function(e,t,r,n,i,a,s){let{theme:l,themeVariables:u}=n,{bkgColorArray:h,borderColorArray:d,mainBkg:f}=u,p=Fa(),m=t.anchored,g=t.actor;p.x=t.startx,p.y=t.starty,p.class="activation"+i%3,p.width=t.stopx-t.startx,p.height=r-t.starty;let y=zw(m,p),x=(s??new Map([...a.db.getActors().values()].map((b,T)=>[b.name,T]))).get(g)??0;ud.has(l)&&(y.style("stroke",d[x%d.length]),y.style("fill",h[x%d.length]??f))},"drawActivation"),d6t=o(async function(e,t,r,n,i){let{boxMargin:a,boxTextMargin:s,labelBoxHeight:l,labelBoxWidth:u,messageFontFamily:h,messageFontSize:d,messageFontWeight:f}=n,p=e.append("g").attr("data-et","control-structure").attr("data-id","i"+i.id),m=o(function(v,x,b,T){return p.append("line").attr("x1",v).attr("y1",x).attr("x2",b).attr("y2",T).attr("class","loopLine")},"drawLoopLine");m(t.startx,t.starty,t.stopx,t.starty),m(t.stopx,t.starty,t.stopx,t.stopy),m(t.startx,t.stopy,t.stopx,t.stopy),m(t.startx,t.starty,t.startx,t.stopy),t.sections!==void 0&&t.sections.forEach(function(v){m(t.startx,v.y,t.stopx,v.y).style("stroke-dasharray","3, 3")});let g=l2();g.text=r,g.x=t.startx,g.y=t.starty,g.fontFamily=h,g.fontSize=d,g.fontWeight=f,g.anchor="middle",g.valign="middle",g.tspan=!1,g.width=Math.max(u??0,50),g.height=l+(n.look==="neo"?15:0)||20,g.textMargin=s,g.class="labelText",tIe(p,g),g=nIe(),g.text=t.title,g.x=t.startx+u/2+(t.stopx-t.startx)/2,g.y=t.starty+a+s,g.anchor="middle",g.valign="middle",g.textMargin=s,g.class="loopText",g.fontFamily=h,g.fontSize=d,g.fontWeight=f,g.wrap=!0;let y=ni(g.text)?await Gw(p,g,t):S0(p,g);if(t.sectionTitles!==void 0){for(let[v,x]of Object.entries(t.sectionTitles))if(x.message){g.text=x.message,g.x=t.startx+(t.stopx-t.startx)/2,g.y=t.sections[v].y+a+s,g.class="sectionTitle",g.anchor="middle",g.valign="middle",g.tspan=!1,g.fontFamily=h,g.fontSize=d,g.fontWeight=f,g.wrap=t.wrap,ni(g.text)?(t.starty=t.sections[v].y,await Gw(p,g,t)):S0(p,g);let b=Math.round(y.map(T=>(T._groups||T)[0][0].getBBox().height).reduce((T,k)=>T+k));t.sections[v].height+=b-(a+s)}}return t.height=Math.round(t.stopy-t.starty),p},"drawLoop"),rIe=o(function(e,t){$E(e,t)},"drawBackgroundRect"),f6t=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),p6t=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),m6t=o(function(e,t){e.append("defs").append("symbol").attr("id",t+"-clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),g6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),y6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),v6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),x6t=o(function(e,t){e.append("defs").append("marker").attr("id",t+"-crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),b6t=o(function(e,t){let{theme:r}=t;e.append("defs").append("filter").attr("id","drop-shadow").attr("height","130%").attr("width","130%").append("feDropShadow").attr("dx","4").attr("dy","4").attr("stdDeviation",0).attr("flood-opacity","0.06").attr("flood-color",`${r==="redux"||r==="redux-color"?"#000000":"#FFFFFF"}`)},"insertDropShadow"),nIe=o(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),T6t=o(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),hd=(function(){function e(a,s,l,u,h,d,f){let p=s.append("text").attr("x",l+h/2).attr("y",u+d/2+5).style("text-anchor","middle").text(a);i(p,f)}o(e,"byText");function t(a,s,l,u,h,d,f,p){let{actorFontSize:m,actorFontFamily:g,actorFontWeight:y}=p,[v,x]=As(m),b=a.split(xt.lineBreakRegex);for(let T=0;T{let s=E0(je),l=a.actorKeys.reduce((f,p)=>f+=e.get(p).width+(e.get(p).margin||0),0),u=je.boxMargin*8;l+=u,l-=2*je.boxTextMargin,a.wrap&&(a.name=Zt.wrapLabel(a.name,l-2*je.wrapPadding,s));let h=Zt.calculateTextDimensions(a.name,s);i=xt.getMax(h.height,i);let d=xt.getMax(l,h.width+2*je.wrapPadding);if(a.margin=je.boxTextMargin,la.textMaxHeight=i),xt.getMax(n,je.height)}var je,Et,A6t,aIe,E0,tx,cY,_6t,L6t,uY,oIe,lIe,kL,sIe,I6t,N6t,O6t,B6t,$6t,lY,F6t,cIe,z6t,G6t,V6t,uIe,hIe=F(()=>{"use strict";$r();iIe();vt();Vr();Vr();Hd();Xt();G0();Qt();$n();aY();je={},Et={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:o(function(){return Math.max.apply(null,this.actors.length===0?[0]:this.actors.map(e=>e.height||0))+(this.loops.length===0?0:this.loops.map(e=>e.height||0).reduce((e,t)=>e+t))+(this.messages.length===0?0:this.messages.map(e=>e.height||0).reduce((e,t)=>e+t))+(this.notes.length===0?0:this.notes.map(e=>e.height||0).reduce((e,t)=>e+t))},"getHeight"),clear:o(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:o(function(e){this.boxes.push(e)},"addBox"),addActor:o(function(e){this.actors.push(e)},"addActor"),addLoop:o(function(e){this.loops.push(e)},"addLoop"),addMessage:o(function(e){this.messages.push(e)},"addMessage"),addNote:o(function(e){this.notes.push(e)},"addNote"),lastActor:o(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:o(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:o(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:o(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:o(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,lIe(Ae())},"init"),updateVal:o(function(e,t,r,n){e[t]===void 0?e[t]=r:e[t]=n(r,e[t])},"updateVal"),updateBounds:o(function(e,t,r,n){let i=this,a=0;function s(l){return o(function(h){a++;let d=i.sequenceItems.length-a+1;i.updateVal(h,"starty",t-d*je.boxMargin,Math.min),i.updateVal(h,"stopy",n+d*je.boxMargin,Math.max),i.updateVal(Et.data,"startx",e-d*je.boxMargin,Math.min),i.updateVal(Et.data,"stopx",r+d*je.boxMargin,Math.max),l!=="activation"&&(i.updateVal(h,"startx",e-d*je.boxMargin,Math.min),i.updateVal(h,"stopx",r+d*je.boxMargin,Math.max),i.updateVal(Et.data,"starty",t-d*je.boxMargin,Math.min),i.updateVal(Et.data,"stopy",n+d*je.boxMargin,Math.max))},"updateItemBounds")}o(s,"updateFn"),this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},"updateBounds"),insert:o(function(e,t,r,n){let i=xt.getMin(e,r),a=xt.getMax(e,r),s=xt.getMin(t,n),l=xt.getMax(t,n);this.updateVal(Et.data,"startx",i,Math.min),this.updateVal(Et.data,"starty",s,Math.min),this.updateVal(Et.data,"stopx",a,Math.max),this.updateVal(Et.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),newActivation:o(function(e,t,r){let n=r.get(e.from),i=kL(e.from).length||0,a=n.x+n.width/2+(i-1)*je.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+je.activationWidth,stopy:void 0,actor:e.from,anchored:Un.anchorElement(t)})},"newActivation"),endActivation:o(function(e){let t=this.activations.map(function(r){return r.actor}).lastIndexOf(e.from);return this.activations.splice(t,1)[0]},"endActivation"),createLoop:o(function(e={message:void 0,wrap:!1,width:void 0},t){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:e.message,wrap:e.wrap,width:e.width,height:0,fill:t}},"createLoop"),newLoop:o(function(e={message:void 0,wrap:!1,width:void 0},t){this.sequenceItems.push(this.createLoop(e,t))},"newLoop"),endLoop:o(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:o(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:o(function(e){let t=this.sequenceItems.pop();t.sections=t.sections||[],t.sectionTitles=t.sectionTitles||[],t.sections.push({y:Et.getVerticalPos(),height:0}),t.sectionTitles.push(e),this.sequenceItems.push(t)},"addSectionToLoop"),saveVerticalPos:o(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:o(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:o(function(e){this.verticalPos=this.verticalPos+e,this.data.stopy=xt.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return{bounds:this.data,models:this.models}},"getBounds")},A6t=o(async function(e,t,r){Et.bumpVerticalPos(je.boxMargin),t.height=je.boxMargin,t.starty=Et.getVerticalPos();let n=Fa();n.x=t.startx,n.y=t.starty,n.width=t.width||je.width,n.class="note";let i=e.append("g");i.attr("data-et","note"),i.attr("data-id","i"+r);let a=Un.drawRect(i,n),s=l2();s.x=t.startx,s.y=t.starty,s.width=n.width,s.dy="1em",s.text=t.message,s.class="noteText",s.fontFamily=je.noteFontFamily,s.fontSize=je.noteFontSize,s.fontWeight=je.noteFontWeight,s.anchor=je.noteAlign,s.textMargin=je.noteMargin,s.valign="center";let l=ni(s.text)?await Gw(i,s):S0(i,s),u=Math.round(l.map(h=>(h._groups||h)[0][0].getBBox().height).reduce((h,d)=>h+d));a.attr("height",u+2*je.noteMargin),t.height+=u+2*je.noteMargin,Et.bumpVerticalPos(u+2*je.noteMargin),t.stopy=t.starty+u+2*je.noteMargin,t.stopx=t.startx+n.width,Et.insert(t.startx,t.starty,t.stopx,t.stopy),Et.models.addNote(t)},"drawNote"),aIe=o(function(e,t,r,n,i,a,s){let l=n.db.getActors(),u=l.get(t.from),h=l.get(t.to),d=r.sequenceVisible,f=u.x+u.width/2,p=h.x+h.width/2,m=f<=p,g=cIe(t,n),y=e.append("g"),v=16.5,x=o((w,S)=>{let R=w?v:-v;return S?-R:R},"getCircleOffset"),b=o(w=>{y.append("circle").attr("cx",w).attr("cy",s).attr("r",5).attr("width",10).attr("height",10)},"drawCircle"),{CENTRAL_CONNECTION:T,CENTRAL_CONNECTION_REVERSE:k,CENTRAL_CONNECTION_DUAL:C}=n.db.LINETYPE;if(d)switch(t.centralConnection){case T:g&&(p+=x(m,!0));break;case k:g||(f+=x(m,!1));break;case C:g?p+=x(m,!0):f+=x(m,!1);break}switch(t.centralConnection){case T:b(p);break;case k:b(f);break;case C:b(f),b(p);break}},"drawCentralConnection"),E0=o(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont"),tx=o(e=>({fontFamily:e.noteFontFamily,fontSize:e.noteFontSize,fontWeight:e.noteFontWeight}),"noteFont"),cY=o(e=>({fontFamily:e.actorFontFamily,fontSize:e.actorFontSize,fontWeight:e.actorFontWeight}),"actorFont");o(R6t,"boundMessage");_6t=o(async function(e,t,r,n,i,a){let{startx:s,stopx:l,starty:u,message:h,type:d,sequenceIndex:f,sequenceVisible:p}=t,m=Zt.calculateTextDimensions(h,E0(je)),g=l2();g.x=Math.min(s,l),g.y=u+10,g.width=Math.abs(l-s),g.class="messageText",g.dy="1em",g.text=h,g.fontFamily=je.messageFontFamily,g.fontSize=je.messageFontSize,g.fontWeight=je.messageFontWeight,g.anchor=je.messageAlign,g.valign="center",g.textMargin=je.wrapPadding,g.tspan=!1,ni(g.text)?await Gw(e,g,{startx:s,stopx:l,starty:r}):S0(e,g);let y=m.width,v;if(s===l){let b=p||je.showSequenceNumbers,T=cIe(i,n),k=z6t(i,n),C=s+(b&&(T||k)?10:0);je.rightAngles?v=e.append("path").attr("d",`M ${C},${r} H ${s+xt.getMax(je.width/2,y/2)} V ${r+25} H ${s}`):v=e.append("path").attr("d","M "+C+","+r+" C "+(C+60)+","+(r-10)+" "+(s+60)+","+(r+30)+" "+s+","+(r+20)),lY(i,n)&&aIe(e,i,t,n,s,l,r)}else v=e.append("line"),v.attr("x1",s),v.attr("y1",r),v.attr("x2",l),v.attr("y2",r),lY(i,n)&&aIe(e,i,t,n,s,l,r);d===n.db.LINETYPE.DOTTED||d===n.db.LINETYPE.DOTTED_CROSS||d===n.db.LINETYPE.DOTTED_POINT||d===n.db.LINETYPE.DOTTED_OPEN||d===n.db.LINETYPE.BIDIRECTIONAL_DOTTED||d===n.db.LINETYPE.SOLID_TOP_DOTTED||d===n.db.LINETYPE.SOLID_BOTTOM_DOTTED||d===n.db.LINETYPE.STICK_TOP_DOTTED||d===n.db.LINETYPE.STICK_BOTTOM_DOTTED||d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED?(v.style("stroke-dasharray","3, 3"),v.attr("class","messageLine1")):v.attr("class","messageLine0"),v.attr("data-et","message"),v.attr("data-id","i"+t.id),v.attr("data-from",t.from),v.attr("data-to",t.to);let x="";if(je.arrowMarkerAbsolute&&(x=Wp(!0)),v.attr("stroke-width",2),v.attr("stroke","none"),v.style("fill","none"),(d===n.db.LINETYPE.SOLID_TOP||d===n.db.LINETYPE.SOLID_TOP_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-solidTopArrowHead)"),(d===n.db.LINETYPE.SOLID_BOTTOM||d===n.db.LINETYPE.SOLID_BOTTOM_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-solidBottomArrowHead)"),(d===n.db.LINETYPE.STICK_TOP||d===n.db.LINETYPE.STICK_TOP_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-stickTopArrowHead)"),(d===n.db.LINETYPE.STICK_BOTTOM||d===n.db.LINETYPE.STICK_BOTTOM_DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-stickBottomArrowHead)"),(d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-solidBottomArrowHead)"),(d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-solidTopArrowHead)"),(d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE||d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-stickBottomArrowHead)"),(d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED)&&v.attr("marker-start","url("+x+"#"+a+"-stickTopArrowHead)"),(d===n.db.LINETYPE.SOLID||d===n.db.LINETYPE.DOTTED)&&v.attr("marker-end","url("+x+"#"+a+"-arrowhead)"),(d===n.db.LINETYPE.BIDIRECTIONAL_SOLID||d===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(v.attr("marker-start","url("+x+"#"+a+"-arrowhead)"),v.attr("marker-end","url("+x+"#"+a+"-arrowhead)")),(d===n.db.LINETYPE.SOLID_POINT||d===n.db.LINETYPE.DOTTED_POINT)&&v.attr("marker-end","url("+x+"#"+a+"-filled-head)"),(d===n.db.LINETYPE.SOLID_CROSS||d===n.db.LINETYPE.DOTTED_CROSS)&&v.attr("marker-end","url("+x+"#"+a+"-crosshead)"),p||je.showSequenceNumbers){let b=d===n.db.LINETYPE.BIDIRECTIONAL_SOLID||d===n.db.LINETYPE.BIDIRECTIONAL_DOTTED,T=d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE||d===n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED||d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE||d===n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED||d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE||d===n.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED||d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE||d===n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,k=6,C=lY(i,n),w=s,S=l;b?(ss?S=l-2*k:(S=l-k,w+=i?.centralConnection===n.db.LINETYPE.CENTRAL_CONNECTION_DUAL||i?.centralConnection===n.db.LINETYPE.CENTRAL_CONNECTION_REVERSE?-7.5:0),S+=C?15:0,v.attr("x2",S),v.attr("x1",w)):v.attr("x1",s+k);let R=0,L=s===l,N=s<=l;L?R=t.fromBounds+1:T?R=N?t.toBounds-1:t.fromBounds+1:R=N?t.fromBounds+1:t.toBounds-1;let I="12px",_=f.toString().length;_>5?I="7px":_>3&&(I="9px"),e.append("line").attr("x1",R).attr("y1",r).attr("x2",R).attr("y2",r).attr("stroke-width",0).attr("marker-start","url("+x+"#"+a+"-sequencenumber)"),e.append("text").attr("x",R).attr("y",r+4).attr("font-family","sans-serif").attr("font-size",I).attr("text-anchor","middle").attr("class","sequenceNumber").text(f)}},"drawMessage"),L6t=o(function(e,t,r,n,i,a,s){let l=0,u=0,h,d=0;for(let f of n){let p=t.get(f),m=p.box;h&&h!=m&&(s||Et.models.addBox(h),u+=je.boxMargin+h.margin),m&&m!=h&&(s||(m.x=l+u,m.y=i),u+=m.margin),p.width=xt.getMax(p.width||je.width,je.width),p.height=xt.getMax(p.height||je.height,je.height),p.margin=p.margin||je.actorMargin,d=xt.getMax(d,p.height),r.get(p.name)&&(u+=p.width/2),p.x=l+u,p.starty=Et.getVerticalPos(),Et.insert(p.x,i,p.x+p.width,p.height),l+=p.width+u,p.box&&(p.box.width=l+m.margin-p.box.x),u=p.margin,h=p.box,Et.models.addActor(p)}h&&!s&&Et.models.addBox(h),Et.bumpVerticalPos(d)},"addActorRenderingData"),uY=o(async function(e,t,r,n,i,a,s){if(n){let l=0;Et.bumpVerticalPos(je.boxMargin*2);for(let u of r){let h=t.get(u);h.stopy||(h.stopy=Et.getVerticalPos());let d=await Un.drawActor(e,h,je,!0,i,a,s);l=xt.getMax(l,d)}Et.bumpVerticalPos(l+je.boxMargin)}else for(let l of r){let u=t.get(l);await Un.drawActor(e,u,je,!1,i,a,s)}},"drawActors"),oIe=o(function(e,t,r,n){let i=0,a=0;for(let s of r){let l=t.get(s),u=N6t(l),h=Un.drawPopup(e,l,u,je,je.forceMenus,n);h.height>i&&(i=h.height),h.width+l.x>a&&(a=h.width+l.x)}return{maxHeight:i,maxWidth:a}},"drawActorsPopup"),lIe=o(function(e){Yn(je,e),e.fontFamily&&(je.actorFontFamily=je.noteFontFamily=je.messageFontFamily=e.fontFamily),e.fontSize&&(je.actorFontSize=je.noteFontSize=je.messageFontSize=e.fontSize),e.fontWeight&&(je.actorFontWeight=je.noteFontWeight=je.messageFontWeight=e.fontWeight)},"setConf"),kL=o(function(e){return Et.activations.filter(function(t){return t.actor===e})},"actorActivations"),sIe=o(function(e,t){let r=t.get(e),n=kL(e),i=n.reduce(function(s,l){return xt.getMin(s,l.startx)},r.x+r.width/2-1),a=n.reduce(function(s,l){return xt.getMax(s,l.stopx)},r.x+r.width/2+1);return[i,a]},"activationBounds");o(Hu,"adjustLoopHeightForWrap");o(D6t,"adjustCreatedDestroyedData");I6t=o(async function(e,t,r,n){let{securityLevel:i,sequence:a,look:s,themeVariables:l}=Ae();je=a;let u;i==="sandbox"&&(u=et("#i"+t));let h=i==="sandbox"?et(u.nodes()[0].contentDocument.body):et("body"),d=i==="sandbox"?u.nodes()[0].contentDocument:document;Et.init(),Z.debug(n.db);let f=i==="sandbox"?h.select(`[id="${t}"]`):et(`[id="${t}"]`),p=n.db.getActors(),m=n.db.getCreatedActors(),g=n.db.getDestroyedActors(),y=n.db.getBoxes(),v=n.db.getActorKeys(),x=n.db.getMessages(),b=n.db.getDiagramTitle(),T=n.db.hasAtLeastOneBox(),k=n.db.hasAtLeastOneBoxWithTitle(),C=await M6t(p,x,n);if(je.height=await P6t(p,C,y),Un.insertComputerIcon(f,t),Un.insertDatabaseIcon(f,t),Un.insertClockIcon(f,t),T&&(Et.bumpVerticalPos(je.boxMargin),k&&Et.bumpVerticalPos(y[0].textMaxHeight)),je.hideUnusedParticipants===!0){let z=new Set;x.forEach(W=>{z.add(W.from),z.add(W.to)}),v=v.filter(W=>z.has(W))}let w=new Map(v.map((z,W)=>[p.get(z)?.name??z,W]));L6t(f,p,m,v,0,x,!1);let S=await V6t(x,p,C,n);Un.insertArrowHead(f,t),Un.insertArrowCrossHead(f,t),Un.insertArrowFilledHead(f,t),Un.insertSequenceNumber(f,t),Un.insertSolidTopArrowHead(f,t),Un.insertSolidBottomArrowHead(f,t),Un.insertStickTopArrowHead(f,t),Un.insertStickBottomArrowHead(f,t),s==="neo"&&Un.insertDropShadow(f,je);function R(z,W){let H=Et.endActivation(z);H.starty+18>W&&(H.starty=W-6,W+=12),Un.drawActivation(f,H,W,je,kL(z.from).length,n,w),Et.insert(H.startx,W-10,H.stopx,W)}o(R,"activeEnd");let L=1,N=1,I=[],_=[],A=0;for(let z of x){let W,H,j;switch(z.type){case n.db.LINETYPE.NOTE:Et.resetVerticalPos(),H=z.noteModel,await A6t(f,H,z.id);break;case n.db.LINETYPE.ACTIVE_START:Et.newActivation(z,f,p);break;case n.db.LINETYPE.CENTRAL_CONNECTION:Et.newActivation(z,f,p);break;case n.db.LINETYPE.CENTRAL_CONNECTION_REVERSE:Et.newActivation(z,f,p);break;case n.db.LINETYPE.ACTIVE_END:R(z,Et.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.LOOP_END:W=Et.endLoop(),await Un.drawLoop(f,W,"loop",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.RECT_START:Hu(S,z,je.boxMargin,je.boxMargin,Q=>{let U=Q.message;U||(U=l?.rectBkgColor||l?.actorBkg||"rgba(128, 128, 128, 0.5)"),Et.newLoop(void 0,U)});break;case n.db.LINETYPE.RECT_END:W=Et.endLoop(),_.push(W),Et.models.addLoop(W),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos());break;case n.db.LINETYPE.OPT_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.OPT_END:W=Et.endLoop(),await Un.drawLoop(f,W,"opt",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.ALT_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.ALT_ELSE:Hu(S,z,je.boxMargin+je.boxTextMargin,je.boxMargin,Q=>Et.addSectionToLoop(Q));break;case n.db.LINETYPE.ALT_END:W=Et.endLoop(),await Un.drawLoop(f,W,"alt",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q)),Et.saveVerticalPos();break;case n.db.LINETYPE.PAR_AND:Hu(S,z,je.boxMargin+je.boxTextMargin,je.boxMargin,Q=>Et.addSectionToLoop(Q));break;case n.db.LINETYPE.PAR_END:W=Et.endLoop(),await Un.drawLoop(f,W,"par",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.AUTONUMBER:L=z.message.start||L,N=z.message.step||N,z.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.CRITICAL_OPTION:Hu(S,z,je.boxMargin+je.boxTextMargin,je.boxMargin,Q=>Et.addSectionToLoop(Q));break;case n.db.LINETYPE.CRITICAL_END:W=Et.endLoop(),await Un.drawLoop(f,W,"critical",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;case n.db.LINETYPE.BREAK_START:Hu(S,z,je.boxMargin,je.boxMargin+je.boxTextMargin,Q=>Et.newLoop(Q));break;case n.db.LINETYPE.BREAK_END:W=Et.endLoop(),await Un.drawLoop(f,W,"break",je,z),Et.bumpVerticalPos(W.stopy-Et.getVerticalPos()),Et.models.addLoop(W);break;default:try{j=z.msgModel,j.starty=Et.getVerticalPos(),j.sequenceIndex=L,j.sequenceVisible=n.db.showSequenceNumbers(),j.id=z.id,j.from=z.from,j.to=z.to;let Q=await R6t(f,j);D6t(z,j,Q,A,p,m,g),I.push({messageModel:j,lineStartY:Q,msg:z}),Et.models.addMessage(j)}catch(Q){Z.error("error while drawing message",Q)}}[n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.SOLID_TOP,n.db.LINETYPE.SOLID_BOTTOM,n.db.LINETYPE.STICK_TOP,n.db.LINETYPE.STICK_BOTTOM,n.db.LINETYPE.SOLID_TOP_DOTTED,n.db.LINETYPE.SOLID_BOTTOM_DOTTED,n.db.LINETYPE.STICK_TOP_DOTTED,n.db.LINETYPE.STICK_BOTTOM_DOTTED,n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE,n.db.LINETYPE.STICK_ARROW_TOP_REVERSE,n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,n.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,n.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,n.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,n.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT,n.db.LINETYPE.BIDIRECTIONAL_SOLID,n.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(z.type)&&(L=Math.round((L+N)*100)/100),A++}Z.debug("createdActors",m),Z.debug("destroyedActors",g),await uY(f,p,v,!1,t,n,w);for(let z of I)await _6t(f,z.messageModel,z.lineStartY,n,z.msg,t);je.mirrorActors&&await uY(f,p,v,!0,t,n,w),_.forEach(z=>Un.drawBackgroundRect(f,z)),oY(f,p,v,je);for(let z of Et.models.boxes){z.height=Et.getVerticalPos()-z.y,Et.insert(z.x,z.y,z.x+z.width,z.height);let W=je.boxMargin*2;z.startx=z.x-W,z.starty=z.y-W*.25,z.stopx=z.startx+z.width+2*W,z.stopy=z.starty+z.height+W*.75,z.stroke="rgb(0,0,0, 0.5)",Un.drawBox(f,z,je)}T&&Et.bumpVerticalPos(je.boxMargin);let M=oIe(f,p,v,d),{bounds:D}=Et.getBounds();D.startx===void 0&&(D.startx=0),D.starty===void 0&&(D.starty=0),D.stopx===void 0&&(D.stopx=0),D.stopy===void 0&&(D.stopy=0);let P=D.stopy-D.starty;P2,p=o(v=>u?-v:v,"adjustValue");e.from===e.to?d=h:(e.activate&&!f&&(d+=p(je.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.STICK_TOP,r.db.LINETYPE.STICK_BOTTOM,r.db.LINETYPE.STICK_TOP_DOTTED,r.db.LINETYPE.STICK_BOTTOM_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE,r.db.LINETYPE.STICK_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.STICK_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(e.type)||(d+=p(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE_DOTTED,r.db.LINETYPE.SOLID_ARROW_TOP_REVERSE,r.db.LINETYPE.SOLID_ARROW_BOTTOM_REVERSE].includes(e.type)&&(h-=p(3)));let m=[i,a,s,l],g=Math.abs(h-d);e.wrap&&e.message&&(e.message=Zt.wrapLabel(e.message,xt.getMax(g+2*je.wrapPadding,je.width),E0(je)));let y=Zt.calculateTextDimensions(e.message,E0(je));return{width:xt.getMax(e.wrap?0:y.width+2*je.wrapPadding,g+2*je.wrapPadding,je.width),height:0,startx:h,stopx:d,starty:0,stopy:0,message:e.message,type:e.type,wrap:e.wrap,fromBounds:Math.min.apply(null,m),toBounds:Math.max.apply(null,m)}},"buildMessageModel"),V6t=o(async function(e,t,r,n){let i={},a=[],s,l,u;for(let h of e){switch(h.type){case n.db.LINETYPE.LOOP_START:case n.db.LINETYPE.ALT_START:case n.db.LINETYPE.OPT_START:case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:case n.db.LINETYPE.CRITICAL_START:case n.db.LINETYPE.BREAK_START:a.push({id:h.id,msg:h.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case n.db.LINETYPE.ALT_ELSE:case n.db.LINETYPE.PAR_AND:case n.db.LINETYPE.CRITICAL_OPTION:h.message&&(s=a.pop(),i[s.id]=s,i[h.id]=s,a.push(s));break;case n.db.LINETYPE.LOOP_END:case n.db.LINETYPE.ALT_END:case n.db.LINETYPE.OPT_END:case n.db.LINETYPE.PAR_END:case n.db.LINETYPE.CRITICAL_END:case n.db.LINETYPE.BREAK_END:s=a.pop(),i[s.id]=s;break;case n.db.LINETYPE.ACTIVE_START:{let f=t.get(h.from?h.from:h.to.actor),p=kL(h.from?h.from:h.to.actor).length,m=f.x+f.width/2+(p-1)*je.activationWidth/2,g={startx:m,stopx:m+je.activationWidth,actor:h.from,enabled:!0};Et.activations.push(g)}break;case n.db.LINETYPE.ACTIVE_END:{let f=Et.activations.map(p=>p.actor).lastIndexOf(h.from);Et.activations.splice(f,1).splice(0,1)}break}h.placement!==void 0?(l=await O6t(h,t,n),h.noteModel=l,a.forEach(f=>{s=f,s.from=xt.getMin(s.from,l.startx),s.to=xt.getMax(s.to,l.startx+l.width),s.width=xt.getMax(s.width,Math.abs(s.from-s.to))-je.labelBoxWidth})):(u=G6t(h,t,n),h.msgModel=u,u.startx&&u.stopx&&a.length>0&&a.forEach(f=>{if(s=f,u.startx===u.stopx){let p=t.get(h.from),m=t.get(h.to);s.from=xt.getMin(p.x-u.width/2,p.x-p.width/2,s.from),s.to=xt.getMax(m.x+u.width/2,m.x+p.width/2,s.to),s.width=xt.getMax(s.width,Math.abs(s.to-s.from))-je.labelBoxWidth}else s.from=xt.getMin(u.startx,s.from),s.to=xt.getMax(u.stopx,s.to),s.width=xt.getMax(s.width,u.width)-je.labelBoxWidth}))}return Et.activations=[],Z.debug("Loop type widths:",i),i},"calculateLoopBounds"),uIe={bounds:Et,drawActors:uY,drawActorsPopup:oIe,setConf:lIe,draw:I6t}});var dIe={};ir(dIe,{diagram:()=>W6t});var W6t,fIe=F(()=>{"use strict";Q8e();aY();eIe();Xt();hIe();W6t={parser:Z8e,get db(){return new TL},renderer:uIe,styles:J8e,init:o(e=>{e.sequence||(e.sequence={}),e.wrap&&(e.sequence.wrap=e.wrap,cb({sequence:{wrap:e.wrap}}))},"init")}});var hY,SL,dY=F(()=>{"use strict";hY=(function(){var e=o(function(we,Me,ve,ne){for(ve=ve||{},ne=we.length;ne--;ve[we[ne]]=Me);return ve},"o"),t=[1,18],r=[1,19],n=[1,20],i=[1,41],a=[1,26],s=[1,42],l=[1,24],u=[1,25],h=[1,32],d=[1,33],f=[1,34],p=[1,45],m=[1,35],g=[1,36],y=[1,37],v=[1,38],x=[1,27],b=[1,28],T=[1,29],k=[1,30],C=[1,31],w=[1,44],S=[1,46],R=[1,43],L=[1,47],N=[1,9],I=[1,8,9],_=[1,58],A=[1,59],M=[1,60],D=[1,61],P=[1,62],B=[1,63],O=[1,64],$=[1,8,9,41],V=[1,77],G=[1,8,9,12,13,22,39,41,44,46,68,69,70,71,72,73,74,79,81],z=[1,8,9,12,13,18,20,22,39,41,44,46,47,60,68,69,70,71,72,73,74,79,81,86,100,102,103],W=[13,60,86,100,102,103],H=[13,60,73,74,86,100,102,103],j=[13,60,68,69,70,71,72,86,100,102,103],Q=[1,103],U=[1,121],oe=[1,117],te=[1,113],le=[1,119],ie=[1,114],ae=[1,115],Re=[1,116],be=[1,118],Pe=[1,120],Ge=[22,50,60,61,82,86,87,88,89,90],Oe=[1,128],ue=[12,39],ye=[1,8,9,39,41,44,46],ke=[1,8,9,22],ce=[1,153],re=[1,8,9,61],J=[1,8,9,22,50,60,61,82,86,87,88,89,90],se={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,classLiteralName:17,DOT:18,className:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,ANNOTATION_START:46,ANNOTATION_END:47,CLASS:48,emptyBody:49,SPACE:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"ANNOTATION_START",47:"ANNOTATION_END",48:"CLASS",50:"SPACE",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[38,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,3],[24,6],[24,4],[24,7],[24,6],[43,2],[43,3],[49,0],[49,2],[49,2],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:o(function(Me,ve,ne,q,he,X,fe){var K=X.length-1;switch(he){case 8:this.$=X[K-1];break;case 9:case 10:case 13:case 15:this.$=X[K];break;case 11:case 14:this.$=X[K-2]+"."+X[K];break;case 12:case 16:this.$=X[K-1]+X[K];break;case 17:case 18:this.$=X[K-1]+"~"+X[K]+"~";break;case 19:q.addRelation(X[K]);break;case 20:X[K-1].title=q.cleanupLabel(X[K]),q.addRelation(X[K-1]);break;case 31:this.$=X[K].trim(),q.setAccTitle(this.$);break;case 32:case 33:this.$=X[K].trim(),q.setAccDescription(this.$);break;case 34:q.addClassesToNamespace(X[K-3],X[K-1][0],X[K-1][1]),q.popNamespace();break;case 35:q.addClassesToNamespace(X[K-4],X[K-1][0],X[K-1][1]),q.popNamespace();break;case 36:this.$=q.addNamespace(X[K]);break;case 37:this.$=q.addNamespace(X[K-1],X[K]);break;case 38:this.$=[[X[K]],[]];break;case 39:this.$=[[X[K-1]],[]];break;case 40:X[K][0].unshift(X[K-2]),this.$=X[K];break;case 41:this.$=[[],[X[K]]];break;case 42:this.$=[[],[X[K-1]]];break;case 43:X[K][1].unshift(X[K-2]),this.$=X[K];break;case 44:case 45:this.$=[[],[]];break;case 46:this.$=X[K];break;case 48:q.setCssClass(X[K-2],X[K]);break;case 49:q.addMembers(X[K-3],X[K-1]);break;case 51:q.setCssClass(X[K-5],X[K-3]),q.addMembers(X[K-5],X[K-1]);break;case 52:q.addAnnotation(X[K-3],X[K-1]);break;case 53:q.addAnnotation(X[K-6],X[K-4]),q.addMembers(X[K-6],X[K-1]);break;case 54:q.addAnnotation(X[K-5],X[K-3]);break;case 55:this.$=X[K],q.addClass(X[K]);break;case 56:this.$=X[K-1],q.addClass(X[K-1]),q.setClassLabel(X[K-1],X[K]);break;case 60:q.addAnnotation(X[K],X[K-2]);break;case 61:case 74:this.$=[X[K]];break;case 62:X[K].push(X[K-1]),this.$=X[K];break;case 63:break;case 64:q.addMember(X[K-1],q.cleanupLabel(X[K]));break;case 65:break;case 66:break;case 67:this.$={id1:X[K-2],id2:X[K],relation:X[K-1],relationTitle1:"none",relationTitle2:"none"};break;case 68:this.$={id1:X[K-3],id2:X[K],relation:X[K-1],relationTitle1:X[K-2],relationTitle2:"none"};break;case 69:this.$={id1:X[K-3],id2:X[K],relation:X[K-2],relationTitle1:"none",relationTitle2:X[K-1]};break;case 70:this.$={id1:X[K-4],id2:X[K],relation:X[K-2],relationTitle1:X[K-3],relationTitle2:X[K-1]};break;case 71:this.$=q.addNote(X[K],X[K-1]);break;case 72:this.$=q.addNote(X[K]);break;case 73:this.$=X[K-2],q.defineClass(X[K-1],X[K]);break;case 75:this.$=X[K-2].concat([X[K]]);break;case 76:q.setDirection("TB");break;case 77:q.setDirection("BT");break;case 78:q.setDirection("RL");break;case 79:q.setDirection("LR");break;case 80:this.$={type1:X[K-2],type2:X[K],lineType:X[K-1]};break;case 81:this.$={type1:"none",type2:X[K],lineType:X[K-1]};break;case 82:this.$={type1:X[K-1],type2:"none",lineType:X[K]};break;case 83:this.$={type1:"none",type2:"none",lineType:X[K]};break;case 84:this.$=q.relationType.AGGREGATION;break;case 85:this.$=q.relationType.EXTENSION;break;case 86:this.$=q.relationType.COMPOSITION;break;case 87:this.$=q.relationType.DEPENDENCY;break;case 88:this.$=q.relationType.LOLLIPOP;break;case 89:this.$=q.lineType.LINE;break;case 90:this.$=q.lineType.DOTTED_LINE;break;case 91:case 97:this.$=X[K-2],q.setClickEvent(X[K-1],X[K]);break;case 92:case 98:this.$=X[K-3],q.setClickEvent(X[K-2],X[K-1]),q.setTooltip(X[K-2],X[K]);break;case 93:this.$=X[K-2],q.setLink(X[K-1],X[K]);break;case 94:this.$=X[K-3],q.setLink(X[K-2],X[K-1],X[K]);break;case 95:this.$=X[K-3],q.setLink(X[K-2],X[K-1]),q.setTooltip(X[K-2],X[K]);break;case 96:this.$=X[K-4],q.setLink(X[K-3],X[K-2],X[K]),q.setTooltip(X[K-3],X[K-1]);break;case 99:this.$=X[K-3],q.setClickEvent(X[K-2],X[K-1],X[K]);break;case 100:this.$=X[K-4],q.setClickEvent(X[K-3],X[K-2],X[K-1]),q.setTooltip(X[K-3],X[K]);break;case 101:this.$=X[K-3],q.setLink(X[K-2],X[K]);break;case 102:this.$=X[K-4],q.setLink(X[K-3],X[K-1],X[K]);break;case 103:this.$=X[K-4],q.setLink(X[K-3],X[K-1]),q.setTooltip(X[K-3],X[K]);break;case 104:this.$=X[K-5],q.setLink(X[K-4],X[K-2],X[K]),q.setTooltip(X[K-4],X[K-1]);break;case 105:this.$=X[K-2],q.setCssStyle(X[K-1],X[K]);break;case 106:q.setCssClass(X[K-1],X[K]);break;case 107:this.$=[X[K]];break;case 108:X[K-2].push(X[K]),this.$=X[K-2];break;case 110:this.$=X[K-1]+X[K];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:r,37:n,38:22,42:i,43:23,46:a,48:s,51:l,52:u,54:h,56:d,57:f,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:k,83:C,86:w,100:S,102:R,103:L},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(N,[2,5],{8:[1,48]}),{8:[1,49]},e(I,[2,19],{22:[1,50]}),e(I,[2,21]),e(I,[2,22]),e(I,[2,23]),e(I,[2,24]),e(I,[2,25]),e(I,[2,26]),e(I,[2,27]),e(I,[2,28]),e(I,[2,29]),e(I,[2,30]),{34:[1,51]},{36:[1,52]},e(I,[2,33]),e(I,[2,63],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:_,69:A,70:M,71:D,72:P,73:B,74:O}),{39:[1,65]},e($,[2,47],{39:[1,67],44:[1,66],46:[1,68]}),e(I,[2,65]),e(I,[2,66]),{16:69,60:p,86:w,100:S,102:R},{16:39,17:40,19:70,60:p,86:w,100:S,102:R,103:L},{16:39,17:40,19:71,60:p,86:w,100:S,102:R,103:L},{16:39,17:40,19:72,60:p,86:w,100:S,102:R,103:L},{60:[1,73]},{13:[1,74]},{16:39,17:40,19:75,60:p,86:w,100:S,102:R,103:L},{13:V,55:76},{58:78,60:[1,79]},e(I,[2,76]),e(I,[2,77]),e(I,[2,78]),e(I,[2,79]),e(G,[2,13],{16:39,17:40,19:81,18:[1,80],20:[1,82],60:p,86:w,100:S,102:R,103:L}),e(G,[2,15],{20:[1,83]}),{15:84,16:85,17:86,60:p,86:w,100:S,102:R,103:L},{16:39,17:40,19:87,60:p,86:w,100:S,102:R,103:L},e(z,[2,133]),e(z,[2,134]),e(z,[2,135]),e(z,[2,136]),e([1,8,9,12,13,20,22,39,41,44,46,68,69,70,71,72,73,74,79,81],[2,137]),e(N,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,19:21,38:22,43:23,16:39,17:40,5:88,33:t,35:r,37:n,42:i,46:a,48:s,51:l,52:u,54:h,56:d,57:f,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:k,83:C,86:w,100:S,102:R,103:L}),{5:89,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:t,35:r,37:n,38:22,42:i,43:23,46:a,48:s,51:l,52:u,54:h,56:d,57:f,60:p,62:m,63:g,64:y,65:v,75:x,76:b,78:T,82:k,83:C,86:w,100:S,102:R,103:L},e(I,[2,20]),e(I,[2,31]),e(I,[2,32]),{13:[1,91],16:39,17:40,19:90,60:p,86:w,100:S,102:R,103:L},{53:92,66:56,67:57,68:_,69:A,70:M,71:D,72:P,73:B,74:O},e(I,[2,64]),{67:93,73:B,74:O},e(W,[2,83],{66:94,68:_,69:A,70:M,71:D,72:P}),e(H,[2,84]),e(H,[2,85]),e(H,[2,86]),e(H,[2,87]),e(H,[2,88]),e(j,[2,89]),e(j,[2,90]),{8:[1,96],23:99,24:97,30:98,38:22,40:95,42:i,43:23,48:s,54:h,56:d},{16:100,60:p,86:w,100:S,102:R},{41:[1,102],45:101,51:Q},{16:104,60:p,86:w,100:S,102:R},{47:[1,105]},{13:[1,106]},{13:[1,107]},{79:[1,108],81:[1,109]},{22:U,50:oe,59:110,60:te,82:le,84:111,85:112,86:ie,87:ae,88:Re,89:be,90:Pe},{60:[1,122]},{13:V,55:123},e($,[2,72]),e($,[2,138]),{22:U,50:oe,59:124,60:te,61:[1,125],82:le,84:111,85:112,86:ie,87:ae,88:Re,89:be,90:Pe},e(Ge,[2,74]),{16:39,17:40,19:126,60:p,86:w,100:S,102:R,103:L},e(G,[2,16]),e(G,[2,17]),e(G,[2,18]),{11:127,12:Oe,39:[2,36]},e(ue,[2,9],{16:85,17:86,15:130,18:[1,129],60:p,86:w,100:S,102:R,103:L}),e(ue,[2,10]),e(ye,[2,55],{11:131,12:Oe}),e(N,[2,7]),{9:[1,132]},e(ke,[2,67]),{16:39,17:40,19:133,60:p,86:w,100:S,102:R,103:L},{13:[1,135],16:39,17:40,19:134,60:p,86:w,100:S,102:R,103:L},e(W,[2,82],{66:136,68:_,69:A,70:M,71:D,72:P}),e(W,[2,81]),{41:[1,137]},{23:99,24:97,30:98,38:22,40:138,42:i,43:23,48:s,54:h,56:d},{8:[1,139],41:[2,38]},{8:[1,140],41:[2,41]},{8:[1,141],41:[2,44]},e($,[2,48],{39:[1,142]}),{41:[1,143]},e($,[2,50]),{41:[2,61],45:144,51:Q},{47:[1,145]},{16:39,17:40,19:146,60:p,86:w,100:S,102:R,103:L},e(I,[2,91],{13:[1,147]}),e(I,[2,93],{13:[1,149],77:[1,148]}),e(I,[2,97],{13:[1,150],80:[1,151]}),{13:[1,152]},e(I,[2,105],{61:ce}),e(re,[2,107],{85:154,22:U,50:oe,60:te,82:le,86:ie,87:ae,88:Re,89:be,90:Pe}),e(J,[2,109]),e(J,[2,111]),e(J,[2,112]),e(J,[2,113]),e(J,[2,114]),e(J,[2,115]),e(J,[2,116]),e(J,[2,117]),e(J,[2,118]),e(J,[2,119]),e(I,[2,106]),e($,[2,71]),e(I,[2,73],{61:ce}),{60:[1,155]},e(G,[2,14]),{39:[2,37]},{13:[1,156]},{15:157,16:85,17:86,60:p,86:w,100:S,102:R,103:L},e(ue,[2,12]),e(ye,[2,56]),{1:[2,4]},e(ke,[2,69]),e(ke,[2,68]),{16:39,17:40,19:158,60:p,86:w,100:S,102:R,103:L},e(W,[2,80]),e($,[2,34]),{41:[1,159]},{23:99,24:97,30:98,38:22,40:160,41:[2,39],42:i,43:23,48:s,54:h,56:d},{23:99,24:97,30:98,38:22,40:161,41:[2,42],42:i,43:23,48:s,54:h,56:d},{23:99,24:97,30:98,38:22,40:162,41:[2,45],42:i,43:23,48:s,54:h,56:d},{45:163,51:Q},e($,[2,49]),{41:[2,62]},e($,[2,52],{39:[1,164]}),e(I,[2,60]),e(I,[2,92]),e(I,[2,94]),e(I,[2,95],{77:[1,165]}),e(I,[2,98]),e(I,[2,99],{13:[1,166]}),e(I,[2,101],{13:[1,168],77:[1,167]}),{22:U,50:oe,60:te,82:le,84:169,85:112,86:ie,87:ae,88:Re,89:be,90:Pe},e(J,[2,110]),e(Ge,[2,75]),{14:[1,170]},e(ue,[2,11]),e(ke,[2,70]),e($,[2,35]),{41:[2,40]},{41:[2,43]},{41:[2,46]},{41:[1,171]},{41:[1,173],45:172,51:Q},e(I,[2,96]),e(I,[2,100]),e(I,[2,102]),e(I,[2,103],{77:[1,174]}),e(re,[2,108],{85:154,22:U,50:oe,60:te,82:le,86:ie,87:ae,88:Re,89:be,90:Pe}),e(ye,[2,8]),e($,[2,51]),{41:[1,175]},e($,[2,54]),e(I,[2,104]),e($,[2,53])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],127:[2,37],132:[2,4],144:[2,62],160:[2,40],161:[2,43],162:[2,46]},parseError:o(function(Me,ve){if(ve.recoverable)this.trace(Me);else{var ne=new Error(Me);throw ne.hash=ve,ne}},"parseError"),parse:o(function(Me){var ve=this,ne=[0],q=[],he=[null],X=[],fe=this.table,K="",qe=0,_e=0,Be=0,Ne=2,He=1,$e=X.slice.call(arguments,1),Xe=Object.create(this.lexer),Fe={yy:{}};for(var Ke in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ke)&&(Fe.yy[Ke]=this.yy[Ke]);Xe.setInput(Me,Fe.yy),Fe.yy.lexer=Xe,Fe.yy.parser=this,typeof Xe.yylloc>"u"&&(Xe.yylloc={});var xe=Xe.yylloc;X.push(xe);var mt=Xe.options&&Xe.options.ranges;typeof Fe.yy.parseError=="function"?this.parseError=Fe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Le(ot){ne.length=ne.length-2*ot,he.length=he.length-ot,X.length=X.length-ot}o(Le,"popStack");function ft(){var ot;return ot=q.pop()||Xe.lex()||He,typeof ot!="number"&&(ot instanceof Array&&(q=ot,ot=q.pop()),ot=ve.symbols_[ot]||ot),ot}o(ft,"lex");for(var wt,zt,St,At,bt,me,lt={},gt,Ze,Ee,tt;;){if(St=ne[ne.length-1],this.defaultActions[St]?At=this.defaultActions[St]:((wt===null||typeof wt>"u")&&(wt=ft()),At=fe[St]&&fe[St][wt]),typeof At>"u"||!At.length||!At[0]){var at="";tt=[];for(gt in fe[St])this.terminals_[gt]&>>Ne&&tt.push("'"+this.terminals_[gt]+"'");Xe.showPosition?at="Parse error on line "+(qe+1)+`: +`+Xe.showPosition()+` +Expecting `+tt.join(", ")+", got '"+(this.terminals_[wt]||wt)+"'":at="Parse error on line "+(qe+1)+": Unexpected "+(wt==He?"end of input":"'"+(this.terminals_[wt]||wt)+"'"),this.parseError(at,{text:Xe.match,token:this.terminals_[wt]||wt,line:Xe.yylineno,loc:xe,expected:tt})}if(At[0]instanceof Array&&At.length>1)throw new Error("Parse Error: multiple actions possible at state: "+St+", token: "+wt);switch(At[0]){case 1:ne.push(wt),he.push(Xe.yytext),X.push(Xe.yylloc),ne.push(At[1]),wt=null,zt?(wt=zt,zt=null):(_e=Xe.yyleng,K=Xe.yytext,qe=Xe.yylineno,xe=Xe.yylloc,Be>0&&Be--);break;case 2:if(Ze=this.productions_[At[1]][1],lt.$=he[he.length-Ze],lt._$={first_line:X[X.length-(Ze||1)].first_line,last_line:X[X.length-1].last_line,first_column:X[X.length-(Ze||1)].first_column,last_column:X[X.length-1].last_column},mt&&(lt._$.range=[X[X.length-(Ze||1)].range[0],X[X.length-1].range[1]]),me=this.performAction.apply(lt,[K,_e,qe,Fe.yy,At[1],he,X].concat($e)),typeof me<"u")return me;Ze&&(ne=ne.slice(0,-1*Ze*2),he=he.slice(0,-1*Ze),X=X.slice(0,-1*Ze)),ne.push(this.productions_[At[1]][0]),he.push(lt.$),X.push(lt._$),Ee=fe[ne[ne.length-2]][ne[ne.length-1]],ne.push(Ee);break;case 3:return!0}}return!0},"parse")},ge=(function(){var we={EOF:1,parseError:o(function(ve,ne){if(this.yy.parser)this.yy.parser.parseError(ve,ne);else throw new Error(ve)},"parseError"),setInput:o(function(Me,ve){return this.yy=ve||this.yy||{},this._input=Me,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var Me=this._input[0];this.yytext+=Me,this.yyleng++,this.offset++,this.match+=Me,this.matched+=Me;var ve=Me.match(/(?:\r\n?|\n).*/g);return ve?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Me},"input"),unput:o(function(Me){var ve=Me.length,ne=Me.split(/(?:\r\n?|\n)/g);this._input=Me+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ve),this.offset-=ve;var q=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),ne.length-1&&(this.yylineno-=ne.length-1);var he=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:ne?(ne.length===q.length?this.yylloc.first_column:0)+q[q.length-ne.length].length-ne[0].length:this.yylloc.first_column-ve},this.options.ranges&&(this.yylloc.range=[he[0],he[0]+this.yyleng-ve]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(Me){this.unput(this.match.slice(Me))},"less"),pastInput:o(function(){var Me=this.matched.substr(0,this.matched.length-this.match.length);return(Me.length>20?"...":"")+Me.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var Me=this.match;return Me.length<20&&(Me+=this._input.substr(0,20-Me.length)),(Me.substr(0,20)+(Me.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var Me=this.pastInput(),ve=new Array(Me.length+1).join("-");return Me+this.upcomingInput()+` +`+ve+"^"},"showPosition"),test_match:o(function(Me,ve){var ne,q,he;if(this.options.backtrack_lexer&&(he={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(he.yylloc.range=this.yylloc.range.slice(0))),q=Me[0].match(/(?:\r\n?|\n).*/g),q&&(this.yylineno+=q.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:q?q[q.length-1].length-q[q.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Me[0].length},this.yytext+=Me[0],this.match+=Me[0],this.matches=Me,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Me[0].length),this.matched+=Me[0],ne=this.performAction.call(this,this.yy,this,ve,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ne)return ne;if(this._backtrack){for(var X in he)this[X]=he[X];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Me,ve,ne,q;this._more||(this.yytext="",this.match="");for(var he=this._currentRules(),X=0;Xve[0].length)){if(ve=ne,q=X,this.options.backtrack_lexer){if(Me=this.test_match(ne,he[X]),Me!==!1)return Me;if(this._backtrack){ve=!1;continue}else return!1}else if(!this.options.flex)break}return ve?(Me=this.test_match(ve,he[q]),Me!==!1?Me:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var ve=this.next();return ve||this.lex()},"lex"),begin:o(function(ve){this.conditionStack.push(ve)},"begin"),popState:o(function(){var ve=this.conditionStack.length-1;return ve>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(ve){return ve=this.conditionStack.length-1-Math.abs(ve||0),ve>=0?this.conditionStack[ve]:"INITIAL"},"topState"),pushState:o(function(ve){this.begin(ve)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(ve,ne,q,he){var X=he;switch(q){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 79;case 22:this.popState();break;case 23:return 80;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:this.popState(),this.less(0);break;case 34:return this.popState(),41;break;case 35:return"EOF_IN_STRUCT";case 36:return 8;case 37:break;case 38:return"EDGE_STATE";case 39:return this.begin("class"),48;break;case 40:return this.popState(),8;break;case 41:break;case 42:return this.popState(),this.popState(),41;break;case 43:return this.begin("class-body"),39;break;case 44:return this.popState(),41;break;case 45:return"EOF_IN_STRUCT";case 46:return"EDGE_STATE";case 47:return"OPEN_IN_STRUCT";case 48:break;case 49:return"MEMBER";case 50:return 83;case 51:return 75;case 52:return 76;case 53:return 78;case 54:return 54;case 55:return 56;case 56:return 46;case 57:return 47;case 58:return 81;case 59:this.popState();break;case 60:return"GENERICTYPE";case 61:this.begin("generic");break;case 62:this.popState();break;case 63:return"BQUOTE_STR";case 64:this.begin("bqstring");break;case 65:return 77;case 66:return 77;case 67:return 77;case 68:return 77;case 69:return 69;case 70:return 69;case 71:return 71;case 72:return 71;case 73:return 70;case 74:return 68;case 75:return 72;case 76:return 73;case 77:return 74;case 78:return 22;case 79:return 44;case 80:return 100;case 81:return 18;case 82:return"PLUS";case 83:return 87;case 84:return 61;case 85:return 89;case 86:return 89;case 87:return 90;case 88:return"EQUALS";case 89:return"EQUALS";case 90:return 60;case 91:return 12;case 92:return 14;case 93:return"PUNCTUATION";case 94:return 86;case 95:return 102;case 96:return 50;case 97:return 50;case 98:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,29,34,35,36,37,38,39,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},namespace:{rules:[26,29,30,31,32,33,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},"class-body":{rules:[26,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},class:{rules:[26,40,41,42,43,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_descr:{rules:[9,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},acc_title:{rules:[7,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},callback_args:{rules:[22,23,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},callback_name:{rules:[19,20,21,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},href:{rules:[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},struct:{rules:[26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},generic:{rules:[26,50,51,52,53,54,55,56,57,58,59,60,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},bqstring:{rules:[26,50,51,52,53,54,55,56,57,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},string:{rules:[24,25,26,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,87,88,89,90,91,92,93,94,95,96,98],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,39,50,51,52,53,54,55,56,57,58,61,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],inclusive:!0}}};return we})();se.lexer=ge;function Te(){this.yy={}}return o(Te,"Parser"),Te.prototype=se,se.Parser=Te,new Te})();hY.parser=hY;SL=hY});var gIe,Vw,yIe=F(()=>{"use strict";Xt();Vr();gIe=["#","+","~","-",""],Vw=class{static{o(this,"ClassMember")}constructor(t,r){this.memberType=r,this.visibility="",this.classifier="",this.text="";let n=mr(t,Ae());this.parseMember(n)}getDisplayDetails(){let t=this.visibility+qc(this.id);this.memberType==="method"&&(t+=`(${qc(this.parameters.trim())})`,this.returnType&&(t+=" : "+qc(this.returnType))),t=t.trim();let r=this.parseClassifier();return{displayText:t,cssStyle:r}}parseMember(t){let r="";if(this.memberType==="method"){let a=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(t);if(a){let s=a[1]?a[1].trim():"";if(gIe.includes(s)&&(this.visibility=s),this.id=a[2],this.parameters=a[3]?a[3].trim():"",r=a[4]?a[4].trim():"",this.returnType=a[5]?a[5].trim():"",r===""){let l=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(l)&&(r=l,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let i=t.length,a=t.substring(0,1),s=t.substring(i-1);gIe.includes(a)&&(this.visibility=a),/[$*]/.exec(s)&&(r=s),this.id=t.substring(this.visibility===""?0:1,r===""?i:i-1)}this.classifier=r,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let n=`${this.visibility?"\\"+this.visibility:""}${qc(this.id)}${this.memberType==="method"?`(${qc(this.parameters)})${this.returnType?" : "+qc(this.returnType):""}`:""}`;this.text=n.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}});var EL,vIe,A0,rx,fY=F(()=>{"use strict";$r();vt();Xt();Vr();Qt();Nn();Hd();yIe();H0();EL="classId-",vIe=0,A0=o(e=>xt.sanitizeText(e,Ae()),"sanitizeText"),rx=class e{constructor(){this.relations=[];this.classes=new Map;this.styleClasses=new Map;this.notes=new Map;this.interfaces=[];this.namespaces=new Map;this.namespaceCounter=0;this.namespaceStack=[];this.diagramId="";this.functions=[];this.lineType={LINE:0,DOTTED_LINE:1};this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4};this.setupToolTips=o(t=>{let r=Dy();et(t).select("svg").selectAll("g").filter(function(){return et(this).attr("title")!==null}).on("mouseover",a=>{let s=et(a.currentTarget),l=s.attr("title");if(!l)return;let u=a.currentTarget.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.html(Zs.sanitize(l)).style("left",`${window.scrollX+u.left+u.width/2}px`).style("top",`${window.scrollY+u.bottom+4}px`),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),et(a.currentTarget).classed("hover",!1)})},"setupToolTips");this.direction="TB";this.setAccTitle=kr;this.getAccTitle=Ar;this.setAccDescription=Rr;this.getAccDescription=_r;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getConfig=o(()=>Ae().class,"getConfig");this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.popNamespace=this.popNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{o(this,"ClassDB")}splitClassNameAndType(t){let r=xt.sanitizeText(t,Ae()),n="",i=r;if(r.indexOf("~")>0){let a=r.split("~");i=A0(a[0]),n=A0(a[1])}return{className:i,type:n}}setClassLabel(t,r){let n=xt.sanitizeText(t,Ae());r&&(r=A0(r));let{className:i}=this.splitClassNameAndType(n);this.classes.get(i).label=r,this.classes.get(i).text=`${r}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(t){let r=xt.sanitizeText(t,Ae()),{className:n,type:i}=this.splitClassNameAndType(r);if(this.classes.has(n))return;let a=xt.sanitizeText(n,Ae());this.classes.set(a,{id:a,type:i,label:a,text:`${a}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:EL+a+"-"+vIe}),vIe++}addInterface(t,r){let n={id:`interface${this.interfaces.length}`,label:t,classId:r};this.interfaces.push(n)}setDiagramId(t){this.diagramId=t}lookUpDomId(t){let r=xt.sanitizeText(t,Ae());if(this.classes.has(r)){let n=this.classes.get(r).domId;return this.diagramId?`${this.diagramId}-${n}`:n}throw new Error("Class not found: "+r)}clear(){this.relations=[],this.classes=new Map,this.notes=new Map,this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.namespaceStack=[],this.diagramId="",this.direction="TB",yr()}getClass(t){return this.classes.get(t)}getClasses(){return this.classes}getRelations(){return this.relations}getNote(t){let r=typeof t=="number"?`note${t}`:t;return this.notes.get(r)}getNotes(){return this.notes}addRelation(t){Z.debug("Adding relation: "+JSON.stringify(t));let r=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];t.relation.type1===this.relationType.LOLLIPOP&&!r.includes(t.relation.type2)?(this.addClass(t.id2),this.addInterface(t.id1,t.id2),t.id1=`interface${this.interfaces.length-1}`):t.relation.type2===this.relationType.LOLLIPOP&&!r.includes(t.relation.type1)?(this.addClass(t.id1),this.addInterface(t.id2,t.id1),t.id2=`interface${this.interfaces.length-1}`):(this.addClass(t.id1),this.addClass(t.id2)),t.id1=this.splitClassNameAndType(t.id1).className,t.id2=this.splitClassNameAndType(t.id2).className,t.relationTitle1=xt.sanitizeText(t.relationTitle1.trim(),Ae()),t.relationTitle2=xt.sanitizeText(t.relationTitle2.trim(),Ae()),this.relations.push(t)}addAnnotation(t,r){let n=this.splitClassNameAndType(t).className;this.classes.get(n).annotations.push(r)}addMember(t,r){this.addClass(t);let n=this.splitClassNameAndType(t).className,i=this.classes.get(n);if(typeof r=="string"){let a=r.trim();a.startsWith("<<")&&a.endsWith(">>")?i.annotations.push(A0(a.substring(2,a.length-2))):a.indexOf(")")>0?i.methods.push(new Vw(a,"method")):a&&i.members.push(new Vw(a,"attribute"))}}addMembers(t,r){Array.isArray(r)&&(r.reverse(),r.forEach(n=>this.addMember(t,n)))}addNote(t,r){let n=this.notes.size,i={id:`note${n}`,class:r,text:t,index:n};return this.notes.set(i.id,i),i.id}cleanupLabel(t){return t.startsWith(":")&&(t=t.substring(1)),A0(t.trim())}setCssClass(t,r){t.split(",").forEach(n=>{let i=n;/\d/.exec(n[0])&&(i=EL+i),i=this.splitClassNameAndType(i).className;let a=this.classes.get(i);a&&(a.cssClasses+=" "+r)})}defineClass(t,r){for(let n of t){let i=this.styleClasses.get(n);i===void 0&&(i={id:n,styles:[],textStyles:[]},this.styleClasses.set(n,i)),r&&r.forEach(a=>{if(/color/.exec(a)){let s=a.replace("fill","bgFill");i.textStyles.push(s)}i.styles.push(a)}),this.classes.forEach(a=>{a.cssClasses.includes(n)&&a.styles.push(...r.flatMap(s=>s.split(",")))})}}setTooltip(t,r){t.split(",").forEach(n=>{if(r!==void 0){let i=this.splitClassNameAndType(n).className,a=this.classes.get(i);a&&(a.tooltip=A0(r))}})}getTooltip(t,r){return r&&this.namespaces.has(r)?this.namespaces.get(r).classes.get(t).tooltip:this.classes.get(t).tooltip}setLink(t,r,n){let i=Ae();t.split(",").forEach(a=>{let s=a;/\d/.exec(a[0])&&(s=EL+s),s=this.splitClassNameAndType(s).className;let l=this.classes.get(s);l&&(l.link=Zt.formatUrl(r,i),i.securityLevel==="sandbox"?l.linkTarget="_top":typeof n=="string"?l.linkTarget=A0(n):l.linkTarget="_blank")}),this.setCssClass(t,"clickable")}setClickEvent(t,r,n){t.split(",").forEach(i=>{this.setClickFunc(i,r,n);let a=this.splitClassNameAndType(i).className,s=this.classes.get(a);s&&(s.haveCallback=!0)}),this.setCssClass(t,"clickable")}setClickFunc(t,r,n){let i=xt.sanitizeText(t,Ae());if(Ae().securityLevel!=="loose"||r===void 0)return;let s=this.splitClassNameAndType(i).className;if(this.classes.has(s)){let l=[];if(typeof n=="string"){l=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let u=0;u{let u=this.lookUpDomId(s),h=document.querySelector(`[id="${u}"]`);h!==null&&h.addEventListener("click",()=>{Zt.runFunc(r,...l)},!1)})}}bindFunctions(t){this.functions.forEach(r=>{r(t)})}escapeHtml(t){return t.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}getDirection(){return this.direction}setDirection(t){this.direction=t}static resolveQualifiedId(t,r){let n=r.at(-1);return n?`${n}.${t}`:t}static getAncestorIds(t){let r=t.split("."),n=new Array(r.length);n[0]=r[0];for(let i=1;i0?a[s-1]:void 0,h=s===a.length-1,d=h&&r?r:i[s];this.namespaces.has(l)?h&&(this.namespaces.get(l).explicit=!0):this.namespaces.set(l,this.createNamespaceNode(l,d,u,h)),u&&this.linkParentChild(u,l)}return n}popNamespace(){this.namespaceStack.pop()}getNamespace(t){return this.namespaces.get(t)}getNamespaces(){return this.namespaces}addClassesToNamespace(t,r,n){if(this.namespaces.has(t)){for(let i of r){let{className:a}=this.splitClassNameAndType(i),s=this.getClass(a);s.parent=t,this.namespaces.get(t).classes.set(a,s)}for(let i of n){let a=this.getNote(i);a.parent=t,this.namespaces.get(t).notes.set(i,a)}}}setCssStyle(t,r){let n=this.classes.get(t);if(!(!r||!n))for(let i of r)i.includes(",")?n.styles.push(...i.split(",")):n.styles.push(i)}getArrowMarker(t){let r;switch(t){case 0:r="aggregation";break;case 1:r="extension";break;case 2:r="composition";break;case 3:r="dependency";break;case 4:r="lollipop";break;default:r="none"}return r}resolveExplicitAncestor(t){let r=t;for(;r;){let n=this.namespaces.get(r);if(!n)return;if(n.explicit)return r;r=n.parent}}getData(){let t=[],r=[],n=Ae(),i=n.class?.hierarchicalNamespaces??!0;for(let s of this.namespaces.values()){if(!i&&!s.explicit)continue;let l={id:s.id,label:i?s.label:s.id,isGroup:!0,padding:n.class.padding??16,shape:"rect",cssStyles:[],look:n.look,parentId:i?s.parent:void 0};t.push(l)}for(let s of this.classes.values()){let l=i?s.parent:this.resolveExplicitAncestor(s.parent),u={...s,type:void 0,isGroup:!1,parentId:l,look:n.look};t.push(u)}for(let s of this.notes.values()){let l=i?s.parent:this.resolveExplicitAncestor(s.parent),u={id:s.id,label:s.text,isGroup:!1,shape:"note",padding:n.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${n.themeVariables.noteBkgColor}`,`stroke: ${n.themeVariables.noteBorderColor}`],look:n.look,parentId:l,labelType:"markdown"};t.push(u);let h=this.classes.get(s.class)?.id;if(h){let d={id:`edgeNote${s.index}`,start:s.id,end:h,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:n.look};r.push(d)}}for(let s of this.interfaces){let l={id:s.id,label:s.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:n.look};t.push(l)}let a=0;for(let s of this.relations){a++;let l={id:eu(s.id1,s.id2,{prefix:"id",counter:a}),start:s.id1,end:s.id2,type:"normal",label:s.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(s.relation.type1),arrowTypeEnd:this.getArrowMarker(s.relation.type2),startLabelRight:s.relationTitle1==="none"?"":s.relationTitle1,endLabelLeft:s.relationTitle2==="none"?"":s.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:s.style||"",pattern:s.relation.lineType==1?"dashed":"solid",look:n.look,labelType:"markdown"};r.push(l)}return{nodes:t,edges:r,other:{},config:n,direction:this.getDirection()}}}});var Y6t,AL,pY=F(()=>{"use strict";X1();Y6t=o(e=>`g.classGroup text { + fill: ${e.nodeBorder||e.classText}; + stroke: none; + font-family: ${e.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span { + color: ${e.titleColor}; + } + .cluster-label span p { + background-color: transparent; + } + + .cluster rect { + fill: ${e.clusterBkg}; + stroke: ${e.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span { + color: ${e.titleColor}; + } + +.nodeLabel, .edgeLabel { + color: ${e.classText}; +} + +.noteLabel .nodeLabel, .noteLabel .edgeLabel { + color: ${e.noteTextColor}; +} +.edgeLabel .label rect { + fill: ${e.mainBkg}; +} +.label text { + fill: ${e.classText}; +} + +.labelBkg { + background: ${e.mainBkg}; +} +.edgeLabel .label span { + background: ${e.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: ${e.strokeWidth}; + } + + +.divider { + stroke: ${e.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; +} + +g.classGroup line { + stroke: ${e.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${e.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${e.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${e.lineColor}; + stroke-width: ${e.strokeWidth}; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +[id$="-compositionStart"], .composition { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-compositionEnd"], .composition { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-dependencyStart"], .dependency { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-dependencyEnd"], .dependency { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-extensionStart"], .extension { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-extensionEnd"], .extension { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-aggregationStart"], .aggregation { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-aggregationEnd"], .aggregation { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-lollipopStart"], .lollipop { + fill: ${e.mainBkg} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +[id$="-lollipopEnd"], .lollipop { + fill: ${e.mainBkg} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; + line-height: initial; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; +} + +.edgeLabel[data-look="neo"] { + background-color: ${e.edgeLabelBackground}; + p { + background-color: ${e.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; +} + ${Eu()} +`,"getStyles"),AL=Y6t});var j6t,X6t,K6t,RL,mY=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();j6t=o((e,t="TB")=>{if(!e.doc)return t;let r=t;for(let n of e.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),X6t=o(function(e,t){return t.db.getClasses()},"getClasses"),K6t=o(async function(e,t,r,n){Z.info("REF0:"),Z.info("Drawing class diagram (v3)",t);let{securityLevel:i,state:a,layout:s}=Ae();n.db.setDiagramId(t);let l=n.db.getData(),u=pl(t,i);l.type=n.type,l.layoutAlgorithm=Su(s),l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,l.markers=["aggregation","extension","composition","dependency","lollipop"],l.diagramId=t,await Al(l,u);let h=8;Zt.insertTitle(u,"classDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),vo(u,h,"classDiagram",a?.useMaxWidth??!0)},"draw"),RL={getClasses:X6t,draw:K6t,getDir:j6t}});var xIe={};ir(xIe,{diagram:()=>Z6t});var Z6t,bIe=F(()=>{"use strict";dY();fY();pY();mY();Z6t={parser:SL,get db(){return new rx},renderer:RL,styles:AL,init:o(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var wIe={};ir(wIe,{diagram:()=>tRt});var tRt,kIe=F(()=>{"use strict";dY();fY();pY();mY();tRt={parser:SL,get db(){return new rx},renderer:RL,styles:AL,init:o(e=>{e.class||(e.class={}),e.class.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var gY,_L,yY=F(()=>{"use strict";gY=(function(){var e=o(function($,V,G,z){for(G=G||{},z=$.length;z--;G[$[z]]=V);return G},"o"),t=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],l=[1,16],u=[1,17],h=[1,18],d=[1,19],f=[1,33],p=[1,20],m=[1,21],g=[1,22],y=[1,23],v=[1,24],x=[1,26],b=[1,27],T=[1,28],k=[1,29],C=[1,30],w=[1,31],S=[1,32],R=[1,35],L=[1,36],N=[1,37],I=[1,38],_=[1,34],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],M=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],D=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],P={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:o(function(V,G,z,W,H,j,Q){var U=j.length-1;switch(H){case 3:return W.setRootDoc(j[U]),j[U];break;case 4:this.$=[];break;case 5:j[U]!="nl"&&(j[U-1].push(j[U]),this.$=j[U-1]);break;case 6:case 7:this.$=j[U];break;case 8:this.$="nl";break;case 12:this.$=j[U];break;case 13:let ie=j[U-1];ie.description=W.trimColon(j[U]),this.$=ie;break;case 14:this.$={stmt:"relation",state1:j[U-2],state2:j[U]};break;case 15:let ae=W.trimColon(j[U]);this.$={stmt:"relation",state1:j[U-3],state2:j[U-1],description:ae};break;case 19:this.$={stmt:"state",id:j[U-3],type:"default",description:"",doc:j[U-1]};break;case 20:var oe=j[U],te=j[U-2].trim();if(j[U].match(":")){var le=j[U].split(":");oe=le[0],te=[te,le[1]]}this.$={stmt:"state",id:oe,type:"default",description:te};break;case 21:this.$={stmt:"state",id:j[U-3],type:"default",description:j[U-5],doc:j[U-1]};break;case 22:this.$={stmt:"state",id:j[U],type:"fork"};break;case 23:this.$={stmt:"state",id:j[U],type:"join"};break;case 24:this.$={stmt:"state",id:j[U],type:"choice"};break;case 25:this.$={stmt:"state",id:W.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:j[U-1].trim(),note:{position:j[U-2].trim(),text:j[U].trim()}};break;case 29:this.$=j[U].trim(),W.setAccTitle(this.$);break;case 30:case 31:this.$=j[U].trim(),W.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:j[U-3],url:j[U-2],tooltip:j[U-1]};break;case 33:this.$={stmt:"click",id:j[U-3],url:j[U-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:j[U-1].trim(),classes:j[U].trim()};break;case 36:this.$={stmt:"style",id:j[U-1].trim(),styleClass:j[U].trim()};break;case 37:this.$={stmt:"applyClass",id:j[U-1].trim(),styleClass:j[U].trim()};break;case 38:W.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:W.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:W.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:W.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:j[U].trim(),type:"default",description:""};break;case 46:this.$={stmt:"state",id:j[U-2].trim(),classes:[j[U].trim()],type:"default",description:""};break;case 47:this.$={stmt:"state",id:j[U-2].trim(),classes:[j[U].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:t,5:r,6:n},{1:[3]},{3:5,4:t,5:r,6:n},{3:6,4:t,5:r,6:n},e([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:k,41:C,45:w,48:S,51:R,52:L,53:N,54:I,57:_},e(A,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:l,17:u,19:h,22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:k,41:C,45:w,48:S,51:R,52:L,53:N,54:I,57:_},e(A,[2,7]),e(A,[2,8]),e(A,[2,9]),e(A,[2,10]),e(A,[2,11]),e(A,[2,12],{14:[1,40],15:[1,41]}),e(A,[2,16]),{18:[1,42]},e(A,[2,18],{20:[1,43]}),{23:[1,44]},e(A,[2,22]),e(A,[2,23]),e(A,[2,24]),e(A,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},e(A,[2,28]),{34:[1,49]},{36:[1,50]},e(A,[2,31]),{13:51,24:f,57:_},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},e(M,[2,44],{58:[1,56]}),e(M,[2,45],{58:[1,57]}),e(A,[2,38]),e(A,[2,39]),e(A,[2,40]),e(A,[2,41]),e(A,[2,6]),e(A,[2,13]),{13:58,24:f,57:_},e(A,[2,17]),e(D,i,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},e(A,[2,29]),e(A,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},e(A,[2,14],{14:[1,71]}),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,72],22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:k,41:C,45:w,48:S,51:R,52:L,53:N,54:I,57:_},e(A,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},e(A,[2,34]),e(A,[2,35]),e(A,[2,36]),e(A,[2,37]),e(M,[2,46]),e(M,[2,47]),e(A,[2,15]),e(A,[2,19]),e(D,i,{7:78}),e(A,[2,26]),e(A,[2,27]),{5:[1,79]},{5:[1,80]},{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:l,17:u,19:h,21:[1,81],22:d,24:f,25:p,26:m,27:g,28:y,29:v,32:25,33:x,35:b,37:T,38:k,41:C,45:w,48:S,51:R,52:L,53:N,54:I,57:_},e(A,[2,32]),e(A,[2,33]),e(A,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:o(function(V,G){if(G.recoverable)this.trace(V);else{var z=new Error(V);throw z.hash=G,z}},"parseError"),parse:o(function(V){var G=this,z=[0],W=[],H=[null],j=[],Q=this.table,U="",oe=0,te=0,le=0,ie=2,ae=1,Re=j.slice.call(arguments,1),be=Object.create(this.lexer),Pe={yy:{}};for(var Ge in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ge)&&(Pe.yy[Ge]=this.yy[Ge]);be.setInput(V,Pe.yy),Pe.yy.lexer=be,Pe.yy.parser=this,typeof be.yylloc>"u"&&(be.yylloc={});var Oe=be.yylloc;j.push(Oe);var ue=be.options&&be.options.ranges;typeof Pe.yy.parseError=="function"?this.parseError=Pe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ye(X){z.length=z.length-2*X,H.length=H.length-X,j.length=j.length-X}o(ye,"popStack");function ke(){var X;return X=W.pop()||be.lex()||ae,typeof X!="number"&&(X instanceof Array&&(W=X,X=W.pop()),X=G.symbols_[X]||X),X}o(ke,"lex");for(var ce,re,J,se,ge,Te,we={},Me,ve,ne,q;;){if(J=z[z.length-1],this.defaultActions[J]?se=this.defaultActions[J]:((ce===null||typeof ce>"u")&&(ce=ke()),se=Q[J]&&Q[J][ce]),typeof se>"u"||!se.length||!se[0]){var he="";q=[];for(Me in Q[J])this.terminals_[Me]&&Me>ie&&q.push("'"+this.terminals_[Me]+"'");be.showPosition?he="Parse error on line "+(oe+1)+`: +`+be.showPosition()+` +Expecting `+q.join(", ")+", got '"+(this.terminals_[ce]||ce)+"'":he="Parse error on line "+(oe+1)+": Unexpected "+(ce==ae?"end of input":"'"+(this.terminals_[ce]||ce)+"'"),this.parseError(he,{text:be.match,token:this.terminals_[ce]||ce,line:be.yylineno,loc:Oe,expected:q})}if(se[0]instanceof Array&&se.length>1)throw new Error("Parse Error: multiple actions possible at state: "+J+", token: "+ce);switch(se[0]){case 1:z.push(ce),H.push(be.yytext),j.push(be.yylloc),z.push(se[1]),ce=null,re?(ce=re,re=null):(te=be.yyleng,U=be.yytext,oe=be.yylineno,Oe=be.yylloc,le>0&&le--);break;case 2:if(ve=this.productions_[se[1]][1],we.$=H[H.length-ve],we._$={first_line:j[j.length-(ve||1)].first_line,last_line:j[j.length-1].last_line,first_column:j[j.length-(ve||1)].first_column,last_column:j[j.length-1].last_column},ue&&(we._$.range=[j[j.length-(ve||1)].range[0],j[j.length-1].range[1]]),Te=this.performAction.apply(we,[U,te,oe,Pe.yy,se[1],H,j].concat(Re)),typeof Te<"u")return Te;ve&&(z=z.slice(0,-1*ve*2),H=H.slice(0,-1*ve),j=j.slice(0,-1*ve)),z.push(this.productions_[se[1]][0]),H.push(we.$),j.push(we._$),ne=Q[z[z.length-2]][z[z.length-1]],z.push(ne);break;case 3:return!0}}return!0},"parse")},B=(function(){var $={EOF:1,parseError:o(function(G,z){if(this.yy.parser)this.yy.parser.parseError(G,z);else throw new Error(G)},"parseError"),setInput:o(function(V,G){return this.yy=G||this.yy||{},this._input=V,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var V=this._input[0];this.yytext+=V,this.yyleng++,this.offset++,this.match+=V,this.matched+=V;var G=V.match(/(?:\r\n?|\n).*/g);return G?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),V},"input"),unput:o(function(V){var G=V.length,z=V.split(/(?:\r\n?|\n)/g);this._input=V+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-G),this.offset-=G;var W=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),z.length-1&&(this.yylineno-=z.length-1);var H=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:z?(z.length===W.length?this.yylloc.first_column:0)+W[W.length-z.length].length-z[0].length:this.yylloc.first_column-G},this.options.ranges&&(this.yylloc.range=[H[0],H[0]+this.yyleng-G]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(V){this.unput(this.match.slice(V))},"less"),pastInput:o(function(){var V=this.matched.substr(0,this.matched.length-this.match.length);return(V.length>20?"...":"")+V.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var V=this.match;return V.length<20&&(V+=this._input.substr(0,20-V.length)),(V.substr(0,20)+(V.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var V=this.pastInput(),G=new Array(V.length+1).join("-");return V+this.upcomingInput()+` +`+G+"^"},"showPosition"),test_match:o(function(V,G){var z,W,H;if(this.options.backtrack_lexer&&(H={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(H.yylloc.range=this.yylloc.range.slice(0))),W=V[0].match(/(?:\r\n?|\n).*/g),W&&(this.yylineno+=W.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:W?W[W.length-1].length-W[W.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+V[0].length},this.yytext+=V[0],this.match+=V[0],this.matches=V,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(V[0].length),this.matched+=V[0],z=this.performAction.call(this,this.yy,this,G,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),z)return z;if(this._backtrack){for(var j in H)this[j]=H[j];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var V,G,z,W;this._more||(this.yytext="",this.match="");for(var H=this._currentRules(),j=0;jG[0].length)){if(G=z,W=j,this.options.backtrack_lexer){if(V=this.test_match(z,H[j]),V!==!1)return V;if(this._backtrack){G=!1;continue}else return!1}else if(!this.options.flex)break}return G?(V=this.test_match(G,H[W]),V!==!1?V:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var G=this.next();return G||this.lex()},"lex"),begin:o(function(G){this.conditionStack.push(G)},"begin"),popState:o(function(){var G=this.conditionStack.length-1;return G>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(G){return G=this.conditionStack.length-1-Math.abs(G||0),G>=0?this.conditionStack[G]:"INITIAL"},"topState"),pushState:o(function(G){this.begin(G)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(G,z,W,H){function j(){let U=z.yytext.indexOf("%%");if(U===0)return!1;if(U>0){let oe=z.yytext.slice(0,U),te=z.yytext.slice(U);te&&G.lexer.unput(te),z.yytext=oe}return!0}o(j,"processId");var Q=H;switch(W){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:return 51;case 5:return 52;case 6:return 53;case 7:return 54;case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:break;case 13:return this.pushState("SCALE"),17;break;case 14:return 18;case 15:this.popState();break;case 16:return this.begin("acc_title"),33;break;case 17:return this.popState(),"acc_title_value";break;case 18:return this.begin("acc_descr"),35;break;case 19:return this.popState(),"acc_descr_value";break;case 20:this.begin("acc_descr_multiline");break;case 21:this.popState();break;case 22:return"acc_descr_multiline_value";case 23:return this.pushState("CLASSDEF"),41;break;case 24:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 25:return this.popState(),this.pushState("CLASSDEFID"),42;break;case 26:return this.popState(),43;break;case 27:return this.pushState("CLASS"),48;break;case 28:return this.popState(),this.pushState("CLASS_STYLE"),49;break;case 29:return this.popState(),50;break;case 30:return this.pushState("STYLE"),45;break;case 31:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;break;case 32:return this.popState(),47;break;case 33:return this.pushState("SCALE"),17;break;case 34:return 18;case 35:this.popState();break;case 36:this.pushState("STATE");break;case 37:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),25;break;case 38:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),26;break;case 39:return this.popState(),z.yytext=z.yytext.slice(0,-10).trim(),27;break;case 40:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),25;break;case 41:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),26;break;case 42:return this.popState(),z.yytext=z.yytext.slice(0,-10).trim(),27;break;case 43:return 51;case 44:return 52;case 45:return 53;case 46:return 54;case 47:this.pushState("STATE_STRING");break;case 48:return this.pushState("STATE_ID"),"AS";break;case 49:if(!j())return;return this.popState(),"ID";break;case 50:this.popState();break;case 51:return"STATE_DESCR";case 52:throw new Error('Error: State name must be a single word. Found: "'+z.yytext.trim()+'"');case 53:return 19;case 54:this.popState();break;case 55:return this.popState(),this.pushState("struct"),20;break;case 56:return this.popState(),21;break;case 57:break;case 58:return this.begin("NOTE"),29;break;case 59:return this.popState(),this.pushState("NOTE_ID"),59;break;case 60:return this.popState(),this.pushState("NOTE_ID"),60;break;case 61:this.popState(),this.pushState("FLOATING_NOTE");break;case 62:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 63:break;case 64:return"NOTE_TEXT";case 65:if(!j())return;return this.popState(),"ID";break;case 66:if(!j())return;return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 67:return this.popState(),z.yytext=z.yytext.substr(2).trim(),31;break;case 68:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),31;break;case 69:return 6;case 70:return 6;case 71:return 16;case 72:return 57;case 73:return j()?24:void 0;case 74:return z.yytext=z.yytext.trim(),14;break;case 75:return 15;case 76:return 28;case 77:return 58;case 78:return 5;case 79:return"INVALID"}},"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\w+\s+\w+.*?\{)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?\n\s*end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:(?:[^:\n;]|:[^:\n;])+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[10,11,12],inclusive:!1},struct:{rules:[10,11,12,23,27,30,36,43,44,45,46,56,57,58,72,73,74,75,76,77],inclusive:!1},FLOATING_NOTE_ID:{rules:[65],inclusive:!1},FLOATING_NOTE:{rules:[62,63,64],inclusive:!1},NOTE_TEXT:{rules:[67,68],inclusive:!1},NOTE_ID:{rules:[66],inclusive:!1},NOTE:{rules:[59,60,61],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[32],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[31],inclusive:!1},CLASS_STYLE:{rules:[29],inclusive:!1},CLASS:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[26],inclusive:!1},CLASSDEF:{rules:[24,25],inclusive:!1},acc_descr_multiline:{rules:[21,22],inclusive:!1},acc_descr:{rules:[19],inclusive:!1},acc_title:{rules:[17],inclusive:!1},SCALE:{rules:[14,15,34,35],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[49],inclusive:!1},STATE_STRING:{rules:[50,51],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[10,11,12,37,38,39,40,41,42,47,48,52,53,54,55],inclusive:!1},ID:{rules:[10,11,12],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,12,13,16,18,20,23,27,30,33,36,55,58,69,70,71,72,73,74,75,77,78,79],inclusive:!0}}};return $})();P.lexer=B;function O(){this.yy={}}return o(O,"Parser"),O.prototype=P,P.Parser=O,new O})();gY.parser=gY;_L=gY});var Rp,R0,Ww,AIe,RIe,_Ie,_0,LL,vY,xY,bY,TY,DL,IL,LIe,DIe,CY,wY,IIe,MIe,nx,aRt,NIe,kY,sRt,oRt,PIe,OIe,lRt,BIe,cRt,$Ie,SY,EY,FIe,ML,zIe,AY,NL=F(()=>{"use strict";Rp="state",R0="root",Ww="relation",AIe="classDef",RIe="style",_Ie="applyClass",_0="default",LL="divider",vY="fill:none",xY="fill: #333",bY="markdown",TY="normal",DL="rect",IL="rectWithTitle",LIe="stateStart",DIe="stateEnd",CY="divider",wY="roundedWithTitle",IIe="note",MIe="noteGroup",nx="statediagram",aRt="state",NIe=`${nx}-${aRt}`,kY="transition",sRt="note",oRt="note-edge",PIe=`${kY} ${oRt}`,OIe=`${nx}-${sRt}`,lRt="cluster",BIe=`${nx}-${lRt}`,cRt="cluster-alt",$Ie=`${nx}-${cRt}`,SY="parent",EY="note",FIe="state",ML="----",zIe=`${ML}${EY}`,AY=`${ML}${SY}`});function RY(e="",t=0,r="",n=ML){let i=r!==null&&r.length>0?`${n}${r}`:"";return`${FIe}-${e}${i}-${t}`}function PL(e,t,r){if(!t.id||t.id===""||t.id==="")return;t.cssClasses&&(Array.isArray(t.cssCompiledStyles)||(t.cssCompiledStyles=[]),t.cssClasses.split(" ").forEach(i=>{let a=r.get(i);a&&(t.cssCompiledStyles=[...t.cssCompiledStyles??[],...a.styles])}));let n=e.find(i=>i.id===t.id);n?Object.assign(n,t):e.push(t)}function hRt(e){return e?.classes?.join(" ")??""}function dRt(e){return e?.styles??[]}var OL,_p,uRt,GIe,ix,WIe,qIe=F(()=>{"use strict";Xt();vt();Vr();NL();OL=new Map,_p=0;o(RY,"stateDomId");uRt=o((e,t,r,n,i,a,s,l)=>{Z.trace("items",t),t.forEach(u=>{switch(u.stmt){case Rp:ix(e,u,r,n,i,a,s,l);break;case _0:ix(e,u,r,n,i,a,s,l);break;case Ww:{ix(e,u.state1,r,n,i,a,s,l),ix(e,u.state2,r,n,i,a,s,l);let h=s==="neo",d={id:"edge"+_p,start:u.state1.id,end:u.state2.id,arrowhead:"normal",arrowTypeEnd:h?"arrow_barb_neo":"arrow_barb",style:vY,labelStyle:"",label:xt.sanitizeText(u.description??"",Ae()),arrowheadStyle:xY,labelpos:"c",labelType:bY,thickness:TY,classes:kY,look:s};i.push(d),_p++}break}})},"setupDoc"),GIe=o((e,t="TB")=>{let r=t;if(e.doc)for(let n of e.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir");o(PL,"insertOrUpdateNode");o(hRt,"getClassesFromDbInfo");o(dRt,"getStylesFromDbInfo");ix=o((e,t,r,n,i,a,s,l)=>{let u=t.id,h=r.get(u),d=hRt(h),f=dRt(h),p=Ae();if(Z.info("dataFetcher parsedItem",t,h,f),u!=="root"){let m=DL;t.start===!0?m=LIe:t.start===!1&&(m=DIe),t.type!==_0&&(m=t.type),OL.get(u)||OL.set(u,{id:u,shape:m,description:xt.sanitizeText(u,p),cssClasses:`${d} ${NIe}`,cssStyles:f});let g=OL.get(u);t.description&&(Array.isArray(g.description)?(g.shape=IL,g.description.push(t.description)):g.description?.length&&g.description.length>0?(g.shape=IL,g.description===u?g.description=[t.description]:g.description=[g.description,t.description]):(g.shape=DL,g.description=t.description),g.description=xt.sanitizeTextOrArray(g.description,p)),g.description?.length===1&&g.shape===IL&&(g.type==="group"?g.shape=wY:g.shape=DL),!g.type&&t.doc&&(Z.info("Setting cluster for XCX",u,GIe(t)),g.type="group",g.isGroup=!0,g.dir=GIe(t),g.explicitDir=t.doc.some(v=>v.stmt==="dir"),g.shape=t.type===LL?CY:wY,g.cssClasses=`${g.cssClasses} ${BIe} ${a?$Ie:""}`);let y={labelStyle:"",shape:g.shape,label:g.description,cssClasses:g.cssClasses,cssCompiledStyles:[],cssStyles:g.cssStyles,id:u,dir:g.dir,domId:RY(u,_p),type:g.type,isGroup:g.type==="group",padding:8,rx:10,ry:10,look:s,labelType:"markdown"};if(y.shape===CY&&(y.label=""),e&&e.id!=="root"&&(Z.trace("Setting node ",u," to be child of its parent ",e.id),y.parentId=e.id),y.centerLabel=!0,t.note){let v={labelStyle:"",shape:IIe,label:t.note.text,labelType:"markdown",cssClasses:OIe,cssStyles:[],cssCompiledStyles:[],id:u+zIe+"-"+_p,domId:RY(u,_p,EY),type:g.type,isGroup:g.type==="group",padding:p.flowchart?.padding,look:s,position:t.note.position},x=u+AY,b={labelStyle:"",shape:MIe,label:t.note.text,cssClasses:g.cssClasses,cssStyles:[],id:u+AY,domId:RY(u,_p,SY),type:"group",isGroup:!0,padding:16,look:s,position:t.note.position};_p++,b.id=x,v.parentId=x,PL(n,b,l),PL(n,v,l),PL(n,y,l);let T=u,k=v.id;t.note.position==="left of"&&(T=v.id,k=u),i.push({id:T+"-"+k,start:T,end:k,arrowhead:"none",arrowTypeEnd:"",style:vY,labelStyle:"",classes:PIe,arrowheadStyle:xY,labelpos:"c",labelType:bY,thickness:TY,look:s})}else PL(n,y,l)}t.doc&&(Z.trace("Adding nodes children "),uRt(t,t.doc,r,n,i,!a,s,l))},"dataFetcher"),WIe=o(()=>{OL.clear(),_p=0},"reset")});var LY,fRt,pRt,HIe,DY=F(()=>{"use strict";Xt();vt();Am();Qf();Jf();Qt();NL();LY=o((e,t="TB")=>{if(!e.doc)return t;let r=t;for(let n of e.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),fRt=o(function(e,t){return t.db.getClasses()},"getClasses"),pRt=o(async function(e,t,r,n){Z.info("REF0:"),Z.info("Drawing state diagram (v2)",t);let{securityLevel:i,state:a,layout:s}=Ae();n.db.extract(n.db.getRootDocV2());let l=n.db.getData(),u=pl(t,i);l.type=n.type,l.layoutAlgorithm=s,l.nodeSpacing=a?.nodeSpacing||50,l.rankSpacing=a?.rankSpacing||50,Ae().look==="neo"?l.markers=["barbNeo"]:l.markers=["barb"],l.diagramId=t,await Al(l,u);let d=8;try{(typeof n.db.getLinks=="function"?n.db.getLinks():new Map).forEach((p,m)=>{let g=typeof m=="string"?m:typeof m?.id=="string"?m.id:"",y=l.nodes.find(C=>C.id===g);if(!g){Z.warn("\u26A0\uFE0F Invalid or missing stateId from key:",JSON.stringify(m));return}let v=u.node()?.querySelectorAll("g.node, g.rough-node"),x;if(v?.forEach(C=>{let w=C.textContent?.trim();(C.id===y?.domId||w===g)&&(x=C)}),!x){Z.warn("\u26A0\uFE0F Could not find node matching text:",g);return}let b=x.parentNode;if(!b){Z.warn("\u26A0\uFE0F Node has no parent, cannot wrap:",g);return}let T=document.createElementNS("http://www.w3.org/2000/svg","a"),k=p.url.replace(/^"+|"+$/g,"");if(T.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",k),T.setAttribute("target","_blank"),p.tooltip){let C=p.tooltip.replace(/^"+|"+$/g,"");T.setAttribute("title",C),x.setAttribute("title",C)}b.replaceChild(T,x),T.appendChild(x),Z.info("\u{1F517} Wrapped node in
    tag for:",g,p.url)})}catch(f){Z.error("\u274C Error injecting clickable links:",f)}Zt.insertTitle(u,"statediagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),vo(u,d,nx,a?.useMaxWidth??!0)},"draw"),HIe={getClasses:fRt,draw:pRt,getDir:LY}});var Ys,YIe,jIe,BL,Nl,$L=F(()=>{"use strict";$r();H0();Xt();vt();Qt();Vr();Nn();Hd();qIe();DY();NL();Ys={START_NODE:"[*]",START_TYPE:"start",END_NODE:"[*]",END_TYPE:"end",COLOR_KEYWORD:"color",FILL_KEYWORD:"fill",BG_FILL:"bgFill",STYLECLASS_SEP:","},YIe=o(()=>new Map,"newClassesList"),jIe=o(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),BL=o(e=>JSON.parse(JSON.stringify(e)),"clone"),Nl=class{constructor(t){this.version=t;this.nodes=[];this.edges=[];this.rootDoc=[];this.classes=YIe();this.documents={root:jIe()};this.currentDocument=this.documents.root;this.startEndCount=0;this.dividerCnt=0;this.links=new Map;this.funs=[];this.getAccTitle=Ar;this.setAccTitle=kr;this.getAccDescription=_r;this.setAccDescription=Rr;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this),this.bindFunctions=this.bindFunctions.bind(this)}static{o(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(t){this.clear(!0);for(let i of Array.isArray(t)?t:t.doc)switch(i.stmt){case Rp:this.addState(i.id.trim(),i.type,i.doc,i.description,i.note);break;case Ww:this.addRelation(i.state1,i.state2,i.description);break;case AIe:this.addStyleClass(i.id.trim(),i.classes);break;case RIe:this.handleStyleDef(i);break;case _Ie:this.setCssClass(i.id.trim(),i.styleClass);break;case"click":this.addLink(i.id,i.url,i.tooltip);break}let r=this.getStates(),n=Ae();WIe(),ix(void 0,this.getRootDocV2(),r,this.nodes,this.edges,!0,n.look,this.classes);for(let i of this.nodes)if(Array.isArray(i.label)){if(i.description=i.label.slice(1),i.isGroup&&i.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${i.id}]`);i.label=i.label[0]}}handleStyleDef(t){let r=t.id.trim().split(","),n=t.styleClass.split(",");for(let i of r){let a=this.getState(i);if(!a){let s=i.trim();this.addState(s),a=this.getState(s)}a&&(a.styles=n.map(s=>s.replace(/;/g,"")?.trim()))}}setRootDoc(t){Z.info("Setting root doc",t),this.rootDoc=t,this.version===1?this.extract(t):this.extract(this.getRootDocV2())}docTranslator(t,r,n){if(r.stmt===Ww){this.docTranslator(t,r.state1,!0),this.docTranslator(t,r.state2,!1);return}if(r.stmt===Rp&&(r.id===Ys.START_NODE?(r.id=t.id+(n?"_start":"_end"),r.start=n):r.id=r.id.trim()),r.stmt!==R0&&r.stmt!==Rp||!r.doc)return;let i=[],a=[];for(let s of r.doc)if(s.type===LL){let l=BL(s);l.doc=BL(a),i.push(l),a=[]}else a.push(s);if(i.length>0&&a.length>0){let s={stmt:Rp,id:hP(),type:"divider",doc:BL(a)};i.push(BL(s)),r.doc=i}r.doc.forEach(s=>this.docTranslator(r,s,!0))}getRootDocV2(){return this.docTranslator({id:R0,stmt:R0},{id:R0,stmt:R0,doc:this.rootDoc},!0),{id:R0,doc:this.rootDoc}}addState(t,r=_0,n=void 0,i=void 0,a=void 0,s=void 0,l=void 0,u=void 0){let h=t?.trim();if(!this.currentDocument.states.has(h))Z.info("Adding state ",h,i),this.currentDocument.states.set(h,{stmt:Rp,id:h,descriptions:[],type:r,doc:n,note:a,classes:[],styles:[],textStyles:[]});else{let d=this.currentDocument.states.get(h);if(!d)throw new Error(`State not found: ${h}`);d.doc||(d.doc=n),d.type||(d.type=r)}if(i&&(Z.info("Setting state description",h,i),(Array.isArray(i)?i:[i]).forEach(f=>this.addDescription(h,f.trim()))),a){let d=this.currentDocument.states.get(h);if(!d)throw new Error(`State not found: ${h}`);d.note=a,d.note.text=xt.sanitizeText(d.note.text,Ae())}s&&(Z.info("Setting state classes",h,s),(Array.isArray(s)?s:[s]).forEach(f=>this.setCssClass(h,f.trim()))),l&&(Z.info("Setting state styles",h,l),(Array.isArray(l)?l:[l]).forEach(f=>this.setStyle(h,f.trim()))),u&&(Z.info("Setting state styles",h,l),(Array.isArray(u)?u:[u]).forEach(f=>this.setTextStyle(h,f.trim())))}clear(t){this.nodes=[],this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.documents={root:jIe()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=YIe(),t||(this.links=new Map,yr())}getState(t){return this.currentDocument.states.get(t)}getStates(){return this.currentDocument.states}logDocuments(){Z.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(t,r,n){this.links.set(t,{url:r,tooltip:n}),Z.warn("Adding link",t,r,n)}getLinks(){return this.links}startIdIfNeeded(t=""){return t===Ys.START_NODE?(this.startEndCount++,`${Ys.START_TYPE}${this.startEndCount}`):t}startTypeIfNeeded(t="",r=_0){return t===Ys.START_NODE?Ys.START_TYPE:r}endIdIfNeeded(t=""){return t===Ys.END_NODE?(this.startEndCount++,`${Ys.END_TYPE}${this.startEndCount}`):t}endTypeIfNeeded(t="",r=_0){return t===Ys.END_NODE?Ys.END_TYPE:r}addRelationObjs(t,r,n=""){let i=this.startIdIfNeeded(t.id.trim()),a=this.startTypeIfNeeded(t.id.trim(),t.type),s=this.startIdIfNeeded(r.id.trim()),l=this.startTypeIfNeeded(r.id.trim(),r.type);this.addState(i,a,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),this.addState(s,l,r.doc,r.description,r.note,r.classes,r.styles,r.textStyles),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:xt.sanitizeText(n,Ae())})}addRelation(t,r,n){if(typeof t=="object"&&typeof r=="object")this.addRelationObjs(t,r,n);else if(typeof t=="string"&&typeof r=="string"){let i=this.startIdIfNeeded(t.trim()),a=this.startTypeIfNeeded(t),s=this.endIdIfNeeded(r.trim()),l=this.endTypeIfNeeded(r);this.addState(i,a),this.addState(s,l),this.currentDocument.relations.push({id1:i,id2:s,relationTitle:n?xt.sanitizeText(n,Ae()):void 0})}}addDescription(t,r){let n=this.currentDocument.states.get(t),i=r.startsWith(":")?r.replace(":","").trim():r;n?.descriptions?.push(xt.sanitizeText(i,Ae()))}cleanupLabel(t){return t.startsWith(":")?t.slice(2).trim():t.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(t,r=""){this.classes.has(t)||this.classes.set(t,{id:t,styles:[],textStyles:[]});let n=this.classes.get(t);r&&n&&r.split(Ys.STYLECLASS_SEP).forEach(i=>{let a=i.replace(/([^;]*);/,"$1").trim();if(RegExp(Ys.COLOR_KEYWORD).exec(i)){let l=a.replace(Ys.FILL_KEYWORD,Ys.BG_FILL).replace(Ys.COLOR_KEYWORD,Ys.FILL_KEYWORD);n.textStyles.push(l)}n.styles.push(a)})}getClasses(){return this.classes}setupToolTips(t){let r=Dy();et(t).select("svg").selectAll("g.node, g.rough-node").on("mouseover",a=>{let s=et(a.currentTarget),l=s.attr("title");if(l===null)return;let u=a.currentTarget?.getBoundingClientRect();r.transition().duration(200).style("opacity",".9"),r.style("left",window.scrollX+u.left+(u.right-u.left)/2+"px").style("top",window.scrollY+u.bottom+"px"),r.html(Zs.sanitize(l)),s.classed("hover",!0)}).on("mouseout",a=>{r.transition().duration(500).style("opacity",0),et(a.currentTarget).classed("hover",!1)})}setCssClass(t,r){t.split(",").forEach(n=>{let i=this.getState(n);if(!i){let a=n.trim();this.addState(a),i=this.getState(a)}i?.classes?.push(r)})}setStyle(t,r){this.getState(t)?.styles?.push(r)}setTextStyle(t,r){this.getState(t)?.textStyles?.push(r)}bindFunctions(t){this.funs.forEach(r=>{r(t)})}getDirectionStatement(){return this.rootDoc.find(t=>t.stmt==="dir")}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(t){let r=this.getDirectionStatement();r?r.value=t:this.rootDoc.unshift({stmt:"dir",value:t})}trimColon(t){return t.startsWith(":")?t.slice(1).trim():t.trim()}getData(){let t=Ae();return{nodes:this.nodes,edges:this.edges,other:{},config:t,direction:LY(this.getRootDocV2())}}getConfig(){return Ae().state}}});var gRt,FL,IY=F(()=>{"use strict";gRt=o(e=>` +defs [id$="-barbEnd"] { + fill: ${e.transitionColor}; + stroke: ${e.transitionColor}; + } +g.stateGroup text { + fill: ${e.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${e.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${e.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; +} + +g.stateGroup line { + stroke: ${e.lineColor}; + stroke-width: ${e.strokeWidth||1}; +} + +.transition { + stroke: ${e.transitionColor}; + stroke-width: ${e.strokeWidth||1}; + fill: none; +} + +.stateGroup .composit { + fill: ${e.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${e.noteBorderColor}; + fill: ${e.noteBkgColor}; + + text { + fill: ${e.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${e.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${e.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel { + background-color: ${e.edgeLabelBackground}; + p { + background-color: ${e.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; +} +.edgeLabel .label text { + fill: ${e.transitionLabelColor||e.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${e.transitionLabelColor||e.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${e.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${e.specialStateColor}; + stroke: ${e.specialStateColor}; +} + +.node .fork-join { + fill: ${e.specialStateColor}; + stroke: ${e.specialStateColor}; +} + +.node circle.state-end { + fill: ${e.innerEndBackground}; + stroke: ${e.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${e.compositeBackground||e.background}; + // stroke: ${e.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${e.stateBkg||e.mainBkg}; + stroke: ${e.stateBorder||e.nodeBorder}; + stroke-width: ${e.strokeWidth||1}px; +} +.node polygon { + fill: ${e.mainBkg}; + stroke: ${e.stateBorder||e.nodeBorder};; + stroke-width: ${e.strokeWidth||1}px; +} +[id$="-barbEnd"] { + fill: ${e.lineColor}; +} + +.statediagram-cluster rect { + fill: ${e.compositeTitleBackground}; + stroke: ${e.stateBorder||e.nodeBorder}; + stroke-width: ${e.strokeWidth||1}px; +} + +.cluster-label, .nodeLabel { + color: ${e.stateLabelColor}; + // line-height: 1; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${e.stateBorder||e.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${e.compositeBackground||e.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${e.altBackground?e.altBackground:"#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${e.altBackground?e.altBackground:"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${e.noteBkgColor}; + stroke: ${e.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${e.noteBkgColor}; + stroke: ${e.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${e.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${e.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${e.noteTextColor}; +} + +[id$="-dependencyStart"], [id$="-dependencyEnd"] { + fill: ${e.lineColor}; + stroke: ${e.lineColor}; + stroke-width: ${e.strokeWidth||1}; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; +} + +[data-look="neo"].statediagram-cluster rect { + fill: ${e.mainBkg}; + stroke: ${e.useGradient?"url("+e.svgId+"-gradient)":e.stateBorder||e.nodeBorder}; + stroke-width: ${e.strokeWidth??1}; +} +[data-look="neo"].statediagram-cluster rect.outer { + rx: ${e.radius}px; + ry: ${e.radius}px; + filter: ${e.dropShadow?e.dropShadow.replace("url(#drop-shadow)",`url(${e.svgId}-drop-shadow)`):"none"} +} +`,"getStyles"),FL=gRt});var yRt,vRt,xRt,bRt,KIe,TRt,CRt,wRt,kRt,MY,XIe,ZIe,QIe=F(()=>{"use strict";$r();$L();Qt();Vr();Xt();vt();yRt=o(e=>e.append("circle").attr("class","start-state").attr("r",Ae().state.sizeUnit).attr("cx",Ae().state.padding+Ae().state.sizeUnit).attr("cy",Ae().state.padding+Ae().state.sizeUnit),"drawStartState"),vRt=o(e=>e.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",Ae().state.textHeight).attr("class","divider").attr("x2",Ae().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),xRt=o((e,t)=>{let r=e.append("text").attr("x",2*Ae().state.padding).attr("y",Ae().state.textHeight+2*Ae().state.padding).attr("font-size",Ae().state.fontSize).attr("class","state-title").text(t.id),n=r.node().getBBox();return e.insert("rect",":first-child").attr("x",Ae().state.padding).attr("y",Ae().state.padding).attr("width",n.width+2*Ae().state.padding).attr("height",n.height+2*Ae().state.padding).attr("rx",Ae().state.radius),r},"drawSimpleState"),bRt=o((e,t)=>{let r=o(function(p,m,g){let y=p.append("tspan").attr("x",2*Ae().state.padding).text(m);g||y.attr("dy",Ae().state.textHeight)},"addTspan"),i=e.append("text").attr("x",2*Ae().state.padding).attr("y",Ae().state.textHeight+1.3*Ae().state.padding).attr("font-size",Ae().state.fontSize).attr("class","state-title").text(t.descriptions[0]).node().getBBox(),a=i.height,s=e.append("text").attr("x",Ae().state.padding).attr("y",a+Ae().state.padding*.4+Ae().state.dividerMargin+Ae().state.textHeight).attr("class","state-description"),l=!0,u=!0;t.descriptions.forEach(function(p){l||(r(s,p,u),u=!1),l=!1});let h=e.append("line").attr("x1",Ae().state.padding).attr("y1",Ae().state.padding+a+Ae().state.dividerMargin/2).attr("y2",Ae().state.padding+a+Ae().state.dividerMargin/2).attr("class","descr-divider"),d=s.node().getBBox(),f=Math.max(d.width,i.width);return h.attr("x2",f+3*Ae().state.padding),e.insert("rect",":first-child").attr("x",Ae().state.padding).attr("y",Ae().state.padding).attr("width",f+2*Ae().state.padding).attr("height",d.height+a+2*Ae().state.padding).attr("rx",Ae().state.radius),e},"drawDescrState"),KIe=o((e,t,r)=>{let n=Ae().state.padding,i=2*Ae().state.padding,a=e.node().getBBox(),s=a.width,l=a.x,u=e.append("text").attr("x",0).attr("y",Ae().state.titleShift).attr("font-size",Ae().state.fontSize).attr("class","state-title").text(t.id),d=u.node().getBBox().width+i,f=Math.max(d,s);f===s&&(f=f+i);let p,m=e.node().getBBox();t.doc,p=l-n,d>s&&(p=(s-f)/2+n),Math.abs(l-m.x)s&&(p=l-(d-s)/2);let g=1-Ae().state.textHeight;return e.insert("rect",":first-child").attr("x",p).attr("y",g).attr("class",r?"alt-composit":"composit").attr("width",f).attr("height",m.height+Ae().state.textHeight+Ae().state.titleShift+1).attr("rx","0"),u.attr("x",p+n),d<=s&&u.attr("x",l+(f-i)/2-d/2+n),e.insert("rect",":first-child").attr("x",p).attr("y",Ae().state.titleShift-Ae().state.textHeight-Ae().state.padding).attr("width",f).attr("height",Ae().state.textHeight*3).attr("rx",Ae().state.radius),e.insert("rect",":first-child").attr("x",p).attr("y",Ae().state.titleShift-Ae().state.textHeight-Ae().state.padding).attr("width",f).attr("height",m.height+3+2*Ae().state.textHeight).attr("rx",Ae().state.radius),e},"addTitleAndBox"),TRt=o(e=>(e.append("circle").attr("class","end-state-outer").attr("r",Ae().state.sizeUnit+Ae().state.miniPadding).attr("cx",Ae().state.padding+Ae().state.sizeUnit+Ae().state.miniPadding).attr("cy",Ae().state.padding+Ae().state.sizeUnit+Ae().state.miniPadding),e.append("circle").attr("class","end-state-inner").attr("r",Ae().state.sizeUnit).attr("cx",Ae().state.padding+Ae().state.sizeUnit+2).attr("cy",Ae().state.padding+Ae().state.sizeUnit+2)),"drawEndState"),CRt=o((e,t)=>{let r=Ae().state.forkWidth,n=Ae().state.forkHeight;if(t.parentId){let i=r;r=n,n=i}return e.append("rect").style("stroke","black").style("fill","black").attr("width",r).attr("height",n).attr("x",Ae().state.padding).attr("y",Ae().state.padding)},"drawForkJoinState"),wRt=o((e,t,r,n)=>{let i=0,a=n.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=e.replace(/\r\n/g,"
    ");s=s.replace(/\n/g,"
    ");let l=s.split(xt.lineBreakRegex),u=1.25*Ae().state.noteMargin;for(let h of l){let d=h.trim();if(d.length>0){let f=a.append("tspan");if(f.text(d),u===0){let p=f.node().getBBox();u+=p.height}i+=u,f.attr("x",t+Ae().state.noteMargin),f.attr("y",r+i+1.25*Ae().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},"_drawLongText"),kRt=o((e,t)=>{t.attr("class","state-note");let r=t.append("rect").attr("x",0).attr("y",Ae().state.padding),n=t.append("g"),{textWidth:i,textHeight:a}=wRt(e,0,0,n);return r.attr("height",a+2*Ae().state.noteMargin),r.attr("width",i+Ae().state.noteMargin*2),r},"drawNote"),MY=o(function(e,t){let r=t.id,n={id:r,label:t.id,width:0,height:0},i=e.append("g").attr("id",r).attr("class","stateGroup");t.type==="start"&&yRt(i),t.type==="end"&&TRt(i),(t.type==="fork"||t.type==="join")&&CRt(i,t),t.type==="note"&&kRt(t.note.text,i),t.type==="divider"&&vRt(i),t.type==="default"&&t.descriptions.length===0&&xRt(i,t),t.type==="default"&&t.descriptions.length>0&&bRt(i,t);let a=i.node().getBBox();return n.width=a.width+2*Ae().state.padding,n.height=a.height+2*Ae().state.padding,n},"drawState"),XIe=0,ZIe=o(function(e,t,r){let n=o(function(u){switch(u){case Nl.relationType.AGGREGATION:return"aggregation";case Nl.relationType.EXTENSION:return"extension";case Nl.relationType.COMPOSITION:return"composition";case Nl.relationType.DEPENDENCY:return"dependency"}},"getRelationType");t.points=t.points.filter(u=>!Number.isNaN(u.y));let i=t.points,a=tc().x(function(u){return u.x}).y(function(u){return u.y}).curve(rc),s=e.append("path").attr("d",a(i)).attr("id","edge"+XIe).attr("class","transition"),l="";if(Ae().state.arrowMarkerAbsolute&&(l=Wp(!0)),s.attr("marker-end","url("+l+"#"+n(Nl.relationType.DEPENDENCY)+"End)"),r.title!==void 0){let u=e.append("g").attr("class","stateLabel"),{x:h,y:d}=Zt.calcLabelPosition(t.points),f=xt.getRows(r.title),p=0,m=[],g=0,y=0;for(let b=0;b<=f.length;b++){let T=u.append("text").attr("text-anchor","middle").text(f[b]).attr("x",h).attr("y",d+p),k=T.node().getBBox();g=Math.max(g,k.width),y=Math.min(y,k.x),Z.info(k.x,h,d+p),p===0&&(p=T.node().getBBox().height,Z.info("Title height",p,d)),m.push(T)}let v=p*f.length;if(f.length>1){let b=(f.length-1)*p*.5;m.forEach((T,k)=>T.attr("y",d+k*p-b)),v=p*f.length}let x=u.node().getBBox();u.insert("rect",":first-child").attr("class","box").attr("x",h-g/2-Ae().state.padding/2).attr("y",d-v/2-Ae().state.padding/2-3.5).attr("width",g+Ae().state.padding).attr("height",v+Ae().state.padding),Z.info(x)}XIe++},"drawEdge")});var tl,NY,SRt,ERt,ARt,RRt,JIe,eMe,tMe=F(()=>{"use strict";$r();q9();qo();vt();Vr();QIe();Xt();$n();NY={},SRt=o(function(){},"setConf"),ERt=o(function(e){e.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),ARt=o(function(e,t,r,n){tl=Ae().state;let i=Ae().securityLevel,a;i==="sandbox"&&(a=et("#i"+t));let s=i==="sandbox"?et(a.nodes()[0].contentDocument.body):et("body"),l=i==="sandbox"?a.nodes()[0].contentDocument:document;Z.debug("Rendering diagram "+e);let u=s.select(`[id='${t}']`);ERt(u);let h=n.db.getRootDoc(),d=u.append("g").attr("id",t+"-root");JIe(h,d,void 0,!1,s,l,n);let f=tl.padding,p=u.node().getBBox(),m=p.width+f*2,g=p.height+f*2,y=m*1.75;Wr(u,g,y,tl.useMaxWidth),u.attr("viewBox",`${p.x-tl.padding} ${p.y-tl.padding} `+m+" "+g)},"draw"),RRt=o(e=>e?e.length*tl.fontSizeFactor:1,"getLabelWidth"),JIe=o((e,t,r,n,i,a,s)=>{let l=new on({compound:!0,multigraph:!0}),u,h=!0;for(u=0;u{let C=k.parentElement,w=0,S=0;C&&(C.parentElement&&(w=C.parentElement.getBBox().width),S=parseInt(C.getAttribute("data-x-shift"),10),Number.isNaN(S)&&(S=0)),k.setAttribute("x1",0-S+8),k.setAttribute("x2",w-S-8)})):Z.debug("No Node "+b+": "+JSON.stringify(l.node(b)))});let v=y.getBBox();l.edges().forEach(function(b){b!==void 0&&l.edge(b)!==void 0&&(Z.debug("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(l.edge(b))),ZIe(t,l.edge(b),l.edge(b).relation))}),v=y.getBBox();let x={id:r||"root",label:r||"root",width:0,height:0};return x.width=v.width+2*tl.padding,x.height=v.height+2*tl.padding,Z.debug("Doc rendered",x,l),x},"renderDoc"),eMe={setConf:SRt,draw:ARt}});var rMe={};ir(rMe,{diagram:()=>_Rt});var _Rt,nMe=F(()=>{"use strict";yY();$L();IY();tMe();_Rt={parser:_L,get db(){return new Nl(1)},renderer:eMe,styles:FL,init:o(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var sMe={};ir(sMe,{diagram:()=>MRt});var MRt,oMe=F(()=>{"use strict";yY();$L();IY();DY();MRt={parser:_L,get db(){return new Nl(2)},renderer:HIe,styles:FL,init:o(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")}});var PY,uMe,hMe=F(()=>{"use strict";PY=(function(){var e=o(function(f,p,m,g){for(m=m||{},g=f.length;g--;m[f[g]]=p);return m},"o"),t=[6,8,10,11,12,14,16,17,18],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],l=[1,14],u={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:o(function(p,m,g,y,v,x,b){var T=x.length-1;switch(v){case 1:return x[T-1];case 2:this.$=[];break;case 3:x[T-1].push(x[T]),this.$=x[T-1];break;case 4:case 5:this.$=x[T];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(x[T].substr(6)),this.$=x[T].substr(6);break;case 9:this.$=x[T].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=x[T].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(x[T].substr(8)),this.$=x[T].substr(8);break;case 13:y.addTask(x[T-1],x[T]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:l},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:15,11:r,12:n,14:i,16:a,17:s,18:l},e(t,[2,5]),e(t,[2,6]),e(t,[2,8]),{13:[1,16]},{15:[1,17]},e(t,[2,11]),e(t,[2,12]),{19:[1,18]},e(t,[2,4]),e(t,[2,9]),e(t,[2,10]),e(t,[2,13])],defaultActions:{},parseError:o(function(p,m){if(m.recoverable)this.trace(p);else{var g=new Error(p);throw g.hash=m,g}},"parseError"),parse:o(function(p){var m=this,g=[0],y=[],v=[null],x=[],b=this.table,T="",k=0,C=0,w=0,S=2,R=1,L=x.slice.call(arguments,1),N=Object.create(this.lexer),I={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(I.yy[_]=this.yy[_]);N.setInput(p,I.yy),I.yy.lexer=N,I.yy.parser=this,typeof N.yylloc>"u"&&(N.yylloc={});var A=N.yylloc;x.push(A);var M=N.options&&N.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function D(te){g.length=g.length-2*te,v.length=v.length-te,x.length=x.length-te}o(D,"popStack");function P(){var te;return te=y.pop()||N.lex()||R,typeof te!="number"&&(te instanceof Array&&(y=te,te=y.pop()),te=m.symbols_[te]||te),te}o(P,"lex");for(var B,O,$,V,G,z,W={},H,j,Q,U;;){if($=g[g.length-1],this.defaultActions[$]?V=this.defaultActions[$]:((B===null||typeof B>"u")&&(B=P()),V=b[$]&&b[$][B]),typeof V>"u"||!V.length||!V[0]){var oe="";U=[];for(H in b[$])this.terminals_[H]&&H>S&&U.push("'"+this.terminals_[H]+"'");N.showPosition?oe="Parse error on line "+(k+1)+`: +`+N.showPosition()+` +Expecting `+U.join(", ")+", got '"+(this.terminals_[B]||B)+"'":oe="Parse error on line "+(k+1)+": Unexpected "+(B==R?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(oe,{text:N.match,token:this.terminals_[B]||B,line:N.yylineno,loc:A,expected:U})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+$+", token: "+B);switch(V[0]){case 1:g.push(B),v.push(N.yytext),x.push(N.yylloc),g.push(V[1]),B=null,O?(B=O,O=null):(C=N.yyleng,T=N.yytext,k=N.yylineno,A=N.yylloc,w>0&&w--);break;case 2:if(j=this.productions_[V[1]][1],W.$=v[v.length-j],W._$={first_line:x[x.length-(j||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(j||1)].first_column,last_column:x[x.length-1].last_column},M&&(W._$.range=[x[x.length-(j||1)].range[0],x[x.length-1].range[1]]),z=this.performAction.apply(W,[T,C,k,I.yy,V[1],v,x].concat(L)),typeof z<"u")return z;j&&(g=g.slice(0,-1*j*2),v=v.slice(0,-1*j),x=x.slice(0,-1*j)),g.push(this.productions_[V[1]][0]),v.push(W.$),x.push(W._$),Q=b[g[g.length-2]][g[g.length-1]],g.push(Q);break;case 3:return!0}}return!0},"parse")},h=(function(){var f={EOF:1,parseError:o(function(m,g){if(this.yy.parser)this.yy.parser.parseError(m,g);else throw new Error(m)},"parseError"),setInput:o(function(p,m){return this.yy=m||this.yy||{},this._input=p,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var m=p.match(/(?:\r\n?|\n).*/g);return m?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),p},"input"),unput:o(function(p){var m=p.length,g=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var v=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===y.length?this.yylloc.first_column:0)+y[y.length-g.length].length-g[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(p){this.unput(this.match.slice(p))},"less"),pastInput:o(function(){var p=this.matched.substr(0,this.matched.length-this.match.length);return(p.length>20?"...":"")+p.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var p=this.match;return p.length<20&&(p+=this._input.substr(0,20-p.length)),(p.substr(0,20)+(p.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var p=this.pastInput(),m=new Array(p.length+1).join("-");return p+this.upcomingInput()+` +`+m+"^"},"showPosition"),test_match:o(function(p,m){var g,y,v;if(this.options.backtrack_lexer&&(v={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(v.yylloc.range=this.yylloc.range.slice(0))),y=p[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+p[0].length},this.yytext+=p[0],this.match+=p[0],this.matches=p,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(p[0].length),this.matched+=p[0],g=this.performAction.call(this,this.yy,this,m,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),g)return g;if(this._backtrack){for(var x in v)this[x]=v[x];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var p,m,g,y;this._more||(this.yytext="",this.match="");for(var v=this._currentRules(),x=0;xm[0].length)){if(m=g,y=x,this.options.backtrack_lexer){if(p=this.test_match(g,v[x]),p!==!1)return p;if(this._backtrack){m=!1;continue}else return!1}else if(!this.options.flex)break}return m?(p=this.test_match(m,v[y]),p!==!1?p:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var m=this.next();return m||this.lex()},"lex"),begin:o(function(m){this.conditionStack.push(m)},"begin"),popState:o(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:o(function(m){this.begin(m)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(m,g,y,v){var x=v;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return f})();u.lexer=h;function d(){this.yy={}}return o(d,"Parser"),d.prototype=u,u.Parser=d,new d})();PY.parser=PY;uMe=PY});var ax,OY,qw,Hw,BRt,$Rt,FRt,zRt,GRt,VRt,WRt,dMe,qRt,BY,fMe=F(()=>{"use strict";Xt();Nn();ax="",OY=[],qw=[],Hw=[],BRt=o(function(){OY.length=0,qw.length=0,ax="",Hw.length=0,yr()},"clear"),$Rt=o(function(e){ax=e,OY.push(e)},"addSection"),FRt=o(function(){return OY},"getSections"),zRt=o(function(){let e=dMe(),t=100,r=0;for(;!e&&r{r.people&&e.push(...r.people)}),[...new Set(e)].sort()},"updateActors"),VRt=o(function(e,t){let r=t.substr(1).split(":"),n=0,i=[];r.length===1?(n=Number(r[0]),i=[]):(n=Number(r[0]),i=r[1].split(","));let a=i.map(l=>l.trim()),s={section:ax,type:ax,people:a,task:e,score:n};Hw.push(s)},"addTask"),WRt=o(function(e){let t={section:ax,type:ax,description:e,task:e,classes:[]};qw.push(t)},"addTaskOrg"),dMe=o(function(){let e=o(function(r){return Hw[r].processed},"compileTask"),t=!0;for(let[r,n]of Hw.entries())e(r),t=t&&n.processed;return t},"compileTasks"),qRt=o(function(){return GRt()},"getActors"),BY={getConfig:o(()=>Ae().journey,"getConfig"),clear:BRt,setDiagramTitle:Or,getDiagramTitle:Lr,setAccTitle:kr,getAccTitle:Ar,setAccDescription:Rr,getAccDescription:_r,addSection:$Rt,getSections:FRt,getTasks:zRt,addTask:VRt,addTaskOrg:WRt,getActors:qRt}});var HRt,pMe,mMe=F(()=>{"use strict";X1();HRt=o(e=>`.label { + font-family: ${e.fontFamily}; + color: ${e.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${e.textColor} + } + + .legend { + fill: ${e.textColor}; + font-family: ${e.fontFamily}; + } + + .label text { + fill: #333; + } + .label { + color: ${e.textColor} + } + + .face { + ${e.faceColor?`fill: ${e.faceColor}`:"fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${e.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${e.fillType0?`fill: ${e.fillType0}`:""}; + } + .task-type-1, .section-type-1 { + ${e.fillType0?`fill: ${e.fillType1}`:""}; + } + .task-type-2, .section-type-2 { + ${e.fillType0?`fill: ${e.fillType2}`:""}; + } + .task-type-3, .section-type-3 { + ${e.fillType0?`fill: ${e.fillType3}`:""}; + } + .task-type-4, .section-type-4 { + ${e.fillType0?`fill: ${e.fillType4}`:""}; + } + .task-type-5, .section-type-5 { + ${e.fillType0?`fill: ${e.fillType5}`:""}; + } + .task-type-6, .section-type-6 { + ${e.fillType0?`fill: ${e.fillType6}`:""}; + } + .task-type-7, .section-type-7 { + ${e.fillType0?`fill: ${e.fillType7}`:""}; + } + + .actor-0 { + ${e.actor0?`fill: ${e.actor0}`:""}; + } + .actor-1 { + ${e.actor1?`fill: ${e.actor1}`:""}; + } + .actor-2 { + ${e.actor2?`fill: ${e.actor2}`:""}; + } + .actor-3 { + ${e.actor3?`fill: ${e.actor3}`:""}; + } + .actor-4 { + ${e.actor4?`fill: ${e.actor4}`:""}; + } + .actor-5 { + ${e.actor5?`fill: ${e.actor5}`:""}; + } + ${Eu()} +`,"getStyles"),pMe=HRt});var FY,URt,gMe,yMe,YRt,jRt,$Y,XRt,KRt,vMe,ZRt,sx,xMe=F(()=>{"use strict";$r();Hd();FY=o(function(e,t){return dm(e,t)},"drawRect"),URt=o(function(e,t){let n=e.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=e.append("g");i.append("circle").attr("cx",t.cx-15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",t.cx+15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=ec().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}o(a,"smile");function s(u){let h=ec().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),t.score>3?a(i):t.score<3?s(i):l(i),n},"drawFace"),gMe=o(function(e,t){let r=e.append("circle");return r.attr("cx",t.cx),r.attr("cy",t.cy),r.attr("class","actor-"+t.pos),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("r",t.r),r.class!==void 0&&r.attr("class",r.class),t.title!==void 0&&r.append("title").text(t.title),r},"drawCircle"),yMe=o(function(e,t){return kie(e,t)},"drawText"),YRt=o(function(e,t){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=e.append("polygon");n.attr("points",r(t.x,t.y,50,20,7)),n.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,yMe(e,t)},"drawLabel"),jRt=o(function(e,t,r){let n=e.append("g"),i=Fa();i.x=t.x,i.y=t.y,i.fill=t.fill,i.width=r.width*t.taskCount+r.diagramMarginX*(t.taskCount-1),i.height=r.height,i.class="journey-section section-type-"+t.num,i.rx=3,i.ry=3,FY(n,i),vMe(r)(t.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+t.num},r,t.colour)},"drawSection"),$Y=-1,XRt=o(function(e,t,r,n){let i=t.x+r.width/2,a=e.append("g");$Y++,a.append("line").attr("id",n+"-task"+$Y).attr("x1",i).attr("y1",t.y).attr("x2",i).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),URt(a,{cx:i,cy:300+(5-t.score)*30,score:t.score});let l=Fa();l.x=t.x,l.y=t.y,l.fill=t.fill,l.width=r.width,l.height=r.height,l.class="task task-type-"+t.num,l.rx=3,l.ry=3,FY(a,l);let u=t.x+14;t.people.forEach(h=>{let d=t.actors[h].color,f={cx:u,cy:t.y,r:7,fill:d,stroke:"#000",title:h,pos:t.actors[h].position};gMe(a,f),u+=10}),vMe(r)(t.task,a,l.x,l.y,l.width,l.height,{class:"task"},r,t.colour)},"drawTask"),KRt=o(function(e,t){$E(e,t)},"drawBackgroundRect"),vMe=(function(){function e(i,a,s,l,u,h,d,f){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",f).style("text-anchor","middle").text(i);n(p,d)}o(e,"byText");function t(i,a,s,l,u,h,d,f,p){let{taskFontSize:m,taskFontFamily:g}=f,y=i.split(//gi);for(let v=0;v{let a=dd[i].color,s={cx:20,cy:n,r:7,fill:a,stroke:"#000",pos:dd[i].position};sx.drawCircle(e,s);let l=e.append("text").attr("visibility","hidden").text(i),u=l.node().getBoundingClientRect().width;l.remove();let h=[];if(u<=r)h=[i];else{let d=i.split(" "),f="";l=e.append("text").attr("visibility","hidden"),d.forEach(p=>{let m=f?`${f} ${p}`:p;if(l.text(m),l.node().getBoundingClientRect().width>r){if(f&&h.push(f),f=p,l.text(p),l.node().getBoundingClientRect().width>r){let y="";for(let v of p)y+=v,l.text(y+"-"),l.node().getBoundingClientRect().width>r&&(h.push(y.slice(0,-1)+"-"),y=v);f=y}}else f=m}),f&&h.push(f),l.remove()}h.forEach((d,f)=>{let p={x:40,y:n+7+f*20,fill:"#666",text:d,textMargin:t.boxTextMargin??5},g=sx.drawText(e,p).node().getBoundingClientRect().width;g>zL&&g>t.leftMargin-g&&(zL=g)}),n+=Math.max(20,h.length*20)})}var QRt,dd,zL,Lc,Lp,e_t,Pl,zY,bMe,t_t,GY,TMe=F(()=>{"use strict";$r();xMe();Xt();$n();QRt=o(function(e){Object.keys(e).forEach(function(r){Lc[r]=e[r]})},"setConf"),dd={},zL=0;o(JRt,"drawActorLegend");Lc=Ae().journey,Lp=0,e_t=o(function(e,t,r,n){let i=Ae(),a=i.journey.titleColor,s=i.journey.titleFontSize,l=i.journey.titleFontFamily,u=i.securityLevel,h;u==="sandbox"&&(h=et("#i"+t));let d=u==="sandbox"?et(h.nodes()[0].contentDocument.body):et("body");Pl.init();let f=d.select("#"+t);sx.initGraphics(f,t);let p=n.db.getTasks(),m=n.db.getDiagramTitle(),g=n.db.getActors();for(let k in dd)delete dd[k];let y=0;g.forEach(k=>{dd[k]={color:Lc.actorColours[y%Lc.actorColours.length],position:y},y++}),JRt(f),Lp=Lc.leftMargin+zL,Pl.insert(0,0,Lp,Object.keys(dd).length*50),t_t(f,p,0,t);let v=Pl.getBounds();m&&f.append("text").text(m).attr("x",Lp).attr("font-size",s).attr("font-weight","bold").attr("y",25).attr("fill",a).attr("font-family",l);let x=v.stopy-v.starty+2*Lc.diagramMarginY,b=Lp+v.stopx+2*Lc.diagramMarginX;Wr(f,x,b,Lc.useMaxWidth),f.append("line").attr("x1",Lp).attr("y1",Lc.height*4).attr("x2",b-Lp-4).attr("y2",Lc.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#"+t+"-arrowhead)");let T=m?70:0;f.attr("viewBox",`${v.startx} -25 ${b} ${x+T}`),f.attr("preserveAspectRatio","xMinYMin meet"),f.attr("height",x+T+25)},"draw"),Pl={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:o(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:o(function(e,t,r,n){e[t]===void 0?e[t]=r:e[t]=n(r,e[t])},"updateVal"),updateBounds:o(function(e,t,r,n){let i=Ae().journey,a=this,s=0;function l(u){return o(function(d){s++;let f=a.sequenceItems.length-s+1;a.updateVal(d,"starty",t-f*i.boxMargin,Math.min),a.updateVal(d,"stopy",n+f*i.boxMargin,Math.max),a.updateVal(Pl.data,"startx",e-f*i.boxMargin,Math.min),a.updateVal(Pl.data,"stopx",r+f*i.boxMargin,Math.max),u!=="activation"&&(a.updateVal(d,"startx",e-f*i.boxMargin,Math.min),a.updateVal(d,"stopx",r+f*i.boxMargin,Math.max),a.updateVal(Pl.data,"starty",t-f*i.boxMargin,Math.min),a.updateVal(Pl.data,"stopy",n+f*i.boxMargin,Math.max))},"updateItemBounds")}o(l,"updateFn"),this.sequenceItems.forEach(l())},"updateBounds"),insert:o(function(e,t,r,n){let i=Math.min(e,r),a=Math.max(e,r),s=Math.min(t,n),l=Math.max(t,n);this.updateVal(Pl.data,"startx",i,Math.min),this.updateVal(Pl.data,"starty",s,Math.min),this.updateVal(Pl.data,"stopx",a,Math.max),this.updateVal(Pl.data,"stopy",l,Math.max),this.updateBounds(i,s,a,l)},"insert"),bumpVerticalPos:o(function(e){this.verticalPos=this.verticalPos+e,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:o(function(){return this.verticalPos},"getVerticalPos"),getBounds:o(function(){return this.data},"getBounds")},zY=Lc.sectionFills,bMe=Lc.sectionColours,t_t=o(function(e,t,r,n){let i=Ae().journey,a="",s=i.height*2+i.diagramMarginY,l=r+s,u=0,h="#CCC",d="black",f=0;for(let[p,m]of t.entries()){if(a!==m.section){h=zY[u%zY.length],f=u%zY.length,d=bMe[u%bMe.length];let y=0,v=m.section;for(let b=p;b(dd[v]&&(y[v]=dd[v]),y),{});m.x=p*i.taskMargin+p*i.width+Lp,m.y=l,m.width=i.diagramMarginX,m.height=i.diagramMarginY,m.colour=d,m.fill=h,m.num=f,m.actors=g,sx.drawTask(e,m,i,n),Pl.insert(m.x,m.y,m.x+m.width+i.taskMargin,450)}},"drawTasks"),GY={setConf:QRt,draw:e_t}});var CMe={};ir(CMe,{diagram:()=>r_t});var r_t,wMe=F(()=>{"use strict";hMe();fMe();mMe();TMe();r_t={parser:uMe,db:BY,renderer:GY,styles:pMe,init:o(e=>{GY.setConf(e.journey),BY.clear()},"init")}});var WY,LMe,DMe=F(()=>{"use strict";WY=(function(){var e=o(function(p,m,g,y){for(g=g||{},y=p.length;y--;g[p[y]]=m);return g},"o"),t=[6,11,13,14,15,17,19,20,23,24],r=[1,12],n=[1,13],i=[1,14],a=[1,15],s=[1,16],l=[1,19],u=[1,20],h={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline_header:4,document:5,EOF:6,timeline:7,timeline_lr:8,timeline_td:9,line:10,SPACE:11,statement:12,NEWLINE:13,title:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,period_statement:21,event_statement:22,period:23,event:24,$accept:0,$end:1},terminals_:{2:"error",6:"EOF",7:"timeline",8:"timeline_lr",9:"timeline_td",11:"SPACE",13:"NEWLINE",14:"title",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",23:"period",24:"event"},productions_:[0,[3,3],[4,1],[4,1],[4,1],[5,0],[5,2],[10,2],[10,1],[10,1],[10,1],[12,1],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[21,1],[22,1]],performAction:o(function(m,g,y,v,x,b,T){var k=b.length-1;switch(x){case 1:return b[k-1];case 3:v.setDirection("LR");break;case 4:v.setDirection("TD");break;case 5:this.$=[];break;case 6:b[k-1].push(b[k]),this.$=b[k-1];break;case 7:case 8:this.$=b[k];break;case 9:case 10:this.$=[];break;case 11:v.getCommonDb().setDiagramTitle(b[k].substr(6)),this.$=b[k].substr(6);break;case 12:this.$=b[k].trim(),v.getCommonDb().setAccTitle(this.$);break;case 13:case 14:this.$=b[k].trim(),v.getCommonDb().setAccDescription(this.$);break;case 15:v.addSection(b[k].substr(8)),this.$=b[k].substr(8);break;case 18:v.addTask(b[k],0,""),this.$=b[k];break;case 19:v.addEvent(b[k].substr(2)),this.$=b[k];break}},"anonymous"),table:[{3:1,4:2,7:[1,3],8:[1,4],9:[1,5]},{1:[3]},e(t,[2,5],{5:6}),e(t,[2,2]),e(t,[2,3]),e(t,[2,4]),{6:[1,7],10:8,11:[1,9],12:10,13:[1,11],14:r,15:n,17:i,19:a,20:s,21:17,22:18,23:l,24:u},e(t,[2,10],{1:[2,1]}),e(t,[2,6]),{12:21,14:r,15:n,17:i,19:a,20:s,21:17,22:18,23:l,24:u},e(t,[2,8]),e(t,[2,9]),e(t,[2,11]),{16:[1,22]},{18:[1,23]},e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,7]),e(t,[2,12]),e(t,[2,13])],defaultActions:{},parseError:o(function(m,g){if(g.recoverable)this.trace(m);else{var y=new Error(m);throw y.hash=g,y}},"parseError"),parse:o(function(m){var g=this,y=[0],v=[],x=[null],b=[],T=this.table,k="",C=0,w=0,S=0,R=2,L=1,N=b.slice.call(arguments,1),I=Object.create(this.lexer),_={yy:{}};for(var A in this.yy)Object.prototype.hasOwnProperty.call(this.yy,A)&&(_.yy[A]=this.yy[A]);I.setInput(m,_.yy),_.yy.lexer=I,_.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var M=I.yylloc;b.push(M);var D=I.options&&I.options.ranges;typeof _.yy.parseError=="function"?this.parseError=_.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function P(le){y.length=y.length-2*le,x.length=x.length-le,b.length=b.length-le}o(P,"popStack");function B(){var le;return le=v.pop()||I.lex()||L,typeof le!="number"&&(le instanceof Array&&(v=le,le=v.pop()),le=g.symbols_[le]||le),le}o(B,"lex");for(var O,$,V,G,z,W,H={},j,Q,U,oe;;){if(V=y[y.length-1],this.defaultActions[V]?G=this.defaultActions[V]:((O===null||typeof O>"u")&&(O=B()),G=T[V]&&T[V][O]),typeof G>"u"||!G.length||!G[0]){var te="";oe=[];for(j in T[V])this.terminals_[j]&&j>R&&oe.push("'"+this.terminals_[j]+"'");I.showPosition?te="Parse error on line "+(C+1)+`: +`+I.showPosition()+` +Expecting `+oe.join(", ")+", got '"+(this.terminals_[O]||O)+"'":te="Parse error on line "+(C+1)+": Unexpected "+(O==L?"end of input":"'"+(this.terminals_[O]||O)+"'"),this.parseError(te,{text:I.match,token:this.terminals_[O]||O,line:I.yylineno,loc:M,expected:oe})}if(G[0]instanceof Array&&G.length>1)throw new Error("Parse Error: multiple actions possible at state: "+V+", token: "+O);switch(G[0]){case 1:y.push(O),x.push(I.yytext),b.push(I.yylloc),y.push(G[1]),O=null,$?(O=$,$=null):(w=I.yyleng,k=I.yytext,C=I.yylineno,M=I.yylloc,S>0&&S--);break;case 2:if(Q=this.productions_[G[1]][1],H.$=x[x.length-Q],H._$={first_line:b[b.length-(Q||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(Q||1)].first_column,last_column:b[b.length-1].last_column},D&&(H._$.range=[b[b.length-(Q||1)].range[0],b[b.length-1].range[1]]),W=this.performAction.apply(H,[k,w,C,_.yy,G[1],x,b].concat(N)),typeof W<"u")return W;Q&&(y=y.slice(0,-1*Q*2),x=x.slice(0,-1*Q),b=b.slice(0,-1*Q)),y.push(this.productions_[G[1]][0]),x.push(H.$),b.push(H._$),U=T[y[y.length-2]][y[y.length-1]],y.push(U);break;case 3:return!0}}return!0},"parse")},d=(function(){var p={EOF:1,parseError:o(function(g,y){if(this.yy.parser)this.yy.parser.parseError(g,y);else throw new Error(g)},"parseError"),setInput:o(function(m,g){return this.yy=g||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var g=m.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},"input"),unput:o(function(m){var g=m.length,y=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var v=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),y.length-1&&(this.yylineno-=y.length-1);var x=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:y?(y.length===v.length?this.yylloc.first_column:0)+v[v.length-y.length].length-y[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(m){this.unput(this.match.slice(m))},"less"),pastInput:o(function(){var m=this.matched.substr(0,this.matched.length-this.match.length);return(m.length>20?"...":"")+m.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var m=this.match;return m.length<20&&(m+=this._input.substr(0,20-m.length)),(m.substr(0,20)+(m.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var m=this.pastInput(),g=new Array(m.length+1).join("-");return m+this.upcomingInput()+` +`+g+"^"},"showPosition"),test_match:o(function(m,g){var y,v,x;if(this.options.backtrack_lexer&&(x={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(x.yylloc.range=this.yylloc.range.slice(0))),v=m[0].match(/(?:\r\n?|\n).*/g),v&&(this.yylineno+=v.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:v?v[v.length-1].length-v[v.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+m[0].length},this.yytext+=m[0],this.match+=m[0],this.matches=m,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(m[0].length),this.matched+=m[0],y=this.performAction.call(this,this.yy,this,g,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),y)return y;if(this._backtrack){for(var b in x)this[b]=x[b];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var m,g,y,v;this._more||(this.yytext="",this.match="");for(var x=this._currentRules(),b=0;bg[0].length)){if(g=y,v=b,this.options.backtrack_lexer){if(m=this.test_match(y,x[b]),m!==!1)return m;if(this._backtrack){g=!1;continue}else return!1}else if(!this.options.flex)break}return g?(m=this.test_match(g,x[v]),m!==!1?m:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var g=this.next();return g||this.lex()},"lex"),begin:o(function(g){this.conditionStack.push(g)},"begin"),popState:o(function(){var g=this.conditionStack.length-1;return g>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:o(function(g){this.begin(g)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(g,y,v,x){var b=x;switch(v){case 0:break;case 1:break;case 2:return 13;case 3:break;case 4:break;case 5:return 8;case 6:return 9;case 7:return 7;case 8:return 14;case 9:return this.begin("acc_title"),15;break;case 10:return this.popState(),"acc_title_value";break;case 11:return this.begin("acc_descr"),17;break;case 12:return this.popState(),"acc_descr_value";break;case 13:this.begin("acc_descr_multiline");break;case 14:this.popState();break;case 15:return"acc_descr_multiline_value";case 16:return 20;case 17:return 24;case 18:return 23;case 19:return 6;case 20:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline[ \t]+LR\b)/i,/^(?:timeline[ \t]+TD\b)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[14,15],inclusive:!1},acc_descr:{rules:[12],inclusive:!1},acc_title:{rules:[10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,11,13,16,17,18,19,20],inclusive:!0}}};return p})();h.lexer=d;function f(){this.yy={}}return o(f,"Parser"),f.prototype=h,h.Parser=f,new f})();WY.parser=WY;LMe=WY});var UY={};ir(UY,{addEvent:()=>VMe,addSection:()=>$Me,addTask:()=>GMe,addTaskOrg:()=>WMe,clear:()=>PMe,default:()=>h_t,getCommonDb:()=>NMe,getDirection:()=>BMe,getSections:()=>FMe,getTasks:()=>zMe,setDirection:()=>OMe});var ox,MMe,qY,HY,GL,lx,NMe,PMe,OMe,BMe,$Me,FMe,zMe,GMe,VMe,WMe,IMe,h_t,qMe=F(()=>{"use strict";Nn();ox="",MMe=0,qY="LR",HY=[],GL=[],lx=[],NMe=o(()=>lb,"getCommonDb"),PMe=o(function(){HY.length=0,GL.length=0,ox="",lx.length=0,qY="LR",yr()},"clear"),OMe=o(function(e){qY=e},"setDirection"),BMe=o(function(){return qY},"getDirection"),$Me=o(function(e){ox=e,HY.push(e)},"addSection"),FMe=o(function(){return HY},"getSections"),zMe=o(function(){let e=IMe(),t=100,r=0;for(;!e&&rr.id===MMe-1).events.push(e)},"addEvent"),WMe=o(function(e){let t={section:ox,type:ox,description:e,task:e,classes:[]};GL.push(t)},"addTaskOrg"),IMe=o(function(){let e=o(function(r){return lx[r].processed},"compileTask"),t=!0;for(let[r,n]of lx.entries())e(r),t=t&&n.processed;return t},"compileTasks"),h_t={clear:PMe,getCommonDb:NMe,getDirection:BMe,setDirection:OMe,addSection:$Me,getSections:FMe,getTasks:zMe,addTask:GMe,addTaskOrg:WMe,addEvent:VMe}});function jMe(e,t){e.each(function(){var r=et(this),n=r.text().split(/(\s+|
    )/).reverse(),i,a=[],s=1.1,l=r.attr("y"),u=parseFloat(r.attr("dy")),h=r.text(null).append("tspan").attr("x",0).attr("y",l).attr("dy",u+"em");for(let d=0;dt||i==="
    ")&&(a.pop(),h.text(a.join(" ").trim()),i==="
    "?a=[""]:a=[i],h=r.append("tspan").attr("x",0).attr("y",l).attr("dy",s+"em").text(i))})}var HMe,VL,d_t,f_t,UMe,p_t,m_t,YY,g_t,y_t,v_t,jY,YMe,x_t,b_t,T_t,C_t,fs,XY=F(()=>{"use strict";$r();HMe=0,VL=o(function(e,t){let r=e.append("rect");return r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),r.attr("rx",t.rx),r.attr("ry",t.ry),t.class!==void 0&&r.attr("class",t.class),r},"drawRect"),d_t=o(function(e,t){let n=e.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=e.append("g");i.append("circle").attr("cx",t.cx-15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",t.cx+15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(u){let h=ec().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}o(a,"smile");function s(u){let h=ec().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);u.append("path").attr("class","mouth").attr("d",h).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}o(s,"sad");function l(u){u.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return o(l,"ambivalent"),t.score>3?a(i):t.score<3?s(i):l(i),n},"drawFace"),f_t=o(function(e,t){let r=e.append("circle");return r.attr("cx",t.cx),r.attr("cy",t.cy),r.attr("class","actor-"+t.pos),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("r",t.r),r.class!==void 0&&r.attr("class",r.class),t.title!==void 0&&r.append("title").text(t.title),r},"drawCircle"),UMe=o(function(e,t){let r=t.text.replace(//gi," "),n=e.append("text");n.attr("x",t.x),n.attr("y",t.y),n.attr("class","legend"),n.style("text-anchor",t.anchor),t.class!==void 0&&n.attr("class",t.class);let i=n.append("tspan");return i.attr("x",t.x+t.textMargin*2),i.text(r),n},"drawText"),p_t=o(function(e,t){function r(i,a,s,l,u){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+l-u)+" "+(i+s-u*1.2)+","+(a+l)+" "+i+","+(a+l)}o(r,"genPoints");let n=e.append("polygon");n.attr("points",r(t.x,t.y,50,20,7)),n.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,UMe(e,t)},"drawLabel"),m_t=o(function(e,t,r){let n=e.append("g"),i=jY();i.x=t.x,i.y=t.y,i.fill=t.fill,i.width=r.width,i.height=r.height,i.class="journey-section section-type-"+t.num,i.rx=3,i.ry=3,VL(n,i),YMe(r)(t.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+t.num},r,t.colour)},"drawSection"),YY=-1,g_t=o(function(e,t,r,n){let i=t.x+r.width/2,a=e.append("g");YY++,a.append("line").attr("id",n+"-task"+YY).attr("x1",i).attr("y1",t.y).attr("x2",i).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),d_t(a,{cx:i,cy:300+(5-t.score)*30,score:t.score});let l=jY();l.x=t.x,l.y=t.y,l.fill=t.fill,l.width=r.width,l.height=r.height,l.class="task task-type-"+t.num,l.rx=3,l.ry=3,VL(a,l),YMe(r)(t.task,a,l.x,l.y,l.width,l.height,{class:"task"},r,t.colour)},"drawTask"),y_t=o(function(e,t){VL(e,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,class:"rect"}).lower()},"drawBackgroundRect"),v_t=o(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),jY=o(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),YMe=(function(){function e(i,a,s,l,u,h,d,f){let p=a.append("text").attr("x",s+u/2).attr("y",l+h/2+5).style("font-color",f).style("text-anchor","middle").text(i);n(p,d)}o(e,"byText");function t(i,a,s,l,u,h,d,f,p){let{taskFontSize:m,taskFontFamily:g}=f,y=i.split(//gi);for(let v=0;v0?`M0 ${t.height-l} v${-t.height+2*l} q0,-${s},${s},-${s} h${t.width-2*l} q${s},0,${s},${s} v${t.height-l} H0 Z`:`M0 ${t.height-l} v${-(t.height-l)} h${t.width} v${t.height} H0 Z`;e.append("path").attr("id",n+"-node-"+HMe++).attr("class","node-bkg node-"+t.type).attr("d",u),a?.includes("redux")||e.append("line").attr("class","node-line-"+r).attr("x1",0).attr("y1",t.height).attr("x2",t.width).attr("y2",t.height)},"defaultBkg"),fs={drawRect:VL,drawCircle:f_t,drawSection:m_t,drawText:UMe,drawLabel:p_t,drawTask:g_t,drawBackgroundRect:y_t,getTextObj:v_t,getNoteRect:jY,initGraphics:x_t,drawNode:b_t,getVirtualNodeHeight:T_t}});var w_t,XMe,k_t,KMe,ZMe=F(()=>{"use strict";$r();XY();vt();Xt();$n();w_t=o(function(e,t,r,n){let i=Ae(),{look:a,theme:s,themeVariables:l}=i,{useGradient:u,gradientStart:h,gradientStop:d}=l,f=i.timeline?.leftMargin??50;Z.debug("timeline",n.db);let p=i.securityLevel,m;p==="sandbox"&&(m=et("#i"+t));let y=(p==="sandbox"?et(m.nodes()[0].contentDocument.body):et("body")).select("#"+t);y.append("g");let v=n.db.getTasks(),x=n.db.getCommonDb().getDiagramTitle();Z.debug("task",v),fs.initGraphics(y,t);let b=n.db.getSections();Z.debug("sections",b);let T=0,k=0,C=0,w=0,S=50+f,R=50;w=50;let L=0,N=!0;b.forEach(function(D){let P={number:L,descr:D,section:L,width:150,padding:20,maxHeight:T},B=fs.getVirtualNodeHeight(y,P,i);Z.debug("sectionHeight before draw",B),T=Math.max(T,B+20)});let I=0,_=0;Z.debug("tasks.length",v.length);for(let[D,P]of v.entries()){let B={number:D,descr:P,section:P.section,width:150,padding:20,maxHeight:k},O=fs.getVirtualNodeHeight(y,B,i);Z.debug("taskHeight before draw",O),k=Math.max(k,O+20),I=Math.max(I,P.events.length);let $=0;for(let V of P.events){let G={descr:V,section:P.section,number:P.section,width:150,padding:20,maxHeight:50};$+=fs.getVirtualNodeHeight(y,G,i)}P.events.length>0&&($+=(P.events.length-1)*10),_=Math.max(_,$)}Z.debug("maxSectionHeight before draw",T),Z.debug("maxTaskHeight before draw",k),b&&b.length>0?b.forEach(D=>{let P=v.filter(V=>V.section===D),B={number:L,descr:D,section:L,width:200*Math.max(P.length,1)-50,padding:20,maxHeight:T};Z.debug("sectionNode",B);let O=y.append("g"),$=fs.drawNode(O,B,L,i,t);Z.debug("sectionNode output",$),O.attr("transform",`translate(${S}, ${w})`),R+=T+50,P.length>0&&XMe(y,P,L,S,R,k,i,I,_,T,!1,t),S+=200*Math.max(P.length,1),R=w,L++}):(N=!1,XMe(y,v,L,S,R,k,i,I,_,T,!0,t));let A=y.node().getBBox();if(Z.debug("bounds",A),x&&y.append("text").text(x).attr("x",a==="neo"?A.x*2+f:A.width/2-f).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),C=N?T+k+150:k+100,y.append("g").attr("class","lineWrapper").append("line").attr("x1",f).attr("y1",C).attr("x2",A.width+3*f).attr("y2",C).attr("stroke-width",4).attr("stroke","black").attr("marker-end",`url(#${t}-arrowhead)`),a==="neo"&&u&&s!=="neutral"){let D=y.select("defs"),B=(D.empty()?y.append("defs"):D).append("linearGradient").attr("id",y.attr("id")+"-gradient").attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");B.append("stop").attr("offset","0%").attr("stop-color",h).attr("stop-opacity",1),B.append("stop").attr("offset","100%").attr("stop-color",d).attr("stop-opacity",1)}ul(void 0,y,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),XMe=o(function(e,t,r,n,i,a,s,l,u,h,d,f){for(let p of t){let m={descr:p.task,section:r,number:r,width:150,padding:20,maxHeight:a};Z.debug("taskNode",m);let g=e.append("g").attr("class","taskWrapper"),v=fs.drawNode(g,m,r,s,f).height;if(Z.debug("taskHeight after draw",v),g.attr("transform",`translate(${n}, ${i})`),a=Math.max(a,v),p.events){let x=e.append("g").attr("class","lineWrapper"),b=a;i+=100,b=b+k_t(e,p.events,r,n,i,s,f),i-=100,x.append("line").attr("x1",n+190/2).attr("y1",i+a).attr("x2",n+190/2).attr("y2",i+a+100+u+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end",`url(#${f}-arrowhead)`).attr("stroke-dasharray","5,5")}n=n+200,d&&!s.timeline?.disableMulticolor&&r++}i=i-10},"drawTasks"),k_t=o(function(e,t,r,n,i,a,s){let l=0,u=i;i=i+100;for(let h of t){let d={descr:h,section:r,number:r,width:150,padding:20,maxHeight:50};Z.debug("eventNode",d);let f=e.append("g").attr("class","eventWrapper"),m=fs.drawNode(f,d,r,a,s,!0).height;l=l+m,f.attr("transform",`translate(${n}, ${i})`),i=i+10+m}return i=u,l},"drawEvents"),KMe={setConf:o(()=>{},"setConf"),draw:w_t}});var WL,fd,S_t,KY,E_t,tNe,A_t,QMe,rNe,JMe,nNe,R_t,eNe,__t,iNe,aNe=F(()=>{"use strict";XY();vt();Xt();$n();Ka();Qt();WL=200,fd=5,S_t=WL+fd*2,KY=WL+100,E_t=KY+fd*2,tNe=10,A_t=0,QMe=20,rNe=20,JMe=30,nNe=50,R_t=o(function(e,t,r,n){let i=Ae(),a=i.timeline?.leftMargin??50;Z.debug("timeline",n.db);let s=xn(t);s.append("g");let l=n.db.getTasks(),u=n.db.getCommonDb().getDiagramTitle();Z.debug("task",l),fs.initGraphics(s);let h=n.db.getSections();Z.debug("sections",h);let d=0,f=0,p=50+a,m=50,g=m,y=p,v=S_t+rNe,x=E_t+nNe,b=y+v,T=0,k=h&&h.length>0,C=k?b:p+v,w=Math.max(50,v+x-fd*2);h.forEach(function(D){let P={number:T,descr:D,section:T,width:w,padding:fd,maxHeight:d},B=fs.getVirtualNodeHeight(s,P,i);Z.debug("sectionHeight before draw",B),d=Math.max(d,B)});let S=0;Z.debug("tasks.length",l.length);for(let[D,P]of l.entries()){let B={number:D,descr:P,section:P.section,width:WL,padding:fd,maxHeight:f},O=fs.getVirtualNodeHeight(s,B,i);Z.debug("taskHeight before draw",O),f=Math.max(f,O);let $=0;for(let V of P.events){let G={descr:V,section:P.section,number:P.section,width:KY,padding:fd,maxHeight:50};$+=fs.getVirtualNodeHeight(s,G,i)}P.events.length>0&&($+=(P.events.length-1)*tNe),S=Math.max(S,$)+A_t}Z.debug("maxSectionHeight before draw",d),Z.debug("maxTaskHeight before draw",f);let L=Math.max(f,S)+JMe;k?h.forEach(D=>{let P=l.filter(H=>H.section===D),B={number:T,descr:D,section:T,width:w,padding:fd,maxHeight:d};Z.debug("sectionNode",B);let O=s.append("g"),$=fs.drawNode(O,B,T,i);Z.debug("sectionNode output",$);let V=C-v;O.attr("transform",`translate(${V}, ${m})`);let G=m+$.height+QMe;P.length>0&&eNe(s,P,T,C,G,f,i,L,!1);let z=P.length,W=$.height+QMe+L*Math.max(z,1)-(z>0?JMe*2:0);m+=W,T++}):eNe(s,l,T,C,m,f,i,L,!0);let N=s.node()?.getBBox();if(!N)throw new Error("bbox not found");if(Z.debug("bounds",N),u){if(s.append("text").text(u).attr("x",N.width/2-a).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),N=s.node()?.getBBox(),!N)throw new Error("bbox not found");Z.debug("bounds after title",N)}let[I]=As(i.fontSize),_=(I??16)*2,A=(I??16)*.5+20,M=s.append("g").attr("class","lineWrapper");M.append("line").attr("x1",C).attr("y1",g-_).attr("x2",C).attr("y2",N.y+N.height+A).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),M.lower(),ul(void 0,s,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),eNe=o(function(e,t,r,n,i,a,s,l,u){for(let h of t){let d={descr:h.task,section:r,number:r,width:WL,padding:fd,maxHeight:a};Z.debug("taskNode",d);let f=e.append("g").attr("class","taskWrapper"),p=fs.drawNode(f,d,r,s),m=p.height;Z.debug("taskHeight after draw",m);let g=n-rNe-p.width;if(f.attr("transform",`translate(${g}, ${i})`),a=Math.max(a,m),h.events&&h.events.length>0){let y=i,v=n+nNe;__t(e,h.events,r,n,v,y,s)}i=i+l,u&&!s.timeline?.disableMulticolor&&r++}},"drawTasks"),__t=o(function(e,t,r,n,i,a,s){let l=a;for(let u of t){let h={descr:u,section:r,number:r,width:KY,padding:fd,maxHeight:0};Z.debug("eventNode",h);let d=e.append("g").attr("class","eventWrapper"),p=fs.drawNode(d,h,r,s).height;d.attr("transform",`translate(${i}, ${l})`);let m=e.append("g").attr("class","lineWrapper"),g=l+p/2;m.append("line").attr("x1",n).attr("y1",g).attr("x2",i).attr("y2",g).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5"),l=l+p+tNe}return l-a},"drawEvents"),iNe={setConf:o(()=>{},"setConf"),draw:R_t}});var L_t,D_t,I_t,sNe,oNe=F(()=>{"use strict";zi();ur();L_t=o(e=>{let{theme:t}=_t(),r=t?.includes("dark"),n=t?.includes("color"),i=e.svgId?.replace(/^#/,"")??"",a=i?`url(#${i}-drop-shadow)`:e.dropShadow??"none",s="";for(let l=0;l{let t="";for(let r=0;r{let{theme:t}=_t(),r=t?.includes("redux"),n=t==="neutral",i=e.svgId?.replace(/^#/,"")??"",a="";if(e.useGradient&&i&&e.THEME_COLOR_LIMIT&&!n)for(let s=0;sN_t});var M_t,N_t,cNe=F(()=>{"use strict";DMe();qMe();ZMe();aNe();oNe();M_t={setConf:o(()=>{},"setConf"),draw:o((e,t,r,n)=>(n?.db?.getDirection?.()??"LR")==="TD"?iNe.draw(e,t,r,n):KMe.draw(e,t,r,n),"draw")},N_t={db:UY,renderer:M_t,parser:LMe,styles:sNe}});var ZY,dNe,fNe=F(()=>{"use strict";ZY=(function(){var e=o(function(k,C,w,S){for(w=w||{},S=k.length;S--;w[k[S]]=C);return w},"o"),t=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],d=[1,24],f=[1,25],p=[6,7,11],m=[1,6,13,15,16,19,22],g=[1,33],y=[1,34],v=[1,6,7,11,13,15,16,19,22],x={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:o(function(C,w,S,R,L,N,I){var _=N.length-1;switch(L){case 6:case 7:return R;case 8:R.getLogger().trace("Stop NL ");break;case 9:R.getLogger().trace("Stop EOF ");break;case 11:R.getLogger().trace("Stop NL2 ");break;case 12:R.getLogger().trace("Stop EOF2 ");break;case 15:R.getLogger().info("Node: ",N[_].id),R.addNode(N[_-1].length,N[_].id,N[_].descr,N[_].type);break;case 16:R.getLogger().trace("Icon: ",N[_]),R.decorateNode({icon:N[_]});break;case 17:case 21:R.decorateNode({class:N[_]});break;case 18:R.getLogger().trace("SPACELIST");break;case 19:R.getLogger().trace("Node: ",N[_].id),R.addNode(0,N[_].id,N[_].descr,N[_].type);break;case 20:R.decorateNode({icon:N[_]});break;case 25:R.getLogger().trace("node found ..",N[_-2]),this.$={id:N[_-1],descr:N[_-1],type:R.getType(N[_-2],N[_])};break;case 26:this.$={id:N[_],descr:N[_],type:R.nodeType.DEFAULT};break;case 27:R.getLogger().trace("node found ..",N[_-3]),this.$={id:N[_-3],descr:N[_-1],type:R.getType(N[_-2],N[_])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},e(u,[2,3]),{1:[2,2]},e(u,[2,4]),e(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:r,9:22,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},{6:h,7:d,10:23,11:f},e(p,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:l}),e(p,[2,18]),e(p,[2,19]),e(p,[2,20]),e(p,[2,21]),e(p,[2,23]),e(p,[2,24]),e(p,[2,26],{19:[1,30]}),{20:[1,31]},{6:h,7:d,10:32,11:f},{1:[2,7],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:l},e(m,[2,14],{7:g,11:y}),e(v,[2,8]),e(v,[2,9]),e(v,[2,10]),e(p,[2,15]),e(p,[2,16]),e(p,[2,17]),{20:[1,35]},{21:[1,36]},e(m,[2,13],{7:g,11:y}),e(v,[2,11]),e(v,[2,12]),{21:[1,37]},e(p,[2,25]),e(p,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(C,w){if(w.recoverable)this.trace(C);else{var S=new Error(C);throw S.hash=w,S}},"parseError"),parse:o(function(C){var w=this,S=[0],R=[],L=[null],N=[],I=this.table,_="",A=0,M=0,D=0,P=2,B=1,O=N.slice.call(arguments,1),$=Object.create(this.lexer),V={yy:{}};for(var G in this.yy)Object.prototype.hasOwnProperty.call(this.yy,G)&&(V.yy[G]=this.yy[G]);$.setInput(C,V.yy),V.yy.lexer=$,V.yy.parser=this,typeof $.yylloc>"u"&&($.yylloc={});var z=$.yylloc;N.push(z);var W=$.options&&$.options.ranges;typeof V.yy.parseError=="function"?this.parseError=V.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function H(ue){S.length=S.length-2*ue,L.length=L.length-ue,N.length=N.length-ue}o(H,"popStack");function j(){var ue;return ue=R.pop()||$.lex()||B,typeof ue!="number"&&(ue instanceof Array&&(R=ue,ue=R.pop()),ue=w.symbols_[ue]||ue),ue}o(j,"lex");for(var Q,U,oe,te,le,ie,ae={},Re,be,Pe,Ge;;){if(oe=S[S.length-1],this.defaultActions[oe]?te=this.defaultActions[oe]:((Q===null||typeof Q>"u")&&(Q=j()),te=I[oe]&&I[oe][Q]),typeof te>"u"||!te.length||!te[0]){var Oe="";Ge=[];for(Re in I[oe])this.terminals_[Re]&&Re>P&&Ge.push("'"+this.terminals_[Re]+"'");$.showPosition?Oe="Parse error on line "+(A+1)+`: +`+$.showPosition()+` +Expecting `+Ge.join(", ")+", got '"+(this.terminals_[Q]||Q)+"'":Oe="Parse error on line "+(A+1)+": Unexpected "+(Q==B?"end of input":"'"+(this.terminals_[Q]||Q)+"'"),this.parseError(Oe,{text:$.match,token:this.terminals_[Q]||Q,line:$.yylineno,loc:z,expected:Ge})}if(te[0]instanceof Array&&te.length>1)throw new Error("Parse Error: multiple actions possible at state: "+oe+", token: "+Q);switch(te[0]){case 1:S.push(Q),L.push($.yytext),N.push($.yylloc),S.push(te[1]),Q=null,U?(Q=U,U=null):(M=$.yyleng,_=$.yytext,A=$.yylineno,z=$.yylloc,D>0&&D--);break;case 2:if(be=this.productions_[te[1]][1],ae.$=L[L.length-be],ae._$={first_line:N[N.length-(be||1)].first_line,last_line:N[N.length-1].last_line,first_column:N[N.length-(be||1)].first_column,last_column:N[N.length-1].last_column},W&&(ae._$.range=[N[N.length-(be||1)].range[0],N[N.length-1].range[1]]),ie=this.performAction.apply(ae,[_,M,A,V.yy,te[1],L,N].concat(O)),typeof ie<"u")return ie;be&&(S=S.slice(0,-1*be*2),L=L.slice(0,-1*be),N=N.slice(0,-1*be)),S.push(this.productions_[te[1]][0]),L.push(ae.$),N.push(ae._$),Pe=I[S[S.length-2]][S[S.length-1]],S.push(Pe);break;case 3:return!0}}return!0},"parse")},b=(function(){var k={EOF:1,parseError:o(function(w,S){if(this.yy.parser)this.yy.parser.parseError(w,S);else throw new Error(w)},"parseError"),setInput:o(function(C,w){return this.yy=w||this.yy||{},this._input=C,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var C=this._input[0];this.yytext+=C,this.yyleng++,this.offset++,this.match+=C,this.matched+=C;var w=C.match(/(?:\r\n?|\n).*/g);return w?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),C},"input"),unput:o(function(C){var w=C.length,S=C.split(/(?:\r\n?|\n)/g);this._input=C+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-w),this.offset-=w;var R=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),S.length-1&&(this.yylineno-=S.length-1);var L=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:S?(S.length===R.length?this.yylloc.first_column:0)+R[R.length-S.length].length-S[0].length:this.yylloc.first_column-w},this.options.ranges&&(this.yylloc.range=[L[0],L[0]+this.yyleng-w]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(C){this.unput(this.match.slice(C))},"less"),pastInput:o(function(){var C=this.matched.substr(0,this.matched.length-this.match.length);return(C.length>20?"...":"")+C.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var C=this.match;return C.length<20&&(C+=this._input.substr(0,20-C.length)),(C.substr(0,20)+(C.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var C=this.pastInput(),w=new Array(C.length+1).join("-");return C+this.upcomingInput()+` +`+w+"^"},"showPosition"),test_match:o(function(C,w){var S,R,L;if(this.options.backtrack_lexer&&(L={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(L.yylloc.range=this.yylloc.range.slice(0))),R=C[0].match(/(?:\r\n?|\n).*/g),R&&(this.yylineno+=R.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:R?R[R.length-1].length-R[R.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+C[0].length},this.yytext+=C[0],this.match+=C[0],this.matches=C,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(C[0].length),this.matched+=C[0],S=this.performAction.call(this,this.yy,this,w,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),S)return S;if(this._backtrack){for(var N in L)this[N]=L[N];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var C,w,S,R;this._more||(this.yytext="",this.match="");for(var L=this._currentRules(),N=0;Nw[0].length)){if(w=S,R=N,this.options.backtrack_lexer){if(C=this.test_match(S,L[N]),C!==!1)return C;if(this._backtrack){w=!1;continue}else return!1}else if(!this.options.flex)break}return w?(C=this.test_match(w,L[R]),C!==!1?C:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var w=this.next();return w||this.lex()},"lex"),begin:o(function(w){this.conditionStack.push(w)},"begin"),popState:o(function(){var w=this.conditionStack.length-1;return w>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(w){return w=this.conditionStack.length-1-Math.abs(w||0),w>=0?this.conditionStack[w]:"INITIAL"},"topState"),pushState:o(function(w){this.begin(w)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(w,S,R,L){var N=L;switch(R){case 0:return w.getLogger().trace("Found comment",S.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:w.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return w.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:w.getLogger().trace("end icon"),this.popState();break;case 10:return w.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return w.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return w.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return w.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:w.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return w.getLogger().trace("description:",S.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),w.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),w.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),w.getLogger().trace("node end ...",S.yytext),"NODE_DEND";break;case 30:return this.popState(),w.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),w.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),w.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),w.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),w.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return w.getLogger().trace("Long description:",S.yytext),20;break;case 36:return w.getLogger().trace("Long description:",S.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return k})();x.lexer=b;function T(){this.yy={}}return o(T,"Parser"),T.prototype=x,x.Parser=T,new T})();ZY.parser=ZY;dNe=ZY});function pNe(e,t=0){return(Qa[e[t+0]]+Qa[e[t+1]]+Qa[e[t+2]]+Qa[e[t+3]]+"-"+Qa[e[t+4]]+Qa[e[t+5]]+"-"+Qa[e[t+6]]+Qa[e[t+7]]+"-"+Qa[e[t+8]]+Qa[e[t+9]]+"-"+Qa[e[t+10]]+Qa[e[t+11]]+Qa[e[t+12]]+Qa[e[t+13]]+Qa[e[t+14]]+Qa[e[t+15]]).toLowerCase()}var Qa,mNe=F(()=>{"use strict";Qa=[];for(let e=0;e<256;++e)Qa.push((e+256).toString(16).slice(1));o(pNe,"unsafeStringify")});function QY(){return crypto.getRandomValues($_t)}var $_t,gNe=F(()=>{"use strict";$_t=new Uint8Array(16);o(QY,"rng")});function F_t(e,t,r){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():z_t(e,t,r)}function z_t(e,t,r){e=e||{};let n=e.random??e.rng?.()??QY();if(n.length<16)throw new Error("Random bytes length must be >= 16");if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){if(r=r||0,r<0||r+16>t.length)throw new RangeError(`UUID byte range ${r}:${r+15} is out of buffer bounds`);for(let i=0;i<16;++i)t[r+i]=n[i];return t}return pNe(n)}var JY,yNe=F(()=>{"use strict";gNe();mNe();o(F_t,"v4");o(z_t,"_v4");JY=F_t});var vNe=F(()=>{"use strict";yNe()});var xNe,bNe=F(()=>{"use strict";Ls();Qt();xNe=12});var pd,qL,TNe=F(()=>{"use strict";Xt();vNe();Vr();vt();Wi();ur();bNe();pd={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},qL=class{constructor(){this.nodes=[];this.count=0;this.elements={};this.getLogger=this.getLogger.bind(this),this.nodeType=pd,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{o(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(t){for(let r=this.nodes.length-1;r>=0;r--)if(this.nodes[r].level0?this.nodes[0]:null}addNode(t,r,n,i){Z.info("addNode",t,r,n,i);let a=!1;this.nodes.length===0?(this.baseLevel=t,t=0,a=!0):this.baseLevel!==void 0&&(t=t-this.baseLevel,a=!1);let s=Ae(),l=s.mindmap?.padding??cr.mindmap.padding;switch(i){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:l*=2;break}let u={id:this.count++,nodeId:mr(r,s),level:t,descr:mr(n,s),type:i,children:[],width:s.mindmap?.maxNodeWidth??cr.mindmap.maxNodeWidth,padding:l,isRoot:a},h=this.getParent(t);if(h)h.children.push(u),this.nodes.push(u);else if(a)this.nodes.push(u);else throw new Error(`There can be only one root. No parent could be found for ("${u.descr}")`)}getType(t,r){switch(Z.debug("In get type",t,r),t){case"[":return this.nodeType.RECT;case"(":return r===")"?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(t,r){this.elements[t]=r}getElementById(t){return this.elements[t]}decorateNode(t){if(!t)return;let r=Ae(),n=this.nodes[this.nodes.length-1];t.icon&&(n.icon=mr(t.icon,r)),t.class&&(n.class=mr(t.class,r))}type2Str(t){switch(t){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(t,r){if(t.level===0?t.section=void 0:t.section=r,t.children)for(let[n,i]of t.children.entries()){let a=t.level===0?n%(xNe-1):r;this.assignSections(i,a)}}flattenNodes(t,r){let n=Ae(),i=["mindmap-node"];t.isRoot===!0?i.push("section-root","section--1"):t.section!==void 0&&i.push(`section-${t.section}`),t.class&&i.push(t.class);let a=i.join(" "),s=o(u=>{let d=(n.theme?.toLowerCase()??"").includes("redux");switch(u){case pd.CIRCLE:return"mindmapCircle";case pd.RECT:return"rect";case pd.ROUNDED_RECT:return"rounded";case pd.CLOUD:return"cloud";case pd.BANG:return"bang";case pd.HEXAGON:return"hexagon";case pd.DEFAULT:return d?"rounded":"defaultMindmapNode";case pd.NO_BORDER:default:return"rect"}},"getShapeFromType"),l={id:t.id.toString(),domId:"node_"+t.id.toString(),label:t.descr,labelType:"markdown",isGroup:!1,shape:s(t.type),width:t.width,height:t.height??0,padding:t.padding,cssClasses:a,cssStyles:[],look:n.look,icon:t.icon,x:t.x,y:t.y,level:t.level,nodeId:t.nodeId,type:t.type,section:t.section};if(r.push(l),t.children)for(let u of t.children)this.flattenNodes(u,r)}generateEdges(t,r){if(!t.children)return;let n=Ae();for(let i of t.children){let a="edge";i.section!==void 0&&(a+=` section-edge-${i.section}`);let s=t.level+1;a+=` edge-depth-${s}`;let l={id:`edge_${t.id}_${i.id}`,start:t.id.toString(),end:i.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:n.look,classes:a,depth:t.level,section:i.section};r.push(l),this.generateEdges(i,r)}}getData(){let t=this.getMindmap(),r=Ae(),i=Lk().layout!==void 0,a=r;if(i||(a.layout="cose-bilkent"),!t)return{nodes:[],edges:[],config:a};Z.debug("getData: mindmapRoot",t,r),this.assignSections(t);let s=[],l=[];this.flattenNodes(t,s),this.generateEdges(t,l),Z.debug(`getData: processed ${s.length} nodes and ${l.length} edges`);let u=new Map;for(let h of s)u.set(h.id,{shape:h.shape,width:h.width,height:h.height,padding:h.padding});return{nodes:s,edges:l,config:a,rootNode:t,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(u),type:"mindmap",diagramId:"mindmap-"+JY()}}getLogger(){return Z}}});var G_t,CNe,wNe=F(()=>{"use strict";vt();Am();Qf();Jf();Wi();ur();G_t=o(async(e,t,r,n)=>{Z.debug(`Rendering mindmap diagram +`+e);let i=n.db,a=i.getData(),s=pl(t,a.config.securityLevel);if(a.type=n.type,a.layoutAlgorithm=Su(a.config.layout,{fallback:"cose-bilkent"}),a.diagramId=t,!i.getMindmap())return;a.nodes.forEach(p=>{p.shape==="rounded"?(p.radius=15,p.taper=15,p.stroke="none",p.width=0,p.padding=15):p.shape==="circle"?p.padding=10:p.shape==="rect"?(p.width=0,p.padding=10):p.shape==="hexagon"&&(p.width=0,p.height=0)}),await Al(a,s);let{themeVariables:u}=_t(),{useGradient:h,gradientStart:d,gradientStop:f}=u;if(h&&d&&f){let p=s.attr("id"),m=s.append("defs").append("linearGradient").attr("id",`${p}-gradient`).attr("gradientUnits","objectBoundingBox").attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");m.append("stop").attr("offset","0%").attr("stop-color",d).attr("stop-opacity",1),m.append("stop").attr("offset","100%").attr("stop-color",f).attr("stop-opacity",1)}vo(s,a.config.mindmap?.padding??cr.mindmap.padding,"mindmapDiagram",a.config.mindmap?.useMaxWidth??cr.mindmap.useMaxWidth)},"draw"),CNe={draw:G_t}});var V_t,W_t,q_t,kNe,SNe=F(()=>{"use strict";zi();V_t=o(e=>{let{theme:t,look:r}=e,n="";for(let i=0;i{let n="";for(let i=0;i{let{theme:t}=e,r=e.svgId,n=e.dropShadow?e.dropShadow.replace("url(#drop-shadow)",`url(${r}-drop-shadow)`):"none";return` + .edge { + stroke-width: 3; + } + ${V_t(e)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${e.git0}; + } + .section-root text { + fill: ${e.gitBranchLabel0}; + } + .section-root span { + color: ${t?.includes("redux")?e.nodeBorder:e.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .mindmap-node-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } + [data-look="neo"].mindmap-node { + filter: ${n}; + } + [data-look="neo"].mindmap-node.section-root rect, [data-look="neo"].mindmap-node.section-root path, [data-look="neo"].mindmap-node.section-root circle, [data-look="neo"].mindmap-node.section-root polygon { + fill: ${t?.includes("redux")?e.mainBkg:e.git0}; + } + [data-look="neo"].mindmap-node.section-root .text-inner-tspan { + fill: ${t?.includes("redux")?e.nodeBorder:e["cScaleLabel"+(t==="neutral"?1:0)]}; + } + ${e.useGradient&&r&&e.mainBkg?W_t(e.THEME_COLOR_LIMIT,r,e.mainBkg):""} +`},"getStyles"),kNe=q_t});var ENe={};ir(ENe,{diagram:()=>H_t});var H_t,ANe=F(()=>{"use strict";fNe();TNe();wNe();SNe();H_t={get db(){return new qL},renderer:CNe,parser:dNe,styles:kNe}});var ej,LNe,DNe=F(()=>{"use strict";ej=(function(){var e=o(function(S,R,L,N){for(L=L||{},N=S.length;N--;L[S[N]]=R);return L},"o"),t=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],l=[1,19],u=[6,7,8],h=[1,26],d=[1,24],f=[1,25],p=[6,7,11],m=[1,31],g=[6,7,11,24],y=[1,6,13,16,17,20,23],v=[1,35],x=[1,36],b=[1,6,7,11,13,16,17,20,23],T=[1,38],k={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:o(function(R,L,N,I,_,A,M){var D=A.length-1;switch(_){case 6:case 7:return I;case 8:I.getLogger().trace("Stop NL ");break;case 9:I.getLogger().trace("Stop EOF ");break;case 11:I.getLogger().trace("Stop NL2 ");break;case 12:I.getLogger().trace("Stop EOF2 ");break;case 15:I.getLogger().info("Node: ",A[D-1].id),I.addNode(A[D-2].length,A[D-1].id,A[D-1].descr,A[D-1].type,A[D]);break;case 16:I.getLogger().info("Node: ",A[D].id),I.addNode(A[D-1].length,A[D].id,A[D].descr,A[D].type);break;case 17:I.getLogger().trace("Icon: ",A[D]),I.decorateNode({icon:A[D]});break;case 18:case 23:I.decorateNode({class:A[D]});break;case 19:I.getLogger().trace("SPACELIST");break;case 20:I.getLogger().trace("Node: ",A[D-1].id),I.addNode(0,A[D-1].id,A[D-1].descr,A[D-1].type,A[D]);break;case 21:I.getLogger().trace("Node: ",A[D].id),I.addNode(0,A[D].id,A[D].descr,A[D].type);break;case 22:I.decorateNode({icon:A[D]});break;case 27:I.getLogger().trace("node found ..",A[D-2]),this.$={id:A[D-1],descr:A[D-1],type:I.getType(A[D-2],A[D])};break;case 28:this.$={id:A[D],descr:A[D],type:0};break;case 29:I.getLogger().trace("node found ..",A[D-3]),this.$={id:A[D-3],descr:A[D-1],type:I.getType(A[D-2],A[D])};break;case 30:this.$=A[D-1]+A[D];break;case 31:this.$=A[D];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},e(u,[2,3]),{1:[2,2]},e(u,[2,4]),e(u,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:r,9:22,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},{6:h,7:d,10:23,11:f},e(p,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:l}),e(p,[2,19]),e(p,[2,21],{15:30,24:m}),e(p,[2,22]),e(p,[2,23]),e(g,[2,25]),e(g,[2,26]),e(g,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:d,10:34,11:f},{1:[2,7],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:l},e(y,[2,14],{7:v,11:x}),e(b,[2,8]),e(b,[2,9]),e(b,[2,10]),e(p,[2,16],{15:37,24:m}),e(p,[2,17]),e(p,[2,18]),e(p,[2,20],{24:T}),e(g,[2,31]),{21:[1,39]},{22:[1,40]},e(y,[2,13],{7:v,11:x}),e(b,[2,11]),e(b,[2,12]),e(p,[2,15],{24:T}),e(g,[2,30]),{22:[1,41]},e(g,[2,27]),e(g,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(R,L){if(L.recoverable)this.trace(R);else{var N=new Error(R);throw N.hash=L,N}},"parseError"),parse:o(function(R){var L=this,N=[0],I=[],_=[null],A=[],M=this.table,D="",P=0,B=0,O=0,$=2,V=1,G=A.slice.call(arguments,1),z=Object.create(this.lexer),W={yy:{}};for(var H in this.yy)Object.prototype.hasOwnProperty.call(this.yy,H)&&(W.yy[H]=this.yy[H]);z.setInput(R,W.yy),W.yy.lexer=z,W.yy.parser=this,typeof z.yylloc>"u"&&(z.yylloc={});var j=z.yylloc;A.push(j);var Q=z.options&&z.options.ranges;typeof W.yy.parseError=="function"?this.parseError=W.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function U(ce){N.length=N.length-2*ce,_.length=_.length-ce,A.length=A.length-ce}o(U,"popStack");function oe(){var ce;return ce=I.pop()||z.lex()||V,typeof ce!="number"&&(ce instanceof Array&&(I=ce,ce=I.pop()),ce=L.symbols_[ce]||ce),ce}o(oe,"lex");for(var te,le,ie,ae,Re,be,Pe={},Ge,Oe,ue,ye;;){if(ie=N[N.length-1],this.defaultActions[ie]?ae=this.defaultActions[ie]:((te===null||typeof te>"u")&&(te=oe()),ae=M[ie]&&M[ie][te]),typeof ae>"u"||!ae.length||!ae[0]){var ke="";ye=[];for(Ge in M[ie])this.terminals_[Ge]&&Ge>$&&ye.push("'"+this.terminals_[Ge]+"'");z.showPosition?ke="Parse error on line "+(P+1)+`: +`+z.showPosition()+` +Expecting `+ye.join(", ")+", got '"+(this.terminals_[te]||te)+"'":ke="Parse error on line "+(P+1)+": Unexpected "+(te==V?"end of input":"'"+(this.terminals_[te]||te)+"'"),this.parseError(ke,{text:z.match,token:this.terminals_[te]||te,line:z.yylineno,loc:j,expected:ye})}if(ae[0]instanceof Array&&ae.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ie+", token: "+te);switch(ae[0]){case 1:N.push(te),_.push(z.yytext),A.push(z.yylloc),N.push(ae[1]),te=null,le?(te=le,le=null):(B=z.yyleng,D=z.yytext,P=z.yylineno,j=z.yylloc,O>0&&O--);break;case 2:if(Oe=this.productions_[ae[1]][1],Pe.$=_[_.length-Oe],Pe._$={first_line:A[A.length-(Oe||1)].first_line,last_line:A[A.length-1].last_line,first_column:A[A.length-(Oe||1)].first_column,last_column:A[A.length-1].last_column},Q&&(Pe._$.range=[A[A.length-(Oe||1)].range[0],A[A.length-1].range[1]]),be=this.performAction.apply(Pe,[D,B,P,W.yy,ae[1],_,A].concat(G)),typeof be<"u")return be;Oe&&(N=N.slice(0,-1*Oe*2),_=_.slice(0,-1*Oe),A=A.slice(0,-1*Oe)),N.push(this.productions_[ae[1]][0]),_.push(Pe.$),A.push(Pe._$),ue=M[N[N.length-2]][N[N.length-1]],N.push(ue);break;case 3:return!0}}return!0},"parse")},C=(function(){var S={EOF:1,parseError:o(function(L,N){if(this.yy.parser)this.yy.parser.parseError(L,N);else throw new Error(L)},"parseError"),setInput:o(function(R,L){return this.yy=L||this.yy||{},this._input=R,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var R=this._input[0];this.yytext+=R,this.yyleng++,this.offset++,this.match+=R,this.matched+=R;var L=R.match(/(?:\r\n?|\n).*/g);return L?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),R},"input"),unput:o(function(R){var L=R.length,N=R.split(/(?:\r\n?|\n)/g);this._input=R+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-L),this.offset-=L;var I=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),N.length-1&&(this.yylineno-=N.length-1);var _=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:N?(N.length===I.length?this.yylloc.first_column:0)+I[I.length-N.length].length-N[0].length:this.yylloc.first_column-L},this.options.ranges&&(this.yylloc.range=[_[0],_[0]+this.yyleng-L]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(R){this.unput(this.match.slice(R))},"less"),pastInput:o(function(){var R=this.matched.substr(0,this.matched.length-this.match.length);return(R.length>20?"...":"")+R.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var R=this.match;return R.length<20&&(R+=this._input.substr(0,20-R.length)),(R.substr(0,20)+(R.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var R=this.pastInput(),L=new Array(R.length+1).join("-");return R+this.upcomingInput()+` +`+L+"^"},"showPosition"),test_match:o(function(R,L){var N,I,_;if(this.options.backtrack_lexer&&(_={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(_.yylloc.range=this.yylloc.range.slice(0))),I=R[0].match(/(?:\r\n?|\n).*/g),I&&(this.yylineno+=I.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:I?I[I.length-1].length-I[I.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+R[0].length},this.yytext+=R[0],this.match+=R[0],this.matches=R,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(R[0].length),this.matched+=R[0],N=this.performAction.call(this,this.yy,this,L,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),N)return N;if(this._backtrack){for(var A in _)this[A]=_[A];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var R,L,N,I;this._more||(this.yytext="",this.match="");for(var _=this._currentRules(),A=0;A<_.length;A++)if(N=this._input.match(this.rules[_[A]]),N&&(!L||N[0].length>L[0].length)){if(L=N,I=A,this.options.backtrack_lexer){if(R=this.test_match(N,_[A]),R!==!1)return R;if(this._backtrack){L=!1;continue}else return!1}else if(!this.options.flex)break}return L?(R=this.test_match(L,_[I]),R!==!1?R:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var L=this.next();return L||this.lex()},"lex"),begin:o(function(L){this.conditionStack.push(L)},"begin"),popState:o(function(){var L=this.conditionStack.length-1;return L>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(L){return L=this.conditionStack.length-1-Math.abs(L||0),L>=0?this.conditionStack[L]:"INITIAL"},"topState"),pushState:o(function(L){this.begin(L)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(L,N,I,_){var A=_;switch(I){case 0:return this.pushState("shapeData"),N.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let M=/\n\s*/g;return N.yytext=N.yytext.replace(M,"
    "),24;break;case 4:return 24;case 5:this.popState();break;case 6:return L.getLogger().trace("Found comment",N.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:L.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return L.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:L.getLogger().trace("end icon"),this.popState();break;case 16:return L.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return L.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return L.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return L.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:L.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return L.getLogger().trace("description:",N.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),L.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),L.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),L.getLogger().trace("node end ...",N.yytext),"NODE_DEND";break;case 36:return this.popState(),L.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),L.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),L.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),L.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),L.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return L.getLogger().trace("Long description:",N.yytext),21;break;case 42:return L.getLogger().trace("Long description:",N.yytext),21;break}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};return S})();k.lexer=C;function w(){this.yy={}}return o(w,"Parser"),w.prototype=k,k.Parser=w,new w})();ej.parser=ej;LNe=ej});var Ol,rj,tj,nj,X_t,K_t,INe,Z_t,Q_t,pa,J_t,eLt,tLt,rLt,nLt,iLt,aLt,MNe,NNe=F(()=>{"use strict";Xt();Vr();vt();Wi();A2();Ol=[],rj=[],tj=0,nj={},X_t=o(()=>{Ol=[],rj=[],tj=0,nj={}},"clear"),K_t=o(e=>{if(Ol.length===0)return null;let t=Ol[0].level,r=null;for(let n=Ol.length-1;n>=0;n--)if(Ol[n].level===t&&!r&&(r=Ol[n]),Ol[n].levell.parentId===i.id);for(let l of s){let u={id:l.id,parentId:i.id,label:mr(l.label??"",n),labelType:"markdown",isGroup:!1,ticket:l?.ticket,priority:l?.priority,assigned:l?.assigned,icon:l?.icon,shape:"kanbanItem",level:l.level,rx:5,ry:5,cssStyles:["text-align: left"]};t.push(u)}}return{nodes:t,edges:e,other:{},config:Ae()}},"getData"),Q_t=o((e,t,r,n,i)=>{let a=Ae(),s=a.mindmap?.padding??cr.mindmap.padding;switch(n){case pa.ROUNDED_RECT:case pa.RECT:case pa.HEXAGON:s*=2}let l={id:mr(t,a)||"kbn"+tj++,level:e,label:mr(r,a),width:a.mindmap?.maxNodeWidth??cr.mindmap.maxNodeWidth,padding:s,isGroup:!1};if(i!==void 0){let h;i.includes(` +`)?h=i+` +`:h=`{ +`+i+` +}`;let d=Qd(h,{schema:Zd});if(d.shape&&(d.shape!==d.shape.toLowerCase()||d.shape.includes("_")))throw new Error(`No such shape: ${d.shape}. Shape names should be lowercase.`);d?.shape&&d.shape==="kanbanItem"&&(l.shape=d?.shape),d?.label&&(l.label=d?.label),d?.icon&&(l.icon=d?.icon.toString()),d?.assigned&&(l.assigned=d?.assigned.toString()),d?.ticket&&(l.ticket=d?.ticket.toString()),d?.priority&&(l.priority=d?.priority)}let u=K_t(e);u?l.parentId=u.id||"kbn"+tj++:rj.push(l),Ol.push(l)},"addNode"),pa={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},J_t=o((e,t)=>{switch(Z.debug("In get type",e,t),e){case"[":return pa.RECT;case"(":return t===")"?pa.ROUNDED_RECT:pa.CLOUD;case"((":return pa.CIRCLE;case")":return pa.CLOUD;case"))":return pa.BANG;case"{{":return pa.HEXAGON;default:return pa.DEFAULT}},"getType"),eLt=o((e,t)=>{nj[e]=t},"setElementForId"),tLt=o(e=>{if(!e)return;let t=Ae(),r=Ol[Ol.length-1];e.icon&&(r.icon=mr(e.icon,t)),e.class&&(r.cssClasses=mr(e.class,t))},"decorateNode"),rLt=o(e=>{switch(e){case pa.DEFAULT:return"no-border";case pa.RECT:return"rect";case pa.ROUNDED_RECT:return"rounded-rect";case pa.CIRCLE:return"circle";case pa.CLOUD:return"cloud";case pa.BANG:return"bang";case pa.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),nLt=o(()=>Z,"getLogger"),iLt=o(e=>nj[e],"getElementById"),aLt={clear:X_t,addNode:Q_t,getSections:INe,getData:Z_t,nodeType:pa,getType:J_t,setElementForId:eLt,decorateNode:tLt,type2Str:rLt,getLogger:nLt,getElementById:iLt},MNe=aLt});var sLt,PNe,ONe=F(()=>{"use strict";Xt();vt();Ka();$n();Wi();Wy();Lm();sLt=o(async(e,t,r,n)=>{Z.debug(`Rendering kanban diagram +`+e);let a=n.db.getData(),s=Ae();s.htmlLabels=!1;let l=xn(t);for(let v of a.nodes)v.domId=`${t}-${v.id}`;let u=l.append("g");u.attr("class","sections");let h=l.append("g");h.attr("class","items");let d=a.nodes.filter(v=>v.isGroup),f=0,p=10,m=[],g=25;for(let v of d){let x=s?.kanban?.sectionWidth||200;f=f+1,v.x=x*f+(f-1)*p/2,v.width=x,v.y=0,v.height=x*3,v.rx=5,v.ry=5,v.cssClasses=v.cssClasses+" section-"+f;let b=await rf(u,v);g=Math.max(g,b?.labelBBox?.height),m.push(b)}let y=0;for(let v of d){let x=m[y];y=y+1;let b=s?.kanban?.sectionWidth||200,T=-b*3/2+g,k=T,C=a.nodes.filter(R=>R.parentId===v.id);for(let R of C){if(R.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");R.x=v.x,R.width=b-1.5*p;let N=(await nf(h,R,{config:s})).node().getBBox();R.y=k+N.height/2,await _m(R),k=R.y+N.height/2+p/2}let w=x.cluster.select("rect"),S=Math.max(k-T+3*p,50)+(g-25);w.attr("height",S)}ul(void 0,l,s.mindmap?.padding??cr.kanban.padding,s.mindmap?.useMaxWidth??cr.kanban.useMaxWidth)},"draw"),PNe={draw:sLt}});var oLt,lLt,BNe,$Ne=F(()=>{"use strict";zi();X1();oLt=o(e=>{let t="";for(let n=0;ne.darkMode?Je(n,i):Qe(n,i),"adjuster");for(let n=0;n` + .edge { + stroke-width: 3; + } + ${oLt(e)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${e.git0}; + } + .section-root text { + fill: ${e.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .cluster-label, .label { + color: ${e.textColor}; + fill: ${e.textColor}; + } + .kanban-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } + ${Eu()} +`,"getStyles"),BNe=lLt});var FNe={};ir(FNe,{diagram:()=>cLt});var cLt,zNe=F(()=>{"use strict";DNe();NNe();ONe();$Ne();cLt={db:MNe,renderer:PNe,parser:LNe,styles:BNe}});var ij,Uw,WNe=F(()=>{"use strict";ij=(function(){var e=o(function(l,u,h,d){for(h=h||{},d=l.length;d--;h[l[d]]=u);return h},"o"),t=[1,9],r=[1,10],n=[1,5,10,12],i={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:o(function(u,h,d,f,p,m,g){var y=m.length-1;switch(p){case 7:let v=f.findOrCreateNode(m[y-4].trim().replaceAll('""','"')),x=f.findOrCreateNode(m[y-2].trim().replaceAll('""','"')),b=parseFloat(m[y].trim());f.addLink(v,x,b);break;case 8:case 9:case 11:this.$=m[y];break;case 10:this.$=m[y-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:t,20:r},{1:[2,6],7:11,10:[1,12]},e(r,[2,4],{9:13,5:[1,14]}),{12:[1,15]},e(n,[2,8]),e(n,[2,9]),{19:[1,16]},e(n,[2,11]),{1:[2,1]},{1:[2,5]},e(r,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:t,20:r},{15:18,16:7,17:8,18:t,20:r},{18:[1,19]},e(r,[2,3]),{12:[1,20]},e(n,[2,10]),{15:21,16:7,17:8,18:t,20:r},e([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:o(function(u,h){if(h.recoverable)this.trace(u);else{var d=new Error(u);throw d.hash=h,d}},"parseError"),parse:o(function(u){var h=this,d=[0],f=[],p=[null],m=[],g=this.table,y="",v=0,x=0,b=0,T=2,k=1,C=m.slice.call(arguments,1),w=Object.create(this.lexer),S={yy:{}};for(var R in this.yy)Object.prototype.hasOwnProperty.call(this.yy,R)&&(S.yy[R]=this.yy[R]);w.setInput(u,S.yy),S.yy.lexer=w,S.yy.parser=this,typeof w.yylloc>"u"&&(w.yylloc={});var L=w.yylloc;m.push(L);var N=w.options&&w.options.ranges;typeof S.yy.parseError=="function"?this.parseError=S.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function I(j){d.length=d.length-2*j,p.length=p.length-j,m.length=m.length-j}o(I,"popStack");function _(){var j;return j=f.pop()||w.lex()||k,typeof j!="number"&&(j instanceof Array&&(f=j,j=f.pop()),j=h.symbols_[j]||j),j}o(_,"lex");for(var A,M,D,P,B,O,$={},V,G,z,W;;){if(D=d[d.length-1],this.defaultActions[D]?P=this.defaultActions[D]:((A===null||typeof A>"u")&&(A=_()),P=g[D]&&g[D][A]),typeof P>"u"||!P.length||!P[0]){var H="";W=[];for(V in g[D])this.terminals_[V]&&V>T&&W.push("'"+this.terminals_[V]+"'");w.showPosition?H="Parse error on line "+(v+1)+`: +`+w.showPosition()+` +Expecting `+W.join(", ")+", got '"+(this.terminals_[A]||A)+"'":H="Parse error on line "+(v+1)+": Unexpected "+(A==k?"end of input":"'"+(this.terminals_[A]||A)+"'"),this.parseError(H,{text:w.match,token:this.terminals_[A]||A,line:w.yylineno,loc:L,expected:W})}if(P[0]instanceof Array&&P.length>1)throw new Error("Parse Error: multiple actions possible at state: "+D+", token: "+A);switch(P[0]){case 1:d.push(A),p.push(w.yytext),m.push(w.yylloc),d.push(P[1]),A=null,M?(A=M,M=null):(x=w.yyleng,y=w.yytext,v=w.yylineno,L=w.yylloc,b>0&&b--);break;case 2:if(G=this.productions_[P[1]][1],$.$=p[p.length-G],$._$={first_line:m[m.length-(G||1)].first_line,last_line:m[m.length-1].last_line,first_column:m[m.length-(G||1)].first_column,last_column:m[m.length-1].last_column},N&&($._$.range=[m[m.length-(G||1)].range[0],m[m.length-1].range[1]]),O=this.performAction.apply($,[y,x,v,S.yy,P[1],p,m].concat(C)),typeof O<"u")return O;G&&(d=d.slice(0,-1*G*2),p=p.slice(0,-1*G),m=m.slice(0,-1*G)),d.push(this.productions_[P[1]][0]),p.push($.$),m.push($._$),z=g[d[d.length-2]][d[d.length-1]],d.push(z);break;case 3:return!0}}return!0},"parse")},a=(function(){var l={EOF:1,parseError:o(function(h,d){if(this.yy.parser)this.yy.parser.parseError(h,d);else throw new Error(h)},"parseError"),setInput:o(function(u,h){return this.yy=h||this.yy||{},this._input=u,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var h=u.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},"input"),unput:o(function(u){var h=u.length,d=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;var f=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),d.length-1&&(this.yylineno-=d.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:d?(d.length===f.length?this.yylloc.first_column:0)+f[f.length-d.length].length-d[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(u){this.unput(this.match.slice(u))},"less"),pastInput:o(function(){var u=this.matched.substr(0,this.matched.length-this.match.length);return(u.length>20?"...":"")+u.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var u=this.match;return u.length<20&&(u+=this._input.substr(0,20-u.length)),(u.substr(0,20)+(u.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var u=this.pastInput(),h=new Array(u.length+1).join("-");return u+this.upcomingInput()+` +`+h+"^"},"showPosition"),test_match:o(function(u,h){var d,f,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),f=u[0].match(/(?:\r\n?|\n).*/g),f&&(this.yylineno+=f.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:f?f[f.length-1].length-f[f.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(u[0].length),this.matched+=u[0],d=this.performAction.call(this,this.yy,this,h,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),d)return d;if(this._backtrack){for(var m in p)this[m]=p[m];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var u,h,d,f;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),m=0;mh[0].length)){if(h=d,f=m,this.options.backtrack_lexer){if(u=this.test_match(d,p[m]),u!==!1)return u;if(this._backtrack){h=!1;continue}else return!1}else if(!this.options.flex)break}return h?(u=this.test_match(h,p[f]),u!==!1?u:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var h=this.next();return h||this.lex()},"lex"),begin:o(function(h){this.conditionStack.push(h)},"begin"),popState:o(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:o(function(h){this.begin(h)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(h,d,f,p){var m=p;switch(f){case 0:return this.pushState("csv"),4;break;case 1:return this.pushState("csv"),4;break;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;break;case 6:return 20;case 7:return this.popState("escaped_text"),18;break;case 8:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}};return l})();i.lexer=a;function s(){this.yy={}}return o(s,"Parser"),s.prototype=i,i.Parser=s,new s})();ij.parser=ij;Uw=ij});var UL,YL,HL,fLt,aj,pLt,sj,mLt,gLt,yLt,vLt,qNe,HNe=F(()=>{"use strict";Xt();Vr();Nn();UL=[],YL=[],HL=new Map,fLt=o(()=>{UL=[],YL=[],HL=new Map,yr()},"clear"),aj=class{constructor(t,r,n=0){this.source=t;this.target=r;this.value=n}static{o(this,"SankeyLink")}},pLt=o((e,t,r)=>{UL.push(new aj(e,t,r))},"addLink"),sj=class{constructor(t){this.ID=t}static{o(this,"SankeyNode")}},mLt=o(e=>{e=xt.sanitizeText(e,Ae());let t=HL.get(e);return t===void 0&&(t=new sj(e),HL.set(e,t),YL.push(t)),t},"findOrCreateNode"),gLt=o(()=>YL,"getNodes"),yLt=o(()=>UL,"getLinks"),vLt=o(()=>({nodes:YL.map(e=>({id:e.ID})),links:UL.map(e=>({source:e.source.ID,target:e.target.ID,value:e.value}))}),"getGraph"),qNe={nodesMap:HL,getConfig:o(()=>Ae().sankey,"getConfig"),getNodes:gLt,getLinks:yLt,getGraph:vLt,addLink:pLt,findOrCreateNode:mLt,getAccTitle:Ar,setAccTitle:kr,getAccDescription:_r,setAccDescription:Rr,getDiagramTitle:Lr,setDiagramTitle:Or,clear:fLt}});function Yw(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r=i)&&(r=i)}return r}var UNe=F(()=>{"use strict";o(Yw,"max")});function cx(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var YNe=F(()=>{"use strict";o(cx,"min")});function ux(e,t){let r=0;if(t===void 0)for(let n of e)(n=+n)&&(r+=n);else{let n=-1;for(let i of e)(i=+t(i,++n,e))&&(r+=i)}return r}var jNe=F(()=>{"use strict";o(ux,"sum")});var oj=F(()=>{"use strict";UNe();YNe();jNe()});function xLt(e){return e.target.depth}function lj(e){return e.depth}function cj(e,t){return t-1-e.height}function jw(e,t){return e.sourceLinks.length?e.depth:t-1}function uj(e){return e.targetLinks.length?e.depth:e.sourceLinks.length?cx(e.sourceLinks,xLt)-1:0}var hj=F(()=>{"use strict";oj();o(xLt,"targetDepth");o(lj,"left");o(cj,"right");o(jw,"justify");o(uj,"center")});function hx(e){return function(){return e}}var XNe=F(()=>{"use strict";o(hx,"constant")});function KNe(e,t){return jL(e.source,t.source)||e.index-t.index}function ZNe(e,t){return jL(e.target,t.target)||e.index-t.index}function jL(e,t){return e.y0-t.y0}function dj(e){return e.value}function bLt(e){return e.index}function TLt(e){return e.nodes}function CLt(e){return e.links}function QNe(e,t){let r=e.get(t);if(!r)throw new Error("missing: "+t);return r}function JNe({nodes:e}){for(let t of e){let r=t.y0,n=r;for(let i of t.sourceLinks)i.y0=r+i.width/2,r+=i.width;for(let i of t.targetLinks)i.y1=n+i.width/2,n+=i.width}}function XL(){let e=0,t=0,r=1,n=1,i=24,a=8,s,l=bLt,u=jw,h,d,f=TLt,p=CLt,m=6;function g(){let D={nodes:f.apply(null,arguments),links:p.apply(null,arguments)};return y(D),v(D),x(D),b(D),C(D),JNe(D),D}o(g,"sankey"),g.update=function(D){return JNe(D),D},g.nodeId=function(D){return arguments.length?(l=typeof D=="function"?D:hx(D),g):l},g.nodeAlign=function(D){return arguments.length?(u=typeof D=="function"?D:hx(D),g):u},g.nodeSort=function(D){return arguments.length?(h=D,g):h},g.nodeWidth=function(D){return arguments.length?(i=+D,g):i},g.nodePadding=function(D){return arguments.length?(a=s=+D,g):a},g.nodes=function(D){return arguments.length?(f=typeof D=="function"?D:hx(D),g):f},g.links=function(D){return arguments.length?(p=typeof D=="function"?D:hx(D),g):p},g.linkSort=function(D){return arguments.length?(d=D,g):d},g.size=function(D){return arguments.length?(e=t=0,r=+D[0],n=+D[1],g):[r-e,n-t]},g.extent=function(D){return arguments.length?(e=+D[0][0],r=+D[1][0],t=+D[0][1],n=+D[1][1],g):[[e,t],[r,n]]},g.iterations=function(D){return arguments.length?(m=+D,g):m};function y({nodes:D,links:P}){for(let[O,$]of D.entries())$.index=O,$.sourceLinks=[],$.targetLinks=[];let B=new Map(D.map((O,$)=>[l(O,$,D),O]));for(let[O,$]of P.entries()){$.index=O;let{source:V,target:G}=$;typeof V!="object"&&(V=$.source=QNe(B,V)),typeof G!="object"&&(G=$.target=QNe(B,G)),V.sourceLinks.push($),G.targetLinks.push($)}if(d!=null)for(let{sourceLinks:O,targetLinks:$}of D)O.sort(d),$.sort(d)}o(y,"computeNodeLinks");function v({nodes:D}){for(let P of D)P.value=P.fixedValue===void 0?Math.max(ux(P.sourceLinks,dj),ux(P.targetLinks,dj)):P.fixedValue}o(v,"computeNodeValues");function x({nodes:D}){let P=D.length,B=new Set(D),O=new Set,$=0;for(;B.size;){for(let V of B){V.depth=$;for(let{target:G}of V.sourceLinks)O.add(G)}if(++$>P)throw new Error("circular link");B=O,O=new Set}}o(x,"computeNodeDepths");function b({nodes:D}){let P=D.length,B=new Set(D),O=new Set,$=0;for(;B.size;){for(let V of B){V.height=$;for(let{source:G}of V.targetLinks)O.add(G)}if(++$>P)throw new Error("circular link");B=O,O=new Set}}o(b,"computeNodeHeights");function T({nodes:D}){let P=Yw(D,$=>$.depth)+1,B=(r-e-i)/(P-1),O=new Array(P);for(let $ of D){let V=Math.max(0,Math.min(P-1,Math.floor(u.call(null,$,P))));$.layer=V,$.x0=e+V*B,$.x1=$.x0+i,O[V]?O[V].push($):O[V]=[$]}if(h)for(let $ of O)$.sort(h);return O}o(T,"computeNodeLayers");function k(D){let P=cx(D,B=>(n-t-(B.length-1)*s)/ux(B,dj));for(let B of D){let O=t;for(let $ of B){$.y0=O,$.y1=O+$.value*P,O=$.y1+s;for(let V of $.sourceLinks)V.width=V.value*P}O=(n-O+s)/(B.length+1);for(let $=0;$B.length)-1)),k(P);for(let B=0;B0))continue;let H=(z/W-G.y0)*P;G.y0+=H,G.y1+=H,I(G)}h===void 0&&V.sort(jL),R(V,B)}}o(w,"relaxLeftToRight");function S(D,P,B){for(let O=D.length,$=O-2;$>=0;--$){let V=D[$];for(let G of V){let z=0,W=0;for(let{target:j,value:Q}of G.sourceLinks){let U=Q*(j.layer-G.layer);z+=M(G,j)*U,W+=U}if(!(W>0))continue;let H=(z/W-G.y0)*P;G.y0+=H,G.y1+=H,I(G)}h===void 0&&V.sort(jL),R(V,B)}}o(S,"relaxRightToLeft");function R(D,P){let B=D.length>>1,O=D[B];N(D,O.y0-s,B-1,P),L(D,O.y1+s,B+1,P),N(D,n,D.length-1,P),L(D,t,0,P)}o(R,"resolveCollisions");function L(D,P,B,O){for(;B1e-6&&($.y0+=V,$.y1+=V),P=$.y1+s}}o(L,"resolveCollisionsTopToBottom");function N(D,P,B,O){for(;B>=0;--B){let $=D[B],V=($.y1-P)*O;V>1e-6&&($.y0-=V,$.y1-=V),P=$.y0-s}}o(N,"resolveCollisionsBottomToTop");function I({sourceLinks:D,targetLinks:P}){if(d===void 0){for(let{source:{sourceLinks:B}}of P)B.sort(ZNe);for(let{target:{targetLinks:B}}of D)B.sort(KNe)}}o(I,"reorderNodeLinks");function _(D){if(d===void 0)for(let{sourceLinks:P,targetLinks:B}of D)P.sort(ZNe),B.sort(KNe)}o(_,"reorderLinks");function A(D,P){let B=D.y0-(D.sourceLinks.length-1)*s/2;for(let{target:O,width:$}of D.sourceLinks){if(O===P)break;B+=$+s}for(let{source:O,width:$}of P.targetLinks){if(O===D)break;B-=$}return B}o(A,"targetTop");function M(D,P){let B=P.y0-(P.targetLinks.length-1)*s/2;for(let{source:O,width:$}of P.targetLinks){if(O===D)break;B+=$+s}for(let{target:O,width:$}of D.sourceLinks){if(O===P)break;B-=$}return B}return o(M,"sourceTop"),g}var ePe=F(()=>{"use strict";oj();hj();XNe();o(KNe,"ascendingSourceBreadth");o(ZNe,"ascendingTargetBreadth");o(jL,"ascendingBreadth");o(dj,"value");o(bLt,"defaultId");o(TLt,"defaultNodes");o(CLt,"defaultLinks");o(QNe,"find");o(JNe,"computeLinkBreadths");o(XL,"Sankey")});function mj(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function tPe(){return new mj}var fj,pj,L0,wLt,gj,rPe=F(()=>{"use strict";fj=Math.PI,pj=2*fj,L0=1e-6,wLt=pj-L0;o(mj,"Path");o(tPe,"path");mj.prototype=tPe.prototype={constructor:mj,moveTo:o(function(e,t){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)},"moveTo"),closePath:o(function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},"closePath"),lineTo:o(function(e,t){this._+="L"+(this._x1=+e)+","+(this._y1=+t)},"lineTo"),quadraticCurveTo:o(function(e,t,r,n){this._+="Q"+ +e+","+ +t+","+(this._x1=+r)+","+(this._y1=+n)},"quadraticCurveTo"),bezierCurveTo:o(function(e,t,r,n,i,a){this._+="C"+ +e+","+ +t+","+ +r+","+ +n+","+(this._x1=+i)+","+(this._y1=+a)},"bezierCurveTo"),arcTo:o(function(e,t,r,n,i){e=+e,t=+t,r=+r,n=+n,i=+i;var a=this._x1,s=this._y1,l=r-e,u=n-t,h=a-e,d=s-t,f=h*h+d*d;if(i<0)throw new Error("negative radius: "+i);if(this._x1===null)this._+="M"+(this._x1=e)+","+(this._y1=t);else if(f>L0)if(!(Math.abs(d*l-u*h)>L0)||!i)this._+="L"+(this._x1=e)+","+(this._y1=t);else{var p=r-a,m=n-s,g=l*l+u*u,y=p*p+m*m,v=Math.sqrt(g),x=Math.sqrt(f),b=i*Math.tan((fj-Math.acos((g+f-y)/(2*v*x)))/2),T=b/x,k=b/v;Math.abs(T-1)>L0&&(this._+="L"+(e+T*h)+","+(t+T*d)),this._+="A"+i+","+i+",0,0,"+ +(d*p>h*m)+","+(this._x1=e+k*l)+","+(this._y1=t+k*u)}},"arcTo"),arc:o(function(e,t,r,n,i,a){e=+e,t=+t,r=+r,a=!!a;var s=r*Math.cos(n),l=r*Math.sin(n),u=e+s,h=t+l,d=1^a,f=a?n-i:i-n;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+u+","+h:(Math.abs(this._x1-u)>L0||Math.abs(this._y1-h)>L0)&&(this._+="L"+u+","+h),r&&(f<0&&(f=f%pj+pj),f>wLt?this._+="A"+r+","+r+",0,1,"+d+","+(e-s)+","+(t-l)+"A"+r+","+r+",0,1,"+d+","+(this._x1=u)+","+(this._y1=h):f>L0&&(this._+="A"+r+","+r+",0,"+ +(f>=fj)+","+d+","+(this._x1=e+r*Math.cos(i))+","+(this._y1=t+r*Math.sin(i))))},"arc"),rect:o(function(e,t,r,n){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},"rect"),toString:o(function(){return this._},"toString")};gj=tPe});var nPe=F(()=>{"use strict";rPe()});function KL(e){return o(function(){return e},"constant")}var iPe=F(()=>{"use strict";o(KL,"default")});function aPe(e){return e[0]}function sPe(e){return e[1]}var oPe=F(()=>{"use strict";o(aPe,"x");o(sPe,"y")});var lPe,cPe=F(()=>{"use strict";lPe=Array.prototype.slice});function kLt(e){return e.source}function SLt(e){return e.target}function ELt(e){var t=kLt,r=SLt,n=aPe,i=sPe,a=null;function s(){var l,u=lPe.call(arguments),h=t.apply(this,u),d=r.apply(this,u);if(a||(a=l=gj()),e(a,+n.apply(this,(u[0]=h,u)),+i.apply(this,u),+n.apply(this,(u[0]=d,u)),+i.apply(this,u)),l)return a=null,l+""||null}return o(s,"link"),s.source=function(l){return arguments.length?(t=l,s):t},s.target=function(l){return arguments.length?(r=l,s):r},s.x=function(l){return arguments.length?(n=typeof l=="function"?l:KL(+l),s):n},s.y=function(l){return arguments.length?(i=typeof l=="function"?l:KL(+l),s):i},s.context=function(l){return arguments.length?(a=l??null,s):a},s}function ALt(e,t,r,n,i){e.moveTo(t,r),e.bezierCurveTo(t=(t+n)/2,r,t,i,n,i)}function yj(){return ELt(ALt)}var uPe=F(()=>{"use strict";nPe();cPe();iPe();oPe();o(kLt,"linkSource");o(SLt,"linkTarget");o(ELt,"link");o(ALt,"curveHorizontal");o(yj,"linkHorizontal")});var hPe=F(()=>{"use strict";uPe()});function RLt(e){return[e.source.x1,e.y0]}function _Lt(e){return[e.target.x0,e.y1]}function ZL(){return yj().source(RLt).target(_Lt)}var dPe=F(()=>{"use strict";hPe();o(RLt,"horizontalSource");o(_Lt,"horizontalTarget");o(ZL,"default")});var fPe=F(()=>{"use strict";ePe();hj();dPe()});var Xw,pPe=F(()=>{"use strict";Xw=class e{static{o(this,"Uid")}static{this.count=0}static next(t){return new e(t+ ++e.count)}constructor(t){this.id=t,this.href=`#${t}`}toString(){return"url("+this.href+")"}}});var LLt,DLt,ILt,mPe,gPe=F(()=>{"use strict";Xt();$r();fPe();$n();pPe();LLt={left:lj,right:cj,center:uj,justify:jw},DLt=o(e=>{let t=0,r=0;for(let n of e){let i=n.value??0;i>t&&(t=i,r=n.layer??0)}return r},"findCentralNodeLayer"),ILt=o(function(e,t,r,n){let{securityLevel:i,sankey:a}=Ae(),s=bS.sankey,l;i==="sandbox"&&(l=et("#i"+t));let u=i==="sandbox"?et(l.nodes()[0].contentDocument.body):et("body"),h=i==="sandbox"?u.select(`[id="${t}"]`):et(`[id="${t}"]`),d=a?.width??s.width,f=a?.height??s.width,p=a?.useMaxWidth??s.useMaxWidth,m=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,y=a?.suffix??s.suffix,v=a?.showValues??s.showValues,x=a?.nodeWidth??s.nodeWidth??10,b=a?.nodePadding??s.nodePadding??12,T=a?.labelStyle??s.labelStyle??"legacy",k=a?.nodeColors??{},C=n.db.getGraph(),w=LLt[m];XL().nodeId(O=>O.id).nodeWidth(x).nodePadding(b+(v?15:0)).nodeAlign(w).extent([[0,0],[d,f]])(C);let R=DLt(C.nodes),L=Oo(LN),N=o(O=>k[O]??L(O),"getNodeColor");h.append("g").attr("class","nodes").selectAll(".node").data(C.nodes).join("g").attr("class","node").attr("id",O=>(O.uid=Xw.next("node-")).id).attr("transform",function(O){return"translate("+O.x0+","+O.y0+")"}).attr("x",O=>O.x0).attr("y",O=>O.y0).append("rect").attr("height",O=>O.y1-O.y0).attr("width",O=>O.x1-O.x0).attr("fill",O=>N(O.id));let I=o(({id:O,value:$})=>v?`${O} +${g}${Math.round($*100)/100}${y}`:O,"getText"),_=o(O=>T==="outlined"?(O.layer??0)A.selectAll(O?`.${O}`:"text").data(C.nodes).join("text").attr("class",O??null).attr("x",$=>_($).x).attr("y",$=>($.y1+$.y0)/2).attr("dy",`${v?"0":"0.35"}em`).attr("text-anchor",$=>_($).anchor).text(I),"appendLabel");T==="outlined"?(M("sankey-label-bg"),M("sankey-label-fg")):M();let D=h.append("g").attr("class","links").attr("fill","none").attr("stroke-opacity",.5).selectAll(".link").data(C.links).join("g").attr("class","link").style("mix-blend-mode","multiply"),P=a?.linkColor??"gradient";if(P==="gradient"){let O=D.append("linearGradient").attr("id",$=>($.uid=Xw.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",$=>$.source.x1).attr("x2",$=>$.target.x0);O.append("stop").attr("offset","0%").attr("stop-color",$=>N($.source.id)),O.append("stop").attr("offset","100%").attr("stop-color",$=>N($.target.id))}let B;switch(P){case"gradient":B=o(O=>O.uid,"coloring");break;case"source":B=o(O=>N(O.source.id),"coloring");break;case"target":B=o(O=>N(O.target.id),"coloring");break;default:B=P}D.append("path").attr("d",ZL()).attr("stroke",B).attr("stroke-width",O=>Math.max(1,O.width)),ul(void 0,h,0,p)},"draw"),mPe={draw:ILt}});var yPe,vPe=F(()=>{"use strict";yPe=o(e=>e.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` +`).trim(),"prepareTextForParsing")});var MLt,xPe,bPe=F(()=>{"use strict";MLt=o(e=>`.label { + font-family: ${e.fontFamily}; + } + + .node-labels { + font-family: ${e.fontFamily}; + } + + /* Outlined label style - background stroke for better readability */ + .sankey-label-bg { + stroke: ${e.mainBkg||e.background||"#fff"}; + stroke-width: 4px; + stroke-linejoin: round; + paint-order: stroke; + } + + /* Foreground label text */ + .sankey-label-fg { + fill: ${e.textColor}; + } + + /* Node styling */ + .node rect { + shape-rendering: crispEdges; + } + + /* Link styling */ + .link { + fill: none; + stroke-opacity: 0.5; + mix-blend-mode: multiply; + } +`,"getStyles"),xPe=MLt});var TPe={};ir(TPe,{diagram:()=>PLt});var NLt,PLt,CPe=F(()=>{"use strict";WNe();HNe();gPe();vPe();bPe();NLt=Uw.parse.bind(Uw);Uw.parse=e=>NLt(yPe(e));PLt={styles:xPe,parser:Uw,db:qNe,renderer:mPe}});var FLt,dx,vj=F(()=>{"use strict";ur();Wi();Qt();Nn();FLt=cr.packet,dx=class{constructor(){this.packet=[];this.setAccTitle=kr;this.getAccTitle=Ar;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getAccDescription=_r;this.setAccDescription=Rr}static{o(this,"PacketDB")}getConfig(){let t=qr({...FLt,..._t().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){yr(),this.packet=[]}}});var zLt,GLt,VLt,xj,SPe=F(()=>{"use strict";Xa();vt();Hs();vj();zLt=1e4,GLt=o((e,t)=>{Gn(e,t);let r=-1,n=[],i=1,{bitsPerRow:a}=t.getConfig();for(let{start:s,end:l,bits:u,label:h}of e.blocks){if(s!==void 0&&l!==void 0&&l{if(e.start===void 0)throw new Error("start should have been set during first phase");if(e.end===void 0)throw new Error("end should have been set during first phase");if(e.start>e.end)throw new Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*r)return[e,void 0];let n=t*r-1,i=t*r;return[{start:e.start,end:n,label:e.label,bits:n-e.start},{start:i,end:e.end,label:e.label,bits:e.end-i}]},"getNextFittingBlock"),xj={parser:{yy:void 0},parse:o(async e=>{let t=await Si("packet",e),r=xj.parser?.yy;if(!(r instanceof dx))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");Z.debug(t),GLt(t,r)},"parse")}});var WLt,qLt,EPe,APe=F(()=>{"use strict";Ka();$n();WLt=o((e,t,r,n)=>{let i=n.db,a=i.getConfig(),{rowHeight:s,paddingY:l,bitWidth:u,bitsPerRow:h}=a,d=i.getPacket(),f=i.getDiagramTitle(),p=s+l,m=p*(d.length+1)-(f?0:s),g=u*h+2,y=xn(t);y.attr("viewBox",`0 0 ${g} ${m}`),Wr(y,m,g,a.useMaxWidth);for(let[v,x]of d.entries())qLt(y,x,v,a);y.append("text").text(f).attr("x",g/2).attr("y",m-p/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),qLt=o((e,t,r,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:s,bitsPerRow:l,showBits:u})=>{let h=e.append("g"),d=r*(n+a)+a;for(let f of t){let p=f.start%l*s+1,m=(f.end-f.start+1)*s-i;if(h.append("rect").attr("x",p).attr("y",d).attr("width",m).attr("height",n).attr("class","packetBlock"),h.append("text").attr("x",p+m/2).attr("y",d+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(f.label),!u)continue;let g=f.end===f.start,y=d-2;h.append("text").attr("x",p+(g?m/2:0)).attr("y",y).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",g?"middle":"start").text(f.start),g||h.append("text").attr("x",p+m).attr("y",y).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(f.end)}},"drawWord"),EPe={draw:WLt}});var HLt,RPe,_Pe=F(()=>{"use strict";Qt();HLt={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},RPe=o(({packet:e}={})=>{let t=qr(HLt,e);return` + .packetByte { + font-size: ${t.byteFontSize}; + } + .packetByte.start { + fill: ${t.startByteColor}; + } + .packetByte.end { + fill: ${t.endByteColor}; + } + .packetLabel { + fill: ${t.labelColor}; + font-size: ${t.labelFontSize}; + } + .packetTitle { + fill: ${t.titleColor}; + font-size: ${t.titleFontSize}; + } + .packetBlock { + stroke: ${t.blockStrokeColor}; + stroke-width: ${t.blockStrokeWidth}; + fill: ${t.blockFillColor}; + } + `},"styles")});var LPe={};ir(LPe,{diagram:()=>ULt});var ULt,DPe=F(()=>{"use strict";vj();SPe();APe();_Pe();ULt={parser:xj,get db(){return new dx},renderer:EPe,styles:RPe}});var fx,NPe,D0,XLt,KLt,PPe,ZLt,QLt,JLt,eDt,tDt,rDt,nDt,I0,bj=F(()=>{"use strict";ur();Wi();Qt();Nn();fx={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},NPe={axes:[],curves:[],options:fx},D0=structuredClone(NPe),XLt=cr.radar,KLt=o(()=>qr({...XLt,..._t().radar}),"getConfig"),PPe=o(()=>D0.axes,"getAxes"),ZLt=o(()=>D0.curves,"getCurves"),QLt=o(()=>D0.options,"getOptions"),JLt=o(e=>{D0.axes=e.map(t=>({name:t.name,label:t.label??t.name}))},"setAxes"),eDt=o(e=>{D0.curves=e.map(t=>({name:t.name,label:t.label??t.name,entries:tDt(t.entries)}))},"setCurves"),tDt=o(e=>{if(e[0].axis==null)return e.map(r=>r.value);let t=PPe();if(t.length===0)throw new Error("Axes must be populated before curves for reference entries");return t.map(r=>{let n=e.find(i=>i.axis?.$refText===r.name);if(n===void 0)throw new Error("Missing entry for axis "+r.label);return n.value})},"computeCurveEntries"),rDt=o(e=>{let t=e.reduce((r,n)=>(r[n.name]=n,r),{});D0.options={showLegend:t.showLegend?.value??fx.showLegend,ticks:t.ticks?.value??fx.ticks,max:t.max?.value??fx.max,min:t.min?.value??fx.min,graticule:t.graticule?.value??fx.graticule}},"setOptions"),nDt=o(()=>{yr(),D0=structuredClone(NPe)},"clear"),I0={getAxes:PPe,getCurves:ZLt,getOptions:QLt,setAxes:JLt,setCurves:eDt,setOptions:rDt,getConfig:KLt,clear:nDt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr}});var iDt,OPe,BPe=F(()=>{"use strict";Xa();vt();Hs();bj();iDt=o(e=>{Gn(e,I0);let{axes:t,curves:r,options:n}=e;I0.setAxes(t),I0.setCurves(r),I0.setOptions(n)},"populate"),OPe={parse:o(async e=>{let t=await Si("radar",e);Z.debug(t),iDt(t)},"parse")}});function cDt(e,t,r,n,i,a,s){let l=t.length,u=Math.min(s.width,s.height)/2;r.forEach((h,d)=>{if(h.entries.length!==l)return;let f=h.entries.map((p,m)=>{let g=2*Math.PI*m/l-Math.PI/2,y=uDt(p,n,i,u),v=y*Math.cos(g),x=y*Math.sin(g);return{x:v,y:x}});a==="circle"?e.append("path").attr("d",hDt(f,s.curveTension)).attr("class",`radarCurve-${d}`):a==="polygon"&&e.append("polygon").attr("points",f.map(p=>`${p.x},${p.y}`).join(" ")).attr("class",`radarCurve-${d}`)})}function uDt(e,t,r,n){let i=Math.min(Math.max(e,t),r);return n*(i-t)/(r-t)}function hDt(e,t){let r=e.length,n=`M${e[0].x},${e[0].y}`;for(let i=0;i{let h=e.append("g").attr("transform",`translate(${i}, ${a+u*s})`);h.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${u}`),h.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(l.label)})}var aDt,sDt,oDt,lDt,$Pe,FPe=F(()=>{"use strict";Ka();$n();aDt=o((e,t,r,n)=>{let i=n.db,a=i.getAxes(),s=i.getCurves(),l=i.getOptions(),u=i.getConfig(),h=i.getDiagramTitle(),d=xn(t),f=sDt(d,u),p=l.max??Math.max(...s.map(y=>Math.max(...y.entries))),m=l.min,g=Math.min(u.width,u.height)/2;oDt(f,a,g,l.ticks,l.graticule),lDt(f,a,g,u),cDt(f,a,s,m,p,l.graticule,u),dDt(f,s,l.showLegend,u),f.append("text").attr("class","radarTitle").text(h).attr("x",0).attr("y",-u.height/2-u.marginTop)},"draw"),sDt=o((e,t)=>{let r=t.width+t.marginLeft+t.marginRight,n=t.height+t.marginTop+t.marginBottom,i={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return Wr(e,n,r,t.useMaxWidth??!0),e.attr("viewBox",`0 0 ${r} ${n}`).attr("overflow","visible"),e.append("g").attr("transform",`translate(${i.x}, ${i.y})`)},"drawFrame"),oDt=o((e,t,r,n,i)=>{if(i==="circle")for(let a=0;a{let f=2*d*Math.PI/a-Math.PI/2,p=l*Math.cos(f),m=l*Math.sin(f);return`${p},${m}`}).join(" ");e.append("polygon").attr("points",u).attr("class","radarGraticule")}}},"drawGraticule"),lDt=o((e,t,r,n)=>{let i=t.length;for(let a=0;a.01?"start":u<-.01?"end":"middle",f=h>.01?"hanging":h<-.01?"auto":"central",p=4;e.append("text").text(s).attr("x",r*n.axisLabelFactor*u+p*u).attr("y",r*n.axisLabelFactor*h+p*h).attr("text-anchor",d).attr("dominant-baseline",f).attr("class","radarAxisLabel")}},"drawAxes");o(cDt,"drawCurves");o(uDt,"relativeRadius");o(hDt,"closedRoundCurve");o(dDt,"drawLegend");$Pe={draw:aDt}});var fDt,pDt,zPe,GPe=F(()=>{"use strict";Qt();Pc();ur();fDt=o((e,t)=>{let r="";for(let n=0;n{let t=ma(),r=_t(),n=qr(t,r.themeVariables),i=qr(n.radar,e);return{themeVariables:n,radarOptions:i}},"buildRadarStyleOptions"),zPe=o(({radar:e}={})=>{let{themeVariables:t,radarOptions:r}=pDt(e);return` + .radarTitle { + font-size: ${t.fontSize}; + color: ${t.titleColor}; + dominant-baseline: hanging; + text-anchor: middle; + } + .radarAxisLine { + stroke: ${r.axisColor}; + stroke-width: ${r.axisStrokeWidth}; + } + .radarAxisLabel { + font-size: ${r.axisLabelFontSize}px; + color: ${r.axisColor}; + } + .radarGraticule { + fill: ${r.graticuleColor}; + fill-opacity: ${r.graticuleOpacity}; + stroke: ${r.graticuleColor}; + stroke-width: ${r.graticuleStrokeWidth}; + } + .radarLegendText { + text-anchor: start; + font-size: ${r.legendFontSize}px; + dominant-baseline: hanging; + } + ${fDt(t,r)} + `},"styles")});var VPe={};ir(VPe,{diagram:()=>mDt});var mDt,WPe=F(()=>{"use strict";bj();BPe();FPe();GPe();mDt={parser:OPe,db:I0,renderer:$Pe,styles:zPe}});var Tj,UPe,YPe=F(()=>{"use strict";Tj=(function(){var e=o(function(T,k,C,w){for(C=C||{},w=T.length;w--;C[T[w]]=k);return C},"o"),t=[1,15],r=[1,7],n=[1,13],i=[1,14],a=[1,19],s=[1,16],l=[1,17],u=[1,18],h=[8,30],d=[8,10,21,28,29,30,31,39,43,46],f=[1,23],p=[1,24],m=[8,10,15,16,21,28,29,30,31,39,43,46],g=[8,10,15,16,21,27,28,29,30,31,39,43,46],y=[1,49],v={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:o(function(k,C,w,S,R,L,N){var I=L.length-1;switch(R){case 4:S.getLogger().debug("Rule: separator (NL) ");break;case 5:S.getLogger().debug("Rule: separator (Space) ");break;case 6:S.getLogger().debug("Rule: separator (EOF) ");break;case 7:S.getLogger().debug("Rule: hierarchy: ",L[I-1]),S.setHierarchy(L[I-1]);break;case 8:S.getLogger().debug("Stop NL ");break;case 9:S.getLogger().debug("Stop EOF ");break;case 10:S.getLogger().debug("Stop NL2 ");break;case 11:S.getLogger().debug("Stop EOF2 ");break;case 12:S.getLogger().debug("Rule: statement: ",L[I]),typeof L[I].length=="number"?this.$=L[I]:this.$=[L[I]];break;case 13:S.getLogger().debug("Rule: statement #2: ",L[I-1]),this.$=[L[I-1]].concat(L[I]);break;case 14:S.getLogger().debug("Rule: link: ",L[I],k),this.$={edgeTypeStr:L[I],label:""};break;case 15:S.getLogger().debug("Rule: LABEL link: ",L[I-3],L[I-1],L[I]),this.$={edgeTypeStr:L[I],label:L[I-1]};break;case 18:let _=parseInt(L[I]),A=S.generateId();this.$={id:A,type:"space",label:"",width:_,children:[]};break;case 23:S.getLogger().debug("Rule: (nodeStatement link node) ",L[I-2],L[I-1],L[I]," typestr: ",L[I-1].edgeTypeStr);let M=S.edgeStrToEdgeData(L[I-1].edgeTypeStr),D=S.edgeStrToEdgeStartData(L[I-1].edgeTypeStr),P=S.edgeStrToThickness(L[I-1].edgeTypeStr),B=S.edgeStrToPattern(L[I-1].edgeTypeStr);this.$=[{id:L[I-2].id,label:L[I-2].label,type:L[I-2].type,directions:L[I-2].directions},{id:L[I-2].id+"-"+L[I].id,start:L[I-2].id,end:L[I].id,label:L[I-1].label,type:"edge",thickness:P,pattern:B,directions:L[I].directions,arrowTypeEnd:M,arrowTypeStart:D},{id:L[I].id,label:L[I].label,type:S.typeStr2Type(L[I].typeStr),directions:L[I].directions}];break;case 24:S.getLogger().debug("Rule: nodeStatement (abc88 node size) ",L[I-1],L[I]),this.$={id:L[I-1].id,label:L[I-1].label,type:S.typeStr2Type(L[I-1].typeStr),directions:L[I-1].directions,widthInColumns:parseInt(L[I],10)};break;case 25:S.getLogger().debug("Rule: nodeStatement (node) ",L[I]),this.$={id:L[I].id,label:L[I].label,type:S.typeStr2Type(L[I].typeStr),directions:L[I].directions,widthInColumns:1};break;case 26:S.getLogger().debug("APA123",this?this:"na"),S.getLogger().debug("COLUMNS: ",L[I]),this.$={type:"column-setting",columns:L[I]==="auto"?-1:parseInt(L[I])};break;case 27:S.getLogger().debug("Rule: id-block statement : ",L[I-2],L[I-1]);let O=S.generateId();this.$={...L[I-2],type:"composite",children:L[I-1]};break;case 28:S.getLogger().debug("Rule: blockStatement : ",L[I-2],L[I-1],L[I]);let $=S.generateId();this.$={id:$,type:"composite",label:"",children:L[I-1]};break;case 29:S.getLogger().debug("Rule: node (NODE_ID separator): ",L[I]),this.$={id:L[I]};break;case 30:S.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",L[I-1],L[I]),this.$={id:L[I-1],label:L[I].label,typeStr:L[I].typeStr,directions:L[I].directions};break;case 31:S.getLogger().debug("Rule: dirList: ",L[I]),this.$=[L[I]];break;case 32:S.getLogger().debug("Rule: dirList: ",L[I-1],L[I]),this.$=[L[I-1]].concat(L[I]);break;case 33:S.getLogger().debug("Rule: nodeShapeNLabel: ",L[I-2],L[I-1],L[I]),this.$={typeStr:L[I-2]+L[I],label:L[I-1]};break;case 34:S.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",L[I-3],L[I-2]," #3:",L[I-1],L[I]),this.$={typeStr:L[I-3]+L[I],label:L[I-2],directions:L[I-1]};break;case 35:case 36:this.$={type:"classDef",id:L[I-1].trim(),css:L[I].trim()};break;case 37:this.$={type:"applyClass",id:L[I-1].trim(),styleClass:L[I].trim()};break;case 38:this.$={type:"applyStyles",id:L[I-1].trim(),stylesStr:L[I].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:t,11:3,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{8:[1,20]},e(h,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:t,21:r,28:n,29:i,31:a,39:s,43:l,46:u}),e(d,[2,16],{14:22,15:f,16:p}),e(d,[2,17]),e(d,[2,18]),e(d,[2,19]),e(d,[2,20]),e(d,[2,21]),e(d,[2,22]),e(m,[2,25],{27:[1,25]}),e(d,[2,26]),{19:26,26:12,31:a},{10:t,11:27,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},e(g,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},e(h,[2,13]),{26:35,31:a},{31:[2,14]},{17:[1,36]},e(m,[2,24]),{10:t,11:37,13:4,14:22,15:f,16:p,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:n,29:i,31:a,39:s,43:l,46:u},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},e(g,[2,30]),{18:[1,43]},{18:[1,44]},e(m,[2,23]),{18:[1,45]},{30:[1,46]},e(d,[2,28]),e(d,[2,35]),e(d,[2,36]),e(d,[2,37]),e(d,[2,38]),{36:[1,47]},{33:48,34:y},{15:[1,50]},e(d,[2,27]),e(g,[2,33]),{38:[1,51]},{33:52,34:y,38:[2,31]},{31:[2,15]},e(g,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:o(function(k,C){if(C.recoverable)this.trace(k);else{var w=new Error(k);throw w.hash=C,w}},"parseError"),parse:o(function(k){var C=this,w=[0],S=[],R=[null],L=[],N=this.table,I="",_=0,A=0,M=0,D=2,P=1,B=L.slice.call(arguments,1),O=Object.create(this.lexer),$={yy:{}};for(var V in this.yy)Object.prototype.hasOwnProperty.call(this.yy,V)&&($.yy[V]=this.yy[V]);O.setInput(k,$.yy),$.yy.lexer=O,$.yy.parser=this,typeof O.yylloc>"u"&&(O.yylloc={});var G=O.yylloc;L.push(G);var z=O.options&&O.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function W(Oe){w.length=w.length-2*Oe,R.length=R.length-Oe,L.length=L.length-Oe}o(W,"popStack");function H(){var Oe;return Oe=S.pop()||O.lex()||P,typeof Oe!="number"&&(Oe instanceof Array&&(S=Oe,Oe=S.pop()),Oe=C.symbols_[Oe]||Oe),Oe}o(H,"lex");for(var j,Q,U,oe,te,le,ie={},ae,Re,be,Pe;;){if(U=w[w.length-1],this.defaultActions[U]?oe=this.defaultActions[U]:((j===null||typeof j>"u")&&(j=H()),oe=N[U]&&N[U][j]),typeof oe>"u"||!oe.length||!oe[0]){var Ge="";Pe=[];for(ae in N[U])this.terminals_[ae]&&ae>D&&Pe.push("'"+this.terminals_[ae]+"'");O.showPosition?Ge="Parse error on line "+(_+1)+`: +`+O.showPosition()+` +Expecting `+Pe.join(", ")+", got '"+(this.terminals_[j]||j)+"'":Ge="Parse error on line "+(_+1)+": Unexpected "+(j==P?"end of input":"'"+(this.terminals_[j]||j)+"'"),this.parseError(Ge,{text:O.match,token:this.terminals_[j]||j,line:O.yylineno,loc:G,expected:Pe})}if(oe[0]instanceof Array&&oe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+U+", token: "+j);switch(oe[0]){case 1:w.push(j),R.push(O.yytext),L.push(O.yylloc),w.push(oe[1]),j=null,Q?(j=Q,Q=null):(A=O.yyleng,I=O.yytext,_=O.yylineno,G=O.yylloc,M>0&&M--);break;case 2:if(Re=this.productions_[oe[1]][1],ie.$=R[R.length-Re],ie._$={first_line:L[L.length-(Re||1)].first_line,last_line:L[L.length-1].last_line,first_column:L[L.length-(Re||1)].first_column,last_column:L[L.length-1].last_column},z&&(ie._$.range=[L[L.length-(Re||1)].range[0],L[L.length-1].range[1]]),le=this.performAction.apply(ie,[I,A,_,$.yy,oe[1],R,L].concat(B)),typeof le<"u")return le;Re&&(w=w.slice(0,-1*Re*2),R=R.slice(0,-1*Re),L=L.slice(0,-1*Re)),w.push(this.productions_[oe[1]][0]),R.push(ie.$),L.push(ie._$),be=N[w[w.length-2]][w[w.length-1]],w.push(be);break;case 3:return!0}}return!0},"parse")},x=(function(){var T={EOF:1,parseError:o(function(C,w){if(this.yy.parser)this.yy.parser.parseError(C,w);else throw new Error(C)},"parseError"),setInput:o(function(k,C){return this.yy=C||this.yy||{},this._input=k,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var k=this._input[0];this.yytext+=k,this.yyleng++,this.offset++,this.match+=k,this.matched+=k;var C=k.match(/(?:\r\n?|\n).*/g);return C?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),k},"input"),unput:o(function(k){var C=k.length,w=k.split(/(?:\r\n?|\n)/g);this._input=k+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-C),this.offset-=C;var S=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),w.length-1&&(this.yylineno-=w.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:w?(w.length===S.length?this.yylloc.first_column:0)+S[S.length-w.length].length-w[0].length:this.yylloc.first_column-C},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-C]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(k){this.unput(this.match.slice(k))},"less"),pastInput:o(function(){var k=this.matched.substr(0,this.matched.length-this.match.length);return(k.length>20?"...":"")+k.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var k=this.match;return k.length<20&&(k+=this._input.substr(0,20-k.length)),(k.substr(0,20)+(k.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var k=this.pastInput(),C=new Array(k.length+1).join("-");return k+this.upcomingInput()+` +`+C+"^"},"showPosition"),test_match:o(function(k,C){var w,S,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),S=k[0].match(/(?:\r\n?|\n).*/g),S&&(this.yylineno+=S.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:S?S[S.length-1].length-S[S.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+k[0].length},this.yytext+=k[0],this.match+=k[0],this.matches=k,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(k[0].length),this.matched+=k[0],w=this.performAction.call(this,this.yy,this,C,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),w)return w;if(this._backtrack){for(var L in R)this[L]=R[L];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var k,C,w,S;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),L=0;LC[0].length)){if(C=w,S=L,this.options.backtrack_lexer){if(k=this.test_match(w,R[L]),k!==!1)return k;if(this._backtrack){C=!1;continue}else return!1}else if(!this.options.flex)break}return C?(k=this.test_match(C,R[S]),k!==!1?k:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var C=this.next();return C||this.lex()},"lex"),begin:o(function(C){this.conditionStack.push(C)},"begin"),popState:o(function(){var C=this.conditionStack.length-1;return C>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(C){return C=this.conditionStack.length-1-Math.abs(C||0),C>=0?this.conditionStack[C]:"INITIAL"},"topState"),pushState:o(function(C){this.begin(C)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:o(function(C,w,S,R){var L=R;switch(S){case 0:return C.getLogger().debug("Found block-beta"),10;break;case 1:return C.getLogger().debug("Found id-block"),29;break;case 2:return C.getLogger().debug("Found block"),10;break;case 3:C.getLogger().debug(".",w.yytext);break;case 4:C.getLogger().debug("_",w.yytext);break;case 5:return 5;case 6:return w.yytext=-1,28;break;case 7:return w.yytext=w.yytext.replace(/columns\s+/,""),C.getLogger().debug("COLUMNS (LEX)",w.yytext),28;break;case 8:this.pushState("md_string");break;case 9:return"MD_STR";case 10:this.popState();break;case 11:this.pushState("string");break;case 12:C.getLogger().debug("LEX: POPPING STR:",w.yytext),this.popState();break;case 13:return C.getLogger().debug("LEX: STR end:",w.yytext),"STR";break;case 14:return w.yytext=w.yytext.replace(/space\:/,""),C.getLogger().debug("SPACE NUM (LEX)",w.yytext),21;break;case 15:return w.yytext="1",C.getLogger().debug("COLUMNS (LEX)",w.yytext),21;break;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;break;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 21:return this.popState(),this.pushState("CLASSDEFID"),40;break;case 22:return this.popState(),41;break;case 23:return this.pushState("CLASS"),43;break;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;break;case 25:return this.popState(),45;break;case 26:return this.pushState("STYLE_STMNT"),46;break;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;break;case 28:return this.popState(),48;break;case 29:return this.pushState("acc_title"),"acc_title";break;case 30:return this.popState(),"acc_title_value";break;case 31:return this.pushState("acc_descr"),"acc_descr";break;case 32:return this.popState(),"acc_descr_value";break;case 33:this.pushState("acc_descr_multiline");break;case 34:this.popState();break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 38:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),C.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 40:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 41:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),C.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 43:return this.popState(),C.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 44:return this.popState(),C.getLogger().debug("Lex: (("),"NODE_DEND";break;case 45:return this.popState(),C.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 46:return this.popState(),C.getLogger().debug("Lex: ("),"NODE_DEND";break;case 47:return this.popState(),C.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 48:return this.popState(),C.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 49:return this.popState(),C.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),C.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 51:return this.popState(),C.getLogger().debug("Lex: )"),"NODE_DEND";break;case 52:return this.popState(),C.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 53:return this.popState(),C.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 54:return C.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;break;case 55:return C.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;break;case 56:return C.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;break;case 57:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 58:return C.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;break;case 59:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 60:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 61:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 62:return C.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;break;case 63:return C.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;break;case 64:return C.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;break;case 65:return this.pushState("NODE"),35;break;case 66:return this.pushState("NODE"),35;break;case 67:return this.pushState("NODE"),35;break;case 68:return this.pushState("NODE"),35;break;case 69:return this.pushState("NODE"),35;break;case 70:return this.pushState("NODE"),35;break;case 71:return this.pushState("NODE"),35;break;case 72:return C.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;break;case 73:return this.pushState("BLOCK_ARROW"),C.getLogger().debug("LEX ARR START"),37;break;case 74:return C.getLogger().debug("Lex: NODE_ID",w.yytext),31;break;case 75:return C.getLogger().debug("Lex: EOF",w.yytext),8;break;case 76:this.pushState("md_string");break;case 77:this.pushState("md_string");break;case 78:return"NODE_DESCR";case 79:this.popState();break;case 80:C.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:C.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return C.getLogger().debug("LEX: NODE_DESCR:",w.yytext),"NODE_DESCR";break;case 83:C.getLogger().debug("LEX POPPING"),this.popState();break;case 84:C.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (right): dir:",w.yytext),"DIR";break;case 86:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (left):",w.yytext),"DIR";break;case 87:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (x):",w.yytext),"DIR";break;case 88:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (y):",w.yytext),"DIR";break;case 89:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (up):",w.yytext),"DIR";break;case 90:return w.yytext=w.yytext.replace(/^,\s*/,""),C.getLogger().debug("Lex (down):",w.yytext),"DIR";break;case 91:return w.yytext="]>",C.getLogger().debug("Lex (ARROW_DIR end):",w.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 92:return C.getLogger().debug("Lex: LINK","#"+w.yytext+"#"),15;break;case 93:return C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 94:return C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 95:return C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 96:return C.getLogger().debug("Lex: START_LINK",w.yytext),this.pushState("LLABEL"),16;break;case 97:return C.getLogger().debug("Lex: START_LINK",w.yytext),this.pushState("LLABEL"),16;break;case 98:return C.getLogger().debug("Lex: START_LINK",w.yytext),this.pushState("LLABEL"),16;break;case 99:this.pushState("md_string");break;case 100:return C.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 101:return this.popState(),C.getLogger().debug("Lex: LINK","#"+w.yytext+"#"),15;break;case 102:return this.popState(),C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 103:return this.popState(),C.getLogger().debug("Lex: LINK",w.yytext),15;break;case 104:return C.getLogger().debug("Lex: COLON",w.yytext),w.yytext=w.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:=]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}};return T})();v.lexer=x;function b(){this.yy={}}return o(b,"Parser"),b.prototype=v,v.Parser=b,new b})();Tj.parser=Tj;UPe=Tj});function kDt(e){switch(Z.debug("typeStr2Type",e),e){case"[]":return"square";case"()":return Z.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function SDt(e){switch(Z.debug("typeStr2Type",e),e){case"==":return"thick";default:return"normal"}}function EDt(e){switch(e.trim().slice(-1)){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}function ADt(e){switch(e.trim().charAt(0)){case"x":return"arrow_cross";case"o":return"arrow_circle";case"<":return"arrow_point";default:return"arrow_open"}}function RDt(e){return e.includes("==")?"thick":"normal"}function _Dt(e){return e.includes(".-")?"dotted":"solid"}var Dc,wj,Cj,jPe,XPe,vDt,ZPe,QL,kj,xDt,bDt,TDt,CDt,QPe,Sj,Kw,wDt,KPe,LDt,DDt,IDt,MDt,NDt,PDt,ODt,BDt,$Dt,FDt,zDt,GDt,VDt,JPe,eOe=F(()=>{"use strict";s4();ur();Xt();vt();Vr();Nn();Dc=new Map,wj=[],Cj=new Map,jPe="color",XPe="fill",vDt="bgFill",ZPe=",",QL=new Map,kj="",xDt=o(e=>xt.sanitizeText(e,Ae()),"sanitizeText"),bDt=o(function(e,t=""){let r=QL.get(e);r||(r={id:e,styles:[],textStyles:[]},QL.set(e,r)),t?.split(ZPe).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(jPe).exec(n)){let s=i.replace(XPe,vDt).replace(jPe,XPe);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),TDt=o(function(e,t=""){let r=Dc.get(e);t!=null&&(r.styles=t.split(ZPe))},"addStyle2Node"),CDt=o(function(e,t){e.split(",").forEach(function(r){let n=Dc.get(r);if(n===void 0){let i=r.trim();n={id:i,type:"na",children:[]},Dc.set(i,n)}n.classes||(n.classes=[]),n.classes.push(t)})},"setCssClass"),QPe=o((e,t)=>{let r=e.flat(),n=[],a=r.find(s=>s?.type==="column-setting")?.columns??-1;for(let s of r){if(typeof a=="number"&&a>0&&s.type!=="column-setting"&&typeof s.widthInColumns=="number"&&s.widthInColumns>a&&Z.warn(`Block ${s.id} width ${s.widthInColumns} exceeds configured column width ${a}`),s.label&&(s.label=xDt(s.label)),s.type==="classDef"){bDt(s.id,s.css);continue}if(s.type==="applyClass"){CDt(s.id,s?.styleClass??"");continue}if(s.type==="applyStyles"){s?.stylesStr&&TDt(s.id,s?.stylesStr);continue}if(s.type==="column-setting")t.columns=s.columns??-1;else if(s.type==="edge"){let l=(Cj.get(s.id)??0)+1;Cj.set(s.id,l),s.id=l+"-"+s.id,wj.push(s)}else{s.label||(s.type==="composite"?s.label="":s.label=s.id);let l=Dc.get(s.id);if(l===void 0?Dc.set(s.id,s):(s.type!=="na"&&(l.type=s.type),s.label!==s.id&&(l.label=s.label)),s.children&&QPe(s.children,s),s.type==="space"){let u=s.width??1;for(let h=0;h{Z.debug("Clear called"),yr(),Kw={id:"root",type:"composite",children:[],columns:-1},Dc=new Map([["root",Kw]]),Sj=[],QL=new Map,wj=[],Cj=new Map,kj=""},"clear");o(kDt,"typeStr2Type");o(SDt,"edgeTypeStr2Type");o(EDt,"edgeStrToEdgeData");o(ADt,"edgeStrToEdgeStartData");o(RDt,"edgeStrToThickness");o(_Dt,"edgeStrToPattern");KPe=0,LDt=o(()=>(KPe++,"id-"+Math.random().toString(36).substr(2,12)+"-"+KPe),"generateId"),DDt=o(e=>{Kw.children=e,QPe(e,Kw),Sj=Kw.children},"setHierarchy"),IDt=o(e=>{let t=Dc.get(e);return t?t.columns?t.columns:t.children?t.children.length:-1:-1},"getColumns"),MDt=o(()=>[...Dc.values()],"getBlocksFlat"),NDt=o(()=>Sj||[],"getBlocks"),PDt=o(()=>wj,"getEdges"),ODt=o(e=>Dc.get(e),"getBlock"),BDt=o(e=>{Dc.set(e.id,e)},"setBlock"),$Dt=o(e=>{kj=e},"setDiagramId"),FDt=o(()=>kj,"getDiagramId"),zDt=o(()=>Z,"getLogger"),GDt=o(function(){return QL},"getClasses"),VDt={getConfig:o(()=>_t().block,"getConfig"),typeStr2Type:kDt,edgeTypeStr2Type:SDt,edgeStrToEdgeData:EDt,edgeStrToEdgeStartData:ADt,edgeStrToThickness:RDt,edgeStrToPattern:_Dt,getLogger:zDt,getBlocksFlat:MDt,getBlocks:NDt,getEdges:PDt,setHierarchy:DDt,getBlock:ODt,setBlock:BDt,getColumns:IDt,getClasses:GDt,clear:wDt,generateId:LDt,setDiagramId:$Dt,getDiagramId:FDt},JPe=VDt});var Ej,WDt,tOe,rOe=F(()=>{"use strict";zi();X1();Ej=o((e,t)=>{let r=$p,n=r(e,"r"),i=r(e,"g"),a=r(e,"b");return Oi(n,i,a,t)},"fade"),WDt=o(e=>`.label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span,p { + color: ${e.titleColor}; + } + + + + .label text,span,p { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + /* + * This is for backward compatibility with existing code that didn't + * add a \`

    \` around edge labels. + * + * TODO: We should probably remove this in a future release. + */ + p { + margin: 0; + padding: 0; + display: inline; + } + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${e.edgeLabelBackground}; + } + + .node .cluster { + // fill: ${Ej(e.mainBkg,.5)}; + fill: ${Ej(e.clusterBkg,.5)}; + stroke: ${Ej(e.clusterBorder,.2)}; + box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span,p { + color: ${e.titleColor}; + } + /* .cluster div { + color: ${e.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } + ${Eu()} +`,"getStyles"),tOe=WDt});var qDt,HDt,UDt,YDt,jDt,XDt,KDt,ZDt,QDt,JDt,e7t,nOe,iOe=F(()=>{"use strict";vt();qDt=o((e,t,r,n)=>{t.forEach(i=>{e7t[i](e,r,n)})},"insertMarkers"),HDt=o((e,t,r)=>{Z.trace("Making markers for ",r),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),UDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),YDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),jDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),XDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),KDt=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),ZDt=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),QDt=o((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),JDt=o((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),e7t={extension:HDt,composition:UDt,aggregation:YDt,dependency:jDt,lollipop:XDt,point:KDt,circle:ZDt,cross:QDt,barb:JDt},nOe=qDt});function aOe(e,t){if(e===0||!Number.isInteger(e))throw new Error("Columns must be an integer !== 0.");if(t<0||!Number.isInteger(t))throw new Error("Position must be a non-negative integer."+t);if(e<0)return{px:t,py:0};if(e===1)return{px:0,py:t};let r=t%e,n=Math.floor(t/e);return{px:r,py:n}}function Aj(e,t,r=0,n=0,i=8){Z.debug("setBlockSizes abc95 (start)",e.id,e?.size?.x,"block width =",e?.size,"siblingWidth",r),e?.size?.width||(e.size={width:r,height:n,x:0,y:0});let a=0,s=0;if(e.children?.length>0){for(let g of e.children)Aj(g,t,0,0,i);let l=t7t(e);a=l.width,s=l.height,Z.debug("setBlockSizes abc95 maxWidth of",e.id,":s children is ",a,s);for(let g of e.children)g.size&&(Z.debug(`abc95 Setting size of children of ${e.id} id=${g.id} ${a} ${s} ${JSON.stringify(g.size)}`),g.size.width=a*(g.widthInColumns??1)+i*((g.widthInColumns??1)-1),g.size.height=s,g.size.x=0,g.size.y=0,Z.debug(`abc95 updating size of ${e.id} children child:${g.id} maxWidth:${a} maxHeight:${s}`));for(let g of e.children)Aj(g,t,a,s,i);let u=e.columns??-1,h=0;for(let g of e.children)h+=g.widthInColumns??1;let d=e.children.length;u>0&&u0?Math.min(e.children.length,u):e.children.length;if(g>0){let y=(p-g*i-i)/g;Z.debug("abc95 (growing to fit) width",e.id,p,e.size?.width,y);for(let v of e.children)v.size&&(v.size.width=y)}}e.size={width:p,height:m,x:0,y:0}}Z.debug("setBlockSizes abc94 (done)",e.id,e?.size?.x,e?.size?.width,e?.size?.y,e?.size?.height)}function sOe(e,t,r=8){Z.debug(`abc85 layout blocks (=>layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`);let n=e.columns??-1;if(Z.debug("layoutBlocks columns abc95",e.id,"=>",n,e),e.children&&e.children.length>0){let i=e?.children[0]?.size?.width??0,a=e.children.length*i+(e.children.length-1)*r;Z.debug("widthOfChildren 88",a,"posX");let s=new Map;{let f=0;for(let p of e.children){if(!p.size)continue;let{py:m}=aOe(n,f),g=s.get(m)??0;p.size.height>g&&s.set(m,p.size.height);let y=p?.widthInColumns??1;n>0&&(y=Math.min(y,n-f%n)),f+=y}}let l=new Map;{let f=0,p=[...s.keys()].sort((m,g)=>m-g);for(let m of p)l.set(m,f),f+=(s.get(m)??0)+r}let u=0;Z.debug("abc91 block?.size?.x",e.id,e?.size?.x);let h=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-r,d=0;for(let f of e.children){let p=e;if(!f.size)continue;let{width:m,height:g}=f.size,{px:y,py:v}=aOe(n,u);if(v!=d&&(d=v,h=e?.size?.x?e?.size?.x+(-e?.size?.width/2||0):-r,Z.debug("New row in layout for block",e.id," and child ",f.id,d)),Z.debug(`abc89 layout blocks (child) id: ${f.id} Pos: ${u} (px, py) ${y},${v} (${p?.size?.x},${p?.size?.y}) parent: ${p.id} width: ${m}${r}`),p.size){let b=m/2;f.size.x=h+r+b,Z.debug(`abc91 layout blocks (calc) px, pyid:${f.id} startingPos=X${h} new startingPosX${f.size.x} ${b} padding=${r} width=${m} halfWidth=${b} => x:${f.size.x} y:${f.size.y} ${f.widthInColumns} (width * (child?.w || 1)) / 2 ${m*(f?.widthInColumns??1)/2}`),h=f.size.x+b;let T=l.get(v)??0,k=s.get(v)??g;f.size.y=p.size.y-p.size.height/2+T+k/2+r,Z.debug(`abc88 layout blocks (calc) px, pyid:${f.id}startingPosX${h}${r}${b}=>x:${f.size.x}y:${f.size.y}${f.widthInColumns}(width * (child?.w || 1)) / 2${m*(f?.widthInColumns??1)/2}`)}f.children&&sOe(f,t,r);let x=f?.widthInColumns??1;n>0&&(x=Math.min(x,n-u%n)),u+=x,Z.debug("abc88 columnsPos",f,u)}}Z.debug(`layout blocks (<==layoutBlocks) ${e.id} x: ${e?.size?.x} y: ${e?.size?.y} width: ${e?.size?.width}`)}function oOe(e,{minX:t,minY:r,maxX:n,maxY:i}={minX:0,minY:0,maxX:0,maxY:0}){if(e.size&&e.id!=="root"){let{x:a,y:s,width:l,height:u}=e.size;a-l/2n&&(n=a+l/2),s+u/2>i&&(i=s+u/2)}if(e.children)for(let a of e.children)({minX:t,minY:r,maxX:n,maxY:i}=oOe(a,{minX:t,minY:r,maxX:n,maxY:i}));return{minX:t,minY:r,maxX:n,maxY:i}}function lOe(e){let t=e.getBlock("root");if(!t)return;let r=Ae()?.block?.padding??8;Aj(t,e,0,0,r),sOe(t,e,r),Z.debug("getBlocks",JSON.stringify(t,null,2));let{minX:n,minY:i,maxX:a,maxY:s}=oOe(t),l=s-i,u=a-n;return{x:n,y:i,width:u,height:l}}var t7t,cOe=F(()=>{"use strict";vt();Xt();o(aOe,"calculateBlockPosition");t7t=o(e=>{let t=0,r=0;for(let n of e.children){let{width:i,height:a,x:s,y:l}=n.size??{width:0,height:0,x:0,y:0};if(Z.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",l,n.type),n.type==="space")continue;let u=i/(n.widthInColumns??1);u>t&&(t=u),a>r&&(r=a)}return{width:t,height:r}},"getMaxChildSize");o(Aj,"setBlockSizes");o(sOe,"layoutBlocks");o(oOe,"findBounds");o(lOe,"layout")});var r7t,Ao,JL=F(()=>{"use strict";ur();Xt();Ls();r7t=o(async(e,t,r,n=!1,i=!1)=>{let a=t||"";typeof a=="object"&&(a=a[0]);let s=Ae(),l=Gr(s);return await Pn(e,a,{style:r,isTitle:n,useHtmlLabels:l,markdown:!1,isNode:i,width:Number.POSITIVE_INFINITY},s)},"createLabel"),Ao=r7t});var hOe,n7t,uOe,dOe=F(()=>{"use strict";vt();hOe=o((e,t,r,n,i)=>{t.arrowTypeStart&&uOe(e,"start",t.arrowTypeStart,r,n,i),t.arrowTypeEnd&&uOe(e,"end",t.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),n7t={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},uOe=o((e,t,r,n,i,a)=>{let s=n7t[r];if(!s){Z.warn(`Unknown arrow type: ${r}`);return}let l=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${n}#${i}_${a}-${s}${l})`)},"addEdgeMarker")});function eD(e,t){Gr(Ae())&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}var Rj,ps,pOe,mOe,i7t,a7t,fOe,gOe,yOe=F(()=>{"use strict";vt();JL();Ls();gO();$r();Xt();ur();Qt();Vr();Y4();Vy();dOe();Rj={},ps={},pOe=o(async(e,t)=>{let r=Ae(),n=Gr(r),i=e.insert("g").attr("class","edgeLabel"),a=i.insert("g").attr("class","label"),s=t.labelType==="markdown",l=await Pn(e,t.label,{style:t.labelStyle,useHtmlLabels:n,addSvgBackground:s,isNode:!1,markdown:s,width:s?void 0:Number.POSITIVE_INFINITY},r);a.node().appendChild(l);let u=l.getBBox(),h=u;if(n){let f=l.children[0],p=et(l);u=f.getBoundingClientRect(),h=u,p.attr("width",u.width),p.attr("height",u.height)}else{let f=et(l).select("text").node();f&&typeof f.getBBox=="function"&&(h=f.getBBox())}a.attr("transform",ml(h,n)),Rj[t.id]=i,t.width=u.width,t.height=u.height;let d;if(t.startLabelLeft){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await Ao(p,t.startLabelLeft,t.labelStyle);d=m;let g=m.getBBox();if(n){let y=m.children[0],v=et(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",ml(g,n)),ps[t.id]||(ps[t.id]={}),ps[t.id].startLeft=f,eD(d,t.startLabelLeft)}if(t.startLabelRight){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await Ao(p,t.startLabelRight,t.labelStyle);d=m;let g=m.getBBox();if(n){let y=m.children[0],v=et(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",ml(g,n)),ps[t.id]||(ps[t.id]={}),ps[t.id].startRight=f,eD(d,t.startLabelRight)}if(t.endLabelLeft){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await Ao(f,t.endLabelLeft,t.labelStyle);d=m;let g=m.getBBox();if(n){let y=m.children[0],v=et(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",ml(g,n)),ps[t.id]||(ps[t.id]={}),ps[t.id].endLeft=f,eD(d,t.endLabelLeft)}if(t.endLabelRight){let f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner"),m=await Ao(f,t.endLabelRight,t.labelStyle);d=m;let g=m.getBBox();if(n){let y=m.children[0],v=et(m);g=y.getBoundingClientRect(),v.attr("width",g.width),v.attr("height",g.height)}p.attr("transform",ml(g,n)),ps[t.id]||(ps[t.id]={}),ps[t.id].endRight=f,eD(d,t.endLabelRight)}return l},"insertEdgeLabel");o(eD,"setTerminalWidth");mOe=o((e,t)=>{Z.debug("Moving label abc88 ",e.id,e.label,Rj[e.id],t);let r=t.updatedPath?t.updatedPath:t.originalPath,n=Ae(),{subGraphTitleTotalMargin:i}=oc(n);if(e.label){let a=Rj[e.id],s=e.x,l=e.y;if(r){let u=Zt.calcLabelPosition(r);Z.debug("Moving label "+e.label+" from (",s,",",l,") to (",u.x,",",u.y,") abc88"),t.updatedPath&&(s=u.x,l=u.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(e.startLabelLeft){let a=ps[e.id].startLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.startLabelRight){let a=ps[e.id].startRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelLeft){let a=ps[e.id].endLeft,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelRight){let a=ps[e.id].endRight,s=e.x,l=e.y;if(r){let u=Zt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);s=u.x,l=u.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),i7t=o((e,t)=>{let r=e.x,n=e.y,i=Math.abs(t.x-r),a=Math.abs(t.y-n),s=e.width/2,l=e.height/2;return i>=s||a>=l},"outsideNode"),a7t=o((e,t,r)=>{Z.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(t)} + insidePoint : ${JSON.stringify(r)} + node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let n=e.x,i=e.y,a=Math.abs(n-r.x),s=e.width/2,l=r.xMath.abs(n-t.x)*u){let f=r.y{Z.debug("abc88 cutPathAtIntersect",e,t);let r=[],n=e[0],i=!1;return e.forEach(a=>{if(!i7t(t,a)&&!i){let s=a7t(t,n,a),l=!1;r.forEach(u=>{l=l||u.x===s.x&&u.y===s.y}),r.some(u=>u.x===s.x&&u.y===s.y)||r.push(s),i=!0}else n=a,i||r.push(a)}),r},"cutPathAtIntersect"),gOe=o(function(e,t,r,n,i,a,s){let l=r.points;Z.debug("abc88 InsertEdge: edge=",r,"e=",t);let u=!1,h=a.node(t.v);var d=a.node(t.w);d?.intersect&&h?.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(h.intersect(l[0])),l.push(d.intersect(l[l.length-1]))),r.toCluster&&(Z.debug("to cluster abc88",n[r.toCluster]),l=fOe(r.points,n[r.toCluster].node),u=!0),r.fromCluster&&(Z.debug("from cluster abc88",n[r.fromCluster]),l=fOe(l.reverse(),n[r.fromCluster].node).reverse(),u=!0);let f=l.filter(k=>!Number.isNaN(k.y)),p=rc;r.curve&&(i==="graph"||i==="flowchart")&&(p=r.curve);let{x:m,y:g}=U4(r),y=tc().x(m).y(g).curve(p),v;switch(r.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-thick";break;default:v=""}switch(r.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break}let x=e.append("path").attr("d",y(f)).attr("id",r.id).attr("class"," "+v+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";(Ae().flowchart.arrowMarkerAbsolute||Ae().state.arrowMarkerAbsolute)&&(b=Wp(!0)),hOe(x,r,b,s,i);let T={};return u&&(T.updatedPath=l),T.originalPath=r.points,T},"insertEdge")});var s7t,vOe,xOe=F(()=>{"use strict";s7t=o(e=>{let t=new Set;for(let r of e)switch(r){case"x":t.add("right"),t.add("left");break;case"y":t.add("up"),t.add("down");break;default:t.add(r);break}return t},"expandAndDeduplicateDirections"),vOe=o((e,t,r,n)=>{let i=s7t(e),a=2,s=t.height+2*r.padding,l=s/a,u=n??t.width+2*l+r.padding,h=r.padding/2;return i.has("right")&&i.has("left")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:l,y:0},{x:u/2,y:2*h},{x:u-l,y:0},{x:u,y:0},{x:u,y:-s/3},{x:u+2*h,y:-s/2},{x:u,y:-2*s/3},{x:u,y:-s},{x:u-l,y:-s},{x:u/2,y:-s-2*h},{x:l,y:-s},{x:0,y:-s},{x:0,y:-2*s/3},{x:-2*h,y:-s/2},{x:0,y:-s/3}]:i.has("right")&&i.has("left")&&i.has("up")?[{x:l,y:0},{x:u-l,y:0},{x:u,y:-s/2},{x:u-l,y:-s},{x:l,y:-s},{x:0,y:-s/2}]:i.has("right")&&i.has("left")&&i.has("down")?[{x:0,y:0},{x:l,y:-s},{x:u-l,y:-s},{x:u,y:0}]:i.has("right")&&i.has("up")&&i.has("down")?[{x:0,y:0},{x:u,y:-l},{x:u,y:-s+l},{x:0,y:-s}]:i.has("left")&&i.has("up")&&i.has("down")?[{x:u,y:0},{x:0,y:-l},{x:0,y:-s+l},{x:u,y:-s}]:i.has("right")&&i.has("left")?[{x:l,y:0},{x:l,y:-h},{x:u-l,y:-h},{x:u-l,y:0},{x:u,y:-s/2},{x:u-l,y:-s},{x:u-l,y:-s+h},{x:l,y:-s+h},{x:l,y:-s},{x:0,y:-s/2}]:i.has("up")&&i.has("down")?[{x:u/2,y:0},{x:0,y:-h},{x:l,y:-h},{x:l,y:-s+h},{x:0,y:-s+h},{x:u/2,y:-s},{x:u,y:-s+h},{x:u-l,y:-s+h},{x:u-l,y:-h},{x:u,y:-h}]:i.has("right")&&i.has("up")?[{x:0,y:0},{x:u,y:-l},{x:0,y:-s}]:i.has("right")&&i.has("down")?[{x:0,y:0},{x:u,y:0},{x:0,y:-s}]:i.has("left")&&i.has("up")?[{x:u,y:0},{x:0,y:-l},{x:u,y:-s}]:i.has("left")&&i.has("down")?[{x:u,y:0},{x:0,y:0},{x:u,y:-s}]:i.has("right")?[{x:l,y:-h},{x:l,y:-h},{x:u-l,y:-h},{x:u-l,y:0},{x:u,y:-s/2},{x:u-l,y:-s},{x:u-l,y:-s+h},{x:l,y:-s+h},{x:l,y:-s+h}]:i.has("left")?[{x:l,y:0},{x:l,y:-h},{x:u-l,y:-h},{x:u-l,y:-s+h},{x:l,y:-s+h},{x:l,y:-s},{x:0,y:-s/2}]:i.has("up")?[{x:l,y:-h},{x:l,y:-s+h},{x:0,y:-s+h},{x:u/2,y:-s},{x:u,y:-s+h},{x:u-l,y:-s+h},{x:u-l,y:-h}]:i.has("down")?[{x:u/2,y:0},{x:0,y:-h},{x:l,y:-h},{x:l,y:-s+h},{x:u-l,y:-s+h},{x:u-l,y:-h},{x:u,y:-h}]:[{x:0,y:0}]},"getArrowPoints")});function o7t(e,t){return e.intersect(t)}var bOe,TOe=F(()=>{"use strict";o(o7t,"intersectNode");bOe=o7t});function l7t(e,t,r,n){var i=e.x,a=e.y,s=i-n.x,l=a-n.y,u=Math.sqrt(t*t*l*l+r*r*s*s),h=Math.abs(t*r*s/u);n.x{"use strict";o(l7t,"intersectEllipse");tD=l7t});function c7t(e,t,r){return tD(e,t,t,r)}var COe,wOe=F(()=>{"use strict";_j();o(c7t,"intersectCircle");COe=c7t});function u7t(e,t,r,n){var i,a,s,l,u,h,d,f,p,m,g,y,v,x,b;if(i=t.y-e.y,s=e.x-t.x,u=t.x*e.y-e.x*t.y,p=i*r.x+s*r.y+u,m=i*n.x+s*n.y+u,!(p!==0&&m!==0&&kOe(p,m))&&(a=n.y-r.y,l=r.x-n.x,h=n.x*r.y-r.x*n.y,d=a*e.x+l*e.y+h,f=a*t.x+l*t.y+h,!(d!==0&&f!==0&&kOe(d,f))&&(g=i*l-a*s,g!==0)))return y=Math.abs(g/2),v=s*h-l*u,x=v<0?(v-y)/g:(v+y)/g,v=a*u-i*h,b=v<0?(v-y)/g:(v+y)/g,{x,y:b}}function kOe(e,t){return e*t>0}var SOe,EOe=F(()=>{"use strict";o(u7t,"intersectLine");o(kOe,"sameSign");SOe=u7t});function h7t(e,t,r){var n=e.x,i=e.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(g){s=Math.min(s,g.x),l=Math.min(l,g.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));for(var u=n-e.width/2-s,h=i-e.height/2-l,d=0;d1&&a.sort(function(g,y){var v=g.x-r.x,x=g.y-r.y,b=Math.sqrt(v*v+x*x),T=y.x-r.x,k=y.y-r.y,C=Math.sqrt(T*T+k*k);return b{"use strict";EOe();AOe=h7t;o(h7t,"intersectPolygon")});var d7t,_Oe,LOe=F(()=>{"use strict";d7t=o((e,t)=>{var r=e.x,n=e.y,i=t.x-r,a=t.y-n,s=e.width/2,l=e.height/2,u,h;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),u=a===0?0:l*i/a,h=l):(i<0&&(s=-s),u=s,h=i===0?0:s*a/i),{x:r+u,y:n+h}},"intersectRect"),_Oe=d7t});var ti,Lj=F(()=>{"use strict";TOe();wOe();_j();ROe();LOe();ti={node:bOe,circle:COe,ellipse:tD,polygon:AOe,rect:_Oe}});function Ic(e,t,r,n){return e.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}var Ji,mi,Dj=F(()=>{"use strict";JL();Ls();Xt();ur();$r();Vr();Qt();HP();Ji=o(async(e,t,r,n)=>{let i=Ae(),a,s=t.useHtmlLabels||Gr(i);r?a=r:a="node default";let l=e.insert("g").attr("class",a).attr("id",t.domId||t.id),u=l.insert("g").attr("class","label").attr("style",t.labelStyle),h;t.labelText===void 0?h="":h=typeof t.labelText=="string"?t.labelText:t.labelText[0];let d;t.labelType==="markdown"?d=Pn(u,mr(Rs(h),i),{useHtmlLabels:s,width:t.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):d=await Ao(u,mr(Rs(h),i),t.labelStyle,!1,n);let f=d.getBBox(),p=t.padding/2;if(Gr(i)){let m=d.children[0],g=et(d);await E4(m,h),f=m.getBoundingClientRect(),g.attr("width",f.width),g.attr("height",f.height)}return s?u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):u.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:l,bbox:f,halfPadding:p,label:u}},"labelHelper"),mi=o((e,t)=>{let r=t.node().getBBox();e.width=r.width,e.height=r.height},"updateNodeBounds");o(Ic,"insertPolygonShape")});var f7t,DOe,IOe=F(()=>{"use strict";Dj();vt();Xt();ur();Lj();f7t=o(async(e,t)=>{t.useHtmlLabels||Gr(Ae())||(t.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:a}=await Ji(e,t,"node "+t.classes,!0);Z.info("Classes = ",t.classes);let s=n.insert("rect",":first-child");return s.attr("rx",t.rx).attr("ry",t.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+t.padding).attr("height",i.height+t.padding),mi(t,s),t.intersect=function(l){return ti.rect(t,l)},n},"note"),DOe=f7t});function Ij(e,t,r,n){let i=[],a=o(l=>{i.push(l,0)},"addBorder"),s=o(l=>{i.push(0,l)},"skipBorder");t.includes("t")?(Z.debug("add top border"),a(r)):s(r),t.includes("r")?(Z.debug("add right border"),a(n)):s(n),t.includes("b")?(Z.debug("add bottom border"),a(r)):s(r),t.includes("l")?(Z.debug("add left border"),a(n)):s(n),e.attr("stroke-dasharray",i.join(" "))}var MOe,rl,NOe,p7t,m7t,g7t,y7t,v7t,x7t,b7t,T7t,C7t,w7t,k7t,S7t,E7t,A7t,R7t,_7t,L7t,D7t,I7t,POe,M7t,N7t,OOe,rD,Mj,BOe,$Oe=F(()=>{"use strict";$r();Xt();ur();vt();xOe();JL();Lj();IOe();Dj();MOe=o(e=>e?" "+e:"","formatClass"),rl=o((e,t)=>`${t||"node default"}${MOe(e.classes)} ${MOe(e.class)}`,"getClassesFromNode"),NOe=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=i+a,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];Z.info("Question main (Circle)");let u=Ic(r,s,s,l);return u.attr("style",t.style),mi(t,u),t.intersect=function(h){return Z.warn("Intersect called"),ti.polygon(t,l,h)},r},"question"),p7t=o((e,t)=>{let r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",i.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(s){return ti.circle(t,14,s)},r},"choice"),m7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=4,a=t.positioned?t.height:n.height+t.padding,s=a/i,l=t.positioned?t.width:n.width+2*s+t.padding,u=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],h=Ic(r,l,a,u);return h.attr("style",t.style),mi(t,h),t.intersect=function(d){return ti.polygon(t,u,d)},r},"hexagon"),g7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,void 0,!0),i=2,a=n.height+2*t.padding,s=a/i,l=n.width+2*s+t.padding,h=t.positioned&&(t.widthInColumns??1)>1&&t.width>l?t.width:l,d=vOe(t.directions,n,t,h),f=Ic(r,h,a,d);return f.attr("style",t.style),mi(t,f),t.intersect=function(p){return ti.polygon(t,d,p)},r},"block_arrow"),y7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return Ic(r,i,a,s).attr("style",t.style),t.width=i+a,t.height=a,t.intersect=function(u){return ti.polygon(t,s,u)},r},"rect_left_inv_arrow"),v7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"lean_right"),x7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"lean_left"),b7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"trapezoid"),T7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"inv_trapezoid"),C7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"rect_right_inv_arrow"),w7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=i/2,s=a/(2.5+i/50),l=n.height+s+t.padding,u="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-l,h=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",t.style).attr("d",u).attr("transform","translate("+-i/2+","+-(l/2+s)+")");return mi(t,h),t.intersect=function(d){let f=ti.rect(t,d),p=f.x-t.x;if(a!=0&&(Math.abs(p)t.height/2-s)){let m=s*s*(1-p*p/(a*a));m!=0&&(m=Math.sqrt(m)),m=s-m,d.y-t.y>0&&(m=-m),f.y+=m}return f},r},"cylinder"),k7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ji(e,t,"node "+t.classes+" "+t.class,!0),a=r.insert("rect",":first-child"),s=t.positioned?t.width:n.width+t.padding,l=t.positioned?t.height:n.height+t.padding,u=t.positioned?-s/2:-n.width/2-i,h=t.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),t.props){let d=new Set(Object.keys(t.props));t.props.borders&&(Ij(a,t.props.borders,s,l),d.delete("borders")),d.forEach(f=>{Z.warn(`Unknown node property ${f}`)})}return mi(t,a),t.intersect=function(d){return ti.rect(t,d)},r},"rect"),S7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ji(e,t,"node "+t.classes,!0),a=r.insert("rect",":first-child"),s=t.positioned?t.width:n.width+t.padding,l=t.positioned?t.height:n.height+t.padding,u=t.positioned?-s/2:-n.width/2-i,h=t.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic cluster composite label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",u).attr("y",h).attr("width",s).attr("height",l),t.props){let d=new Set(Object.keys(t.props));t.props.borders&&(Ij(a,t.props.borders,s,l),d.delete("borders")),d.forEach(f=>{Z.warn(`Unknown node property ${f}`)})}return mi(t,a),t.intersect=function(d){return ti.rect(t,d)},r},"composite"),E7t=o(async(e,t)=>{let{shapeSvg:r}=await Ji(e,t,"label",!0);Z.trace("Classes = ",t.class);let n=r.insert("rect",":first-child"),i=0,a=0;if(n.attr("width",i).attr("height",a),r.attr("class","label edgeLabel"),t.props){let s=new Set(Object.keys(t.props));t.props.borders&&(Ij(n,t.props.borders,i,a),s.delete("borders")),s.forEach(l=>{Z.warn(`Unknown node property ${l}`)})}return mi(t,n),t.intersect=function(s){return ti.rect(t,s)},r},"labelRect");o(Ij,"applyNodePropertyBorders");A7t=o(async(e,t)=>{let r;t.classes?r="node "+t.classes:r="node default";let n=e.insert("g").attr("class",r).attr("id",t.domId||t.id),i=n.insert("rect",":first-child"),a=n.insert("line"),s=n.insert("g").attr("class","label"),l=t.labelText.flat?t.labelText.flat():t.labelText,u="";typeof l=="object"?u=l[0]:u=l,Z.info("Label text abc79",u,l,typeof l=="object");let h=await Ao(s,u,t.labelStyle,!0,!0),d={width:0,height:0};if(Gr(Ae())){let y=h.children[0],v=et(h);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height)}Z.info("Text 2",l);let f=l.slice(1,l.length),p=h.getBBox(),m=await Ao(s,f.join?f.join("
    "):f,t.labelStyle,!0,!0);if(Gr(Ae())){let y=m.children[0],v=et(m);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height)}let g=t.padding/2;return et(m).attr("transform","translate( "+(d.width>p.width?0:(p.width-d.width)/2)+", "+(p.height+g+5)+")"),et(h).attr("transform","translate( "+(d.width{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.height+t.padding,a=n.width+i/4+t.padding,s=r.insert("rect",":first-child").attr("style",t.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return mi(t,s),t.intersect=function(l){return ti.rect(t,l)},r},"stadium"),_7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ji(e,t,rl(t,void 0),!0),a=r.insert("circle",":first-child");return a.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+i).attr("width",n.width+t.padding).attr("height",n.height+t.padding),Z.info("Circle main"),mi(t,a),t.intersect=function(s){return Z.info("Circle intersect",t,n.width/2+i,s),ti.circle(t,n.width/2+i,s)},r},"circle"),L7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ji(e,t,rl(t,void 0),!0),a=5,s=r.insert("g",":first-child"),l=s.insert("circle"),u=s.insert("circle");return s.attr("class",t.class),l.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+i+a).attr("width",n.width+t.padding+a*2).attr("height",n.height+t.padding+a*2),u.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+i).attr("width",n.width+t.padding).attr("height",n.height+t.padding),Z.info("DoubleCircle main"),mi(t,l),t.intersect=function(h){return Z.info("DoubleCircle intersect",t,n.width/2+i+a,h),ti.circle(t,n.width/2+i+a,h)},r},"doublecircle"),D7t=o(async(e,t)=>{let{shapeSvg:r,bbox:n}=await Ji(e,t,rl(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],l=Ic(r,i,a,s);return l.attr("style",t.style),mi(t,l),t.intersect=function(u){return ti.polygon(t,s,u)},r},"subroutine"),I7t=o((e,t)=>{let r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),mi(t,n),t.intersect=function(i){return ti.circle(t,7,i)},r},"start"),POe=o((e,t,r)=>{let n=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),i=70,a=10;r==="LR"&&(i=10,a=70);let s=n.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return mi(t,s),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(l){return ti.rect(t,l)},n},"forkJoin"),M7t=o((e,t)=>{let r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child"),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),mi(t,i),t.intersect=function(a){return ti.circle(t,7,a)},r},"end"),N7t=o(async(e,t)=>{let r=t.padding/2,n=4,i=8,a;t.classes?a="node "+t.classes:a="node default";let s=e.insert("g").attr("class",a).attr("id",t.domId||t.id),l=s.insert("rect",":first-child"),u=s.insert("line"),h=s.insert("line"),d=0,f=n,p=s.insert("g").attr("class","label"),m=0,g=t.classData.annotations?.[0],y=t.classData.annotations[0]?"\xAB"+t.classData.annotations[0]+"\xBB":"",v=await Ao(p,y,t.labelStyle,!0,!0),x=v.getBBox();if(Gr(Ae())){let R=v.children[0],L=et(v);x=R.getBoundingClientRect(),L.attr("width",x.width),L.attr("height",x.height)}t.classData.annotations[0]&&(f+=x.height+n,d+=x.width);let b=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(Gr(Ae())?b+="<"+t.classData.type+">":b+="<"+t.classData.type+">");let T=await Ao(p,b,t.labelStyle,!0,!0);et(T).attr("class","classTitle");let k=T.getBBox();if(Gr(Ae())){let R=T.children[0],L=et(T);k=R.getBoundingClientRect(),L.attr("width",k.width),L.attr("height",k.height)}f+=k.height+n,k.width>d&&(d=k.width);let C=[];t.classData.members.forEach(async R=>{let L=R.getDisplayDetails(),N=L.displayText;Gr(Ae())&&(N=N.replace(//g,">"));let I=await Ao(p,N,L.cssStyle?L.cssStyle:t.labelStyle,!0,!0),_=I.getBBox();if(Gr(Ae())){let A=I.children[0],M=et(I);_=A.getBoundingClientRect(),M.attr("width",_.width),M.attr("height",_.height)}_.width>d&&(d=_.width),f+=_.height+n,C.push(I)}),f+=i;let w=[];if(t.classData.methods.forEach(async R=>{let L=R.getDisplayDetails(),N=L.displayText;Gr(Ae())&&(N=N.replace(//g,">"));let I=await Ao(p,N,L.cssStyle?L.cssStyle:t.labelStyle,!0,!0),_=I.getBBox();if(Gr(Ae())){let A=I.children[0],M=et(I);_=A.getBoundingClientRect(),M.attr("width",_.width),M.attr("height",_.height)}_.width>d&&(d=_.width),f+=_.height+n,w.push(I)}),f+=i,g){let R=(d-x.width)/2;et(v).attr("transform","translate( "+(-1*d/2+R)+", "+-1*f/2+")"),m=x.height+n}let S=(d-k.width)/2;return et(T).attr("transform","translate( "+(-1*d/2+S)+", "+(-1*f/2+m)+")"),m+=k.height+n,u.attr("class","divider").attr("x1",-d/2-r).attr("x2",d/2+r).attr("y1",-f/2-r+i+m).attr("y2",-f/2-r+i+m),m+=i,C.forEach(R=>{et(R).attr("transform","translate( "+-d/2+", "+(-1*f/2+m+i/2)+")");let L=R?.getBBox();m+=(L?.height??0)+n}),m+=i,h.attr("class","divider").attr("x1",-d/2-r).attr("x2",d/2+r).attr("y1",-f/2-r+i+m).attr("y2",-f/2-r+i+m),m+=i,w.forEach(R=>{et(R).attr("transform","translate( "+-d/2+", "+(-1*f/2+m)+")");let L=R?.getBBox();m+=(L?.height??0)+n}),l.attr("style",t.style).attr("class","outer title-state").attr("x",-d/2-r).attr("y",-(f/2)-r).attr("width",d+t.padding).attr("height",f+t.padding),mi(t,l),t.intersect=function(R){return ti.rect(t,R)},s},"class_box"),OOe={rhombus:NOe,composite:S7t,question:NOe,rect:k7t,labelRect:E7t,rectWithTitle:A7t,choice:p7t,circle:_7t,doublecircle:L7t,stadium:R7t,hexagon:m7t,block_arrow:g7t,rect_left_inv_arrow:y7t,lean_right:v7t,lean_left:x7t,trapezoid:b7t,inv_trapezoid:T7t,rect_right_inv_arrow:C7t,cylinder:w7t,start:I7t,end:M7t,note:DOe,subroutine:D7t,fork:POe,join:POe,class_box:N7t},rD={},Mj=o(async(e,t,r)=>{let n,i;if(t.link){let a;Ae().securityLevel==="sandbox"?a="_top":t.linkTarget&&(a=t.linkTarget||"_blank"),n=e.insert("svg:a").attr("xlink:href",t.link).attr("target",a),i=await OOe[t.shape](n,t,r)}else i=await OOe[t.shape](e,t,r),n=i;return t.tooltip&&i.attr("title",t.tooltip),t.class&&i.attr("class","node default "+t.class),rD[t.id]=n,t.haveCallback&&rD[t.id].attr("class",rD[t.id].attr("class")+" clickable"),n},"insertNode"),BOe=o(e=>{let t=rD[e.id];Z.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");let r=8,n=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+n-e.width/2)+", "+(e.y-e.height/2-r)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),n},"positionNode")});function FOe(e,t,r=!1){let n=e,i="default";(n?.classes?.length||0)>0&&(i=(n?.classes??[]).join(" ")),i=i+" flowchart-label";let a=0,s="",l;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",l=0;break;case"square":s="rect";break;case"diamond":s="question";break;case"hexagon":s="hexagon";break;case"block_arrow":s="block_arrow";break;case"odd":s="rect_left_inv_arrow";break;case"lean_right":s="lean_right";break;case"lean_left":s="lean_left";break;case"trapezoid":s="trapezoid";break;case"inv_trapezoid":s="inv_trapezoid";break;case"rect_left_inv_arrow":s="rect_left_inv_arrow";break;case"circle":s="circle";break;case"ellipse":s="ellipse";break;case"stadium":s="stadium";break;case"subroutine":s="subroutine";break;case"cylinder":s="cylinder";break;case"group":s="rect";break;case"doublecircle":s="doublecircle";break;default:s="rect"}let u=uP(n?.styles??[]),h=n.label,d=n.size??{width:0,height:0,x:0,y:0},f=t.getDiagramId();return{labelStyle:u.labelStyle,shape:s,labelText:h,rx:a,ry:a,class:i,style:u.style,id:n.id,domId:f?`${f}-${n.id}`:n.id,directions:n.directions,width:d.width,height:d.height,x:d.x,y:d.y,positioned:r,intersect:void 0,type:n.type,padding:l??_t()?.block?.padding??0,widthInColumns:n.widthInColumns??1}}async function P7t(e,t,r){let n=FOe(t,r,!1);if(n.type==="group")return;let i=_t(),a=await Mj(e,n,{config:i}),s=a.node().getBBox(),l=r.getBlock(n.id);l.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(l),a.remove()}async function O7t(e,t,r){let n=FOe(t,r,!0);if(r.getBlock(n.id).type!=="space"){let a=_t();await Mj(e,n,{config:a}),t.intersect=n?.intersect,BOe(n)}}async function Nj(e,t,r,n){for(let i of t)await n(e,i,r),i.children&&await Nj(e,i.children,r,n)}async function zOe(e,t,r){await Nj(e,t,r,P7t)}async function GOe(e,t,r){await Nj(e,t,r,O7t)}async function VOe(e,t,r,n,i){let a=new on({multigraph:!0,compound:!0});a.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let s of r)s.size&&a.setNode(s.id,{width:s.size.width,height:s.size.height,intersect:s.intersect});for(let s of t)if(s.start&&s.end){let l=n.getBlock(s.start),u=n.getBlock(s.end);if(l?.size&&u?.size){let h=l.size,d=u.size,f=[{x:h.x,y:h.y},{x:h.x+(d.x-h.x)/2,y:h.y+(d.y-h.y)/2},{x:d.x,y:d.y}],p=i?`${i}-${s.id}`:s.id,m=s.thickness==="thick"?"edge-thickness-thick":"edge-thickness-normal",g=s.pattern==="dotted"?"edge-pattern-dotted":"edge-pattern-solid",y=`${m} ${g} flowchart-link LS-a1 LE-b1`;gOe(e,{v:s.start,w:s.end,name:p},{...s,id:p,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:f,classes:y},void 0,"block",a,i),s.label&&(await pOe(e,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:f,classes:y}),mOe({...s,x:f[1].x,y:f[1].y},{originalPath:f}))}}}var WOe=F(()=>{"use strict";qo();ur();yOe();$Oe();Qt();o(FOe,"getNodeFromBlock");o(P7t,"calculateBlockSize");o(O7t,"insertBlockPositioned");o(Nj,"performOperations");o(zOe,"calculateBlockSizes");o(GOe,"insertBlocks");o(VOe,"insertEdges")});var B7t,$7t,qOe,HOe=F(()=>{"use strict";$r();ur();iOe();vt();$n();cOe();WOe();B7t=o(function(e,t){return t.db.getClasses()},"getClasses"),$7t=o(async function(e,t,r,n){let{securityLevel:i,block:a}=_t(),s=n.db;s.setDiagramId(t);let l;i==="sandbox"&&(l=et("#i"+t));let u=i==="sandbox"?et(l.nodes()[0].contentDocument.body):et("body"),h=i==="sandbox"?u.select(`[id="${t}"]`):et(`[id="${t}"]`);nOe(h,["point","circle","cross"],n.type,t);let f=s.getBlocks(),p=s.getBlocksFlat(),m=s.getEdges(),g=h.insert("g").attr("class","block");await zOe(g,f,s);let y=lOe(s);if(await GOe(g,f,s),await VOe(g,m,p,s,t),y){let v=y,x=Math.max(1,Math.round(.125*(v.width/v.height))),b=v.height+x+10,T=v.width+10,{useMaxWidth:k}=a;Wr(h,b,T,!!k),Z.debug("Here Bounds",y,v),h.attr("viewBox",`${v.x-5} ${v.y-5} ${v.width+10} ${v.height+10}`)}},"draw"),qOe={draw:$7t,getClasses:B7t}});var UOe={};ir(UOe,{diagram:()=>F7t});var F7t,YOe=F(()=>{"use strict";YPe();eOe();rOe();HOe();F7t={parser:UPe,db:JPe,renderer:qOe,styles:tOe}});function H7t(e){return e.some(t=>JOe.test(t))}function U7t(e){for(let t of e){let r=e9e.exec(t);if(r?.index&&r.index>0)return r.index}return 4}function t9e(e,t){return e.replace(/\bline\s+(\d+)\b/gi,(r,n)=>{let i=parseInt(n,10),a=t.get(i);return a?`line ${a}`:r})}function r9e(e){let t=e.split(` +`),r=new Map,n=-1;for(let[u,h]of t.entries())if(h.trim()==="treeView-beta"){n=u;break}if(n===-1)return{text:e,lineMap:r};let i=[];for(let u=n+1;u{"use strict";JOe=/[─━│┃└┗├┣]/,e9e=/[└┗├┣]/,W7t=/[─━]/,KOe=/^[\s│┃]+$/,ZOe=/^\s*(title[\t ]|accTitle[\t ]*:|accDescr[\t ]*[:{])/,QOe=/^\s*%%/,q7t=" ";o(H7t,"isBoxDrawingFormat");o(U7t,"inferSegmentWidth");o(t9e,"remapErrorLines");o(r9e,"preprocessBoxDrawing")});var Uu,Y7t,j7t,X7t,K7t,Z7t,Q7t,J7t,Zw,Pj=F(()=>{"use strict";ur();Wi();Qt();J_();Nn();Uu=new Cp(()=>({cnt:1,stack:[{id:0,level:-1,name:"/",nodeType:"directory",children:[]}]})),Y7t=o(()=>{Uu.reset(),yr()},"clear"),j7t=o(()=>Uu.records.stack[0],"getRoot"),X7t=o(()=>Uu.records.cnt,"getCount"),K7t=cr.treeView,Z7t=o(()=>qr(K7t,_t().treeView),"getConfig"),Q7t=o((e,t,r,n,i,a)=>{for(;e<=Uu.records.stack[Uu.records.stack.length-1].level;)Uu.records.stack.pop();let s={id:Uu.records.cnt++,level:e,name:t,nodeType:r,icon:i,cssClass:n,description:a,children:[]};Uu.records.stack[Uu.records.stack.length-1].children.push(s),Uu.records.stack.push(s)},"addNode"),J7t={clear:Y7t,addNode:Q7t,getRoot:j7t,getCount:X7t,getConfig:Z7t,getAccTitle:Ar,getAccDescription:_r,getDiagramTitle:Lr,setAccDescription:Rr,setAccTitle:kr,setDiagramTitle:Or},Zw=J7t});var e8t,i9e,a9e=F(()=>{"use strict";Xa();ur();vt();Vr();Hs();n9e();Pj();e8t=o(e=>{Gn(e,Zw);for(let t of e.nodes){let r=typeof t.indent=="number"?t.indent:0,n=t.name,i=n.endsWith("/");i&&(n=n.slice(0,-1));let a=i?"directory":"file",s=t.classAnnotation||void 0,l=t.iconAnnotation,u=l!==void 0?l||"none":void 0,h=t.descAnnotation||void 0,d=h?mr(h,_t()):void 0;Zw.addNode(r,n,a,s,u,d)}},"populate"),i9e={parse:o(async e=>{let{text:t,lineMap:r}=r9e(e);try{let n=await Si("treeView",t);Z.debug(n),e8t(n)}catch(n){throw r.size>0&&n instanceof Error&&(n.message=t9e(n.message,r)),n}},"parse")}});function t8t(e,t){let r=t?.filenameIcons?.[e];if(r)return r;let n=e.lastIndexOf(".");if(n>0){let i=e.substring(n).toLowerCase(),a=t?.extensionIcons;return a?.[i]??a?.[i.slice(1)]}}function s9e(e,t){return e.includes(":")?e:e in px.icons||!t?`${px.prefix}:${e}`:`${t}:${e}`}function Oj(e,t){if(e.icon!=="none"){if(e.icon)return s9e(e.icon,t.defaultIconPack);if(t.showIcons){if(e.nodeType==="file"){let r=t8t(e.name,t);if(r==="none")return;if(r)return s9e(r,t.defaultIconPack)}return`${px.prefix}:${e.nodeType==="directory"?"folder":"file"}`}}}var px,o9e=F(()=>{"use strict";px={prefix:"mermaid-treeview",height:24,width:24,icons:{folder:{body:''},file:{body:''}}};o(t8t,"detectIcon");o(s9e,"qualifyIcon");o(Oj,"getNodeIcon")});var Bj,r8t,n8t,c9e,i8t,a8t,l9e,s8t,o8t,l8t,u9e,h9e=F(()=>{"use strict";vt();Vl();Ka();$n();o9e();ty([{name:px.prefix,icons:px}]);Bj=14,r8t=4,n8t=16,c9e=o((e,t)=>`tv-icon-${e}-${t.replace(/[^\w-]/g,"-")}`,"iconSymbolId"),i8t=o(async(e,t,r,n)=>{let i=new Set,a=o(u=>{let h=Oj(u,r);h&&i.add(h),u.children.forEach(a)},"collect");if(a(t),i.size===0)return;let s=await Promise.all([...i].map(async u=>({icon:u,svg:await ts(u,{height:Bj,width:Bj})}))),l=e.append("defs");for(let{icon:u,svg:h}of s)l.append("g").attr("id",c9e(n,u)).html(h)},"injectIconDefs"),a8t=o((e,t,r,n,i,a)=>{let s=n.append("g"),l="treeView-node-label";r.nodeType==="directory"&&(l+=" treeView-node-dir"),r.cssClass&&(l+=` ${r.cssClass}`);let u=Bj+r8t,h=Oj(r,i),d=h!==void 0;h&&s.append("use").attr("xlink:href",`#${c9e(a,h)}`).attr("x",e+i.paddingX).attr("y",t+i.paddingY).attr("class","treeView-node-icon");let f=s.append("text").text(r.name).attr("dominant-baseline","middle").attr("class",l),{height:p,width:m}=f.node().getBBox(),g=p+i.paddingY*2,y=e+i.paddingX+(d?u:0);f.attr("x",y),f.attr("y",t+g/2);let v=y+m,x=m+i.paddingX*2+(d?u:0);return r.BBox={x:e,y:t,width:x,height:g},r.cssClass?.split(/\s+/).includes("highlight")&&s.insert("rect",":first-child").attr("x",e).attr("y",t+1).attr("width",0).attr("height",g-2).attr("rx",3).attr("class","treeView-highlight-bg"),{node:r,nodeGroup:s,labelRightEdge:v,centerY:t+g/2}},"positionLabel"),l9e=o((e,t,r,n,i,a)=>e.append("line").attr("x1",t).attr("y1",r).attr("x2",n).attr("y2",i).attr("stroke-width",a).attr("class","treeView-node-line"),"positionLine"),s8t=o((e,t,r,n)=>{let i=0,a=0,s=[],l=o((d,f,p,m)=>{let g=m*(p.rowIndent+p.paddingX),y=a8t(g,i,f,d,p,n);s.push(y);let{height:v,width:x}=f.BBox;l9e(d,g-p.rowIndent,i+v/2,g,i+v/2,p.lineThickness),a=Math.max(a,g+x),i+=v},"drawNode"),u=o((d,f=0)=>{l(e,d,r,f),d.children.forEach(y=>{u(y,f+1)});let{x:p,y:m,height:g}=d.BBox;if(d.children.length){let{y,height:v}=d.children[d.children.length-1].BBox;l9e(e,p+r.paddingX,m+g,p+r.paddingX,y+v/2+r.lineThickness/2,r.lineThickness)}},"processNode");u(t);let h=s.filter(d=>d.node.description);if(h.length>0){let f=Math.max(...s.map(p=>p.labelRightEdge))+n8t;for(let p of h){let g=p.nodeGroup.append("text").text(p.node.description).attr("dominant-baseline","middle").attr("class","treeView-node-description").attr("x",f).attr("y",p.centerY).node().getBBox();a=Math.max(a,f+g.width+r.paddingX)}}for(let d of s)if(d.node.cssClass?.split(/\s+/).includes("highlight")){let f=d.nodeGroup.select(".treeView-highlight-bg");if(!f.empty()){let p=a-d.node.BBox.x+8;f.attr("width",p),a=Math.max(a,d.node.BBox.x+p+2)}}return{totalHeight:i,totalWidth:a}},"drawTree"),o8t=o(async(e,t,r,n)=>{Z.debug(`Rendering treeView diagram +`+e);let i=n.db,a=i.getRoot(),s=i.getConfig(),l=xn(t);await i8t(l,a,s,t);let u=l.append("g");u.attr("class","tree-view");let{totalHeight:h,totalWidth:d}=s8t(u,a,s,t);l.attr("viewBox",`-${s.lineThickness/2} 0 ${d} ${h}`),Wr(l,h,d,s.useMaxWidth)},"draw"),l8t={draw:o8t},u9e=l8t});var c8t,u8t,d9e,f9e=F(()=>{"use strict";Qt();c8t={labelFontSize:"16px",labelColor:"black",lineColor:"black",iconColor:"#546e7a",descriptionColor:"#6a9955",highlightBg:"rgba(255, 193, 7, 0.15)",highlightStroke:"#ffc107"},u8t=o(({treeView:e})=>{let{labelFontSize:t,labelColor:r,lineColor:n,iconColor:i,descriptionColor:a,highlightBg:s,highlightStroke:l}=qr(c8t,e);return` + .treeView-node-label { + font-size: ${t}; + fill: ${r}; + white-space: pre; + } + .treeView-node-dir { + font-weight: bold; + } + .treeView-node-line { + stroke: ${n}; + } + .treeView-node-icon { + color: ${i}; + } + .treeView-node-description { + font-size: ${t}; + fill: ${a}; + font-style: italic; + white-space: pre; + } + .treeView-highlight-bg { + fill: ${s}; + stroke: ${l}; + stroke-width: 1; + } + `},"styles"),d9e=u8t});var p9e={};ir(p9e,{diagram:()=>h8t});var h8t,m9e=F(()=>{"use strict";a9e();Pj();h9e();f9e();h8t={db:Zw,renderer:u9e,parser:i9e,styles:d9e}});var $j,Fj,Qw,v9e,zj,ms,Yu,Jw,x9e,m8t,ek,b9e,T9e,C9e,w9e,k9e,nD,Dp,iD=F(()=>{"use strict";$j={L:"left",R:"right",T:"top",B:"bottom"},Fj={L:o(e=>`${e},${e/2} 0,${e} 0,0`,"L"),R:o(e=>`0,${e/2} ${e},0 ${e},${e}`,"R"),T:o(e=>`0,0 ${e},0 ${e/2},${e}`,"T"),B:o(e=>`${e/2},0 ${e},${e} 0,${e}`,"B")},Qw={L:o((e,t)=>e-t+2,"L"),R:o((e,t)=>e-2,"R"),T:o((e,t)=>e-t+2,"T"),B:o((e,t)=>e-2,"B")},v9e=o(function(e){return ms(e)?e==="L"?"R":"L":e==="T"?"B":"T"},"getOppositeArchitectureDirection"),zj=o(function(e){let t=e;return t==="L"||t==="R"||t==="T"||t==="B"},"isArchitectureDirection"),ms=o(function(e){let t=e;return t==="L"||t==="R"},"isArchitectureDirectionX"),Yu=o(function(e){let t=e;return t==="T"||t==="B"},"isArchitectureDirectionY"),Jw=o(function(e,t){let r=ms(e)&&Yu(t),n=Yu(e)&&ms(t);return r||n},"isArchitectureDirectionXY"),x9e=o(function(e){let t=e[0],r=e[1],n=ms(t)&&Yu(r),i=Yu(t)&&ms(r);return n||i},"isArchitecturePairXY"),m8t=o(function(e){return e!=="LL"&&e!=="RR"&&e!=="TT"&&e!=="BB"},"isValidArchitectureDirectionPair"),ek=o(function(e,t){let r=`${e}${t}`;return m8t(r)?r:void 0},"getArchitectureDirectionPair"),b9e=o(function([e,t],r){let n=r[0],i=r[1];return ms(n)?Yu(i)?[e+(n==="L"?-1:1),t+(i==="T"?1:-1)]:[e+(n==="L"?-1:1),t]:ms(i)?[e+(i==="L"?1:-1),t+(n==="T"?1:-1)]:[e,t+(n==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),T9e=o(function(e){return e==="LT"||e==="TL"?[1,1]:e==="BL"||e==="LB"?[1,-1]:e==="BR"||e==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),C9e=o(function(e,t){return Jw(e,t)?"bend":ms(e)?"horizontal":"vertical"},"getArchitectureDirectionAlignment"),w9e=o(function(e){return e.type==="service"},"isArchitectureService"),k9e=o(function(e){return e.type==="junction"},"isArchitectureJunction"),nD=o(e=>e.data(),"edgeData"),Dp=o(e=>e.data(),"nodeData")});var g8t,mx,Gj=F(()=>{"use strict";ur();Wi();Qt();Nn();iD();g8t=cr.architecture,mx=class{constructor(){this.nodes={};this.groups={};this.edges=[];this.layoutHints=[];this.registeredIds={};this.elements={};this.diagramId="";this.setAccTitle=kr;this.getAccTitle=Ar;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getAccDescription=_r;this.setAccDescription=Rr;this.clear()}static{o(this,"ArchitectureDB")}setDiagramId(t){this.diagramId=t}getDiagramId(){return this.diagramId}clear(){this.nodes={},this.groups={},this.edges=[],this.layoutHints=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},this.diagramId="",yr()}addService({id:t,icon:r,in:n,title:i,iconText:a}){if(this.registeredIds[t]!==void 0)throw new Error(`The service id [${t}] is already in use by another ${this.registeredIds[t]}`);if(n!==void 0){if(t===n)throw new Error(`The service [${t}] cannot be placed within itself`);if(this.registeredIds[n]===void 0)throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if(this.registeredIds[n]==="node")throw new Error(`The service [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"service",icon:r,iconText:a,title:i,edges:[],in:n}}getServices(){return Object.values(this.nodes).filter(w9e)}addJunction({id:t,in:r}){if(this.registeredIds[t]!==void 0)throw new Error(`The junction id [${t}] is already in use by another ${this.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The junction [${t}] cannot be placed within itself`);if(this.registeredIds[r]===void 0)throw new Error(`The junction [${t}]'s parent does not exist. Please make sure the parent is created before this junction`);if(this.registeredIds[r]==="node")throw new Error(`The junction [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"junction",edges:[],in:r}}getJunctions(){return Object.values(this.nodes).filter(k9e)}getNodes(){return Object.values(this.nodes)}getNode(t){return this.nodes[t]??null}addGroup({id:t,icon:r,in:n,title:i}){if(this.registeredIds?.[t]!==void 0)throw new Error(`The group id [${t}] is already in use by another ${this.registeredIds[t]}`);if(n!==void 0){if(t===n)throw new Error(`The group [${t}] cannot be placed within itself`);if(this.registeredIds?.[n]===void 0)throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if(this.registeredIds?.[n]==="node")throw new Error(`The group [${t}]'s parent is not a group`)}this.registeredIds[t]="group",this.groups[t]={id:t,icon:r,title:i,in:n}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:t,rhsId:r,lhsDir:n,rhsDir:i,lhsInto:a,rhsInto:s,lhsGroup:l,rhsGroup:u,title:h}){if(!zj(n))throw new Error(`Invalid direction given for left hand side of edge ${t}--${r}. Expected (L,R,T,B) got ${String(n)}`);if(!zj(i))throw new Error(`Invalid direction given for right hand side of edge ${t}--${r}. Expected (L,R,T,B) got ${String(i)}`);if(this.nodes[t]===void 0&&this.groups[t]===void 0)throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(this.nodes[r]===void 0&&this.groups[r]===void 0)throw new Error(`The right-hand id [${r}] does not yet exist. Please create the service/group before declaring an edge to it.`);let d=this.nodes[t].in,f=this.nodes[r].in;if(l&&d&&f&&d==f)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(u&&d&&f&&d==f)throw new Error(`The right-hand id [${r}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let p={lhsId:t,lhsDir:n,lhsInto:a,lhsGroup:l,rhsId:r,rhsDir:i,rhsInto:s,rhsGroup:u,title:h};this.edges.push(p),this.nodes[t]&&this.nodes[r]&&(this.nodes[t].edges.push(this.edges[this.edges.length-1]),this.nodes[r].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}addLayoutHint(t){if(t.members.length<2)throw new Error(`An align directive requires at least two members; got ${t.members.length}`);let r=new Set;t.members.forEach(n=>{if(this.registeredIds[n]!=="node")throw new Error(`align ${t.direction} references [${n}], which is not a service or junction`);if(r.has(n))throw new Error(`align ${t.direction} lists [${n}] more than once`);r.add(n)}),this.layoutHints.push(t)}getLayoutHints(){return this.layoutHints}getDataStructures(){if(this.dataStructures===void 0){let t={},r=Object.entries(this.nodes).reduce((u,[h,d])=>(u[h]=d.edges.reduce((f,p)=>{let m=this.getNode(p.lhsId)?.in,g=this.getNode(p.rhsId)?.in;if(m&&g&&m!==g){let y=C9e(p.lhsDir,p.rhsDir);y!=="bend"&&(t[m]??={},t[m][g]=y,t[g]??={},t[g][m]=y)}if(p.lhsId===h){let y=ek(p.lhsDir,p.rhsDir);y&&(f[y]=p.rhsId)}else{let y=ek(p.rhsDir,p.lhsDir);y&&(f[y]=p.lhsId)}return f},{}),u),{}),n=Object.keys(r)[0],i={[n]:1},a=Object.keys(r).reduce((u,h)=>h===n?u:{...u,[h]:1},{}),s=o(u=>{let h={[u]:[0,0]},d=[u];for(;d.length>0;){let f=d.shift();if(f){i[f]=1,delete a[f];let p=r[f],[m,g]=h[f];Object.entries(p).forEach(([y,v])=>{i[v]||(h[v]=b9e([m,g],y),d.push(v))})}}return h},"BFS"),l=[s(n)];for(;Object.keys(a).length>0;)l.push(s(Object.keys(a)[0]));this.dataStructures={adjList:r,spatialMaps:l,groupAlignments:t}}return this.dataStructures}setElementForId(t,r){this.elements[t]=r}getElementById(t){return this.elements[t]}getConfig(){return qr({...g8t,..._t().architecture})}getConfigField(t){return this.getConfig()[t]}}});var y8t,Vj,S9e=F(()=>{"use strict";Xa();vt();Hs();Gj();y8t=o((e,t)=>{Gn(e,t),e.groups.map(r=>t.addGroup(r)),e.services.map(r=>t.addService({...r,type:"service"})),e.junctions.map(r=>t.addJunction({...r,type:"junction"})),e.edges.map(r=>t.addEdge(r)),e.alignments?.map(r=>t.addLayoutHint({direction:r.direction,members:[...r.members]}))},"populateDb"),Vj={parser:{yy:void 0},parse:o(async e=>{let t=await Si("architecture",e);Z.debug(t);let r=Vj.parser?.yy;if(!(r instanceof mx))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");y8t(t,r)},"parse")}});var v8t,E9e,A9e=F(()=>{"use strict";v8t=o(e=>` + .edge { + stroke-width: ${e.archEdgeWidth}; + stroke: ${e.archEdgeColor}; + fill: none; + } + + .arrow { + fill: ${e.archEdgeArrowColor}; + } + + .node-bkg { + fill: none; + stroke: ${e.archGroupBorderColor}; + stroke-width: ${e.archGroupBorderWidth}; + stroke-dasharray: 8; + } + .node-icon-text { + display: flex; + align-items: center; + } + + .node-icon-text > div { + color: #fff; + margin: 1px; + height: fit-content; + text-align: center; + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + } +`,"getStyles"),E9e=v8t});var qj=Io((tk,Wj)=>{"use strict";o((function(t,r){typeof tk=="object"&&typeof Wj=="object"?Wj.exports=r():typeof define=="function"&&define.amd?define([],r):typeof tk=="object"?tk.layoutBase=r():t.layoutBase=r()}),"webpackUniversalModuleDefinition")(tk,function(){return(function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return o(r,"__webpack_require__"),r.m=e,r.c=t,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?o(function(){return n.default},"getDefault"):o(function(){return n},"getModuleExports");return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=28)})([(function(e,t,r){"use strict";function n(){}o(n,"LayoutConstants"),n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(u,h,d){n.call(this,d),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=d,this.bendpoints=[],this.source=u,this.target=h}o(s,"LEdge"),s.prototype=Object.create(n.prototype);for(var l in n)s[l]=n[l];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(u){if(this.source===u)return this.target;if(this.target===u)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(u,h){for(var d=this.getOtherEnd(u),f=h.getGraphManager().getRoot();;){if(d.getOwner()==h)return d;if(d.getOwner()==f)break;d=d.getOwner().getParent()}return null},s.prototype.updateLength=function(){var u=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),u),this.isOverlapingSourceAndTarget||(this.lengthX=u[0]-u[2],this.lengthY=u[1]-u[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},e.exports=s}),(function(e,t,r){"use strict";function n(i){this.vGraphObject=i}o(n,"LGraphObject"),e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),l=r(16),u=r(5);function h(f,p,m,g){m==null&&g==null&&(g=p),n.call(this,g),f.graphManager!=null&&(f=f.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=f,m!=null&&p!=null?this.rect=new a(p.x,p.y,m.width,m.height):this.rect=new a}o(h,"LNode"),h.prototype=Object.create(n.prototype);for(var d in n)h[d]=n[d];h.prototype.getEdges=function(){return this.edges},h.prototype.getChild=function(){return this.child},h.prototype.getOwner=function(){return this.owner},h.prototype.getWidth=function(){return this.rect.width},h.prototype.setWidth=function(f){this.rect.width=f},h.prototype.getHeight=function(){return this.rect.height},h.prototype.setHeight=function(f){this.rect.height=f},h.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},h.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},h.prototype.getCenter=function(){return new u(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},h.prototype.getLocation=function(){return new u(this.rect.x,this.rect.y)},h.prototype.getRect=function(){return this.rect},h.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},h.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},h.prototype.setRect=function(f,p){this.rect.x=f.x,this.rect.y=f.y,this.rect.width=p.width,this.rect.height=p.height},h.prototype.setCenter=function(f,p){this.rect.x=f-this.rect.width/2,this.rect.y=p-this.rect.height/2},h.prototype.setLocation=function(f,p){this.rect.x=f,this.rect.y=p},h.prototype.moveBy=function(f,p){this.rect.x+=f,this.rect.y+=p},h.prototype.getEdgeListToNode=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(y.target==f){if(y.source!=g)throw"Incorrect edge source!";p.push(y)}}),p},h.prototype.getEdgesBetween=function(f){var p=[],m,g=this;return g.edges.forEach(function(y){if(!(y.source==g||y.target==g))throw"Incorrect edge source and/or target";(y.target==f||y.source==f)&&p.push(y)}),p},h.prototype.getNeighborsList=function(){var f=new Set,p=this;return p.edges.forEach(function(m){if(m.source==p)f.add(m.target);else{if(m.target!=p)throw"Incorrect incidency!";f.add(m.source)}}),f},h.prototype.withChildren=function(){var f=new Set,p,m;if(f.add(this),this.child!=null)for(var g=this.child.getNodes(),y=0;yp?(this.rect.x-=(this.labelWidth-p)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(p+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(m+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>m?(this.rect.y-=(this.labelHeight-m)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(m+this.labelHeight))}}},h.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},h.prototype.transform=function(f){var p=this.rect.x;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var m=this.rect.y;m>s.WORLD_BOUNDARY?m=s.WORLD_BOUNDARY:m<-s.WORLD_BOUNDARY&&(m=-s.WORLD_BOUNDARY);var g=new u(p,m),y=f.inverseTransformPoint(g);this.setLocation(y.x,y.y)},h.prototype.getLeft=function(){return this.rect.x},h.prototype.getRight=function(){return this.rect.x+this.rect.width},h.prototype.getTop=function(){return this.rect.y},h.prototype.getBottom=function(){return this.rect.y+this.rect.height},h.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},e.exports=h}),(function(e,t,r){"use strict";var n=r(0);function i(){}o(i,"FDLayoutConstants");for(var a in n)i[a]=n[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,e.exports=i}),(function(e,t,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}o(n,"PointD"),n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},e.exports=n}),(function(e,t,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(7),l=r(3),u=r(1),h=r(13),d=r(12),f=r(11);function p(g,y,v){n.call(this,v),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,y!=null&&y instanceof s?this.graphManager=y:y!=null&&y instanceof Layout&&(this.graphManager=y.graphManager)}o(p,"LGraph"),p.prototype=Object.create(n.prototype);for(var m in n)p[m]=n[m];p.prototype.getNodes=function(){return this.nodes},p.prototype.getEdges=function(){return this.edges},p.prototype.getGraphManager=function(){return this.graphManager},p.prototype.getParent=function(){return this.parent},p.prototype.getLeft=function(){return this.left},p.prototype.getRight=function(){return this.right},p.prototype.getTop=function(){return this.top},p.prototype.getBottom=function(){return this.bottom},p.prototype.isConnected=function(){return this.isConnected},p.prototype.add=function(g,y,v){if(y==null&&v==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(y)>-1&&this.getNodes().indexOf(v)>-1))throw"Source or target not in graph!";if(!(y.owner==v.owner&&y.owner==this))throw"Both owners must be this graph!";return y.owner!=v.owner?null:(b.source=y,b.target=v,b.isInterGraph=!1,this.getEdges().push(b),y.edges.push(b),v!=y&&v.edges.push(b),b)}},p.prototype.remove=function(g){var y=g;if(g instanceof l){if(y==null)throw"Node is null!";if(!(y.owner!=null&&y.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var v=y.edges.slice(),x,b=v.length,T=0;T-1&&w>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(C,1),x.target!=x.source&&x.target.edges.splice(w,1);var k=x.source.owner.getEdges().indexOf(x);if(k==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(k,1)}},p.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,y=i.MAX_VALUE,v,x,b,T=this.getNodes(),k=T.length,C=0;Cv&&(g=v),y>x&&(y=x)}return g==i.MAX_VALUE?null:(T[0].getParent().paddingLeft!=null?b=T[0].getParent().paddingLeft:b=this.margin,this.left=y-b,this.top=g-b,new d(this.left,this.top))},p.prototype.updateBounds=function(g){for(var y=i.MAX_VALUE,v=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,T,k,C,w,S,R=this.nodes,L=R.length,N=0;NT&&(y=T),vC&&(x=C),bT&&(y=T),vC&&(x=C),b=this.nodes.length){var L=0;v.forEach(function(N){N.owner==g&&L++}),L==this.nodes.length&&(this.isConnected=!0)}},e.exports=p}),(function(e,t,r){"use strict";var n,i=r(1);function a(s){n=r(6),this.layout=s,this.graphs=[],this.edges=[]}o(a,"LGraphManager"),a.prototype.addRoot=function(){var s=this.layout.newGraph(),l=this.layout.newNode(null),u=this.add(s,l);return this.setRootGraph(u),this.rootGraph},a.prototype.add=function(s,l,u,h,d){if(u==null&&h==null&&d==null){if(s==null)throw"Graph is null!";if(l==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(l.child!=null)throw"Already has a child!";return s.parent=l,l.child=s,s}else{d=u,h=l,u=s;var f=h.getOwner(),p=d.getOwner();if(!(f!=null&&f.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(p!=null&&p.getGraphManager()==this))throw"Target not in this graph mgr!";if(f==p)return u.isInterGraph=!1,f.add(u,h,d);if(u.isInterGraph=!0,u.source=h,u.target=d,this.edges.indexOf(u)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(u),!(u.source!=null&&u.target!=null))throw"Edge source and/or target is null!";if(!(u.source.edges.indexOf(u)==-1&&u.target.edges.indexOf(u)==-1))throw"Edge already in source and/or target incidency list!";return u.source.edges.push(u),u.target.edges.push(u),u}},a.prototype.remove=function(s){if(s instanceof n){var l=s;if(l.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(l==this.rootGraph||l.parent!=null&&l.parent.graphManager==this))throw"Invalid parent node!";var u=[];u=u.concat(l.getEdges());for(var h,d=u.length,f=0;f=s.getRight()?l[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(l[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?l[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(l[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var d=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(d=1);var f=d*l[0],p=l[1]/d;l[0]f)return l[0]=u,l[1]=m,l[2]=d,l[3]=R,!1;if(hd)return l[0]=p,l[1]=h,l[2]=w,l[3]=f,!1;if(ud?(l[0]=y,l[1]=v,_=!0):(l[0]=g,l[1]=m,_=!0):M===P&&(u>d?(l[0]=p,l[1]=m,_=!0):(l[0]=x,l[1]=v,_=!0)),-D===P?d>u?(l[2]=S,l[3]=R,A=!0):(l[2]=w,l[3]=C,A=!0):D===P&&(d>u?(l[2]=k,l[3]=C,A=!0):(l[2]=L,l[3]=R,A=!0)),_&&A)return!1;if(u>d?h>f?(B=this.getCardinalDirection(M,P,4),O=this.getCardinalDirection(D,P,2)):(B=this.getCardinalDirection(-M,P,3),O=this.getCardinalDirection(-D,P,1)):h>f?(B=this.getCardinalDirection(-M,P,1),O=this.getCardinalDirection(-D,P,3)):(B=this.getCardinalDirection(M,P,2),O=this.getCardinalDirection(D,P,4)),!_)switch(B){case 1:V=m,$=u+-T/P,l[0]=$,l[1]=V;break;case 2:$=x,V=h+b*P,l[0]=$,l[1]=V;break;case 3:V=v,$=u+T/P,l[0]=$,l[1]=V;break;case 4:$=y,V=h+-b*P,l[0]=$,l[1]=V;break}if(!A)switch(O){case 1:z=C,G=d+-I/P,l[2]=G,l[3]=z;break;case 2:G=L,z=f+N*P,l[2]=G,l[3]=z;break;case 3:z=R,G=d+I/P,l[2]=G,l[3]=z;break;case 4:G=S,z=f+-N*P,l[2]=G,l[3]=z;break}}return!1},i.getCardinalDirection=function(a,s,l){return a>s?l:1+l%4},i.getIntersection=function(a,s,l,u){if(u==null)return this.getIntersection2(a,s,l);var h=a.x,d=a.y,f=s.x,p=s.y,m=l.x,g=l.y,y=u.x,v=u.y,x=void 0,b=void 0,T=void 0,k=void 0,C=void 0,w=void 0,S=void 0,R=void 0,L=void 0;return T=p-d,C=h-f,S=f*d-h*p,k=v-g,w=m-y,R=y*g-m*v,L=T*w-k*C,L===0?null:(x=(C*R-w*S)/L,b=(k*S-T*R)/L,new n(x,b))},i.angleOfVector=function(a,s,l,u){var h=void 0;return a!==l?(h=Math.atan((u-s)/(l-a)),l=0){var v=(-m+Math.sqrt(m*m-4*p*g))/(2*p),x=(-m-Math.sqrt(m*m-4*p*g))/(2*p),b=null;return v>=0&&v<=1?[v]:x>=0&&x<=1?[x]:b}else return null},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,e.exports=i}),(function(e,t,r){"use strict";function n(){}o(n,"IMath"),n.sign=function(i){return i>0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},e.exports=n}),(function(e,t,r){"use strict";function n(){}o(n,"Integer"),n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,e.exports=n}),(function(e,t,r){"use strict";var n=(function(){function h(d,f){for(var p=0;p"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},e.exports=i}),(function(e,t,r){"use strict";function n(m){if(Array.isArray(m)){for(var g=0,y=Array(m.length);g0&&g;){for(T.push(C[0]);T.length>0&&g;){var w=T[0];T.splice(0,1),b.add(w);for(var S=w.getEdges(),x=0;x-1&&C.splice(I,1)}b=new Set,k=new Map}}return m},p.prototype.createDummyNodesForBendpoints=function(m){for(var g=[],y=m.source,v=this.graphManager.calcLowestCommonAncestor(m.source,m.target),x=0;x0){for(var v=this.edgeToDummyNodes.get(y),x=0;x=0&&g.splice(R,1);var L=k.getNeighborsList();L.forEach(function(_){if(y.indexOf(_)<0){var A=v.get(_),M=A-1;M==1&&w.push(_),v.set(_,M)}})}y=y.concat(w),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},p.prototype.setGraphManager=function(m){this.graphManager=m},e.exports=p}),(function(e,t,r){"use strict";function n(){}o(n,"RandomSeed"),n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},e.exports=n}),(function(e,t,r){"use strict";var n=r(5);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}o(i,"Transform"),i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,l=this.lworldExtX;return l!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/l),s},i.prototype.transformY=function(a){var s=0,l=this.lworldExtY;return l!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/l),s},i.prototype.inverseTransformX=function(a){var s=0,l=this.ldeviceExtX;return l!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/l),s},i.prototype.inverseTransformY=function(a){var s=0,l=this.ldeviceExtY;return l!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/l),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},e.exports=i}),(function(e,t,r){"use strict";function n(f){if(Array.isArray(f)){for(var p=0,m=Array(f.length);pa.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(f>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var f=this.getAllEdges(),p,m=0;m0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,m,g,y,v,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&f&&this.updateGrid(),b=new Set,m=0;mT||b>T)&&(f.gravitationForceX=-this.gravityConstant*y,f.gravitationForceY=-this.gravityConstant*v)):(T=p.getEstimatedSize()*this.compoundGravityRangeFactor,(x>T||b>T)&&(f.gravitationForceX=-this.gravityConstant*y*this.compoundGravityConstant,f.gravitationForceY=-this.gravityConstant*v*this.compoundGravityConstant))},h.prototype.isConverged=function(){var f,p=!1;return this.totalIterations>this.maxIterations/3&&(p=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),f=this.totalDisplacement=x.length||T>=x[0].length)){for(var k=0;kh},"_defaultCompareFunction")}]),l})();e.exports=s}),(function(e,t,r){"use strict";function n(){}o(n,"SVD"),n.svd=function(i){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=i.length,this.n=i[0].length;var a=Math.min(this.m,this.n);this.s=(function(At){for(var bt=[];At-- >0;)bt.push(0);return bt})(Math.min(this.m+1,this.n)),this.U=(function(At){var bt=o(function me(lt){if(lt.length==0)return 0;for(var gt=[],Ze=0;Ze0;)bt.push(0);return bt})(this.n),l=(function(At){for(var bt=[];At-- >0;)bt.push(0);return bt})(this.m),u=!0,h=!0,d=Math.min(this.m-1,this.n),f=Math.max(0,Math.min(this.n-2,this.m)),p=0;p=0;P--)if(this.s[P]!==0){for(var B=P+1;B=0;H--){if((function(At,bt){return At&&bt})(H0;){var be=void 0,Pe=void 0;for(be=A-2;be>=-1&&be!==-1;be--)if(Math.abs(s[be])<=Re+ae*(Math.abs(this.s[be])+Math.abs(this.s[be+1]))){s[be]=0;break}if(be===A-2)Pe=4;else{var Ge=void 0;for(Ge=A-1;Ge>=be&&Ge!==be;Ge--){var Oe=(Ge!==A?Math.abs(s[Ge]):0)+(Ge!==be+1?Math.abs(s[Ge-1]):0);if(Math.abs(this.s[Ge])<=Re+ae*Oe){this.s[Ge]=0;break}}Ge===be?Pe=3:Ge===A-1?Pe=1:(Pe=2,be=Ge)}switch(be++,Pe){case 1:{var ue=s[A-2];s[A-2]=0;for(var ye=A-2;ye>=be;ye--){var ke=n.hypot(this.s[ye],ue),ce=this.s[ye]/ke,re=ue/ke;if(this.s[ye]=ke,ye!==be&&(ue=-re*s[ye-1],s[ye-1]=ce*s[ye-1]),h)for(var J=0;J=this.s[be+1]);){var ft=this.s[be];if(this.s[be]=this.s[be+1],this.s[be+1]=ft,h&&beMath.abs(a)?(s=a/i,s=Math.abs(i)*Math.sqrt(1+s*s)):a!=0?(s=i/a,s=Math.abs(a)*Math.sqrt(1+s*s)):s=0,s},e.exports=n}),(function(e,t,r){"use strict";var n=(function(){function s(l,u){for(var h=0;h2&&arguments[2]!==void 0?arguments[2]:1,d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,f=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=l,this.sequence2=u,this.match_score=h,this.mismatch_penalty=d,this.gap_penalty=f,this.iMax=l.length+1,this.jMax=u.length+1,this.grid=new Array(this.iMax);for(var p=0;p=0;l--){var u=this.listeners[l];u.event===a&&u.callback===s&&this.listeners.splice(l,1)}},i.emit=function(a,s){for(var l=0;l{"use strict";o((function(t,r){typeof rk=="object"&&typeof Hj=="object"?Hj.exports=r(qj()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof rk=="object"?rk.coseBase=r(qj()):t.coseBase=r(t.layoutBase)}),"webpackUniversalModuleDefinition")(rk,function(e){return(()=>{"use strict";var t={45:((a,s,l)=>{var u={};u.layoutBase=l(551),u.CoSEConstants=l(806),u.CoSEEdge=l(767),u.CoSEGraph=l(880),u.CoSEGraphManager=l(578),u.CoSELayout=l(765),u.CoSENode=l(991),u.ConstraintHandler=l(902),a.exports=u}),806:((a,s,l)=>{var u=l(551).FDLayoutConstants;function h(){}o(h,"CoSEConstants");for(var d in u)h[d]=u[d];h.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,h.DEFAULT_RADIAL_SEPARATION=u.DEFAULT_EDGE_LENGTH,h.DEFAULT_COMPONENT_SEPERATION=60,h.TILE=!0,h.TILING_PADDING_VERTICAL=10,h.TILING_PADDING_HORIZONTAL=10,h.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,h.ENFORCE_CONSTRAINTS=!0,h.APPLY_LAYOUT=!0,h.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,h.TREE_REDUCTION_ON_INCREMENTAL=!0,h.PURE_INCREMENTAL=h.DEFAULT_INCREMENTAL,a.exports=h}),767:((a,s,l)=>{var u=l(551).FDLayoutEdge;function h(f,p,m){u.call(this,f,p,m)}o(h,"CoSEEdge"),h.prototype=Object.create(u.prototype);for(var d in u)h[d]=u[d];a.exports=h}),880:((a,s,l)=>{var u=l(551).LGraph;function h(f,p,m){u.call(this,f,p,m)}o(h,"CoSEGraph"),h.prototype=Object.create(u.prototype);for(var d in u)h[d]=u[d];a.exports=h}),578:((a,s,l)=>{var u=l(551).LGraphManager;function h(f){u.call(this,f)}o(h,"CoSEGraphManager"),h.prototype=Object.create(u.prototype);for(var d in u)h[d]=u[d];a.exports=h}),765:((a,s,l)=>{var u=l(551).FDLayout,h=l(578),d=l(880),f=l(991),p=l(767),m=l(806),g=l(902),y=l(551).FDLayoutConstants,v=l(551).LayoutConstants,x=l(551).Point,b=l(551).PointD,T=l(551).DimensionD,k=l(551).Layout,C=l(551).Integer,w=l(551).IGeometry,S=l(551).LGraph,R=l(551).Transform,L=l(551).LinkedList;function N(){u.call(this),this.toBeTiled={},this.constraints={}}o(N,"CoSELayout"),N.prototype=Object.create(u.prototype);for(var I in u)N[I]=u[I];N.prototype.newGraphManager=function(){var _=new h(this);return this.graphManager=_,_},N.prototype.newGraph=function(_){return new d(null,this.graphManager,_)},N.prototype.newNode=function(_){return new f(this.graphManager,_)},N.prototype.newEdge=function(_){return new p(null,null,_)},N.prototype.initParameters=function(){u.prototype.initParameters.call(this,arguments),this.isSubLayout||(m.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=m.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=m.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=y.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=y.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=y.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},N.prototype.initSpringEmbedder=function(){u.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/y.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},N.prototype.layout=function(){var _=v.DEFAULT_CREATE_BENDS_AS_NEEDED;return _&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},N.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(m.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var A=new Set(this.getAllNodes()),M=this.nodesWithGravity.filter(function(B){return A.has(B)});this.graphManager.setAllNodesToApplyGravitation(M)}}else{var _=this.getFlatForest();if(_.length>0)this.positionNodesRadially(_);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var A=new Set(this.getAllNodes()),M=this.nodesWithGravity.filter(function(D){return A.has(D)});this.graphManager.setAllNodesToApplyGravitation(M),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),m.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},N.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%y.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var _=new Set(this.getAllNodes()),A=this.nodesWithGravity.filter(function(P){return _.has(P)});this.graphManager.setAllNodesToApplyGravitation(A),this.graphManager.updateBounds(),this.updateGrid(),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),m.PURE_INCREMENTAL?this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=y.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var M=!this.isTreeGrowing&&!this.isGrowthFinished,D=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(M,D),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},N.prototype.getPositionsData=function(){for(var _=this.graphManager.getAllNodes(),A={},M=0;M<_.length;M++){var D=_[M].rect,P=_[M].id;A[P]={id:P,x:D.getCenterX(),y:D.getCenterY(),w:D.width,h:D.height}}return A},N.prototype.runSpringEmbedder=function(){this.initialAnimationPeriod=25,this.animationPeriod=this.initialAnimationPeriod;var _=!1;if(y.ANIMATE==="during")this.emit("layoutstarted");else{for(;!_;)_=this.tick();this.graphManager.updateBounds()}},N.prototype.moveNodes=function(){for(var _=this.getAllNodes(),A,M=0;M<_.length;M++)A=_[M],A.calculateDisplacement();Object.keys(this.constraints).length>0&&this.updateDisplacements();for(var M=0;M<_.length;M++)A=_[M],A.move()},N.prototype.initConstraintVariables=function(){var _=this;this.idToNodeMap=new Map,this.fixedNodeSet=new Set;for(var A=this.graphManager.getAllNodes(),M=0;M0&&(D.fixedNodeWeight=B)}}if(this.constraints.relativePlacementConstraint){var O=new Map,$=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(U){_.fixedNodesOnHorizontal.add(U),_.fixedNodesOnVertical.add(U)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var V=this.constraints.alignmentConstraint.vertical,M=0;M=2*U.length/3;le--)oe=Math.floor(Math.random()*(le+1)),te=U[le],U[le]=U[oe],U[oe]=te;return U},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(U){if(U.left){var oe=O.has(U.left)?O.get(U.left):U.left,te=O.has(U.right)?O.get(U.right):U.right;_.nodesInRelativeHorizontal.includes(oe)||(_.nodesInRelativeHorizontal.push(oe),_.nodeToRelativeConstraintMapHorizontal.set(oe,[]),_.dummyToNodeForVerticalAlignment.has(oe)?_.nodeToTempPositionMapHorizontal.set(oe,_.idToNodeMap.get(_.dummyToNodeForVerticalAlignment.get(oe)[0]).getCenterX()):_.nodeToTempPositionMapHorizontal.set(oe,_.idToNodeMap.get(oe).getCenterX())),_.nodesInRelativeHorizontal.includes(te)||(_.nodesInRelativeHorizontal.push(te),_.nodeToRelativeConstraintMapHorizontal.set(te,[]),_.dummyToNodeForVerticalAlignment.has(te)?_.nodeToTempPositionMapHorizontal.set(te,_.idToNodeMap.get(_.dummyToNodeForVerticalAlignment.get(te)[0]).getCenterX()):_.nodeToTempPositionMapHorizontal.set(te,_.idToNodeMap.get(te).getCenterX())),_.nodeToRelativeConstraintMapHorizontal.get(oe).push({right:te,gap:U.gap}),_.nodeToRelativeConstraintMapHorizontal.get(te).push({left:oe,gap:U.gap})}else{var le=$.has(U.top)?$.get(U.top):U.top,ie=$.has(U.bottom)?$.get(U.bottom):U.bottom;_.nodesInRelativeVertical.includes(le)||(_.nodesInRelativeVertical.push(le),_.nodeToRelativeConstraintMapVertical.set(le,[]),_.dummyToNodeForHorizontalAlignment.has(le)?_.nodeToTempPositionMapVertical.set(le,_.idToNodeMap.get(_.dummyToNodeForHorizontalAlignment.get(le)[0]).getCenterY()):_.nodeToTempPositionMapVertical.set(le,_.idToNodeMap.get(le).getCenterY())),_.nodesInRelativeVertical.includes(ie)||(_.nodesInRelativeVertical.push(ie),_.nodeToRelativeConstraintMapVertical.set(ie,[]),_.dummyToNodeForHorizontalAlignment.has(ie)?_.nodeToTempPositionMapVertical.set(ie,_.idToNodeMap.get(_.dummyToNodeForHorizontalAlignment.get(ie)[0]).getCenterY()):_.nodeToTempPositionMapVertical.set(ie,_.idToNodeMap.get(ie).getCenterY())),_.nodeToRelativeConstraintMapVertical.get(le).push({bottom:ie,gap:U.gap}),_.nodeToRelativeConstraintMapVertical.get(ie).push({top:le,gap:U.gap})}});else{var z=new Map,W=new Map;this.constraints.relativePlacementConstraint.forEach(function(U){if(U.left){var oe=O.has(U.left)?O.get(U.left):U.left,te=O.has(U.right)?O.get(U.right):U.right;z.has(oe)?z.get(oe).push(te):z.set(oe,[te]),z.has(te)?z.get(te).push(oe):z.set(te,[oe])}else{var le=$.has(U.top)?$.get(U.top):U.top,ie=$.has(U.bottom)?$.get(U.bottom):U.bottom;W.has(le)?W.get(le).push(ie):W.set(le,[ie]),W.has(ie)?W.get(ie).push(le):W.set(ie,[le])}});var H=o(function(oe,te){var le=[],ie=[],ae=new L,Re=new Set,be=0;return oe.forEach(function(Pe,Ge){if(!Re.has(Ge)){le[be]=[],ie[be]=!1;var Oe=Ge;for(ae.push(Oe),Re.add(Oe),le[be].push(Oe);ae.length!=0;){Oe=ae.shift(),te.has(Oe)&&(ie[be]=!0);var ue=oe.get(Oe);ue.forEach(function(ye){Re.has(ye)||(ae.push(ye),Re.add(ye),le[be].push(ye))})}be++}}),{components:le,isFixed:ie}},"constructComponents"),j=H(z,_.fixedNodesOnHorizontal);this.componentsOnHorizontal=j.components,this.fixedComponentsOnHorizontal=j.isFixed;var Q=H(W,_.fixedNodesOnVertical);this.componentsOnVertical=Q.components,this.fixedComponentsOnVertical=Q.isFixed}}},N.prototype.updateDisplacements=function(){var _=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(Q){var U=_.idToNodeMap.get(Q.nodeId);U.displacementX=0,U.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var A=this.constraints.alignmentConstraint.vertical,M=0;M1){var $;for($=0;$D&&(D=Math.floor(O.y)),B=Math.floor(O.x+m.DEFAULT_COMPONENT_SEPERATION)}this.transform(new b(v.WORLD_CENTER_X-O.x/2,v.WORLD_CENTER_Y-O.y/2))},N.radialLayout=function(_,A,M){var D=Math.max(this.maxDiagonalInTree(_),m.DEFAULT_RADIAL_SEPARATION);N.branchRadialLayout(A,null,0,359,0,D);var P=S.calculateBounds(_),B=new R;B.setDeviceOrgX(P.getMinX()),B.setDeviceOrgY(P.getMinY()),B.setWorldOrgX(M.x),B.setWorldOrgY(M.y);for(var O=0;O<_.length;O++){var $=_[O];$.transform(B)}var V=new b(P.getMaxX(),P.getMaxY());return B.inverseTransformPoint(V)},N.branchRadialLayout=function(_,A,M,D,P,B){var O=(D-M+1)/2;O<0&&(O+=180);var $=(O+M)%360,V=$*w.TWO_PI/360,G=Math.cos(V),z=P*Math.cos(V),W=P*Math.sin(V);_.setCenter(z,W);var H=[];H=H.concat(_.getEdges());var j=H.length;A!=null&&j--;for(var Q=0,U=H.length,oe,te=_.getEdgesBetween(A);te.length>1;){var le=te[0];te.splice(0,1);var ie=H.indexOf(le);ie>=0&&H.splice(ie,1),U--,j--}A!=null?oe=(H.indexOf(te[0])+1)%U:oe=0;for(var ae=Math.abs(D-M)/j,Re=oe;Q!=j;Re=++Re%U){var be=H[Re].getOtherEnd(_);if(be!=A){var Pe=(M+Q*ae)%360,Ge=(Pe+ae)%360;N.branchRadialLayout(be,_,Pe,Ge,P+B,B),Q++}}},N.maxDiagonalInTree=function(_){for(var A=C.MIN_VALUE,M=0;M<_.length;M++){var D=_[M],P=D.getDiagonal();P>A&&(A=P)}return A},N.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},N.prototype.groupZeroDegreeMembers=function(){var _=this,A={};this.memberGroups={},this.idToDummyNode={};for(var M=[],D=this.graphManager.getAllNodes(),P=0;P"u"&&(A[$]=[]),A[$]=A[$].concat(B)}Object.keys(A).forEach(function(V){if(A[V].length>1){var G="DummyCompound_"+V;_.memberGroups[G]=A[V];var z=A[V][0].getParent(),W=new f(_.graphManager);W.id=G,W.paddingLeft=z.paddingLeft||0,W.paddingRight=z.paddingRight||0,W.paddingBottom=z.paddingBottom||0,W.paddingTop=z.paddingTop||0,_.idToDummyNode[G]=W;var H=_.getGraphManager().add(_.newGraph(),W),j=z.getChild();j.add(W);for(var Q=0;QP?(D.rect.x-=(D.labelWidth-P)/2,D.setWidth(D.labelWidth),D.labelMarginLeft=(D.labelWidth-P)/2):D.labelPosHorizontal=="right"&&D.setWidth(P+D.labelWidth)),D.labelHeight&&(D.labelPosVertical=="top"?(D.rect.y-=D.labelHeight,D.setHeight(B+D.labelHeight),D.labelMarginTop=D.labelHeight):D.labelPosVertical=="center"&&D.labelHeight>B?(D.rect.y-=(D.labelHeight-B)/2,D.setHeight(D.labelHeight),D.labelMarginTop=(D.labelHeight-B)/2):D.labelPosVertical=="bottom"&&D.setHeight(B+D.labelHeight))}})},N.prototype.repopulateCompounds=function(){for(var _=this.compoundOrder.length-1;_>=0;_--){var A=this.compoundOrder[_],M=A.id,D=A.paddingLeft,P=A.paddingTop,B=A.labelMarginLeft,O=A.labelMarginTop;this.adjustLocations(this.tiledMemberPack[M],A.rect.x,A.rect.y,D,P,B,O)}},N.prototype.repopulateZeroDegreeMembers=function(){var _=this,A=this.tiledZeroDegreePack;Object.keys(A).forEach(function(M){var D=_.idToDummyNode[M],P=D.paddingLeft,B=D.paddingTop,O=D.labelMarginLeft,$=D.labelMarginTop;_.adjustLocations(A[M],D.rect.x,D.rect.y,P,B,O,$)})},N.prototype.getToBeTiled=function(_){var A=_.id;if(this.toBeTiled[A]!=null)return this.toBeTiled[A];var M=_.getChild();if(M==null)return this.toBeTiled[A]=!1,!1;for(var D=M.getNodes(),P=0;P0)return this.toBeTiled[A]=!1,!1;if(B.getChild()==null){this.toBeTiled[B.id]=!1;continue}if(!this.getToBeTiled(B))return this.toBeTiled[A]=!1,!1}return this.toBeTiled[A]=!0,!0},N.prototype.getNodeDegree=function(_){for(var A=_.id,M=_.getEdges(),D=0,P=0;Pz&&(z=H.rect.height)}M+=z+_.verticalPadding}},N.prototype.tileCompoundMembers=function(_,A){var M=this;this.tiledMemberPack=[],Object.keys(_).forEach(function(D){var P=A[D];if(M.tiledMemberPack[D]=M.tileNodes(_[D],P.paddingLeft+P.paddingRight),P.rect.width=M.tiledMemberPack[D].width,P.rect.height=M.tiledMemberPack[D].height,P.setCenter(M.tiledMemberPack[D].centerX,M.tiledMemberPack[D].centerY),P.labelMarginLeft=0,P.labelMarginTop=0,m.NODE_DIMENSIONS_INCLUDE_LABELS){var B=P.rect.width,O=P.rect.height;P.labelWidth&&(P.labelPosHorizontal=="left"?(P.rect.x-=P.labelWidth,P.setWidth(B+P.labelWidth),P.labelMarginLeft=P.labelWidth):P.labelPosHorizontal=="center"&&P.labelWidth>B?(P.rect.x-=(P.labelWidth-B)/2,P.setWidth(P.labelWidth),P.labelMarginLeft=(P.labelWidth-B)/2):P.labelPosHorizontal=="right"&&P.setWidth(B+P.labelWidth)),P.labelHeight&&(P.labelPosVertical=="top"?(P.rect.y-=P.labelHeight,P.setHeight(O+P.labelHeight),P.labelMarginTop=P.labelHeight):P.labelPosVertical=="center"&&P.labelHeight>O?(P.rect.y-=(P.labelHeight-O)/2,P.setHeight(P.labelHeight),P.labelMarginTop=(P.labelHeight-O)/2):P.labelPosVertical=="bottom"&&P.setHeight(O+P.labelHeight))}})},N.prototype.tileNodes=function(_,A){var M=this.tileNodesByFavoringDim(_,A,!0),D=this.tileNodesByFavoringDim(_,A,!1),P=this.getOrgRatio(M),B=this.getOrgRatio(D),O;return B$&&($=Q.getWidth())});var V=B/P,G=O/P,z=Math.pow(M-D,2)+4*(V+D)*(G+M)*P,W=(D-M+Math.sqrt(z))/(2*(V+D)),H;A?(H=Math.ceil(W),H==W&&H++):H=Math.floor(W);var j=H*(V+D)-D;return $>j&&(j=$),j+=D*2,j},N.prototype.tileNodesByFavoringDim=function(_,A,M){var D=m.TILING_PADDING_VERTICAL,P=m.TILING_PADDING_HORIZONTAL,B=m.TILING_COMPARE_BY,O={rows:[],rowWidth:[],rowHeight:[],width:0,height:A,verticalPadding:D,horizontalPadding:P,centerX:0,centerY:0};B&&(O.idealRowWidth=this.calcIdealRowWidth(_,M));var $=o(function(U){return U.rect.width*U.rect.height},"getNodeArea"),V=o(function(U,oe){return $(oe)-$(U)},"areaCompareFcn");_.sort(function(Q,U){var oe=V;return O.idealRowWidth?(oe=B,oe(Q.id,U.id)):oe(Q,U)});for(var G=0,z=0,W=0;W<_.length;W++){var H=_[W];G+=H.getCenterX(),z+=H.getCenterY()}O.centerX=G/_.length,O.centerY=z/_.length;for(var W=0;W<_.length;W++){var H=_[W];if(O.rows.length==0)this.insertNodeToRow(O,H,0,A);else if(this.canAddHorizontal(O,H.rect.width,H.rect.height)){var j=O.rows.length-1;O.idealRowWidth||(j=this.getShortestRowIndex(O)),this.insertNodeToRow(O,H,j,A)}else this.insertNodeToRow(O,H,O.rows.length,A);this.shiftToLastRow(O)}return O},N.prototype.insertNodeToRow=function(_,A,M,D){var P=D;if(M==_.rows.length){var B=[];_.rows.push(B),_.rowWidth.push(P),_.rowHeight.push(0)}var O=_.rowWidth[M]+A.rect.width;_.rows[M].length>0&&(O+=_.horizontalPadding),_.rowWidth[M]=O,_.width0&&($+=_.verticalPadding);var V=0;$>_.rowHeight[M]&&(V=_.rowHeight[M],_.rowHeight[M]=$,V=_.rowHeight[M]-V),_.height+=V,_.rows[M].push(A)},N.prototype.getShortestRowIndex=function(_){for(var A=-1,M=Number.MAX_VALUE,D=0;D<_.rows.length;D++)_.rowWidth[D]M&&(A=D,M=_.rowWidth[D]);return A},N.prototype.canAddHorizontal=function(_,A,M){if(_.idealRowWidth){var D=_.rows.length-1,P=_.rowWidth[D];return P+A+_.horizontalPadding<=_.idealRowWidth}var B=this.getShortestRowIndex(_);if(B<0)return!0;var O=_.rowWidth[B];if(O+_.horizontalPadding+A<=_.width)return!0;var $=0;_.rowHeight[B]0&&($=M+_.verticalPadding-_.rowHeight[B]);var V;_.width-O>=A+_.horizontalPadding?V=(_.height+$)/(O+A+_.horizontalPadding):V=(_.height+$)/_.width,$=M+_.verticalPadding;var G;return _.widthB&&A!=M){D.splice(-1,1),_.rows[M].push(P),_.rowWidth[A]=_.rowWidth[A]-B,_.rowWidth[M]=_.rowWidth[M]+B,_.width=_.rowWidth[instance.getLongestRowIndex(_)];for(var O=Number.MIN_VALUE,$=0;$O&&(O=D[$].height);A>0&&(O+=_.verticalPadding);var V=_.rowHeight[A]+_.rowHeight[M];_.rowHeight[A]=O,_.rowHeight[M]0)for(var j=P;j<=B;j++)H[0]+=this.grid[j][O-1].length+this.grid[j][O].length-1;if(B0)for(var j=O;j<=$;j++)H[3]+=this.grid[P-1][j].length+this.grid[P][j].length-1;for(var Q=C.MAX_VALUE,U,oe,te=0;te{var u=l(551).FDLayoutNode,h=l(551).IMath;function d(p,m,g,y){u.call(this,p,m,g,y)}o(d,"CoSENode"),d.prototype=Object.create(u.prototype);for(var f in u)d[f]=u[f];d.prototype.calculateDisplacement=function(){var p=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=p.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=p.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementX=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementX)),Math.abs(this.displacementY)>p.coolingFactor*p.maxNodeDisplacement&&(this.displacementY=p.coolingFactor*p.maxNodeDisplacement*h.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},d.prototype.propogateDisplacementToChildren=function(p,m){for(var g=this.getChild().getNodes(),y,v=0;v{function u(g){if(Array.isArray(g)){for(var y=0,v=Array(g.length);y0){var mt=0;xe.forEach(function(ft){he=="horizontal"?(Be.set(ft,x.has(ft)?b[x.get(ft)]:fe.get(ft)),mt+=Be.get(ft)):(Be.set(ft,x.has(ft)?T[x.get(ft)]:fe.get(ft)),mt+=Be.get(ft))}),mt=mt/xe.length,Ke.forEach(function(ft){X.has(ft)||Be.set(ft,mt)})}else{var Le=0;Ke.forEach(function(ft){he=="horizontal"?Le+=x.has(ft)?b[x.get(ft)]:fe.get(ft):Le+=x.has(ft)?T[x.get(ft)]:fe.get(ft)}),Le=Le/Ke.length,Ke.forEach(function(ft){Be.set(ft,Le)})}});for(var $e=o(function(){var xe=He.shift(),mt=q.get(xe);mt.forEach(function(Le){if(Be.get(Le.id)ft&&(ft=gt),Zewt&&(wt=Ze)}}catch(vr){St=!0,At=vr}finally{try{!zt&&bt.return&&bt.return()}finally{if(St)throw At}}var Ee=(mt+ft)/2-(Le+wt)/2,tt=!0,at=!1,ot=void 0;try{for(var Wt=Ke[Symbol.iterator](),Bt;!(tt=(Bt=Wt.next()).done);tt=!0){var qt=Bt.value;Be.set(qt,Be.get(qt)+Ee)}}catch(vr){at=!0,ot=vr}finally{try{!tt&&Wt.return&&Wt.return()}finally{if(at)throw ot}}})}return Be},"findAppropriatePositionForRelativePlacement"),I=o(function(q){var he=0,X=0,fe=0,K=0;if(q.forEach(function(Ne){Ne.left?b[x.get(Ne.left)]-b[x.get(Ne.right)]>=0?he++:X++:T[x.get(Ne.top)]-T[x.get(Ne.bottom)]>=0?fe++:K++}),he>X&&fe>K)for(var qe=0;qeX)for(var _e=0;_eK)for(var Be=0;Be1)y.fixedNodeConstraint.forEach(function(ne,q){D[q]=[ne.position.x,ne.position.y],P[q]=[b[x.get(ne.nodeId)],T[x.get(ne.nodeId)]]}),B=!0;else if(y.alignmentConstraint)(function(){var ne=0;if(y.alignmentConstraint.vertical){for(var q=y.alignmentConstraint.vertical,he=o(function(Be){var Ne=new Set;q[Be].forEach(function(Xe){Ne.add(Xe)});var He=new Set([].concat(u(Ne)).filter(function(Xe){return $.has(Xe)})),$e=void 0;He.size>0?$e=b[x.get(He.values().next().value)]:$e=L(Ne).x,q[Be].forEach(function(Xe){D[ne]=[$e,T[x.get(Xe)]],P[ne]=[b[x.get(Xe)],T[x.get(Xe)]],ne++})},"_loop2"),X=0;X0?$e=b[x.get(He.values().next().value)]:$e=L(Ne).y,fe[Be].forEach(function(Xe){D[ne]=[b[x.get(Xe)],$e],P[ne]=[b[x.get(Xe)],T[x.get(Xe)]],ne++})},"_loop3"),qe=0;qeW&&(W=z[j].length,H=j);if(W0){var ce={x:0,y:0};y.fixedNodeConstraint.forEach(function(ne,q){var he={x:b[x.get(ne.nodeId)],y:T[x.get(ne.nodeId)]},X=ne.position,fe=R(X,he);ce.x+=fe.x,ce.y+=fe.y}),ce.x/=y.fixedNodeConstraint.length,ce.y/=y.fixedNodeConstraint.length,b.forEach(function(ne,q){b[q]+=ce.x}),T.forEach(function(ne,q){T[q]+=ce.y}),y.fixedNodeConstraint.forEach(function(ne){b[x.get(ne.nodeId)]=ne.position.x,T[x.get(ne.nodeId)]=ne.position.y})}if(y.alignmentConstraint){if(y.alignmentConstraint.vertical)for(var re=y.alignmentConstraint.vertical,J=o(function(q){var he=new Set;re[q].forEach(function(K){he.add(K)});var X=new Set([].concat(u(he)).filter(function(K){return $.has(K)})),fe=void 0;X.size>0?fe=b[x.get(X.values().next().value)]:fe=L(he).x,he.forEach(function(K){$.has(K)||(b[x.get(K)]=fe)})},"_loop4"),se=0;se0?fe=T[x.get(X.values().next().value)]:fe=L(he).y,he.forEach(function(K){$.has(K)||(T[x.get(K)]=fe)})},"_loop5"),we=0;we{a.exports=e})},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return t[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(45);return i})()})});var R9e=Io((nk,Yj)=>{"use strict";o((function(t,r){typeof nk=="object"&&typeof Yj=="object"?Yj.exports=r(Uj()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof nk=="object"?nk.cytoscapeFcose=r(Uj()):t.cytoscapeFcose=r(t.coseBase)}),"webpackUniversalModuleDefinition")(nk,function(e){return(()=>{"use strict";var t={658:(a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(s){for(var l=arguments.length,u=Array(l>1?l-1:0),h=1;h{var u=(function(){function f(p,m){var g=[],y=!0,v=!1,x=void 0;try{for(var b=p[Symbol.iterator](),T;!(y=(T=b.next()).done)&&(g.push(T.value),!(m&&g.length===m));y=!0);}catch(k){v=!0,x=k}finally{try{!y&&b.return&&b.return()}finally{if(v)throw x}}return g}return o(f,"sliceIterator"),function(p,m){if(Array.isArray(p))return p;if(Symbol.iterator in Object(p))return f(p,m);throw new TypeError("Invalid attempt to destructure non-iterable instance")}})(),h=l(140).layoutBase.LinkedList,d={};d.getTopMostNodes=function(f){for(var p={},m=0;m0&&B.merge(G)});for(var O=0;O1){T=x[0],k=T.connectedEdges().length,x.forEach(function(P){P.connectedEdges().length0&&g.set("dummy"+(g.size+1),S),R},d.relocateComponent=function(f,p,m){if(!m.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,v=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(m.quality=="draft"){var b=!0,T=!1,k=void 0;try{for(var C=p.nodeIndexes[Symbol.iterator](),w;!(b=(w=C.next()).done);b=!0){var S=w.value,R=u(S,2),L=R[0],N=R[1],I=m.cy.getElementById(L);if(I){var _=I.boundingBox(),A=p.xCoords[N]-_.w/2,M=p.xCoords[N]+_.w/2,D=p.yCoords[N]-_.h/2,P=p.yCoords[N]+_.h/2;Ay&&(y=M),Dx&&(x=P)}}}catch(G){T=!0,k=G}finally{try{!b&&C.return&&C.return()}finally{if(T)throw k}}var B=f.x-(y+g)/2,O=f.y-(x+v)/2;p.xCoords=p.xCoords.map(function(G){return G+B}),p.yCoords=p.yCoords.map(function(G){return G+O})}else{Object.keys(p).forEach(function(G){var z=p[G],W=z.getRect().x,H=z.getRect().x+z.getRect().width,j=z.getRect().y,Q=z.getRect().y+z.getRect().height;Wy&&(y=H),jx&&(x=Q)});var $=f.x-(y+g)/2,V=f.y-(x+v)/2;Object.keys(p).forEach(function(G){var z=p[G];z.setCenter(z.getCenterX()+$,z.getCenterY()+V)})}}},d.calcBoundingBox=function(f,p,m,g){for(var y=Number.MAX_SAFE_INTEGER,v=Number.MIN_SAFE_INTEGER,x=Number.MAX_SAFE_INTEGER,b=Number.MIN_SAFE_INTEGER,T=void 0,k=void 0,C=void 0,w=void 0,S=f.descendants().not(":parent"),R=S.length,L=0;LT&&(y=T),vC&&(x=C),b{var u=l(548),h=l(140).CoSELayout,d=l(140).CoSENode,f=l(140).layoutBase.PointD,p=l(140).layoutBase.DimensionD,m=l(140).layoutBase.LayoutConstants,g=l(140).layoutBase.FDLayoutConstants,y=l(140).CoSEConstants,v=o(function(b,T){var k=b.cy,C=b.eles,w=C.nodes(),S=C.edges(),R=void 0,L=void 0,N=void 0,I={};b.randomize&&(R=T.nodeIndexes,L=T.xCoords,N=T.yCoords);var _=o(function(G){return typeof G=="function"},"isFn"),A=o(function(G,z){return _(G)?G(z):G},"optFn"),M=u.calcParentsWithoutChildren(k,C),D=o(function V(G,z,W,H){for(var j=z.length,Q=0;Q0){var ae=void 0;ae=W.getGraphManager().add(W.newGraph(),te),V(ae,oe,W,H)}}},"processChildrenList"),P=o(function(G,z,W){for(var H=0,j=0,Q=0;Q0?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=H/j:_(b.idealEdgeLength)?y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:y.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=b.idealEdgeLength,y.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,y.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},"processEdges"),B=o(function(G,z){z.fixedNodeConstraint&&(G.constraints.fixedNodeConstraint=z.fixedNodeConstraint),z.alignmentConstraint&&(G.constraints.alignmentConstraint=z.alignmentConstraint),z.relativePlacementConstraint&&(G.constraints.relativePlacementConstraint=z.relativePlacementConstraint)},"processConstraints");b.nestingFactor!=null&&(y.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=b.nestingFactor),b.gravity!=null&&(y.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=b.gravity),b.numIter!=null&&(y.MAX_ITERATIONS=g.MAX_ITERATIONS=b.numIter),b.gravityRange!=null&&(y.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=b.gravityRange),b.gravityCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=b.gravityCompound),b.gravityRangeCompound!=null&&(y.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=b.gravityRangeCompound),b.initialEnergyOnIncremental!=null&&(y.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=b.initialEnergyOnIncremental),b.tilingCompareBy!=null&&(y.TILING_COMPARE_BY=b.tilingCompareBy),b.quality=="proof"?m.QUALITY=2:m.QUALITY=0,y.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=m.NODE_DIMENSIONS_INCLUDE_LABELS=b.nodeDimensionsIncludeLabels,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!b.randomize,y.ANIMATE=g.ANIMATE=m.ANIMATE=b.animate,y.TILE=b.tile,y.TILING_PADDING_VERTICAL=typeof b.tilingPaddingVertical=="function"?b.tilingPaddingVertical.call():b.tilingPaddingVertical,y.TILING_PADDING_HORIZONTAL=typeof b.tilingPaddingHorizontal=="function"?b.tilingPaddingHorizontal.call():b.tilingPaddingHorizontal,y.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=m.DEFAULT_INCREMENTAL=!0,y.PURE_INCREMENTAL=!b.randomize,m.DEFAULT_UNIFORM_LEAF_NODE_SIZES=b.uniformNodeDimensions,b.step=="transformed"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!1),b.step=="enforced"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!1),b.step=="cose"&&(y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!1,y.APPLY_LAYOUT=!0),b.step=="all"&&(b.randomize?y.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:y.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,y.ENFORCE_CONSTRAINTS=!0,y.APPLY_LAYOUT=!0),b.fixedNodeConstraint||b.alignmentConstraint||b.relativePlacementConstraint?y.TREE_REDUCTION_ON_INCREMENTAL=!1:y.TREE_REDUCTION_ON_INCREMENTAL=!0;var O=new h,$=O.newGraphManager();return D($.addRoot(),u.getTopMostNodes(w),O,b),P(O,$,S),B(O,b),O.runLayout(),I},"coseLayout");a.exports={coseLayout:v}}),212:((a,s,l)=>{var u=(function(){function b(T,k){for(var C=0;C0)if(P){var $=f.getTopMostNodes(C.eles.nodes());if(_=f.connectComponents(w,C.eles,$),_.forEach(function(Oe){var ue=Oe.boundingBox();A.push({x:ue.x1+ue.w/2,y:ue.y1+ue.h/2})}),C.randomize&&_.forEach(function(Oe){C.eles=Oe,R.push(m(C))}),C.quality=="default"||C.quality=="proof"){var V=w.collection();if(C.tile){var G=new Map,z=[],W=[],H=0,j={nodeIndexes:G,xCoords:z,yCoords:W},Q=[];if(_.forEach(function(Oe,ue){Oe.edges().length==0&&(Oe.nodes().forEach(function(ye,ke){V.merge(Oe.nodes()[ke]),ye.isParent()||(j.nodeIndexes.set(Oe.nodes()[ke].id(),H++),j.xCoords.push(Oe.nodes()[0].position().x),j.yCoords.push(Oe.nodes()[0].position().y))}),Q.push(ue))}),V.length>1){var U=V.boundingBox();A.push({x:U.x1+U.w/2,y:U.y1+U.h/2}),_.push(V),R.push(j);for(var oe=Q.length-1;oe>=0;oe--)_.splice(Q[oe],1),R.splice(Q[oe],1),A.splice(Q[oe],1)}}_.forEach(function(Oe,ue){C.eles=Oe,I.push(y(C,R[ue])),f.relocateComponent(A[ue],I[ue],C)})}else _.forEach(function(Oe,ue){f.relocateComponent(A[ue],R[ue],C)});var te=new Set;if(_.length>1){var le=[],ie=S.filter(function(Oe){return Oe.css("display")=="none"});_.forEach(function(Oe,ue){var ye=void 0;if(C.quality=="draft"&&(ye=R[ue].nodeIndexes),Oe.nodes().not(ie).length>0){var ke={};ke.edges=[],ke.nodes=[];var ce=void 0;Oe.nodes().not(ie).forEach(function(re){if(C.quality=="draft")if(!re.isParent())ce=ye.get(re.id()),ke.nodes.push({x:R[ue].xCoords[ce]-re.boundingbox().w/2,y:R[ue].yCoords[ce]-re.boundingbox().h/2,width:re.boundingbox().w,height:re.boundingbox().h});else{var J=f.calcBoundingBox(re,R[ue].xCoords,R[ue].yCoords,ye);ke.nodes.push({x:J.topLeftX,y:J.topLeftY,width:J.width,height:J.height})}else I[ue][re.id()]&&ke.nodes.push({x:I[ue][re.id()].getLeft(),y:I[ue][re.id()].getTop(),width:I[ue][re.id()].getWidth(),height:I[ue][re.id()].getHeight()})}),Oe.edges().forEach(function(re){var J=re.source(),se=re.target();if(J.css("display")!="none"&&se.css("display")!="none")if(C.quality=="draft"){var ge=ye.get(J.id()),Te=ye.get(se.id()),we=[],Me=[];if(J.isParent()){var ve=f.calcBoundingBox(J,R[ue].xCoords,R[ue].yCoords,ye);we.push(ve.topLeftX+ve.width/2),we.push(ve.topLeftY+ve.height/2)}else we.push(R[ue].xCoords[ge]),we.push(R[ue].yCoords[ge]);if(se.isParent()){var ne=f.calcBoundingBox(se,R[ue].xCoords,R[ue].yCoords,ye);Me.push(ne.topLeftX+ne.width/2),Me.push(ne.topLeftY+ne.height/2)}else Me.push(R[ue].xCoords[Te]),Me.push(R[ue].yCoords[Te]);ke.edges.push({startX:we[0],startY:we[1],endX:Me[0],endY:Me[1]})}else I[ue][J.id()]&&I[ue][se.id()]&&ke.edges.push({startX:I[ue][J.id()].getCenterX(),startY:I[ue][J.id()].getCenterY(),endX:I[ue][se.id()].getCenterX(),endY:I[ue][se.id()].getCenterY()})}),ke.nodes.length>0&&(le.push(ke),te.add(ue))}});var ae=D.packComponents(le,C.randomize).shifts;if(C.quality=="draft")R.forEach(function(Oe,ue){var ye=Oe.xCoords.map(function(ce){return ce+ae[ue].dx}),ke=Oe.yCoords.map(function(ce){return ce+ae[ue].dy});Oe.xCoords=ye,Oe.yCoords=ke});else{var Re=0;te.forEach(function(Oe){Object.keys(I[Oe]).forEach(function(ue){var ye=I[Oe][ue];ye.setCenter(ye.getCenterX()+ae[Re].dx,ye.getCenterY()+ae[Re].dy)}),Re++})}}}else{var B=C.eles.boundingBox();if(A.push({x:B.x1+B.w/2,y:B.y1+B.h/2}),C.randomize){var O=m(C);R.push(O)}C.quality=="default"||C.quality=="proof"?(I.push(y(C,R[0])),f.relocateComponent(A[0],I[0],C)):f.relocateComponent(A[0],R[0],C)}var be=o(function(ue,ye){if(C.quality=="default"||C.quality=="proof"){typeof ue=="number"&&(ue=ye);var ke=void 0,ce=void 0,re=ue.data("id");return I.forEach(function(se){re in se&&(ke={x:se[re].getRect().getCenterX(),y:se[re].getRect().getCenterY()},ce=se[re])}),C.nodeDimensionsIncludeLabels&&(ce.labelWidth&&(ce.labelPosHorizontal=="left"?ke.x+=ce.labelWidth/2:ce.labelPosHorizontal=="right"&&(ke.x-=ce.labelWidth/2)),ce.labelHeight&&(ce.labelPosVertical=="top"?ke.y+=ce.labelHeight/2:ce.labelPosVertical=="bottom"&&(ke.y-=ce.labelHeight/2))),ke==null&&(ke={x:ue.position("x"),y:ue.position("y")}),{x:ke.x,y:ke.y}}else{var J=void 0;return R.forEach(function(se){var ge=se.nodeIndexes.get(ue.id());ge!=null&&(J={x:se.xCoords[ge],y:se.yCoords[ge]})}),J==null&&(J={x:ue.position("x"),y:ue.position("y")}),{x:J.x,y:J.y}}},"getPositions");if(C.quality=="default"||C.quality=="proof"||C.randomize){var Pe=f.calcParentsWithoutChildren(w,S),Ge=S.filter(function(Oe){return Oe.css("display")=="none"});C.eles=S.not(Ge),S.nodes().not(":parent").not(Ge).layoutPositions(k,C,be),Pe.length>0&&Pe.forEach(function(Oe){Oe.position(be(Oe))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")},"run")}]),b})();a.exports=x}),657:((a,s,l)=>{var u=l(548),h=l(140).layoutBase.Matrix,d=l(140).layoutBase.SVD,f=o(function(m){var g=m.cy,y=m.eles,v=y.nodes(),x=y.nodes(":parent"),b=new Map,T=new Map,k=new Map,C=[],w=[],S=[],R=[],L=[],N=[],I=[],_=[],A=void 0,M=void 0,D=1e8,P=1e-9,B=m.piTol,O=m.samplingType,$=m.nodeSeparation,V=void 0,G=o(function(){for(var he=0,X=0,fe=!1;X=qe;){Be=K[qe++];for(var Ke=C[Be],xe=0;xe$e&&($e=L[Le],Xe=Le)}return Xe},"BFS"),W=o(function(he){var X=void 0;if(he){X=Math.floor(Math.random()*M),A=X;for(var K=0;K=1)break;$e=He}for(var Ke=0;Ke=1)break;$e=He}for(var mt=0;mt0&&(X.isParent()?C[he].push(k.get(X.id())):C[he].push(X.id()))})});var Pe=o(function(he){var X=T.get(he),fe=void 0;b.get(he).forEach(function(K){g.getElementById(K).isParent()?fe=k.get(K):fe=K,C[X].push(fe),C[T.get(fe)].push(he)})},"_loop"),Ge=!0,Oe=!1,ue=void 0;try{for(var ye=b.keys()[Symbol.iterator](),ke;!(Ge=(ke=ye.next()).done);Ge=!0){var ce=ke.value;Pe(ce)}}catch(q){Oe=!0,ue=q}finally{try{!Ge&&ye.return&&ye.return()}finally{if(Oe)throw ue}}M=T.size;var re=void 0;if(M>2){V=M{var u=l(212),h=o(function(f){f&&f("layout","fcose",u)},"register");typeof cytoscape<"u"&&h(cytoscape),a.exports=h}),140:(a=>{a.exports=e})},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var l=r[a]={exports:{}};return t[a](l,l.exports,n),l.exports}o(n,"__webpack_require__");var i=n(579);return i})()})});function jj(e,t){if(e===0)return t();let r=Math.random,n=e>>>0;Math.random=function(){n=n+1831565813>>>0;let i=n;return i=Math.imul(i^i>>>15,i|1),i^=i+Math.imul(i^i>>>7,i|61),((i^i>>>14)>>>0)/4294967296};try{return t()}finally{Math.random=r}}var _9e=F(()=>{"use strict";o(jj,"withSeededRandom")});var gx,M0,Xj=F(()=>{"use strict";Vl();gx=o(e=>`${e}`,"wrapIcon"),M0={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:gx('')},server:{body:gx('')},disk:{body:gx('')},internet:{body:gx('')},cloud:{body:gx('')},unknown:u8,blank:{body:gx("")}}}});var L9e,D9e,I9e,M9e,N9e=F(()=>{"use strict";Xt();Ls();Vl();Vr();Xj();iD();Qt();L9e=o(async function(e,t,r,n){let i=r.getConfigField("padding"),a=r.getConfigField("iconSize"),s=a/2,l=a/6,u=l/2;await Promise.all(t.edges().map(async h=>{let{source:d,sourceDir:f,sourceArrow:p,sourceGroup:m,target:g,targetDir:y,targetArrow:v,targetGroup:x,label:b}=nD(h),{x:T,y:k}=h[0].sourceEndpoint(),{x:C,y:w}=h[0].midpoint(),{x:S,y:R}=h[0].targetEndpoint(),L=i+4;if(m&&(ms(f)?T+=f==="L"?-L:L:k+=f==="T"?-L:L+18),x&&(ms(y)?S+=y==="L"?-L:L:R+=y==="T"?-L:L+18),!m&&r.getNode(d)?.type==="junction"&&(ms(f)?T+=f==="L"?s:-s:k+=f==="T"?s:-s),!x&&r.getNode(g)?.type==="junction"&&(ms(y)?S+=y==="L"?s:-s:R+=y==="T"?s:-s),h[0]._private.rscratch){let N=e.insert("g");if(N.insert("path").attr("d",`M ${T},${k} L ${C},${w} L${S},${R} `).attr("class","edge").attr("id",`${n}-${eu(d,g,{prefix:"L"})}`),p){let I=ms(f)?Qw[f](T,l):T-u,_=Yu(f)?Qw[f](k,l):k-u;N.insert("polygon").attr("points",Fj[f](l)).attr("transform",`translate(${I},${_})`).attr("class","arrow")}if(v){let I=ms(y)?Qw[y](S,l):S-u,_=Yu(y)?Qw[y](R,l):R-u;N.insert("polygon").attr("points",Fj[y](l)).attr("transform",`translate(${I},${_})`).attr("class","arrow")}if(b){let I=Jw(f,y)?"XY":ms(f)?"X":"Y",_=0;I==="X"?_=Math.abs(T-S):I==="Y"?_=Math.abs(k-R)/1.5:_=Math.abs(T-S)/2;let A=N.append("g");if(await Pn(A,b,{useHtmlLabels:!1,width:_,classes:"architecture-service-label"},Ae()),A.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),I==="X")A.attr("transform","translate("+C+", "+w+")");else if(I==="Y")A.attr("transform","translate("+C+", "+w+") rotate(-90)");else if(I==="XY"){let M=ek(f,y);if(M&&x9e(M)){let D=A.node().getBoundingClientRect(),[P,B]=T9e(M);A.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*P*B*45})`);let O=A.node().getBoundingClientRect();A.attr("transform",` + translate(${C}, ${w-D.height/2}) + translate(${P*O.width/2}, ${B*O.height/2}) + rotate(${-1*P*B*45}, 0, ${D.height/2}) + `)}}}}}))},"drawEdges"),D9e=o(async function(e,t,r,n){let a=r.getConfigField("padding")*.75,s=r.getConfigField("fontSize"),u=r.getConfigField("iconSize")/2;await Promise.all(t.nodes().map(async h=>{let d=Dp(h);if(d.type==="group"){let{h:f,w:p,x1:m,y1:g}=h.boundingBox(),y=e.append("rect");y.attr("id",`${n}-group-${d.id}`).attr("x",m+u).attr("y",g+u).attr("width",p).attr("height",f).attr("class","node-bkg");let v=e.append("g"),x=m,b=g;if(d.icon){let T=v.append("g");T.html(`${await ts(d.icon,{height:a,width:a,fallbackPrefix:M0.prefix})}`),T.attr("transform","translate("+(x+u+1)+", "+(b+u+1)+")"),x+=a,b+=s/2-1-2}if(d.label){let T=v.append("g");await Pn(T,d.label,{useHtmlLabels:!1,width:p,classes:"architecture-service-label"},Ae()),T.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),T.attr("transform","translate("+(x+u+4)+", "+(b+u+2)+")")}r.setElementForId(d.id,y)}}))},"drawGroups"),I9e=o(async function(e,t,r,n){let i=Ae();for(let a of r){let s=t.append("g"),l=e.getConfigField("iconSize");if(a.title){let f=s.append("g");await Pn(f,a.title,{useHtmlLabels:!1,width:l*1.5,classes:"architecture-service-label"},i),f.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),f.attr("transform","translate("+l/2+", "+l+")")}let u=s.append("g");if(a.icon)u.html(`${await ts(a.icon,{height:l,width:l,fallbackPrefix:M0.prefix})}`);else if(a.iconText){u.html(`${await ts("blank",{height:l,width:l,fallbackPrefix:M0.prefix})}`);let m=u.append("g").append("foreignObject").attr("width",l).attr("height",l).append("div").attr("class","node-icon-text").attr("style",`height: ${l}px;`).append("div").html(mr(a.iconText,i)),g=parseInt(window.getComputedStyle(m.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;m.attr("style",`-webkit-line-clamp: ${Math.floor((l-2)/g)};`)}else u.append("path").attr("class","node-bkg").attr("id",`${n}-node-${a.id}`).attr("d",`M0,${l} V5 Q0,0 5,0 H${l-5} Q${l},0 ${l},5 V${l} Z`);s.attr("id",`${n}-service-${a.id}`).attr("class","architecture-service");let{width:h,height:d}=s.node().getBBox();a.width=h,a.height=d,e.setElementForId(a.id,s)}return 0},"drawServices"),M9e=o(function(e,t,r,n){r.forEach(i=>{let a=t.append("g"),s=e.getConfigField("iconSize");a.append("g").append("rect").attr("id",`${n}-node-${i.id}`).attr("fill-opacity","0").attr("width",s).attr("height",s),a.attr("class","architecture-junction");let{width:u,height:h}=a._groups[0][0].getBBox();a.width=u,a.height=h,e.setElementForId(i.id,a)})},"drawJunctions")});function x8t(e,t,r){e.forEach(n=>{t.add({group:"nodes",data:{type:"service",id:n.id,icon:n.icon,label:n.title,parent:n.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-service"})})}function b8t(e,t,r){e.forEach(n=>{t.add({group:"nodes",data:{type:"junction",id:n.id,parent:n.in,width:r.getConfigField("iconSize"),height:r.getConfigField("iconSize")},classes:"node-junction"})})}function T8t(e,t){t.nodes().map(r=>{let n=Dp(r);if(n.type==="group")return;n.x=r.position().x,n.y=r.position().y,e.getElementById(n.id).attr("transform","translate("+(n.x||0)+","+(n.y||0)+")")})}function C8t(e,t){e.forEach(r=>{t.add({group:"nodes",data:{type:"group",id:r.id,icon:r.icon,label:r.title,parent:r.in},classes:"node-group"})})}function w8t(e,t){e.forEach(r=>{let{lhsId:n,rhsId:i,lhsInto:a,lhsGroup:s,rhsInto:l,lhsDir:u,rhsDir:h,rhsGroup:d,title:f}=r,p=Jw(r.lhsDir,r.rhsDir)?"segments":"straight",m={id:`${n}-${i}`,label:f,source:n,sourceDir:u,sourceArrow:a,sourceGroup:s,sourceEndpoint:u==="L"?"0 50%":u==="R"?"100% 50%":u==="T"?"50% 0":"50% 100%",target:i,targetDir:h,targetArrow:l,targetGroup:d,targetEndpoint:h==="L"?"0 50%":h==="R"?"100% 50%":h==="T"?"50% 0":"50% 100%"};t.add({group:"edges",data:m,classes:p})})}function k8t(e,t,r,n=[]){let i=o((p,m)=>Object.entries(p).reduce((g,[y,v])=>{let x=0,b=Object.entries(v);if(b.length===1)return g[y]=b[0][1],g;for(let T=0;T{let m={},g={};return Object.entries(p).forEach(([y,[v,x]])=>{let b=e.getNode(y)?.in??"default";m[x]??={},m[x][b]??=[],m[x][b].push(y),g[v]??={},g[v][b]??=[],g[v][b].push(y)}),{horiz:Object.values(i(m,"horizontal")).filter(y=>y.length>1),vert:Object.values(i(g,"vertical")).filter(y=>y.length>1)}}),[s,l]=a.reduce(([p,m],{horiz:g,vert:y})=>[[...p,...g],[...m,...y]],[[],[]]),u=new Set;n.forEach(p=>p.members.forEach(m=>u.add(m)));let h=o(p=>p.filter(m=>!m.some(g=>u.has(g))),"dropOverlapping"),d=h(s),f=h(l);return n.forEach(p=>{p.members.length<2||(p.direction==="row"?d.push([...p.members]):f.push([...p.members]))}),{horizontal:d,vertical:f}}function S8t(e,t,r=[]){let n=[],i=t.getConfigField("iconSize"),a=t.getConfigField("idealEdgeLengthMultiplier"),s=a*i,l=new Set;r.forEach(d=>{for(let f=0;f`${d[0]},${d[1]}`,"posToStr"),h=o(d=>d.split(",").map(f=>parseInt(f)),"strToPos");return e.forEach(d=>{let f=Object.fromEntries(Object.entries(d).map(([y,v])=>[u(v),y])),p=[u([0,0])],m={},g={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;p.length>0;){let y=p.shift();if(y){m[y]=1;let v=f[y];if(v){let x=h(y);Object.entries(g).forEach(([b,T])=>{let k=u([x[0]+T[0],x[1]+T[1]]),C=f[k];if(C&&!m[k]){if(p.push(k),l.has(`${v}|${C}`))return;n.push({[$j[b]]:C,[$j[v9e(b)]]:v,gap:a*i})}})}}}}),n}function E8t(e,t,r,n,i,{spatialMaps:a,groupAlignments:s}){return new Promise(l=>{let u=et("body").append("div").attr("id","cy").attr("style","display:none"),h=El({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge[label]",style:{label:"data(label)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${i.getConfigField("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${i.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});u.remove(),C8t(r,h),x8t(e,h,i),b8t(t,h,i),w8t(n,h);let d=i.getLayoutHints(),f=k8t(i,a,s,d),p=S8t(a,i,d),m=i.getConfigField("iconSize"),g=i.getConfigField("idealEdgeLengthMultiplier")*m,y=.5*m,v=i.getConfigField("edgeElasticity"),x=i.getConfigField("seed"),b=h.layout({name:"fcose",quality:"proof",randomize:i.getConfigField("randomize"),nodeSeparation:i.getConfigField("nodeSeparation"),numIter:i.getConfigField("numIter"),styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(T){let[k,C]=T.connectedNodes(),{parent:w}=Dp(k),{parent:S}=Dp(C);return w===S?g:y},edgeElasticity(T){let[k,C]=T.connectedNodes(),{parent:w}=Dp(k),{parent:S}=Dp(C);return w===S?v:.001},alignmentConstraint:f,relativePlacementConstraint:p});b.one("layoutstop",()=>{function T(k,C,w,S){let R,L,{x:N,y:I}=k,{x:_,y:A}=C;L=(S-I+(N-w)*(I-A)/(N-_))/Math.sqrt(1+Math.pow((I-A)/(N-_),2)),R=Math.sqrt(Math.pow(S-I,2)+Math.pow(w-N,2)-Math.pow(L,2));let M=Math.sqrt(Math.pow(_-N,2)+Math.pow(A-I,2));R=R/M;let D=(_-N)*(S-I)-(A-I)*(w-N);switch(!0){case D>=0:D=1;break;case D<0:D=-1;break}let P=(_-N)*(w-N)+(A-I)*(S-I);switch(!0){case P>=0:P=1;break;case P<0:P=-1;break}return L=Math.abs(L)*D,R=R*P,{distances:L,weights:R}}o(T,"getSegmentWeights"),h.startBatch();for(let k of Object.values(h.edges()))if(k.data?.()){let{x:C,y:w}=k.source().position(),{x:S,y:R}=k.target().position();if(C!==S&&w!==R){let L=k.sourceEndpoint(),N=k.targetEndpoint(),{sourceDir:I}=nD(k),[_,A]=Yu(I)?[L.x,N.y]:[N.x,L.y],{weights:M,distances:D}=T(L,N,_,A);k.style("segment-distances",D),k.style("segment-weights",M)}}h.endBatch(),jj(x,()=>b.run())});try{jj(x,()=>b.run())}catch(T){throw T instanceof RangeError&&T.message.includes("Invalid array length")?new Error("Architecture layout failed: a declared `align row|column` directive likely contradicts the edge directions, or two declared alignments overlap on a shared node. Check that the order of members in each `align` chain is consistent with the edges between them, and that no node appears in two `align` directives along the same axis."):T}h.ready(T=>{Z.info("Ready",T),l(h)})})}var P9e,A8t,O9e,B9e=F(()=>{"use strict";GF();P9e=Xs(R9e(),1);_9e();$r();vt();Vl();Ka();$n();Xj();iD();N9e();ty([{name:M0.prefix,icons:M0}]);El.use(P9e.default);o(x8t,"addServices");o(b8t,"addJunctions");o(T8t,"positionNodes");o(C8t,"addGroups");o(w8t,"addEdges");o(k8t,"getAlignments");o(S8t,"getRelativeConstraints");o(E8t,"layoutArchitecture");A8t=o(async(e,t,r,n)=>{let i=n.db;i.setDiagramId(t);let a=i.getServices(),s=i.getJunctions(),l=i.getGroups(),u=i.getEdges(),h=i.getDataStructures(),d=xn(t),f=d.append("g");f.attr("class","architecture-edges");let p=d.append("g");p.attr("class","architecture-services");let m=d.append("g");m.attr("class","architecture-groups"),await I9e(i,p,a,t),M9e(i,p,s,t);let g=await E8t(a,s,l,u,i,h);await L9e(f,g,i,t),await D9e(m,g,i,t),T8t(i,g),ul(void 0,d,i.getConfigField("padding"),i.getConfigField("useMaxWidth"))},"draw"),O9e={draw:A8t}});var $9e={};ir($9e,{diagram:()=>R8t});var R8t,F9e=F(()=>{"use strict";S9e();Gj();A9e();B9e();R8t={parser:Vj,get db(){return new mx},renderer:O9e,styles:E9e}});var Kj,Zj,aD,Qj,V9e=F(()=>{"use strict";Kj="position frame",Zj="frame positioned",aD="position relation",Qj="relation positioned"});function P8t(){tX={}}function $8t(){let e=z8t,{ast:t}=tX,r=q9e();if(!t)throw new Error("No data for EventModel");return t.frames.forEach((n,i)=>{let a=U8t(n,t.dataEntities,r);e=eX(e,{$kind:Kj,index:i,frame:n,textProps:a});let s;Q8t(n)?(Z.debug("source frame",n.sourceFrames),s=t.frames.filter(l=>n.sourceFrames.some(u=>u.$refText===l.name)),s.forEach(l=>{e=eX(e,{$kind:aD,index:i,frame:n,sourceFrame:l})})):e=eX(e,{$kind:aD,index:i,frame:n})}),e={...e,sortedSwimlanesArray:H9e(e.swimlanes)},e}function F8t(e){tX.ast=e}function q9e(){return bn}function G8t(e){let t=e.split(".");if(t.length===2)return t[0]}function V8t(e){let t=e.split(".");return t.length===2?t[1]:e}function W8t(e,t){if(!(!t||t.length===0))return Object.values(e).find(r=>r.namespace===t)}function Jj(e,t,r){return Math.max(t,...Object.keys(e).filter(n=>{let i=Number.parseInt(n);return i>t&&iNumber.parseInt(n)))+1}function q8t(e,t){let r=G8t(e.entityIdentifier),n=W8t(t,r);switch(e.modelEntityType){case"ui":case"pcr":case"processor":return n?{index:n.index,label:n.namespace||bn.labelUiAutomation}:r?{index:Jj(t,0,100),label:bn.labelUiAutomationPrefix+r}:{index:0,label:bn.labelUiAutomation};case"rmo":case"readmodel":case"cmd":case"command":return n?{index:n.index,label:n.namespace||bn.labelCommandReadModel}:r?{index:Jj(t,100,200),label:bn.labelCommandReadModelPrefix+r}:{index:100,label:bn.labelCommandReadModel};case"evt":case"event":default:return n?{index:n.index,label:n.namespace||bn.labelEvents}:r?{index:Jj(t,200,300),label:bn.labelEventsPrefix+r}:{index:200,label:bn.labelEvents}}}function H8t(e){let{themeVariables:t}=_t();switch(e.modelEntityType){case"ui":return{fill:t.emUiFill??"white",stroke:t.emUiStroke??"#dbdada"};case"pcr":case"processor":return{fill:t.emProcessorFill??"#edb3f6",stroke:t.emProcessorStroke??"#b88cbf"};case"rmo":case"readmodel":return{fill:t.emReadModelFill??"#d3f1a2",stroke:t.emReadModelStroke??"#a3b732"};case"cmd":case"command":return{fill:t.emCommandFill??"#bcd6fe",stroke:t.emCommandStroke??"#679ac3"};case"evt":case"event":return{fill:t.emEventFill??"#ffb778",stroke:t.emEventStroke??"#c19a0f"};default:return{fill:"red",stroke:"black"}}}function U8t(e,t,r){let n=_t(),i=mr(V8t(e.entityIdentifier)??"",n),a,s={fontSize:16,fontWeight:700,fontFamily:'"trebuchet ms", verdana, arial, sans-serif',joinWith:"
    "},u=`${ym(i,r.textMaxWidth,s)}`;if(e.dataInlineValue&&(a=e.dataInlineValue,a=a.substring(a.indexOf("{")+1),a=a.substring(0,a.lastIndexOf("}")-1),a=mr(a,n),a=ym(a,r.textMaxWidth,s),a=a.replaceAll(" "," ")),e.dataReference){let g=t.find(y=>y.name===e.dataReference?.$refText);g&&(a=g.dataBlockValue,a=a.substring(a.indexOf(`{ +`)+2),a=a.substring(0,a.lastIndexOf("}")-1),a=mr(a,n),a=ym(a,r.textMaxWidth,s),a=a.replaceAll(" "," "),a+="
    ")}let h=a!==void 0;h&&(u+=`

    ${a}`);let d={fontSize:s.fontSize,fontWeight:s.fontWeight,fontFamily:s.fontFamily},f=b2(u,d),p=h?f.width/3:f.width,m={content:u,width:p,height:f.height};return Z.debug(`[${e.name}] ${e.entityIdentifier} text`,m),m}function Y8t(e,t){let r=t,n=H8t(r.frame),i={width:r.textProps.width+2*bn.boxTextPadding,height:r.textProps.height+2*bn.boxTextPadding};return[{$kind:Zj,frame:r.frame,index:r.index,visual:n,dimension:i,textProps:r.textProps}]}function j8t(e,t,r){return t===void 0?bn.contentStartX:t.index===e.index&&e.r?e.r+bn.boxPadding:r===void 0?bn.contentStartX:r.r-bn.boxOverlap+bn.boxPadding}function X8t(e,t){let r=[...e.map(n=>n.r),t];return Math.max(...r)}function H9e(e){return Object.values(e).sort((t,r)=>t.index-r.index)}function K8t(e,t){let r=t,n=q8t(r.frame,e.swimlanes),i;n.index in e.swimlanes?i=e.swimlanes[n.index]:i={index:n.index,label:n.label,r:0,y:n.index*bn.swimlaneMinHeight+bn.swimlaneGap,height:bn.swimlaneMinHeight,maxHeight:bn.swimlaneMinHeight};let a=e.boxes.length>0?e.boxes[e.boxes.length-1]:void 0,s=e.previousSwimlaneNumber!==void 0?e.swimlanes[e.previousSwimlaneNumber]:void 0,l={width:Math.max(bn.boxMinWidth,Math.min(bn.boxMaxWidth,r.dimension.width))+2*bn.boxPadding,height:Math.max(bn.boxMinHeight,Math.min(bn.boxMaxHeight,r.dimension.height))+2*bn.boxPadding},u=j8t(i,s,a),h=u+l.width+bn.boxPadding,d=X8t(Object.values(e.swimlanes),h);i.r=u+l.width,i.maxHeight=Math.max(i.maxHeight,l.height),i.height=Math.max(bn.swimlaneMinHeight,i.maxHeight)+2*bn.swimlanePadding;let f={x:u,y:bn.swimlanePadding+i.y,r:h,dimension:l,leftSibling:!1,swimlane:i,visual:r.visual,text:r.textProps.content,frame:r.frame,index:r.index},p={...e,boxes:[...e.boxes,f],swimlanes:{...e.swimlanes,[`${i.index}`]:i},previousSwimlaneNumber:n.index,previousFrame:r.frame,maxR:d},m=H9e(p.swimlanes);m.length>0&&(m[0].y=0);for(let g=1;g0}function W9e(e,t){if(t!=null)return e.find(r=>r.frame.name===t.name)}function J8t(e,t,r){if(!(r<0))for(let n=r;n>=0;n--){let i=e[n];if(i.swimlane.index!==t)return i}}function eIt(e,t){let r=t;if(S_(r.frame)||Z8t(r.index,r.frame))return[];let n=W9e(e.boxes,r.frame);if(n===void 0)throw new Error(`Target box not found for frame ${r.frame.name}`);let i;return r.sourceFrame?i=W9e(e.boxes,r.sourceFrame):i=J8t(e.boxes,n.swimlane.index,r.index-1),i===void 0?[]:[{$kind:Qj,frame:r.frame,index:r.index,sourceBox:i,targetBox:n}]}function tIt(e,t){let r=t,n={visual:{fill:"none",stroke:"#000"},source:{x:r.sourceBox.x,y:r.sourceBox.y},target:{x:r.targetBox.x,y:r.targetBox.y},sourceBox:r.sourceBox,targetBox:r.targetBox};return{...e,relations:[...e.relations,n]}}function iIt(e,t){let r=rIt[t.$kind];if(r==null)return[];let n=r(e,t);return Z.debug("decided events",n),n}function aIt(e,t){let r=t.reduce((n,i)=>{let a=nIt[i.$kind];return a==null?n:a(n,i)},e);return Z.debug("evolve events",{state:e,newState:r,events:t}),r}function eX(e,t){let r=iIt(e,t);return aIt(e,r)}var I8t,M8t,N8t,O8t,B8t,tX,bn,z8t,rIt,nIt,ik,rX=F(()=>{"use strict";vt();Qt();Qt();ur();Nn();Vr();Wi();Xa();V9e();I8t=o(function(e){Z.debug("options str",e)},"setOptions"),M8t=o(function(){return{}},"getOptions"),N8t=o(function(){P8t(),yr()},"clear");o(P8t,"reset");O8t=cr.eventmodeling,B8t=o(()=>qr({...O8t,..._t().eventmodeling}),"getConfig"),tX={};o($8t,"getState");o(F8t,"setAst");bn={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:"bold",boxTextPadding:10,swimlaneTextFontWeight:"bold",labelUiAutomation:"UI/Automation",labelUiAutomationPrefix:"UI/A: ",labelCommandReadModel:"Command/Read Model",labelCommandReadModelPrefix:"C/RM: ",labelEvents:"Events",labelEventsPrefix:"Stream: "};o(q9e,"getDiagramProps");z8t={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};o(G8t,"extractNamespace");o(V8t,"extractName");o(W8t,"findSwimlaneByNamespace");o(Jj,"findNextAvailableIndex");o(q8t,"calculateSwimlaneProps");o(H8t,"calculateEntityVisualProps");o(U8t,"calculateTextProps");o(Y8t,"decidePositionFrame");o(j8t,"calculateX");o(X8t,"calculateMaxRight");o(H9e,"sortedSwimlanesArray");o(K8t,"evolveFramePositioned");o(Z8t,"isFirstFrame");o(Q8t,"hasSourceFrame");o(W9e,"findBoxByFrame");o(J8t,"findBoxByLineIndex");o(eIt,"decidePositionRelation");o(tIt,"evolveRelationPositioned");rIt={[Kj]:Y8t,[aD]:eIt},nIt={[Zj]:K8t,[Qj]:tIt};o(iIt,"decide");o(aIt,"evolve");o(eX,"dispatch");ik={getConfig:B8t,setOptions:I8t,getOptions:M8t,clear:N8t,setAccTitle:kr,getAccTitle:Ar,getAccDescription:_r,setAccDescription:Rr,setDiagramTitle:Or,getDiagramTitle:Lr,setAst:F8t,getDiagramProps:q9e,getState:$8t}});var U9e,Y9e=F(()=>{"use strict";Xa();vt();Hs();rX();U9e={parse:o(async e=>{let t=await Si("eventmodeling",e);Z.debug(t),ik.setAst(t),Gn(t,ik)},"parse")}});function lIt(e,t){return r=>{let n=r.swimlane.y+t.swimlanePadding,i=e.append("g").attr("class","em-box");i.append("rect").attr("x",r.x).attr("y",n).attr("rx","3").attr("width",r.dimension.width).attr("height",r.dimension.height).attr("stroke",r.visual.stroke).attr("fill",r.visual.fill),i.append("foreignObject").attr("x",r.x+t.boxPadding).attr("y",n+10).attr("width",r.dimension.width-2*t.boxPadding).attr("height",r.dimension.height-2*t.boxPadding).append("xhtml:div").style("display","table").style("height","100%").style("width","100%").append("span").style("display","table-cell").style("text-align","center").style("vertical-align","middle").html(r.text)}}function cIt(e,t){return e>t}function uIt(e,t,r,n){return i=>{let a=i.sourceBox.swimlane.y+t.swimlanePadding,s=i.targetBox.swimlane.y+t.swimlanePadding,l=cIt(a,s),u=i.sourceBox.x+i.sourceBox.dimension.width*2/3,h=i.targetBox.x+i.targetBox.dimension.width/3,d,f;Z.debug(`rendering relation up=${l} for `,{sourceBox:i.sourceBox,targetBox:i.targetBox}),l?(d=a,f=s+i.targetBox.dimension.height):(d=a+i.sourceBox.dimension.height,f=s);let p=n.emRelationStroke??i.visual.stroke;e.append("path").attr("class","em-relation").attr("fill",i.visual.fill).attr("stroke",p).attr("stroke-width","1").attr("marker-end",`url(#${r})`).attr("d",`M${u} ${d} L${h} ${f}`)}}function hIt(e,t,r,n){return i=>{let a=e.append("g").attr("class","em-swimlane"),s=n.emSwimlaneBackgroundOdd??"rgb(250,250,250)",l=n.emSwimlaneBackgroundStroke??"rgb(240,240,240)";a.append("rect").attr("x",0).attr("y",i.y).attr("rx","3").attr("width",t+r.swimlanePadding).attr("height",i.height).attr("fill",s).attr("stroke",l),a.append("text").attr("font-weight",r.swimlaneTextFontWeight).attr("x",30).attr("y",i.y+30).text(i.label)}}var sIt,oIt,dIt,j9e,X9e=F(()=>{"use strict";$r();Xt();vt();sIt=Ae(),oIt=sIt?.eventmodeling;o(lIt,"renderD3Box");o(cIt,"dirUpwards");o(uIt,"renderD3Relation");o(hIt,"renderD3Swimlane");dIt=o(function(e,t,r,n){if(Z.debug("in eventmodeling renderer",e+` +`,"id:",t,r),!oIt)throw new Error("EventModeling config not found");let i=n.db,{themeVariables:a,eventmodeling:s}=Ae(),l=et(`[id="${t}"]`),u=i.getDiagramProps(),h=i.getState(),d=`em-arrowhead-${t}`,f=a.emArrowhead??"#000000";h.sortedSwimlanesArray.forEach(hIt(l,h.maxR,u,a)),h.boxes.forEach(lIt(l,u)),h.relations.forEach(uIt(l,u,d,a)),l.append("defs").append("marker").attr("id",d).attr("markerWidth","10").attr("markerHeight","7").attr("refX","10").attr("refY","3.5").attr("orient","auto").append("polygon").attr("points","0 0, 10 3.5, 0 7").attr("fill",f),hb(void 0,l,s?.padding??30,s?.useMaxWidth)},"draw"),j9e={draw:dIt}});var fIt,K9e,Z9e=F(()=>{"use strict";fIt=o(e=>"","getStyles"),K9e=fIt});var Q9e={};ir(Q9e,{diagram:()=>pIt});var pIt,J9e=F(()=>{"use strict";Y9e();rX();X9e();Z9e();pIt={parser:U9e,db:ik,renderer:j9e,styles:K9e}});var nX,rBe,nBe=F(()=>{"use strict";nX=(function(){var e=o(function(x,b,T,k){for(T=T||{},k=x.length;k--;T[x[k]]=b);return T},"o"),t=[1,4],r=[1,14],n=[1,12],i=[1,13],a=[6,7,8],s=[1,20],l=[1,18],u=[1,19],h=[6,7,11],d=[1,6,13,14],f=[1,23],p=[1,24],m=[1,6,7,11,13,14],g={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ishikawa:4,spaceLines:5,SPACELINE:6,NL:7,ISHIKAWA:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,TEXT:14,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"ISHIKAWA",11:"EOF",13:"SPACELIST",14:"TEXT"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,1],[12,1],[12,1]],performAction:o(function(b,T,k,C,w,S,R){var L=S.length-1;switch(w){case 6:case 7:return C;case 15:C.addNode(S[L-1].length,S[L].trim());break;case 16:C.addNode(0,S[L].trim());break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:r,7:[1,10],9:9,12:11,13:n,14:i},e(a,[2,3]),{1:[2,2]},e(a,[2,4]),e(a,[2,5]),{1:[2,6],6:r,12:15,13:n,14:i},{6:r,9:16,12:11,13:n,14:i},{6:s,7:l,10:17,11:u},e(h,[2,18],{14:[1,21]}),e(h,[2,16]),e(h,[2,17]),{6:s,7:l,10:22,11:u},{1:[2,7],6:r,12:15,13:n,14:i},e(d,[2,14],{7:f,11:p}),e(m,[2,8]),e(m,[2,9]),e(m,[2,10]),e(h,[2,15]),e(d,[2,13],{7:f,11:p}),e(m,[2,11]),e(m,[2,12])],defaultActions:{2:[2,1],6:[2,2]},parseError:o(function(b,T){if(T.recoverable)this.trace(b);else{var k=new Error(b);throw k.hash=T,k}},"parseError"),parse:o(function(b){var T=this,k=[0],C=[],w=[null],S=[],R=this.table,L="",N=0,I=0,_=0,A=2,M=1,D=S.slice.call(arguments,1),P=Object.create(this.lexer),B={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(B.yy[O]=this.yy[O]);P.setInput(b,B.yy),B.yy.lexer=P,B.yy.parser=this,typeof P.yylloc>"u"&&(P.yylloc={});var $=P.yylloc;S.push($);var V=P.options&&P.options.ranges;typeof B.yy.parseError=="function"?this.parseError=B.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function G(Pe){k.length=k.length-2*Pe,w.length=w.length-Pe,S.length=S.length-Pe}o(G,"popStack");function z(){var Pe;return Pe=C.pop()||P.lex()||M,typeof Pe!="number"&&(Pe instanceof Array&&(C=Pe,Pe=C.pop()),Pe=T.symbols_[Pe]||Pe),Pe}o(z,"lex");for(var W,H,j,Q,U,oe,te={},le,ie,ae,Re;;){if(j=k[k.length-1],this.defaultActions[j]?Q=this.defaultActions[j]:((W===null||typeof W>"u")&&(W=z()),Q=R[j]&&R[j][W]),typeof Q>"u"||!Q.length||!Q[0]){var be="";Re=[];for(le in R[j])this.terminals_[le]&&le>A&&Re.push("'"+this.terminals_[le]+"'");P.showPosition?be="Parse error on line "+(N+1)+`: +`+P.showPosition()+` +Expecting `+Re.join(", ")+", got '"+(this.terminals_[W]||W)+"'":be="Parse error on line "+(N+1)+": Unexpected "+(W==M?"end of input":"'"+(this.terminals_[W]||W)+"'"),this.parseError(be,{text:P.match,token:this.terminals_[W]||W,line:P.yylineno,loc:$,expected:Re})}if(Q[0]instanceof Array&&Q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+j+", token: "+W);switch(Q[0]){case 1:k.push(W),w.push(P.yytext),S.push(P.yylloc),k.push(Q[1]),W=null,H?(W=H,H=null):(I=P.yyleng,L=P.yytext,N=P.yylineno,$=P.yylloc,_>0&&_--);break;case 2:if(ie=this.productions_[Q[1]][1],te.$=w[w.length-ie],te._$={first_line:S[S.length-(ie||1)].first_line,last_line:S[S.length-1].last_line,first_column:S[S.length-(ie||1)].first_column,last_column:S[S.length-1].last_column},V&&(te._$.range=[S[S.length-(ie||1)].range[0],S[S.length-1].range[1]]),oe=this.performAction.apply(te,[L,I,N,B.yy,Q[1],w,S].concat(D)),typeof oe<"u")return oe;ie&&(k=k.slice(0,-1*ie*2),w=w.slice(0,-1*ie),S=S.slice(0,-1*ie)),k.push(this.productions_[Q[1]][0]),w.push(te.$),S.push(te._$),ae=R[k[k.length-2]][k[k.length-1]],k.push(ae);break;case 3:return!0}}return!0},"parse")},y=(function(){var x={EOF:1,parseError:o(function(T,k){if(this.yy.parser)this.yy.parser.parseError(T,k);else throw new Error(T)},"parseError"),setInput:o(function(b,T){return this.yy=T||this.yy||{},this._input=b,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var b=this._input[0];this.yytext+=b,this.yyleng++,this.offset++,this.match+=b,this.matched+=b;var T=b.match(/(?:\r\n?|\n).*/g);return T?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),b},"input"),unput:o(function(b){var T=b.length,k=b.split(/(?:\r\n?|\n)/g);this._input=b+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-T),this.offset-=T;var C=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),k.length-1&&(this.yylineno-=k.length-1);var w=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:k?(k.length===C.length?this.yylloc.first_column:0)+C[C.length-k.length].length-k[0].length:this.yylloc.first_column-T},this.options.ranges&&(this.yylloc.range=[w[0],w[0]+this.yyleng-T]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(b){this.unput(this.match.slice(b))},"less"),pastInput:o(function(){var b=this.matched.substr(0,this.matched.length-this.match.length);return(b.length>20?"...":"")+b.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var b=this.match;return b.length<20&&(b+=this._input.substr(0,20-b.length)),(b.substr(0,20)+(b.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var b=this.pastInput(),T=new Array(b.length+1).join("-");return b+this.upcomingInput()+` +`+T+"^"},"showPosition"),test_match:o(function(b,T){var k,C,w;if(this.options.backtrack_lexer&&(w={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(w.yylloc.range=this.yylloc.range.slice(0))),C=b[0].match(/(?:\r\n?|\n).*/g),C&&(this.yylineno+=C.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:C?C[C.length-1].length-C[C.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],k=this.performAction.call(this,this.yy,this,T,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),k)return k;if(this._backtrack){for(var S in w)this[S]=w[S];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var b,T,k,C;this._more||(this.yytext="",this.match="");for(var w=this._currentRules(),S=0;ST[0].length)){if(T=k,C=S,this.options.backtrack_lexer){if(b=this.test_match(k,w[S]),b!==!1)return b;if(this._backtrack){T=!1;continue}else return!1}else if(!this.options.flex)break}return T?(b=this.test_match(T,w[C]),b!==!1?b:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var T=this.next();return T||this.lex()},"lex"),begin:o(function(T){this.conditionStack.push(T)},"begin"),popState:o(function(){var T=this.conditionStack.length-1;return T>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(T){return T=this.conditionStack.length-1-Math.abs(T||0),T>=0?this.conditionStack[T]:"INITIAL"},"topState"),pushState:o(function(T){this.begin(T)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(T,k,C,w){var S=w;switch(C){case 0:return 6;case 1:return 8;case 2:return 8;case 3:return 6;case 4:return 7;case 5:return 13;case 6:return 14;case 7:return 11}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:ishikawa-beta\b)/i,/^(?:ishikawa\b)/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:[^\n]+)/i,/^(?:$)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return x})();g.lexer=y;function v(){this.yy={}}return o(v,"Parser"),v.prototype=g,g.Parser=v,new v})();nX.parser=nX;rBe=nX});var sD,iBe=F(()=>{"use strict";Xt();Vr();Nn();sD=class{constructor(){this.stack=[];this.clear=this.clear.bind(this),this.addNode=this.addNode.bind(this),this.getRoot=this.getRoot.bind(this)}static{o(this,"IshikawaDB")}clear(){this.root=void 0,this.stack=[],this.baseLevel=void 0,yr()}getRoot(){return this.root}addNode(t,r){let n=xt.sanitizeText(r,Ae());if(!this.root){this.root={text:n,children:[]},this.stack=[{level:0,node:this.root}],Or(n);return}this.baseLevel??=t;let i=t-this.baseLevel+1;for(i<=0&&(i=1);this.stack.length>1&&this.stack[this.stack.length-1].level>=i;)this.stack.pop();let a=this.stack[this.stack.length-1].node,s={text:n,children:[]};a.children.push(s),this.stack.push({level:i,node:s})}getAccTitle(){return Ar()}setAccTitle(t){kr(t)}getAccDescription(){return _r()}setAccDescription(t){Rr(t)}getDiagramTitle(){return Lr()}setDiagramTitle(t){Or(t)}}});var vIt,yx,xIt,bIt,TIt,uBe,aBe,sBe,oBe,CIt,lBe,wIt,kIt,SIt,iX,EIt,AIt,hBe,oD,cBe,vx,dBe,fBe=F(()=>{"use strict";Xt();Ka();$n();Qt();tr();vIt=14,yx=250,xIt=30,bIt=60,TIt=5,uBe=82*Math.PI/180,aBe=Math.cos(uBe),sBe=Math.sin(uBe),oBe=o((e,t,r)=>{let n=e.node().getBBox(),i=n.width+t*2,a=n.height+t*2;Wr(e,a,i,r),e.attr("viewBox",`${n.x-t} ${n.y-t} ${i} ${a}`)},"applyPaddedViewBox"),CIt=o((e,t,r,n)=>{let a=n.db.getRoot();if(!a)return;let s=Ae(),{look:l,handDrawnSeed:u,themeVariables:h}=s,d=As(s.fontSize)[0]??vIt,f=l==="handDrawn",p=a.children??[],m=s.ishikawa?.diagramPadding??20,g=s.ishikawa?.useMaxWidth??!1,y=xn(t),v=y.append("g").attr("class","ishikawa"),x=f?ut.svg(y.node()):void 0,b=x?{roughSvg:x,seed:u??0,lineColor:h?.lineColor??"#333",fillColor:h?.mainBkg??"#fff"}:void 0,T=`ishikawa-arrow-${t}`;f||v.append("defs").append("marker").attr("id",T).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 Z").attr("class","ishikawa-arrow");let k=0,C=yx,w=f?void 0:vx(v,k,C,k,C,"ishikawa-spine");if(wIt(v,k,C,a.text,d,b),!p.length){f&&vx(v,k,C,k,C,"ishikawa-spine",b),oBe(y,m,g);return}k-=20;let S=p.filter((P,B)=>B%2===0),R=p.filter((P,B)=>B%2===1),L=lBe(S),N=lBe(R),I=L.total+N.total,_=yx,A=yx;if(I>0){let P=yx*2,B=yx*.3;_=Math.max(B,P*(L.total/I)),A=Math.max(B,P*(N.total/I))}let M=d*2;_=Math.max(_,L.max*M),A=Math.max(A,N.max*M),C=Math.max(_,yx),w&&w.attr("y1",C).attr("y2",C),v.select(".ishikawa-head-group").attr("transform",`translate(0,${C})`);let D=Math.ceil(p.length/2);for(let P=0;PMath.min(O,$.getBBox().x),1/0)}if(f)vx(v,k,C,0,C,"ishikawa-spine",b);else{w.attr("x1",k);let P=`url(#${T})`;v.selectAll("line.ishikawa-branch, line.ishikawa-sub-branch").attr("marker-start",P)}oBe(y,m,g)},"draw"),lBe=o(e=>{let t=o(r=>r.children.reduce((n,i)=>n+1+t(i),0),"countDescendants");return e.reduce((r,n)=>{let i=t(n);return r.total+=i,r.max=Math.max(r.max,i),r},{total:0,max:0})},"sideStats"),wIt=o((e,t,r,n,i,a)=>{let s=Math.max(6,Math.floor(110/(i*.6))),l=e.append("g").attr("class","ishikawa-head-group").attr("transform",`translate(${t},${r})`),u=oD(l,hBe(n,s),0,0,"ishikawa-head-label","start",i),h=u.node().getBBox(),d=Math.max(60,h.width+6),f=Math.max(40,h.height*2+40),p=`M 0 ${-f/2} L 0 ${f/2} Q ${d*2.4} 0 0 ${-f/2} Z`;if(a){let m=a.roughSvg.path(p,{roughness:1.5,seed:a.seed,fill:a.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:a.lineColor,strokeWidth:2});l.insert(()=>m,":first-child").attr("class","ishikawa-head")}else l.insert("path",":first-child").attr("class","ishikawa-head").attr("d",p);u.attr("transform",`translate(${(d-h.width)/2-h.x+3},${-h.y-h.height/2})`)},"drawHead"),kIt=o((e,t)=>{let r=[],n=[],i=o((a,s,l)=>{let u=t===-1?[...a].reverse():a;for(let h of u){let d=r.length,f=h.children??[];r.push({depth:l,text:hBe(h.text,15),parentIndex:s,childCount:f.length}),l%2===0?(n.push(d),f.length&&i(f,d,l+1)):(f.length&&i(f,d,l+1),n.push(d))}},"walk");return i(e,-1,2),{entries:r,yOrder:n}},"flattenTree"),SIt=o((e,t,r,n,i,a,s)=>{let l=e.append("g").attr("class","ishikawa-label-group"),h=oD(l,t,r,n+11*i,"ishikawa-label cause","middle",a).node().getBBox();if(s){let d=s.roughSvg.rectangle(h.x-20,h.y-2,h.width+40,h.height+4,{roughness:1.5,seed:s.seed,fill:s.fillColor,fillStyle:"hachure",fillWeight:2.5,hachureGap:5,stroke:s.lineColor,strokeWidth:2});l.insert(()=>d,":first-child").attr("class","ishikawa-label-box")}else l.insert("rect",":first-child").attr("class","ishikawa-label-box").attr("x",h.x-20).attr("y",h.y-2).attr("width",h.width+40).attr("height",h.height+4)},"drawCauseLabel"),iX=o((e,t,r,n,i,a)=>{let s=Math.sqrt(n*n+i*i);if(s===0)return;let l=n/s,u=i/s,h=6,d=-u*h,f=l*h,p=t,m=r,g=`M ${p} ${m} L ${p-l*h*2+d} ${m-u*h*2+f} L ${p-l*h*2-d} ${m-u*h*2-f} Z`,y=a.roughSvg.path(g,{roughness:1,seed:a.seed,fill:a.lineColor,fillStyle:"solid",stroke:a.lineColor,strokeWidth:1});e.append(()=>y)},"drawArrowMarker"),EIt=o((e,t,r,n,i,a,s,l)=>{let u=t.children??[],h=a*(u.length?1:.2),d=-aBe*h,f=sBe*h*i,p=r+d,m=n+f;if(vx(e,r,n,p,m,"ishikawa-branch",l),l&&iX(e,r,n,r-p,n-m,l),SIt(e,t.text,p,m,i,s,l),!u.length)return;let{entries:g,yOrder:y}=kIt(u,i),v=g.length,x=new Array(v);for(let[w,S]of y.entries())x[S]=n+f*((w+1)/(v+1));let b=new Map;b.set(-1,{x0:r,y0:n,x1:p,y1:m,childCount:u.length,childrenDrawn:0});let T=-aBe,k=sBe*i,C=i<0?"ishikawa-label up":"ishikawa-label down";for(let[w,S]of g.entries()){let R=x[w],L=b.get(S.parentIndex),N=e.append("g").attr("class","ishikawa-sub-group"),I=0,_=0,A=0;if(S.depth%2===0){let M=L.y1-L.y0;I=cBe(L.x0,L.x1,M?(R-L.y0)/M:.5),_=R,A=I-(S.childCount>0?bIt+S.childCount*TIt:xIt),vx(N,I,R,A,R,"ishikawa-sub-branch",l),l&&iX(N,I,R,1,0,l),oD(N,S.text,A,R,"ishikawa-label align","end",s)}else{let M=L.childrenDrawn++;I=cBe(L.x0,L.x1,(L.childCount-M)/(L.childCount+1)),_=L.y0,A=I+T*((R-_)/k),vx(N,I,_,A,R,"ishikawa-sub-branch",l),l&&iX(N,I,_,I-A,_-R,l),oD(N,S.text,A,R,C,"end",s)}S.childCount>0&&b.set(w,{x0:I,y0:_,x1:A,y1:R,childCount:S.childCount,childrenDrawn:0})}},"drawBranch"),AIt=o(e=>e.split(/|\n/),"splitLines"),hBe=o((e,t)=>{if(e.length<=t)return e;let r=[];for(let n of e.split(/\s+/)){let i=r.length-1;i>=0&&r[i].length+1+n.length<=t?r[i]+=" "+n:r.push(n)}return r.join(` +`)},"wrapText"),oD=o((e,t,r,n,i,a,s)=>{let l=AIt(t),u=s*1.05,h=e.append("text").attr("class",i).attr("text-anchor",a).attr("x",r).attr("y",n-(l.length-1)*u/2);for(let[d,f]of l.entries())h.append("tspan").attr("x",r).attr("dy",d===0?0:u).text(f);return h},"drawMultilineText"),cBe=o((e,t,r)=>e+(t-e)*r,"lerp"),vx=o((e,t,r,n,i,a,s)=>{if(s){let l=s.roughSvg.line(t,r,n,i,{roughness:1.5,seed:s.seed,stroke:s.lineColor,strokeWidth:2});e.append(()=>l).attr("class",a);return}return e.append("line").attr("class",a).attr("x1",t).attr("y1",r).attr("x2",n).attr("y2",i)},"drawLine"),dBe={draw:CIt}});var RIt,pBe,mBe=F(()=>{"use strict";RIt=o(e=>` +.ishikawa .ishikawa-spine, +.ishikawa .ishikawa-branch, +.ishikawa .ishikawa-sub-branch { + stroke: ${e.lineColor}; + stroke-width: 2; + fill: none; +} + +.ishikawa .ishikawa-sub-branch { + stroke-width: 1; +} + +.ishikawa .ishikawa-arrow { + fill: ${e.lineColor}; +} + +.ishikawa .ishikawa-head { + fill: ${e.mainBkg}; + stroke: ${e.lineColor}; + stroke-width: 2; +} + +.ishikawa .ishikawa-label-box { + fill: ${e.mainBkg}; + stroke: ${e.lineColor}; + stroke-width: 2; +} + +.ishikawa text { + font-family: ${e.fontFamily}; + font-size: ${e.fontSize}; + fill: ${e.textColor}; +} + +.ishikawa .ishikawa-head-label { + font-weight: 600; + text-anchor: middle; + dominant-baseline: middle; + font-size: 14px; +} + +.ishikawa .ishikawa-label { + text-anchor: end; +} + +.ishikawa .ishikawa-label.cause { + text-anchor: middle; + dominant-baseline: middle; +} + +.ishikawa .ishikawa-label.align { + text-anchor: end; + dominant-baseline: middle; +} + +.ishikawa .ishikawa-label.up { + dominant-baseline: baseline; +} + +.ishikawa .ishikawa-label.down { + dominant-baseline: hanging; +} +`,"getStyles"),pBe=RIt});var gBe={};ir(gBe,{diagram:()=>_It});var _It,yBe=F(()=>{"use strict";nBe();iBe();fBe();mBe();_It={parser:rBe,get db(){return new sD},renderer:dBe,styles:pBe}});var aX,bBe,TBe=F(()=>{"use strict";aX=(function(){var e=o(function(b,T,k,C){for(k=k||{},C=b.length;C--;k[b[C]]=T);return k},"o"),t=[5,8],r=[7,8,11,12,17,19,22,24],n=[1,17],i=[1,18],a=[7,8,11,12,14,15,16,17,19,20,21,22,24,27],s=[1,31],l=[1,39],u=[7,8,11,12,17,19,22,24,27],h=[1,57],d=[1,56],f=[1,58],p=[1,59],m=[1,60],g=[7,8,11,12,16,17,19,20,22,24,27,31,32,33],y={trace:o(function(){},"trace"),yy:{},symbols_:{error:2,start:3,optNewlines:4,VENN:5,document:6,EOF:7,NEWLINE:8,line:9,statement:10,TITLE:11,SET:12,identifier:13,BRACKET_LABEL:14,COLON:15,NUMERIC:16,UNION:17,identifierList:18,TEXT:19,IDENTIFIER:20,STRING:21,INDENT_TEXT:22,indentedTextTail:23,STYLE:24,stylesOpt:25,styleField:26,COMMA:27,styleValue:28,valueTokens:29,valueToken:30,HEXCOLOR:31,RGBCOLOR:32,RGBACOLOR:33,$accept:0,$end:1},terminals_:{2:"error",5:"VENN",7:"EOF",8:"NEWLINE",11:"TITLE",12:"SET",14:"BRACKET_LABEL",15:"COLON",16:"NUMERIC",17:"UNION",19:"TEXT",20:"IDENTIFIER",21:"STRING",22:"INDENT_TEXT",24:"STYLE",27:"COMMA",31:"HEXCOLOR",32:"RGBCOLOR",33:"RGBACOLOR"},productions_:[0,[3,4],[4,0],[4,2],[6,0],[6,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,5],[10,2],[10,3],[10,4],[10,5],[10,3],[10,3],[10,3],[10,4],[10,4],[10,2],[10,3],[23,1],[23,1],[23,1],[23,2],[23,2],[25,1],[25,3],[26,3],[28,1],[28,1],[29,1],[29,2],[30,1],[30,1],[30,1],[30,1],[30,1],[18,1],[18,3],[13,1],[13,1]],performAction:o(function(T,k,C,w,S,R,L){var N=R.length-1;switch(S){case 1:return R[N-1];case 2:case 3:case 4:this.$=[];break;case 5:R[N-1].push(R[N]),this.$=R[N-1];break;case 6:this.$=[];break;case 7:case 22:case 32:case 36:case 37:case 38:case 39:case 40:this.$=R[N];break;case 8:w.setDiagramTitle(R[N].substr(6)),this.$=R[N].substr(6);break;case 9:w.addSubsetData([R[N]],void 0,void 0),w.setIndentMode&&w.setIndentMode(!0);break;case 10:w.addSubsetData([R[N-1]],R[N],void 0),w.setIndentMode&&w.setIndentMode(!0);break;case 11:w.addSubsetData([R[N-2]],void 0,parseFloat(R[N])),w.setIndentMode&&w.setIndentMode(!0);break;case 12:w.addSubsetData([R[N-3]],R[N-2],parseFloat(R[N])),w.setIndentMode&&w.setIndentMode(!0);break;case 13:if(R[N].length<2)throw new Error("union requires multiple identifiers");w.validateUnionIdentifiers&&w.validateUnionIdentifiers(R[N]),w.addSubsetData(R[N],void 0,void 0),w.setIndentMode&&w.setIndentMode(!0);break;case 14:if(R[N-1].length<2)throw new Error("union requires multiple identifiers");w.validateUnionIdentifiers&&w.validateUnionIdentifiers(R[N-1]),w.addSubsetData(R[N-1],R[N],void 0),w.setIndentMode&&w.setIndentMode(!0);break;case 15:if(R[N-2].length<2)throw new Error("union requires multiple identifiers");w.validateUnionIdentifiers&&w.validateUnionIdentifiers(R[N-2]),w.addSubsetData(R[N-2],void 0,parseFloat(R[N])),w.setIndentMode&&w.setIndentMode(!0);break;case 16:if(R[N-3].length<2)throw new Error("union requires multiple identifiers");w.validateUnionIdentifiers&&w.validateUnionIdentifiers(R[N-3]),w.addSubsetData(R[N-3],R[N-2],parseFloat(R[N])),w.setIndentMode&&w.setIndentMode(!0);break;case 17:case 18:case 19:w.addTextData(R[N-1],R[N],void 0);break;case 20:case 21:w.addTextData(R[N-2],R[N-1],R[N]);break;case 23:w.addStyleData(R[N-1],R[N]);break;case 24:case 25:case 26:var I=w.getCurrentSets();if(!I)throw new Error("text requires set");w.addTextData(I,R[N],void 0);break;case 27:case 28:var I=w.getCurrentSets();if(!I)throw new Error("text requires set");w.addTextData(I,R[N-1],R[N]);break;case 29:case 41:this.$=[R[N]];break;case 30:case 42:this.$=[...R[N-2],R[N]];break;case 31:this.$=[R[N-2],R[N]];break;case 33:this.$=R[N].join(" ");break;case 34:this.$=[R[N]];break;case 35:R[N-1].push(R[N]),this.$=R[N-1];break;case 43:case 44:this.$=R[N];break}},"anonymous"),table:[e(t,[2,2],{3:1,4:2}),{1:[3]},{5:[1,3],8:[1,4]},e(r,[2,4],{6:5}),e(t,[2,3]),{7:[1,6],8:[1,8],9:7,10:9,11:[1,10],12:[1,11],17:[1,12],19:[1,13],22:[1,14],24:[1,15]},{1:[2,1]},e(r,[2,5]),e(r,[2,6]),e(r,[2,7]),e(r,[2,8]),{13:16,20:n,21:i},{13:20,18:19,20:n,21:i},{13:20,18:21,20:n,21:i},{16:[1,25],20:[1,23],21:[1,24],23:22},{13:20,18:26,20:n,21:i},e(r,[2,9],{14:[1,27],15:[1,28]}),e(a,[2,43]),e(a,[2,44]),e(r,[2,13],{14:[1,29],15:[1,30],27:s}),e(a,[2,41]),{16:[1,34],20:[1,32],21:[1,33],27:s},e(r,[2,22]),e(r,[2,24],{14:[1,35]}),e(r,[2,25],{14:[1,36]}),e(r,[2,26]),{20:l,25:37,26:38,27:s},e(r,[2,10],{15:[1,40]}),{16:[1,41]},e(r,[2,14],{15:[1,42]}),{16:[1,43]},{13:44,20:n,21:i},e(r,[2,17],{14:[1,45]}),e(r,[2,18],{14:[1,46]}),e(r,[2,19]),e(r,[2,27]),e(r,[2,28]),e(r,[2,23],{27:[1,47]}),e(u,[2,29]),{15:[1,48]},{16:[1,49]},e(r,[2,11]),{16:[1,50]},e(r,[2,15]),e(a,[2,42]),e(r,[2,20]),e(r,[2,21]),{20:l,26:51},{16:h,20:d,21:[1,53],28:52,29:54,30:55,31:f,32:p,33:m},e(r,[2,12]),e(r,[2,16]),e(u,[2,30]),e(u,[2,31]),e(u,[2,32]),e(u,[2,33],{30:61,16:h,20:d,31:f,32:p,33:m}),e(g,[2,34]),e(g,[2,36]),e(g,[2,37]),e(g,[2,38]),e(g,[2,39]),e(g,[2,40]),e(g,[2,35])],defaultActions:{6:[2,1]},parseError:o(function(T,k){if(k.recoverable)this.trace(T);else{var C=new Error(T);throw C.hash=k,C}},"parseError"),parse:o(function(T){var k=this,C=[0],w=[],S=[null],R=[],L=this.table,N="",I=0,_=0,A=0,M=2,D=1,P=R.slice.call(arguments,1),B=Object.create(this.lexer),O={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(O.yy[$]=this.yy[$]);B.setInput(T,O.yy),O.yy.lexer=B,O.yy.parser=this,typeof B.yylloc>"u"&&(B.yylloc={});var V=B.yylloc;R.push(V);var G=B.options&&B.options.ranges;typeof O.yy.parseError=="function"?this.parseError=O.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function z(Ge){C.length=C.length-2*Ge,S.length=S.length-Ge,R.length=R.length-Ge}o(z,"popStack");function W(){var Ge;return Ge=w.pop()||B.lex()||D,typeof Ge!="number"&&(Ge instanceof Array&&(w=Ge,Ge=w.pop()),Ge=k.symbols_[Ge]||Ge),Ge}o(W,"lex");for(var H,j,Q,U,oe,te,le={},ie,ae,Re,be;;){if(Q=C[C.length-1],this.defaultActions[Q]?U=this.defaultActions[Q]:((H===null||typeof H>"u")&&(H=W()),U=L[Q]&&L[Q][H]),typeof U>"u"||!U.length||!U[0]){var Pe="";be=[];for(ie in L[Q])this.terminals_[ie]&&ie>M&&be.push("'"+this.terminals_[ie]+"'");B.showPosition?Pe="Parse error on line "+(I+1)+`: +`+B.showPosition()+` +Expecting `+be.join(", ")+", got '"+(this.terminals_[H]||H)+"'":Pe="Parse error on line "+(I+1)+": Unexpected "+(H==D?"end of input":"'"+(this.terminals_[H]||H)+"'"),this.parseError(Pe,{text:B.match,token:this.terminals_[H]||H,line:B.yylineno,loc:V,expected:be})}if(U[0]instanceof Array&&U.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Q+", token: "+H);switch(U[0]){case 1:C.push(H),S.push(B.yytext),R.push(B.yylloc),C.push(U[1]),H=null,j?(H=j,j=null):(_=B.yyleng,N=B.yytext,I=B.yylineno,V=B.yylloc,A>0&&A--);break;case 2:if(ae=this.productions_[U[1]][1],le.$=S[S.length-ae],le._$={first_line:R[R.length-(ae||1)].first_line,last_line:R[R.length-1].last_line,first_column:R[R.length-(ae||1)].first_column,last_column:R[R.length-1].last_column},G&&(le._$.range=[R[R.length-(ae||1)].range[0],R[R.length-1].range[1]]),te=this.performAction.apply(le,[N,_,I,O.yy,U[1],S,R].concat(P)),typeof te<"u")return te;ae&&(C=C.slice(0,-1*ae*2),S=S.slice(0,-1*ae),R=R.slice(0,-1*ae)),C.push(this.productions_[U[1]][0]),S.push(le.$),R.push(le._$),Re=L[C[C.length-2]][C[C.length-1]],C.push(Re);break;case 3:return!0}}return!0},"parse")},v=(function(){var b={EOF:1,parseError:o(function(k,C){if(this.yy.parser)this.yy.parser.parseError(k,C);else throw new Error(k)},"parseError"),setInput:o(function(T,k){return this.yy=k||this.yy||{},this._input=T,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:o(function(){var T=this._input[0];this.yytext+=T,this.yyleng++,this.offset++,this.match+=T,this.matched+=T;var k=T.match(/(?:\r\n?|\n).*/g);return k?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),T},"input"),unput:o(function(T){var k=T.length,C=T.split(/(?:\r\n?|\n)/g);this._input=T+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-k),this.offset-=k;var w=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),C.length-1&&(this.yylineno-=C.length-1);var S=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:C?(C.length===w.length?this.yylloc.first_column:0)+w[w.length-C.length].length-C[0].length:this.yylloc.first_column-k},this.options.ranges&&(this.yylloc.range=[S[0],S[0]+this.yyleng-k]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(T){this.unput(this.match.slice(T))},"less"),pastInput:o(function(){var T=this.matched.substr(0,this.matched.length-this.match.length);return(T.length>20?"...":"")+T.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var T=this.match;return T.length<20&&(T+=this._input.substr(0,20-T.length)),(T.substr(0,20)+(T.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var T=this.pastInput(),k=new Array(T.length+1).join("-");return T+this.upcomingInput()+` +`+k+"^"},"showPosition"),test_match:o(function(T,k){var C,w,S;if(this.options.backtrack_lexer&&(S={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(S.yylloc.range=this.yylloc.range.slice(0))),w=T[0].match(/(?:\r\n?|\n).*/g),w&&(this.yylineno+=w.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:w?w[w.length-1].length-w[w.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+T[0].length},this.yytext+=T[0],this.match+=T[0],this.matches=T,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(T[0].length),this.matched+=T[0],C=this.performAction.call(this,this.yy,this,k,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),C)return C;if(this._backtrack){for(var R in S)this[R]=S[R];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var T,k,C,w;this._more||(this.yytext="",this.match="");for(var S=this._currentRules(),R=0;Rk[0].length)){if(k=C,w=R,this.options.backtrack_lexer){if(T=this.test_match(C,S[R]),T!==!1)return T;if(this._backtrack){k=!1;continue}else return!1}else if(!this.options.flex)break}return k?(T=this.test_match(k,S[w]),T!==!1?T:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var k=this.next();return k||this.lex()},"lex"),begin:o(function(k){this.conditionStack.push(k)},"begin"),popState:o(function(){var k=this.conditionStack.length-1;return k>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:o(function(k){return k=this.conditionStack.length-1-Math.abs(k||0),k>=0?this.conditionStack[k]:"INITIAL"},"topState"),pushState:o(function(k){this.begin(k)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(k,C,w,S){var R=S;switch(w){case 0:break;case 1:break;case 2:break;case 3:if(k.getIndentMode&&k.getIndentMode())return k.consumeIndentText=!0,this.begin("INITIAL"),22;break;case 4:break;case 5:k.setIndentMode&&k.setIndentMode(!1),this.begin("INITIAL"),this.unput(C.yytext);break;case 6:return this.begin("bol"),8;break;case 7:break;case 8:break;case 9:return 7;case 10:return 11;case 11:return 5;case 12:return 12;case 13:return 17;case 14:if(k.consumeIndentText)k.consumeIndentText=!1;else return 19;break;case 15:return 24;case 16:return C.yytext=C.yytext.slice(2,-2),14;break;case 17:return C.yytext=C.yytext.slice(1,-1).trim(),14;break;case 18:return 16;case 19:return 31;case 20:return 33;case 21:return 32;case 22:return 20;case 23:return 21;case 24:return 27;case 25:return 15}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[ \t]+(?=[\n\r]))/i,/^(?:[ \t]+(?=text\b))/i,/^(?:[ \t]+)/i,/^(?:[^ \t\n\r])/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[ \t]+)/i,/^(?:$)/i,/^(?:title\s[^#\n;]+)/i,/^(?:venn-beta\b)/i,/^(?:set\b)/i,/^(?:union\b)/i,/^(?:text\b)/i,/^(?:style\b)/i,/^(?:\["[^\"]*"\])/i,/^(?:\[[^\]\"]+\])/i,/^(?:[+-]?(\d+(\.\d+)?|\.\d+))/i,/^(?:#[0-9a-fA-F]{3,8})/i,/^(?:rgba\(\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*\))/i,/^(?:rgb\(\s*[0-9.]+\s*[,]\s*[0-9.]+\s*[,]\s*[0-9.]+\s*\))/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:"[^\"]*")/i,/^(?:,)/i,/^(?::)/i],conditions:{bol:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0},INITIAL:{rules:[0,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],inclusive:!0}}};return b})();y.lexer=v;function x(){this.yy={}}return o(x,"Parser"),x.prototype=y,y.Parser=x,new x})();aX.parser=aX;bBe=aX});function qIt(){return qr(WIt,_t().venn)}var sX,oX,lX,cX,uX,hX,IIt,MIt,ak,NIt,PIt,OIt,BIt,lD,$It,FIt,zIt,GIt,VIt,WIt,HIt,CBe,wBe=F(()=>{"use strict";Qt();ur();Nn();Wi();sX=[],oX=[],lX=[],cX=new Set,hX=!1,IIt=o((e,t,r)=>{let n=lD(e).sort(),i=r??10/Math.pow(e.length,2);uX=n,n.length===1&&cX.add(n[0]),sX.push({sets:n,size:i,label:t?ak(t):void 0})},"addSubsetData"),MIt=o(()=>sX,"getSubsetData"),ak=o(e=>{let t=e.trim();return t.length>=2&&t.startsWith('"')&&t.endsWith('"')?t.slice(1,-1):t},"normalizeText"),NIt=o(e=>e&&ak(e),"normalizeStyleValue"),PIt=o((e,t,r)=>{let n=ak(t);oX.push({sets:lD(e).sort(),id:n,label:r?ak(r):void 0})},"addTextData"),OIt=o((e,t)=>{let r=lD(e).sort(),n={};for(let[i,a]of t)n[i]=NIt(a)??a;lX.push({targets:r,styles:n})},"addStyleData"),BIt=o(()=>lX,"getStyleData"),lD=o(e=>e.map(t=>ak(t)),"normalizeIdentifierList"),$It=o(e=>{let r=lD(e).filter(n=>!cX.has(n));if(r.length>0)throw new Error(`unknown set identifier: ${r.join(", ")}`)},"validateUnionIdentifiers"),FIt=o(()=>oX,"getTextData"),zIt=o(()=>uX,"getCurrentSets"),GIt=o(()=>hX,"getIndentMode"),VIt=o(e=>{hX=e},"setIndentMode"),WIt=cr.venn;o(qIt,"getConfig");HIt=o(()=>{yr(),sX.length=0,oX.length=0,lX.length=0,cX.clear(),uX=void 0,hX=!1},"customClear"),CBe={getConfig:qIt,clear:HIt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr,addSubsetData:IIt,getSubsetData:MIt,addTextData:PIt,addStyleData:OIt,validateUnionIdentifiers:$It,getTextData:FIt,getStyleData:BIt,getCurrentSets:zIt,getIndentMode:GIt,setIndentMode:VIt}});var UIt,kBe,SBe=F(()=>{"use strict";UIt=o(e=>` + .venn-title { + font-size: 32px; + fill: ${e.vennTitleTextColor}; + font-family: ${e.fontFamily}; + } + + .venn-circle text { + font-size: 48px; + font-family: ${e.fontFamily}; + } + + .venn-intersection text { + font-size: 48px; + fill: ${e.vennSetTextColor}; + font-family: ${e.fontFamily}; + } + + .venn-text-node { + font-family: ${e.fontFamily}; + color: ${e.vennSetTextColor}; + } +`,"getStyles"),kBe=UIt});function cD(e,t){let r=jIt(e),n=r.filter(l=>YIt(l,e)),i=0,a=0,s=[];if(n.length>1){let l=_Be(n);for(let h=0;hd.angle-h.angle);let u=n[n.length-1];for(let h=0;hg.radius*2&&(T=g.radius*2),(p==null||p.width>T)&&(p={circle:g,width:T,p1:d,p2:u,large:T>g.radius,sweep:!0})}p!=null&&(s.push(p),i+=pX(p.circle.radius,p.width),u=d)}}else{let l=e[0];for(let h=1;hMath.abs(l.radius-e[h].radius)){u=!0;break}u?i=a=0:(i=l.radius*l.radius*Math.PI,s.push({circle:l,p1:{x:l.x,y:l.y+l.radius},p2:{x:l.x-1e-10,y:l.y+l.radius},width:l.radius*2,large:!0,sweep:!0}))}return a/=2,t&&(t.area=i+a,t.arcArea=i,t.polygonArea=a,t.arcs=s,t.innerPoints=n,t.intersectionPoints=r),i+a}function YIt(e,t){return t.every(r=>Ro(e,r)=e+t)return 0;if(r<=Math.abs(e-t))return Math.PI*Math.min(e,t)*Math.min(e,t);let n=e-(r*r-t*t+e*e)/(2*r),i=t-(r*r-e*e+t*t)/(2*r);return pX(e,n)+pX(t,i)}function RBe(e,t){let r=Ro(e,t),n=e.radius,i=t.radius;if(r>=n+i||r<=Math.abs(n-i))return[];let a=(n*n-i*i+r*r)/(2*r),s=Math.sqrt(n*n-a*a),l=e.x+a*(t.x-e.x)/r,u=e.y+a*(t.y-e.y)/r,h=-(t.y-e.y)*(s/r),d=-(t.x-e.x)*(s/r);return[{x:l+h,y:u-d},{x:l-h,y:u+d}]}function _Be(e){let t={x:0,y:0};for(let r of e)t.x+=r.x,t.y+=r.y;return t.x/=e.length,t.y/=e.length,t}function XIt(e,t,r,n){n=n||{};let i=n.maxIterations||100,a=n.tolerance||1e-10,s=e(t),l=e(r),u=r-t;if(s*l>0)throw"Initial bisect points must have opposite signs";if(s===0)return t;if(l===0)return r;for(let h=0;h=0&&(t=d),Math.abs(u)mX(t))}function xx(e,t){let r=0;for(let n=0;nC.fx-w.fx,"sortOrder"),x=t.slice(),b=t.slice(),T=t.slice(),k=t.slice();for(let C=0;C{let L=R.slice();return L.fx=R.fx,L.id=R.id,L});S.sort((R,L)=>R.id-L.id),r.history.push({x:g[0].slice(),fx:g[0].fx,simplex:S})}p=0;for(let S=0;S=g[m-1].fx){let S=!1;if(b.fx>w.fx?(md(T,1+d,x,-d,w),T.fx=e(T),T.fx=1)break;for(let R=1;Rl+a*i*u||h>=v)y=i;else{if(Math.abs(f)<=-s*u)return i;f*(y-g)>=0&&(y=g),g=i,v=h}return 0}o(m,"zoom");for(let g=0;g<10;++g){if(md(n.x,1,r.x,i,t),h=n.fx=e(n.x,n.fxprime),f=xx(n.fxprime,t),h>l+a*i*u||g&&h>=d)return m(p,i,d);if(Math.abs(f)<=-s*u)return i;if(f>=0)return m(i,p,h);d=h,p=i,i*=2}return i}function ZIt(e,t,r){let n={x:t.slice(),fx:0,fxprime:t.slice()},i={x:t.slice(),fx:0,fxprime:t.slice()},a=t.slice(),s,l,u=1,h;r=r||{},h=r.maxIterations||t.length*20,n.fx=e(n.x,n.fxprime),s=n.fxprime.slice(),yX(s,n.fxprime,-1);for(let d=0;d{let f={};for(let p=0;pbX(e,t,n)-r,0,e+t)}function QIt(e,t={}){let r=t.distinct,n=e.map(l=>Object.assign({},l));function i(l){return l.join(";")}if(o(i,"toKey"),r){let l=new Map;for(let u of n)for(let h=0;hl===u?0:la.sets.length===2).forEach(a=>{let s=r[a.sets[0]],l=r[a.sets[1]],u=Math.sqrt(t[s].size/Math.PI),h=Math.sqrt(t[l].size/Math.PI),d=vX(u,h,a.size);n[s][l]=n[l][s]=d;let f=0;a.size+1e-10>=Math.min(t[s].size,t[l].size)?f=1:a.size<=1e-10&&(f=-1),i[s][l]=i[l][s]=f}),{distances:n,constraints:i}}function eMt(e,t,r,n){for(let a=0;a0&&g<=f||p<0&&g>=f||(i+=2*y*y,t[2*a]+=4*y*(s-h),t[2*a+1]+=4*y*(l-d),t[2*u]+=4*y*(h-s),t[2*u+1]+=4*y*(d-l))}}return i}function tMt(e,t={}){let r=nMt(e,t),n=t.lossFunction||bx;if(e.length>=8){let i=rMt(e,t),a=n(i,e),s=n(r,e);a+1e-8p.map(m=>m/l));let u=o((p,m)=>eMt(p,m,a,s),"obj"),h=null;for(let p=0;pf.sets.length===2);for(let f of e){let p=f.weight!=null?f.weight:1,m=f.sets[0],g=f.sets[1];f.size+IBe>=Math.min(n[m].size,n[g].size)&&(p=0),i[m].push({set:g,size:f.size,weight:p}),i[g].push({set:m,size:f.size,weight:p})}let a=[];Object.keys(i).forEach(f=>{let p=0;for(let m=0;me[s]));let a=n.weight!=null?n.weight:1;r+=a*(i-n.size)*(i-n.size)}return r}function MBe(e,t){let r=0;for(let n of t){if(n.sets.length===1)continue;let i;if(n.sets.length===2){let l=e[n.sets[0]],u=e[n.sets[1]];i=bX(l.radius,u.radius,Ro(l,u))}else i=cD(n.sets.map(l=>e[l]));let a=n.weight!=null?n.weight:1,s=Math.log((i+1)/(n.size+1));r+=a*s*s}return r}function iMt(e,t,r){if(r==null?e.sort((i,a)=>a.radius-i.radius):e.sort(r),e.length>0){let i=e[0].x,a=e[0].y;for(let s of e)s.x-=i,s.y-=a}if(e.length===2&&Ro(e[0],e[1])1){let i=Math.atan2(e[1].x,e[1].y)-t,a=Math.cos(i),s=Math.sin(i);for(let l of e){let u=l.x,h=l.y;l.x=a*u-s*h,l.y=s*u+a*h}}if(e.length>2){let i=Math.atan2(e[2].x,e[2].y)-t;for(;i<0;)i+=2*Math.PI;for(;i>2*Math.PI;)i-=2*Math.PI;if(i>Math.PI){let a=e[1].y/(1e-10+e[1].x);for(let s of e){var n=(s.x+a*s.y)/(1+a*a);s.x=2*n-s.x,s.y=2*n*a-s.y}}}}function aMt(e){e.forEach(i=>{i.parent=i});function t(i){return i.parent!==i&&(i.parent=t(i.parent)),i.parent}o(t,"find");function r(i,a){let s=t(i),l=t(a);s.parent=l}o(r,"union");for(let i=0;i{delete i.parent}),Array.from(n.values())}function xX(e){let t=o(r=>{let n=e.reduce((a,s)=>Math.max(a,s[r]+s.radius),Number.NEGATIVE_INFINITY),i=e.reduce((a,s)=>Math.min(a,s[r]-s.radius),Number.POSITIVE_INFINITY);return{max:n,min:i}},"minMax");return{xRange:t("x"),yRange:t("y")}}function NBe(e,t,r){t==null&&(t=Math.PI/2);let n=BBe(e).map(h=>Object.assign({},h)),i=aMt(n);for(let h of i){iMt(h,t,r);let d=xX(h);h.size=(d.xRange.max-d.xRange.min)*(d.yRange.max-d.yRange.min),h.bounds=d}i.sort((h,d)=>d.size-h.size),n=i[0];let a=n.bounds,s=(a.xRange.max-a.xRange.min)/50;function l(h,d,f){if(!h)return;let p=h.bounds,m,g;if(d)m=a.xRange.max-p.xRange.min+s;else{m=a.xRange.max-p.xRange.max;let y=(p.xRange.max-p.xRange.min)/2-(a.xRange.max-a.xRange.min)/2;y<0&&(m+=y)}if(f)g=a.yRange.max-p.yRange.min+s;else{g=a.yRange.max-p.yRange.max;let y=(p.yRange.max-p.yRange.min)/2-(a.yRange.max-a.yRange.min)/2;y<0&&(g+=y)}for(let y of h)y.x+=m,y.y+=g,n.push(y)}o(l,"addCluster");let u=1;for(;u({radius:d*m.radius,x:n+f+(m.x-s.min)*d,y:n+p+(m.y-l.min)*d,setid:m.setid})))}function OBe(e){let t={};for(let r of e)t[r.setid]=r;return t}function BBe(e){return Object.keys(e).map(r=>Object.assign(e[r],{setid:r}))}function $Be(e={}){let t=!1,r=600,n=350,i=15,a=1e3,s=Math.PI/2,l=!0,u=null,h=!0,d=!0,f=null,p=null,m=!1,g=null,y=e&&e.symmetricalTextCentre?e.symmetricalTextCentre:!1,v={},x=e&&e.colourScheme?e.colourScheme:e&&e.colorScheme?e.colorScheme:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],b=0,T=o(function(S){if(S in v)return v[S];var R=v[S]=x[b];return b+=1,b>=x.length&&(b=0),R},"colours"),k=DBe,C=bx;function w(S){let R=S.datum(),L=new Set;R.forEach(U=>{U.size==0&&U.sets.length==1&&L.add(U.sets[0])}),R=R.filter(U=>!U.sets.some(oe=>L.has(oe)));let N={},I={};if(R.length>0){let U=k(R,{lossFunction:C,distinct:m});l&&(U=NBe(U,s,p)),N=PBe(U,r,n,i,u),I=zBe(N,R,y)}let _={};R.forEach(U=>{U.label&&(_[U.sets]=U.label)});function A(U){if(U.sets in _)return _[U.sets];if(U.sets.length==1)return""+U.sets[0]}o(A,"label"),S.selectAll("svg").data([N]).enter().append("svg");let M=S.select("svg");t?M.attr("viewBox",`0 0 ${r} ${n}`):M.attr("width",r).attr("height",n);let D={},P=!1;M.selectAll(".venn-area path").each(function(U){let oe=this.getAttribute("d");U.sets.length==1&&oe&&!m&&(P=!0,D[U.sets[0]]=lMt(oe))});function B(U){return oe=>{let te=U.sets.map(le=>{let ie=D[le],ae=N[le];return ie||(ie={x:r/2,y:n/2,radius:1}),ae||(ae={x:r/2,y:n/2,radius:1}),{x:ie.x*(1-oe)+ae.x*oe,y:ie.y*(1-oe)+ae.y*oe,radius:ie.radius*(1-oe)+ae.radius*oe}});return ABe(te,g)}}o(B,"pathTween");let O=M.selectAll(".venn-area").data(R,U=>U.sets),$=O.enter().append("g").attr("class",U=>`venn-area venn-${U.sets.length==1?"circle":"intersection"}${U.colour||U.color?" venn-coloured":""}`).attr("data-venn-sets",U=>U.sets.join("_")),V=$.append("path"),G=$.append("text").attr("class","label").text(U=>A(U)).attr("text-anchor","middle").attr("dy",".35em").attr("x",r/2).attr("y",n/2);d&&(V.style("fill-opacity","0").filter(U=>U.sets.length==1).style("fill",U=>U.colour?U.colour:U.color?U.color:T(U.sets)).style("fill-opacity",".25"),G.style("fill",U=>U.colour||U.color?"#FFF":e.textFill?e.textFill:U.sets.length==1?T(U.sets):"#444"));function z(U){return typeof U.transition=="function"?U.transition("venn").duration(a):U}o(z,"asTransition");let W=S;P&&typeof W.transition=="function"?(W=z(S),W.selectAll("path").attrTween("d",B)):W.selectAll("path").attr("d",U=>ABe(U.sets.map(oe=>N[oe])),g);let H=W.selectAll("text").filter(U=>U.sets in I).text(U=>A(U)).attr("x",U=>Math.floor(I[U.sets].x)).attr("y",U=>Math.floor(I[U.sets].y));h&&(P?"on"in H?H.on("end",dX(N,A)):H.each("end",dX(N,A)):H.each(dX(N,A)));let j=z(O.exit()).remove();typeof O.transition=="function"&&j.selectAll("path").attrTween("d",B);let Q=j.selectAll("text").attr("x",r/2).attr("y",n/2);return f!==null&&(G.style("font-size","0px"),H.style("font-size",f),Q.style("font-size","0px")),{circles:N,textCentres:I,nodes:O,enter:$,update:W,exit:j}}return o(w,"chart"),w.wrap=function(S){return arguments.length?(h=S,w):h},w.useViewBox=function(){return t=!0,w},w.width=function(S){return arguments.length?(r=S,w):r},w.height=function(S){return arguments.length?(n=S,w):n},w.padding=function(S){return arguments.length?(i=S,w):i},w.distinct=function(S){return arguments.length?(m=S,w):m},w.colours=function(S){return arguments.length?(T=S,w):T},w.colors=function(S){return arguments.length?(T=S,w):T},w.fontSize=function(S){return arguments.length?(f=S,w):f},w.round=function(S){return arguments.length?(g=S,w):g},w.duration=function(S){return arguments.length?(a=S,w):a},w.layoutFunction=function(S){return arguments.length?(k=S,w):k},w.normalize=function(S){return arguments.length?(l=S,w):l},w.scaleToFit=function(S){return arguments.length?(u=S,w):u},w.styled=function(S){return arguments.length?(d=S,w):d},w.orientation=function(S){return arguments.length?(s=S,w):s},w.orientationOrder=function(S){return arguments.length?(p=S,w):p},w.lossFunction=function(S){return arguments.length?(C=S==="default"?bx:S==="logRatio"?MBe:S,w):C},w}function dX(e,t){return function(r){let n=this,i=e[r.sets[0]].radius||50,a=t(r)||"",s=a.split(/\s+/).reverse(),u=(a.length+s.length)/3,h=s.pop(),d=[h],f=0,p=1.1;n.textContent=null;let m=[];function g(T){let k=n.ownerDocument.createElementNS(n.namespaceURI,"tspan");return k.textContent=T,m.push(k),n.append(k),k}o(g,"append");let y=g(h);for(;h=s.pop(),!!h;){d.push(h);let T=d.join(" ");y.textContent=T,T.length>u&&y.getComputedTextLength()>i&&(d.pop(),y.textContent=d.join(" "),d=[h],y=g(h),f++)}let v=.35-f*p/2,x=n.getAttribute("x"),b=n.getAttribute("y");m.forEach((T,k)=>{T.setAttribute("x",x),T.setAttribute("y",b),T.setAttribute("dy",`${v+k*p}em`)})}}function fX(e,t,r){let n=t[0].radius-Ro(t[0],e);for(let i=1;i=a&&(i=n[d],a=f)}let s=LBe(d=>-1*fX({x:d[0],y:d[1]},e,t),[i.x,i.y],{maxIterations:500,minErrorDelta:1e-10}).x,l={x:r?0:s[0],y:s[1]},u=!0;for(let d of e)if(Ro(l,d)>d.radius){u=!1;break}for(let d of t)if(Ro(l,d)d.p1))}function sMt(e){let t={},r=Object.keys(e);for(let n of r)t[n]=[];for(let n=0;n0&&console.log("WARNING: area "+s+" not represented on screen")}return n}function oMt(e,t,r){let n=[];return n.push(` +M`,e,t),n.push(` +m`,-r,0),n.push(` +a`,r,r,0,1,0,r*2,0),n.push(` +a`,r,r,0,1,0,-r*2,0),n.join(" ")}function lMt(e){let t=e.split(" ");return{x:Number.parseFloat(t[1]),y:Number.parseFloat(t[2]),radius:-Number.parseFloat(t[4])}}function GBe(e){if(e.length===0)return[];let t={};return cD(e,t),t.arcs}function VBe(e,t){if(e.length===0)return"M 0 0";let r=Math.pow(10,t||0),n=t!=null?a=>Math.round(a*r)/r:a=>a;if(e.length==1){let a=e[0].circle;return oMt(n(a.x),n(a.y),n(a.radius))}let i=[` +M`,n(e[0].p2.x),n(e[0].p2.y)];for(let a of e){let s=n(a.circle.radius);i.push(` +A`,s,s,0,a.large?1:0,a.sweep?1:0,n(a.p1.x),n(a.p1.y))}return i.join(" ")}function ABe(e,t){return VBe(GBe(e),t)}function WBe(e,t={}){let{lossFunction:r,layoutFunction:n=DBe,normalize:i=!0,orientation:a=Math.PI/2,orientationOrder:s,width:l=600,height:u=350,padding:h=15,scaleToFit:d=!1,symmetricalTextCentre:f=!1,distinct:p,round:m=2}=t,g=n(e,{lossFunction:r==="default"||!r?bx:r==="logRatio"?MBe:r,distinct:p});i&&(g=NBe(g,a,s));let y=PBe(g,l,u,h,d),v=zBe(y,e,f),x=new Map(Object.keys(y).map(k=>[k,{set:k,x:y[k].x,y:y[k].y,radius:y[k].radius}])),b=e.map(k=>{let C=k.sets.map(R=>x.get(R)),w=GBe(C),S=VBe(w,m);return{circles:C,arcs:w,path:S,area:k,has:new Set(k.sets)}});function T(k){let C="";for(let w of b)w.has.size>k.length&&k.every(S=>w.has.has(S))&&(C+=" "+w.path);return C}return o(T,"genDistinctPath"),b.map(({circles:k,arcs:C,path:w,area:S})=>({data:S,text:v[S.sets],circles:k,arcs:C,path:w,distinctPath:w+T(S.sets)}))}var IBe,qBe=F(()=>{"use strict";o(cD,"intersectionArea");o(YIt,"containedInCircles");o(jIt,"getIntersectionPoints");o(pX,"circleArea");o(Ro,"distance");o(bX,"circleOverlap");o(RBe,"circleCircleIntersection");o(_Be,"getCenter");o(XIt,"bisect");o(mX,"zeros");o(EBe,"zerosM");o(xx,"dot");o(gX,"norm2");o(yX,"scale");o(md,"weightedSum");o(LBe,"nelderMead");o(KIt,"wolfeLineSearch");o(ZIt,"conjugateGradient");o(DBe,"venn");IBe=1e-10;o(vX,"distanceFromIntersectArea");o(QIt,"addMissingAreas");o(JIt,"getDistanceMatrices");o(eMt,"constrainedMDSGradient");o(tMt,"bestInitialLayout");o(rMt,"constrainedMDSLayout");o(nMt,"greedyLayout");o(bx,"lossFunction");o(MBe,"logRatioLossFunction");o(iMt,"orientateCircles");o(aMt,"disjointCluster");o(xX,"getBoundingBox");o(NBe,"normalizeSolution");o(PBe,"scaleSolution");o(OBe,"toObjectNotation");o(BBe,"fromObjectNotation");o($Be,"VennDiagram");o(dX,"wrapText");o(fX,"circleMargin");o(FBe,"computeTextCentre");o(sMt,"getOverlappingCircles");o(zBe,"computeTextCentres");o(oMt,"circlePath");o(lMt,"circleFromPath");o(GBe,"intersectionAreaArcs");o(VBe,"arcsToPath");o(ABe,"intersectionAreaPath");o(WBe,"layout")});function uMt(e){let t=new Map;for(let r of e){let n=r.targets.join("|"),i=t.get(n);i?Object.assign(i,r.styles):t.set(n,{...r.styles})}return t}function N0(e){return e.join("|")}function dMt(e,t,r,n,i,a){let s=e?.useDebugLayout??!1,u=r.select("svg").append("g").attr("class","venn-text-nodes"),h=new Map;for(let d of n){let f=N0(d.sets),p=h.get(f);p?p.push(d):h.set(f,[d])}for(let[d,f]of h.entries()){let p=t.get(d);if(!p?.text)continue;let m=p.text.x,g=p.text.y,y=Math.min(...p.circles.map(M=>M.radius)),v=Math.min(...p.circles.map(M=>M.radius-Math.hypot(m-M.x,g-M.y))),x=Number.isFinite(v)?Math.max(0,v):0;x===0&&Number.isFinite(y)&&(x=y*.6);let b=u.append("g").attr("class","venn-text-area").attr("font-size",`${40*i}px`);s&&b.append("circle").attr("class","venn-text-debug-circle").attr("cx",m).attr("cy",g).attr("r",x).attr("fill","none").attr("stroke","purple").attr("stroke-width",1.5*i).attr("stroke-dasharray",`${6*i} ${4*i}`);let T=Math.max(80*i,x*2*.95),k=Math.max(60*i,x*2*.95),S=(p.data.label&&p.data.label.length>0?Math.min(32*i,x*.25):0)+(f.length<=2?30*i:0),R=m-T/2,L=g-k/2+S,N=Math.max(1,Math.ceil(Math.sqrt(f.length))),I=Math.max(1,Math.ceil(f.length/N)),_=T/N,A=k/I;for(let[M,D]of f.entries()){let P=M%N,B=Math.floor(M/N),O=R+_*(P+.5),$=L+A*(B+.5);s&&b.append("rect").attr("class","venn-text-debug-cell").attr("x",R+_*P).attr("y",L+A*B).attr("width",_).attr("height",A).attr("fill","none").attr("stroke","teal").attr("stroke-width",1*i).attr("stroke-dasharray",`${4*i} ${3*i}`);let V=_*.9,G=A*.9,z=b.append("foreignObject").attr("class","venn-text-node-fo").attr("width",V).attr("height",G).attr("x",O-V/2).attr("y",$-G/2).attr("overflow","visible"),W=a.get(D.id)?.color,H=z.append("xhtml:span").attr("class","venn-text-node").style("display","flex").style("width","100%").style("height","100%").style("white-space","normal").style("align-items","center").style("justify-content","center").style("text-align","center").style("overflow-wrap","normal").style("word-break","normal").text(D.label??D.id);W&&H.style("color",W)}}}function fMt(e){let t=new Set(e.map(i=>[...i.sets].sort().join("|"))),r=new Map(e.filter(i=>i.sets.length===1&&i.size!==void 0).map(i=>[i.sets[0],i.size])),n=[];for(let i of e){if(i.sets.length<3)continue;let a=[...i.sets].sort();for(let s=0;s0?[...e,...n]:e}var hMt,HBe,UBe=F(()=>{"use strict";$r();zi();ur();Ka();qBe();$n();tr();o(uMt,"buildStyleByKey");hMt=o((e,t,r,n)=>{let i=n.db,a=i.getConfig?.(),{themeVariables:s,look:l,handDrawnSeed:u}=_t(),h=l==="handDrawn",d=[s.venn1,s.venn2,s.venn3,s.venn4,s.venn5,s.venn6,s.venn7,s.venn8].filter(Boolean),f=i.getDiagramTitle?.(),p=i.getSubsetData(),m=i.getTextData(),g=uMt(i.getStyleData()),y=fMt(p),v=a?.width??800,x=a?.height??450,T=v/1600,k=f?48*T:0,C=s.primaryTextColor??s.textColor,w=xn(t);w.attr("viewBox",`0 0 ${v} ${x}`),f&&w.append("text").text(f).attr("class","venn-title").attr("font-size",`${32*T}px`).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("x","50%").attr("y",32*T).style("fill",s.vennTitleTextColor||s.titleColor);let S=et(document.createElement("div")),R=$Be().width(v).height(x-k);S.datum(y).call(R);let L=h?ut.svg(S.select("svg").node()):void 0,N=WBe(y,{width:v,height:x-k,padding:a?.padding??15}),I=new Map;for(let D of N){let P=N0([...D.data.sets].sort());I.set(P,D)}m.length>0&&dMt(a,I,S,m,T,g);let _=Tn(s.background||"#f4f4f4");S.selectAll(".venn-circle").each(function(D,P){let B=et(this),$=N0([...D.sets].sort()),V=g.get($),G=V?.fill||d[P%d.length]||s.primaryColor;B.classed(`venn-set-${P%8}`,!0);let z=V?.["fill-opacity"]??.1,W=V?.stroke||G,H=V?.["stroke-width"]||`${5*T}`;if(h&&L){let Q=I.get($);if(Q&&Q.circles.length>0){let U=Q.circles[0],oe=L.circle(U.x,U.y,U.radius*2,{roughness:.7,seed:u,fill:kk(G,.7),fillStyle:"hachure",fillWeight:2,hachureGap:8,hachureAngle:-41+P*60,stroke:W,strokeWidth:parseFloat(String(H))});B.select("path").remove(),B.node()?.insertBefore(oe,B.select("text").node())}}else B.select("path").style("fill",G).style("fill-opacity",z).style("stroke",W).style("stroke-width",H).style("stroke-opacity",.95);let j=V?.color||(_?Qe(G,30):Je(G,30));B.select("text").style("font-size",`${48*T}px`).style("fill",j)}),h&&L?S.selectAll(".venn-intersection").each(function(D){let P=et(this),O=N0([...D.sets].sort()),$=g.get(O),V=$?.fill;if(V){let G=P.select("path"),z=G.attr("d");if(z){let W=L.path(z,{roughness:.7,seed:u,fill:kk(V,.3),fillStyle:"cross-hatch",fillWeight:2,hachureGap:6,hachureAngle:60,stroke:"none"}),H=G.node();H?.parentNode?.insertBefore(W,H),G.remove()}}else P.select("path").style("fill-opacity",0);P.select("text").style("font-size",`${48*T}px`).style("fill",$?.color??s.vennSetTextColor??C)}):(S.selectAll(".venn-intersection text").style("font-size",`${48*T}px`).style("fill",D=>{let B=N0([...D.sets].sort());return g.get(B)?.color??s.vennSetTextColor??C}),S.selectAll(".venn-intersection path").style("fill-opacity",D=>{let B=N0([...D.sets].sort());return g.get(B)?.fill?1:0}).style("fill",D=>{let B=N0([...D.sets].sort());return g.get(B)?.fill??"transparent"}));let A=w.append("g").attr("transform",`translate(0, ${k})`),M=S.select("svg").node();if(M&&"childNodes"in M)for(let D of[...M.childNodes])A.node()?.appendChild(D);Wr(w,x,v,a?.useMaxWidth??!0)},"draw");o(N0,"stableSetsKey");o(dMt,"renderTextNodes");o(fMt,"ensurePairwiseSubsets");HBe={draw:hMt}});var YBe={};ir(YBe,{diagram:()=>pMt});var pMt,jBe=F(()=>{"use strict";TBe();wBe();SBe();UBe();pMt={parser:bBe,db:CBe,renderer:HBe,styles:kBe}});var Tx,TX=F(()=>{"use strict";Wi();ur();Qt();Jt();Nn();Tx=class{constructor(){this.nodes=[];this.levels=new Map;this.outerNodes=[];this.classes=new Map;this.setAccTitle=kr;this.getAccTitle=Ar;this.setDiagramTitle=Or;this.getDiagramTitle=Lr;this.getAccDescription=_r;this.setAccDescription=Rr}static{o(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){let t=cr,r=_t();return qr({...t.treemap,...r.treemap??{}})}addNode(t,r){this.nodes.push(t),this.levels.set(t,r),r===0&&(this.outerNodes.push(t),this.root??=t)}getRoot(){return{name:"",children:this.outerNodes}}addClass(t,r){let n=this.classes.get(t)??{id:t,styles:[],textStyles:[]},i=r.replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");i&&i.forEach(a=>{M2(a)&&(n?.textStyles?n.textStyles.push(a):n.textStyles=[a]),n?.styles?n.styles.push(a):n.styles=[a]}),this.classes.set(t,n)}getClasses(){return this.classes}getStylesForClass(t){return this.classes.get(t)?.styles??[]}clear(){yr(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}}});function ZBe(e){if(!e.length)return[];let t=[],r=[];return e.forEach(n=>{let i={name:n.name,children:n.type==="Leaf"?void 0:[]};for(i.classSelector=n?.classSelector,n?.cssCompiledStyles&&(i.cssCompiledStyles=n.cssCompiledStyles),n.type==="Leaf"&&n.value!==void 0&&(i.value=n.value);r.length>0&&r[r.length-1].level>=n.level;)r.pop();if(r.length===0)t.push(i);else{let a=r[r.length-1].node;a.children?a.children.push(i):a.children=[i]}n.type!=="Leaf"&&r.push({node:i,level:n.level})}),t}var QBe=F(()=>{"use strict";o(ZBe,"buildHierarchy")});var vMt,xMt,CX,JBe=F(()=>{"use strict";Xa();vt();Hs();QBe();TX();vMt=o((e,t)=>{Gn(e,t);let r=[];for(let a of e.TreemapRows??[])a.$type==="ClassDefStatement"&&t.addClass(a.className??"",a.styleText??"");for(let a of e.TreemapRows??[]){let s=a.item;if(!s)continue;let l=a.indent?parseInt(a.indent):0,u=xMt(s),h=s.classSelector?t.getStylesForClass(s.classSelector):[],d=h.length>0?h:void 0,f={level:l,name:u,type:s.$type,value:s.value,classSelector:s.classSelector,cssCompiledStyles:d};r.push(f)}let n=ZBe(r),i=o((a,s)=>{for(let l of a)t.addNode(l,s),l.children&&l.children.length>0&&i(l.children,s+1)},"addNodesRecursively");i(n,0)},"populate"),xMt=o(e=>e.name?String(e.name):"","getItemName"),CX={parser:{yy:void 0},parse:o(async e=>{try{let r=await Si("treemap",e);Z.debug("Treemap AST:",r);let n=CX.parser?.yy;if(!(n instanceof Tx))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");vMt(r,n)}catch(t){throw Z.error("Error parsing treemap:",t),t}},"parse")}});var bMt,Cx,sk,TMt,CMt,e$e,t$e=F(()=>{"use strict";Ka();Jf();$n();$r();Jt();ur();vt();bMt=10,Cx=10,sk=25,TMt=o((e,t,r,n)=>{let i=n.db,a=i.getConfig(),s=a.padding??bMt,l=i.getDiagramTitle(),u=i.getRoot(),{themeVariables:h}=_t();if(!u)return;let d=l?30:0,f=xn(t),p=a.nodeWidth?a.nodeWidth*Cx:960,m=a.nodeHeight?a.nodeHeight*Cx:500,g=p,y=m+d;f.attr("viewBox",`0 0 ${g} ${y}`),Wr(f,y,g,a.useMaxWidth);let v;try{let z=a.valueFormat||",";if(z==="$0,0")v=o(W=>"$"+Xc(",")(W),"valueFormat");else if(z.startsWith("$")&&z.includes(",")){let W=/\.\d+/.exec(z),H=W?W[0]:"";v=o(j=>"$"+Xc(","+H)(j),"valueFormat")}else if(z.startsWith("$")){let W=z.substring(1);v=o(H=>"$"+Xc(W||"")(H),"valueFormat")}else v=Xc(z)}catch(z){Z.error("Error creating format function:",z),v=Xc(",")}let x=Oo().range(["transparent",h.cScale0,h.cScale1,h.cScale2,h.cScale3,h.cScale4,h.cScale5,h.cScale6,h.cScale7,h.cScale8,h.cScale9,h.cScale10,h.cScale11]),b=Oo().range(["transparent",h.cScalePeer0,h.cScalePeer1,h.cScalePeer2,h.cScalePeer3,h.cScalePeer4,h.cScalePeer5,h.cScalePeer6,h.cScalePeer7,h.cScalePeer8,h.cScalePeer9,h.cScalePeer10,h.cScalePeer11]),T=Oo().range([h.cScaleLabel0,h.cScaleLabel1,h.cScaleLabel2,h.cScaleLabel3,h.cScaleLabel4,h.cScaleLabel5,h.cScaleLabel6,h.cScaleLabel7,h.cScaleLabel8,h.cScaleLabel9,h.cScaleLabel10,h.cScaleLabel11]);l&&f.append("text").attr("x",g/2).attr("y",d/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(l);let k=f.append("g").attr("transform",`translate(0, ${d})`).attr("class","treemapContainer"),C=vy(u).sum(z=>z.value??0).sort((z,W)=>(W.value??0)-(z.value??0)),S=uE().size([p,m]).paddingTop(z=>z.children&&z.children.length>0?sk+Cx:0).paddingInner(s).paddingLeft(z=>z.children&&z.children.length>0?Cx:0).paddingRight(z=>z.children&&z.children.length>0?Cx:0).paddingBottom(z=>z.children&&z.children.length>0?Cx:0).round(!0)(C),R=S.descendants().filter(z=>z.children&&z.children.length>0),L=k.selectAll(".treemapSection").data(R).enter().append("g").attr("class","treemapSection").attr("transform",z=>`translate(${z.x0},${z.y0})`);L.append("rect").attr("width",z=>z.x1-z.x0).attr("height",sk).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",z=>z.depth===0?"display: none;":""),L.append("clipPath").attr("id",(z,W)=>`clip-section-${t}-${W}`).append("rect").attr("width",z=>Math.max(0,z.x1-z.x0-12)).attr("height",sk),L.append("rect").attr("width",z=>z.x1-z.x0).attr("height",z=>z.y1-z.y0).attr("class",(z,W)=>`treemapSection section${W}`).attr("fill",z=>x(z.data.name)).attr("fill-opacity",.6).attr("stroke",z=>b(z.data.name)).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",z=>{if(z.depth===0)return"display: none;";let W=ct({cssCompiledStyles:z.data.cssCompiledStyles});return W.nodeStyles+";"+W.borderStyles.join(";")}),L.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",sk/2).attr("dominant-baseline","middle").text(z=>z.depth===0?"":z.data.name).attr("font-weight","bold").attr("clip-path",(z,W)=>`url(#clip-section-${t}-${W})`).attr("style",z=>{if(z.depth===0)return"display: none;";let W="dominant-baseline: middle; font-size: 12px; fill:"+T(z.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",H=ct({cssCompiledStyles:z.data.cssCompiledStyles});return W+H.labelStyles.replace("color:","fill:")}).each(function(z){if(z.depth===0)return;let W=et(this),H=z.data.name;W.text(H);let j=z.x1-z.x0,Q=6,U;a.showValues!==!1&&z.value?U=j-10-30-10-Q:U=j-Q-6;let te=Math.max(15,U),le=W.node();if(le.getComputedTextLength()>te){let Re=H;for(;Re.length>0;){if(Re=H.substring(0,Re.length-1),Re.length===0){W.text("..."),le.getComputedTextLength()>te&&W.text("");break}if(W.text(Re+"..."),le.getComputedTextLength()<=te)break}}}),a.showValues!==!1&&L.append("text").attr("class","treemapSectionValue").attr("x",z=>z.x1-z.x0-10).attr("y",sk/2).attr("text-anchor","end").attr("dominant-baseline","middle").text(z=>z.value?v(z.value):"").attr("font-style","italic").attr("style",z=>{if(z.depth===0)return"display: none;";let W="text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+T(z.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;",H=ct({cssCompiledStyles:z.data.cssCompiledStyles});return W+H.labelStyles.replace("color:","fill:")});let N=S.leaves(),I=N.length>20,_=I?16:38,A=I?14:28,M=I?4:8,D=I?4:6,P=I?2:4,B=I?8:10,O=I?1:2,$=k.selectAll(".treemapLeafGroup").data(N).enter().append("g").attr("class",(z,W)=>`treemapNode treemapLeafGroup leaf${W}${z.data.classSelector?` ${z.data.classSelector}`:""}x`).attr("transform",z=>`translate(${z.x0},${z.y0})`);$.append("rect").attr("width",z=>z.x1-z.x0).attr("height",z=>z.y1-z.y0).attr("class","treemapLeaf").attr("fill",z=>z.parent?x(z.parent.data.name):x(z.data.name)).attr("style",z=>ct({cssCompiledStyles:z.data.cssCompiledStyles}).nodeStyles).attr("fill-opacity",.3).attr("stroke",z=>z.parent?x(z.parent.data.name):x(z.data.name)).attr("stroke-width",3),$.append("clipPath").attr("id",(z,W)=>`clip-${t}-${W}`).append("rect").attr("width",z=>Math.max(0,z.x1-z.x0-4)).attr("height",z=>Math.max(0,z.y1-z.y0-4)),$.append("text").attr("class","treemapLabel").attr("x",z=>(z.x1-z.x0)/2).attr("y",z=>(z.y1-z.y0)/2).attr("style",z=>{let W=`text-anchor: middle; dominant-baseline: middle; font-size: ${_}px;fill:`+T(z.data.name)+";",H=ct({cssCompiledStyles:z.data.cssCompiledStyles});return W+H.labelStyles.replace("color:","fill:")}).attr("clip-path",(z,W)=>`url(#clip-${t}-${W})`).text(z=>z.data.name).each(function(z){let W=et(this),H=z.x1-z.x0,j=z.y1-z.y0,Q=W.node(),U=H-2*P,oe=j-2*P;if(UU&&te>M;)te--,W.style("font-size",`${te}px`);let ie=Math.max(D,Math.min(A,Math.round(te*le))),ae=te+O+ie;for(;ae>oe&&te>M&&(te--,ie=Math.max(D,Math.min(A,Math.round(te*le))),!(ieoe;W.style("font-size",`${te}px`),I?(teU||te(W.x1-W.x0)/2).attr("y",function(W){return(W.y1-W.y0)/2}).attr("style",W=>{let H=`text-anchor: middle; dominant-baseline: hanging; font-size: ${A}px;fill:`+T(W.data.name)+";",j=ct({cssCompiledStyles:W.data.cssCompiledStyles});return H+j.labelStyles.replace("color:","fill:")}).attr("clip-path",(W,H)=>`url(#clip-${t}-${H})`).text(W=>W.value?v(W.value):"").each(function(W){let H=et(this),j=this.parentNode;if(!j){H.style("display","none");return}let Q=et(j).select(".treemapLabel");if(Q.empty()||Q.style("display")==="none"){H.style("display","none");return}let U=parseFloat(Q.style("font-size")),te=Math.max(D,Math.min(A,Math.round(U*.6)));H.style("font-size",`${te}px`);let ie=(W.y1-W.y0)/2+U/2+O;H.attr("y",ie);let ae=W.x1-W.x0,Pe=W.y1-W.y0-4,Ge=ae-2*P;H.node().getComputedTextLength()>Ge||ie+te>Pe||te{"use strict";Qt();Pc();ur();wMt={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelFontSize:"12px",valueFontSize:"10px",titleFontSize:"14px"},kMt=o(({treemap:e}={})=>{let t=ma(),r=_t(),n=qr(t,r.themeVariables),i=qr(wMt,e),a=i.titleColor??n.titleColor,s=i.labelColor??n.textColor,l=i.valueColor??n.textColor;return` + .treemapNode.section { + stroke: ${i.sectionStrokeColor}; + stroke-width: ${i.sectionStrokeWidth}; + fill: ${i.sectionFillColor}; + } + .treemapNode.leaf { + stroke: ${i.leafStrokeColor}; + stroke-width: ${i.leafStrokeWidth}; + fill: ${i.leafFillColor}; + } + .treemapLabel { + fill: ${s}; + font-size: ${i.labelFontSize}; + } + .treemapValue { + fill: ${l}; + font-size: ${i.valueFontSize}; + } + .treemapTitle { + fill: ${a}; + font-size: ${i.titleFontSize}; + } + `},"getStyles"),r$e=kMt});var i$e={};ir(i$e,{diagram:()=>SMt});var SMt,a$e=F(()=>{"use strict";TX();JBe();t$e();n$e();SMt={parser:CX,get db(){return new Tx},renderer:e$e,styles:r$e}});var uD,P0,l$e,RMt,_Mt,wX,c$e=F(()=>{"use strict";Xa();vt();Hs();uD=o((e,t)=>{let r=e<=1?e*100:e;if(r<0||r>100)throw new Error(`${t} must be between 0-1 (decimal) or 0-100 (percentage). Received: ${e}`);return r},"toPercent"),P0=o((e,t,r)=>({x:uD(t,`${r} evolution`),y:uD(e,`${r} visibility`)}),"toCoordinates"),l$e=o(e=>{if(e){if(e==="+<>")return"bidirectional";if(e==="+<")return"backward";if(e==="+>")return"forward"}},"getFlowFromPort"),RMt=o(e=>{if(!e?.startsWith("+"))return{};let r=/^\+'([^']*)'/.exec(e)?.[1];return e.includes("<>")?{flow:"bidirectional",label:r}:e.includes("<")?{flow:"backward",label:r}:e.includes(">")?{flow:"forward",label:r}:{label:r}},"extractFlowFromArrow"),_Mt=o((e,t)=>{if(Gn(e,t),e.size&&t.setSize(e.size.width,e.size.height),e.evolution){let r=e.evolution.stages.map(i=>i.secondName?`${i.name.trim()} / ${i.secondName.trim()}`:i.name.trim()),n=e.evolution.stages.filter(i=>i.boundary!==void 0).map(i=>i.boundary);t.updateAxes({stages:r,stageBoundaries:n})}if(e.anchors.forEach(r=>{let n=P0(r.visibility,r.evolution,`Anchor "${r.name}"`);t.addNode(r.name,r.name,n.x,n.y,"anchor")}),e.components.forEach(r=>{let n=P0(r.visibility,r.evolution,`Component "${r.name}"`),i=r.label?(r.label.negX?-1:1)*r.label.offsetX:void 0,a=r.label?(r.label.negY?-1:1)*r.label.offsetY:void 0,s=r.decorator?.strategy;t.addNode(r.name,r.name,n.x,n.y,"component",i,a,r.inertia,s)}),e.notes.forEach(r=>{let n=P0(r.visibility,r.evolution,`Note "${r.text}"`);t.addNote(r.text,n.x,n.y)}),e.pipelines.forEach(r=>{let n=t.getNode(r.parent);if(!n||typeof n.y!="number")throw new Error(`Pipeline "${r.parent}" must reference an existing component with coordinates.`);let i=n.y;t.startPipeline(r.parent),r.components.forEach(a=>{let s=`${r.parent}_${a.name}`,l=a.label?(a.label.negX?-1:1)*a.label.offsetX:void 0,u=a.label?(a.label.negY?-1:1)*a.label.offsetY:void 0,h=uD(a.evolution,`Pipeline component "${a.name}" evolution`);t.addNode(s,a.name,h,i,"pipeline-component",l,u),t.addPipelineComponent(r.parent,s)})}),e.links.forEach(r=>{let n=!!r.arrow&&(r.arrow.includes("-.->")||r.arrow.includes(".-.")),i=l$e(r.fromPort)??l$e(r.toPort),{flow:a,label:s}=RMt(r.arrow);!i&&a&&(i=a);let l=r.linkLabel,u=s??l;t.addLink(t.resolveNodeId(r.from),t.resolveNodeId(r.to),n,u,i)}),e.evolves.forEach(r=>{let n=t.getNode(r.component);if(n?.y!==void 0){let i=uD(r.target,`Evolve target for "${r.component}"`);t.addTrend(r.component,i,n.y)}}),e.annotations.length>0){let r=e.annotations[0],n=P0(r.x,r.y,"Annotations box");t.setAnnotationsBox(n.x,n.y)}e.annotation.forEach(r=>{let n=P0(r.x,r.y,`Annotation ${r.number}`);t.addAnnotation(r.number,[{x:n.x,y:n.y}],r.text)}),e.accelerators.forEach(r=>{let n=P0(r.x,r.y,`Accelerator "${r.name}"`);t.addAccelerator(r.name,n.x,n.y)}),e.deaccelerators.forEach(r=>{let n=P0(r.x,r.y,`Deaccelerator "${r.name}"`);t.addDeaccelerator(r.name,n.x,n.y)})},"populateDb"),wX={parser:{yy:void 0},parse:o(async e=>{let t=await Si("wardley",e);Z.debug(t);let r=wX.parser?.yy;if(!r||typeof r.addNode!="function")throw new Error("parser.parser?.yy was not a WardleyDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");_Mt(t,r)},"parse")}});var hD,u$e=F(()=>{"use strict";hD=class{constructor(){this.nodes=new Map;this.links=[];this.trends=new Map;this.pipelines=new Map;this.annotations=[];this.notes=[];this.accelerators=[];this.deaccelerators=[];this.axes={}}static{o(this,"WardleyBuilder")}addNode(t){let r=this.nodes.get(t.id)??{id:t.id,label:t.label},n={...r,...t,className:t.className??r.className,labelOffsetX:t.labelOffsetX??r.labelOffsetX,labelOffsetY:t.labelOffsetY??r.labelOffsetY};this.nodes.set(t.id,n)}addLink(t){this.links.push(t)}addTrend(t){this.trends.set(t.nodeId,t)}startPipeline(t){this.pipelines.set(t,{nodeId:t,componentIds:[]});let r=this.nodes.get(t);r&&(r.isPipelineParent=!0)}addPipelineComponent(t,r){let n=this.pipelines.get(t);n&&n.componentIds.push(r);let i=this.nodes.get(r);i&&(i.inPipeline=!0)}addAnnotation(t){this.annotations.push(t)}addNote(t){this.notes.push(t)}addAccelerator(t){this.accelerators.push(t)}addDeaccelerator(t){this.deaccelerators.push(t)}setAnnotationsBox(t,r){this.annotationsBox={x:t,y:r}}setAxes(t){this.axes={...this.axes,...t}}setSize(t,r){this.size={width:t,height:r}}getNode(t){return this.nodes.get(t)}resolveNodeId(t){if(this.nodes.has(t))return t;for(let[r,n]of this.nodes)if(n.label===t)return r;return t}build(){let t=[];for(let r of this.nodes.values()){if(typeof r.x!="number"||typeof r.y!="number")throw new Error(`Node "${r.label}" is missing coordinates`);t.push(r)}return{nodes:t,links:[...this.links],trends:[...this.trends.values()],pipelines:[...this.pipelines.values()],annotations:[...this.annotations],notes:[...this.notes],accelerators:[...this.accelerators],deaccelerators:[...this.deaccelerators],annotationsBox:this.annotationsBox,axes:{...this.axes},size:this.size}}clear(){this.nodes.clear(),this.links=[],this.trends.clear(),this.pipelines.clear(),this.annotations=[],this.notes=[],this.accelerators=[],this.deaccelerators=[],this.annotationsBox=void 0,this.axes={},this.size=void 0}}});function LMt(){return Ae()["wardley-beta"]}function DMt(e,t,r,n,i,a,s,l,u){gs.addNode({id:e,label:t,x:r,y:n,className:i,labelOffsetX:a,labelOffsetY:s,inertia:l,sourceStrategy:u})}function IMt(e,t,r=!1,n,i){gs.addLink({source:e,target:t,dashed:r,label:n,flow:i})}function MMt(e,t,r){gs.addTrend({nodeId:e,targetX:t,targetY:r})}function NMt(e,t,r){gs.addAnnotation({number:e,coordinates:t,text:r})}function PMt(e,t,r){gs.addNote({text:e,x:t,y:r})}function OMt(e,t,r){gs.addAccelerator({name:e,x:t,y:r})}function BMt(e,t,r){gs.addDeaccelerator({name:e,x:t,y:r})}function $Mt(e,t){gs.setAnnotationsBox(e,t)}function FMt(e,t){gs.setSize(e,t)}function zMt(e){gs.startPipeline(e)}function GMt(e,t){gs.addPipelineComponent(e,t)}function VMt(e){gs.setAxes(e)}function WMt(e){return gs.getNode(e)}function qMt(e){return gs.resolveNodeId(e)}function HMt(){return gs.build()}function UMt(){gs.clear(),yr()}var gs,h$e,d$e=F(()=>{"use strict";Xt();Nn();u$e();gs=new hD;o(LMt,"getConfig");o(DMt,"addNode");o(IMt,"addLink");o(MMt,"addTrend");o(NMt,"addAnnotation");o(PMt,"addNote");o(OMt,"addAccelerator");o(BMt,"addDeaccelerator");o($Mt,"setAnnotationsBox");o(FMt,"setSize");o(zMt,"startPipeline");o(GMt,"addPipelineComponent");o(VMt,"updateAxes");o(WMt,"getNode");o(qMt,"resolveNodeId");o(HMt,"getWardleyData");o(UMt,"clear");h$e={getConfig:LMt,addNode:DMt,addLink:IMt,addTrend:MMt,addAnnotation:NMt,addNote:PMt,addAccelerator:OMt,addDeaccelerator:BMt,setAnnotationsBox:$Mt,setSize:FMt,startPipeline:zMt,addPipelineComponent:GMt,updateAxes:VMt,getNode:WMt,resolveNodeId:qMt,getWardleyData:HMt,clear:UMt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr}});var YMt,jMt,XMt,KMt,f$e,p$e=F(()=>{"use strict";Xt();vt();Ka();$n();YMt=["Genesis","Custom Built","Product","Commodity"],jMt=o(()=>{let{themeVariables:e}=Ae();return{backgroundColor:e.wardley?.backgroundColor??e.background??"#fff",axisColor:e.wardley?.axisColor??"#000",axisTextColor:e.wardley?.axisTextColor??e.primaryTextColor??"#222",gridColor:e.wardley?.gridColor??"rgba(100, 100, 100, 0.2)",componentFill:e.wardley?.componentFill??"#fff",componentStroke:e.wardley?.componentStroke??"#000",componentLabelColor:e.wardley?.componentLabelColor??e.primaryTextColor??"#222",linkStroke:e.wardley?.linkStroke??"#000",evolutionStroke:e.wardley?.evolutionStroke??"#dc3545",annotationStroke:e.wardley?.annotationStroke??"#000",annotationTextColor:e.wardley?.annotationTextColor??e.primaryTextColor??"#222",annotationFill:e.wardley?.annotationFill??e.background??"#fff"}},"getTheme"),XMt=o(()=>{let e=Ae()["wardley-beta"];return{width:e?.width??900,height:e?.height??600,padding:e?.padding??48,nodeRadius:e?.nodeRadius??6,nodeLabelOffset:e?.nodeLabelOffset??8,axisFontSize:e?.axisFontSize??12,labelFontSize:e?.labelFontSize??10,showGrid:e?.showGrid??!1,useMaxWidth:e?.useMaxWidth??!0}},"getConfigValues"),KMt=o((e,t,r,n)=>{Z.debug(`Rendering Wardley map +`+e);let i=XMt(),a=jMt(),s=i.nodeRadius*1.6,l=n.db,u=l.getWardleyData(),h=l.getDiagramTitle(),d=u.size?.width??i.width,f=u.size?.height??i.height,p=xn(t);p.selectAll("*").remove(),Wr(p,f,d,i.useMaxWidth),p.attr("viewBox",`0 0 ${d} ${f}`);let m=p.append("g").attr("class","wardley-map"),g=p.append("defs");g.append("marker").attr("id",`arrow-${t}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",a.evolutionStroke).attr("stroke","none"),g.append("marker").attr("id",`link-arrow-end-${t}`).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill",a.linkStroke).attr("stroke","none"),g.append("marker").attr("id",`link-arrow-start-${t}`).attr("viewBox","0 0 10 10").attr("refX",1).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z").attr("fill",a.linkStroke).attr("stroke","none"),m.append("rect").attr("class","wardley-background").attr("width",d).attr("height",f).attr("fill",a.backgroundColor);let y=d-i.padding*2,v=f-i.padding*2;h&&m.append("text").attr("class","wardley-title").attr("x",d/2).attr("y",i.padding/2).attr("fill",a.axisTextColor).attr("font-size",i.axisFontSize*1.05).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","middle").text(h);let x=o(O=>i.padding+O/100*y,"projectX"),b=o(O=>f-i.padding-O/100*v,"projectY"),T=m.append("g").attr("class","wardley-axes");T.append("line").attr("x1",i.padding).attr("x2",d-i.padding).attr("y1",f-i.padding).attr("y2",f-i.padding).attr("stroke",a.axisColor).attr("stroke-width",1),T.append("line").attr("x1",i.padding).attr("x2",i.padding).attr("y1",i.padding).attr("y2",f-i.padding).attr("stroke",a.axisColor).attr("stroke-width",1);let k=u.axes.xLabel??"Evolution",C=u.axes.yLabel??"Visibility";T.append("text").attr("class","wardley-axis-label wardley-axis-label-x").attr("x",i.padding+y/2).attr("y",f-i.padding/4).attr("fill",a.axisTextColor).attr("font-size",i.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").text(k),T.append("text").attr("class","wardley-axis-label wardley-axis-label-y").attr("x",i.padding/3).attr("y",i.padding+v/2).attr("fill",a.axisTextColor).attr("font-size",i.axisFontSize).attr("font-weight","bold").attr("text-anchor","middle").attr("transform",`rotate(-90 ${i.padding/3} ${i.padding+v/2})`).text(C);let w=u.axes.stages&&u.axes.stages.length>0?u.axes.stages:YMt;if(w.length>0){let O=m.append("g").attr("class","wardley-stages"),$=u.axes.stageBoundaries,V=[];if($&&$.length===w.length){let G=0;$.forEach(z=>{V.push({start:G,end:z}),G=z})}else{let G=1/w.length;w.forEach((z,W)=>{V.push({start:W*G,end:(W+1)*G})})}w.forEach((G,z)=>{let W=V[z],H=i.padding+W.start*y,j=i.padding+W.end*y,Q=(H+j)/2;z>0&&O.append("line").attr("x1",H).attr("x2",H).attr("y1",i.padding).attr("y2",f-i.padding).attr("stroke","#000").attr("stroke-width",1).attr("stroke-dasharray","5 5").attr("opacity",.8),O.append("text").attr("class","wardley-stage-label").attr("x",Q).attr("y",f-i.padding/1.5).attr("fill",a.axisTextColor).attr("font-size",i.axisFontSize-2).attr("text-anchor","middle").text(G)})}if(i.showGrid){let O=m.append("g").attr("class","wardley-grid");for(let $=1;$<4;$++){let V=$/4,G=i.padding+y*V;O.append("line").attr("x1",G).attr("x2",G).attr("y1",i.padding).attr("y2",f-i.padding).attr("stroke",a.gridColor).attr("stroke-dasharray","2 6"),O.append("line").attr("x1",i.padding).attr("x2",d-i.padding).attr("y1",f-i.padding-v*V).attr("y2",f-i.padding-v*V).attr("stroke",a.gridColor).attr("stroke-dasharray","2 6")}}let S=new Map;if(u.nodes.forEach(O=>{S.set(O.id,{x:x(O.x),y:b(O.y),node:O})}),u.pipelines.length>0){let O=m.append("g").attr("class","wardley-pipelines"),$=m.append("g").attr("class","wardley-pipeline-links");u.pipelines.forEach(V=>{if(V.componentIds.length===0)return;let G=V.componentIds.map(j=>({id:j,pos:S.get(j),node:u.nodes.find(Q=>Q.id===j)})).filter(j=>j.pos&&j.node).sort((j,Q)=>j.node.x-Q.node.x);for(let j=0;j{let Q=S.get(j);Q&&(z=Math.min(z,Q.x),W=Math.max(W,Q.x),H=Q.y)}),z!==1/0&&W!==-1/0){let Q=i.nodeRadius*4,U=H-Q/2,oe=S.get(V.nodeId);if(oe){let te=(z+W)/2;oe.x=te,oe.y=U-s/6}O.append("rect").attr("class","wardley-pipeline-box").attr("x",z-15).attr("y",U).attr("width",W-z+30).attr("height",Q).attr("fill","none").attr("stroke",a.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}})}let R=m.append("g").attr("class","wardley-links"),L=new Map;u.pipelines.forEach(O=>{L.set(O.nodeId,new Set(O.componentIds))});let N=u.links.filter(O=>!(!S.has(O.source)||!S.has(O.target)||L.get(O.target)?.has(O.source)));R.selectAll("line").data(N).enter().append("line").attr("class",O=>`wardley-link${O.dashed?" wardley-link--dashed":""}`).attr("x1",O=>{let $=S.get(O.source),V=S.get(O.target),z=u.nodes.find(Q=>Q.id===O.source).isPipelineParent?s/Math.sqrt(2):i.nodeRadius,W=V.x-$.x,H=V.y-$.y,j=Math.sqrt(W*W+H*H);return $.x+W/j*z}).attr("y1",O=>{let $=S.get(O.source),V=S.get(O.target),z=u.nodes.find(Q=>Q.id===O.source).isPipelineParent?s/Math.sqrt(2):i.nodeRadius,W=V.x-$.x,H=V.y-$.y,j=Math.sqrt(W*W+H*H);return $.y+H/j*z}).attr("x2",O=>{let $=S.get(O.source),V=S.get(O.target),z=u.nodes.find(Q=>Q.id===O.target).isPipelineParent?s/Math.sqrt(2):i.nodeRadius,W=$.x-V.x,H=$.y-V.y,j=Math.sqrt(W*W+H*H);return V.x+W/j*z}).attr("y2",O=>{let $=S.get(O.source),V=S.get(O.target),z=u.nodes.find(Q=>Q.id===O.target).isPipelineParent?s/Math.sqrt(2):i.nodeRadius,W=$.x-V.x,H=$.y-V.y,j=Math.sqrt(W*W+H*H);return V.y+H/j*z}).attr("stroke",a.linkStroke).attr("stroke-width",1).attr("stroke-dasharray",O=>O.dashed?"6 6":null).attr("marker-end",O=>O.flow==="forward"||O.flow==="bidirectional"?`url(#link-arrow-end-${t})`:null).attr("marker-start",O=>O.flow==="backward"||O.flow==="bidirectional"?`url(#link-arrow-start-${t})`:null),R.selectAll("text").data(N.filter(O=>O.label)).enter().append("text").attr("class","wardley-link-label").attr("x",O=>{let $=S.get(O.source),V=S.get(O.target),G=($.x+V.x)/2,z=V.y-$.y,W=V.x-$.x,H=Math.sqrt(W*W+z*z),j=8,Q=z/H;return G+Q*j}).attr("y",O=>{let $=S.get(O.source),V=S.get(O.target),G=($.y+V.y)/2,z=V.x-$.x,W=V.y-$.y,H=Math.sqrt(z*z+W*W),j=8,Q=-z/H;return G+Q*j}).attr("fill",a.axisTextColor).attr("font-size",i.labelFontSize).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("transform",O=>{let $=S.get(O.source),V=S.get(O.target),G=($.x+V.x)/2,z=($.y+V.y)/2,W=V.x-$.x,H=V.y-$.y,j=Math.sqrt(W*W+H*H),Q=8,U=H/j,oe=-W/j,te=G+U*Q,le=z+oe*Q,ie=Math.atan2(H,W)*180/Math.PI;return(ie>90||ie<-90)&&(ie+=180),`rotate(${ie} ${te} ${le})`}).text(O=>O.label);let I=m.append("g").attr("class","wardley-trends"),_=u.trends.map(O=>{let $=S.get(O.nodeId);if(!$)return null;let V=x(O.targetX),G=b(O.targetY),z=V-$.x,W=G-$.y,H=Math.sqrt(z*z+W*W),j=i.nodeRadius+2,Q=H>j?V-z/H*j:V,U=H>j?G-W/H*j:G;return{origin:$,targetX:V,targetY:G,adjustedX2:Q,adjustedY2:U}}).filter(O=>O!==null);I.selectAll("line").data(_).enter().append("line").attr("class","wardley-trend").attr("x1",O=>O.origin.x).attr("y1",O=>O.origin.y).attr("x2",O=>O.adjustedX2).attr("y2",O=>O.adjustedY2).attr("stroke",a.evolutionStroke).attr("stroke-width",1).attr("stroke-dasharray","4 4").attr("marker-end",`url(#arrow-${t})`);let M=m.append("g").attr("class","wardley-nodes").selectAll("g").data(u.nodes).enter().append("g").attr("class",O=>["wardley-node",O.className?`wardley-node--${O.className}`:""].filter(Boolean).join(" "));M.filter(O=>O.sourceStrategy==="outsource").append("circle").attr("class","wardley-outsource-overlay").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius*2).attr("fill","#666").attr("stroke",a.componentStroke).attr("stroke-width",1),M.filter(O=>O.sourceStrategy==="buy").append("circle").attr("class","wardley-buy-overlay").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius*2).attr("fill","#ccc").attr("stroke",a.componentStroke).attr("stroke-width",1),M.filter(O=>O.sourceStrategy==="build").append("circle").attr("class","wardley-build-overlay").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius*2).attr("fill","#eee").attr("stroke","#000").attr("stroke-width",1);let D=M.filter(O=>O.sourceStrategy==="market");D.append("circle").attr("class","wardley-market-overlay").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius*2).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",1),M.filter(O=>!O.isPipelineParent&&O.sourceStrategy!=="market"&&O.className!=="anchor").append("circle").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y).attr("r",i.nodeRadius).attr("fill",a.componentFill).attr("stroke",a.componentStroke).attr("stroke-width",1);let P=i.nodeRadius*.7,B=i.nodeRadius*1.2;if(D.append("line").attr("class","wardley-market-line").attr("x1",O=>S.get(O.id).x).attr("y1",O=>S.get(O.id).y-B).attr("x2",O=>S.get(O.id).x-B*Math.cos(Math.PI/6)).attr("y2",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("stroke",a.componentStroke).attr("stroke-width",1),D.append("line").attr("class","wardley-market-line").attr("x1",O=>S.get(O.id).x-B*Math.cos(Math.PI/6)).attr("y1",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("x2",O=>S.get(O.id).x+B*Math.cos(Math.PI/6)).attr("y2",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("stroke",a.componentStroke).attr("stroke-width",1),D.append("line").attr("class","wardley-market-line").attr("x1",O=>S.get(O.id).x+B*Math.cos(Math.PI/6)).attr("y1",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("x2",O=>S.get(O.id).x).attr("y2",O=>S.get(O.id).y-B).attr("stroke",a.componentStroke).attr("stroke-width",1),D.append("circle").attr("class","wardley-market-dot").attr("cx",O=>S.get(O.id).x).attr("cy",O=>S.get(O.id).y-B).attr("r",P).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",2),D.append("circle").attr("class","wardley-market-dot").attr("cx",O=>S.get(O.id).x-B*Math.cos(Math.PI/6)).attr("cy",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("r",P).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",2),D.append("circle").attr("class","wardley-market-dot").attr("cx",O=>S.get(O.id).x+B*Math.cos(Math.PI/6)).attr("cy",O=>S.get(O.id).y+B*Math.sin(Math.PI/6)).attr("r",P).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",2),M.filter(O=>O.isPipelineParent===!0).append("rect").attr("x",O=>S.get(O.id).x-s/2).attr("y",O=>S.get(O.id).y-s/2).attr("width",s).attr("height",s).attr("fill",a.componentFill).attr("stroke",a.componentStroke).attr("stroke-width",1),M.filter(O=>O.inertia===!0).append("line").attr("class","wardley-inertia").attr("x1",O=>{let $=S.get(O.id),V=O.isPipelineParent?s/2+15:i.nodeRadius+15;return O.sourceStrategy&&(V+=i.nodeRadius+10),$.x+V}).attr("y1",O=>{let $=S.get(O.id),V=O.isPipelineParent?s:i.nodeRadius*2;return $.y-V/2}).attr("x2",O=>{let $=S.get(O.id),V=O.isPipelineParent?s/2+15:i.nodeRadius+15;return O.sourceStrategy&&(V+=i.nodeRadius+10),$.x+V}).attr("y2",O=>{let $=S.get(O.id),V=O.isPipelineParent?s:i.nodeRadius*2;return $.y+V/2}).attr("stroke",a.componentStroke).attr("stroke-width",6),M.append("text").attr("x",O=>{let $=S.get(O.id);if(O.className==="anchor")return O.labelOffsetX!==void 0?$.x+O.labelOffsetX:$.x;let V=i.nodeLabelOffset;O.sourceStrategy&&O.labelOffsetX===void 0&&(V+=10);let G=O.labelOffsetX??V;return $.x+G}).attr("y",O=>{let $=S.get(O.id);if(O.className==="anchor")return O.labelOffsetY!==void 0?$.y+O.labelOffsetY:$.y-3;let V=-i.nodeLabelOffset;O.sourceStrategy&&O.labelOffsetY===void 0&&(V-=10);let G=O.labelOffsetY??V;return $.y+G}).attr("class","wardley-node-label").attr("fill",O=>O.className==="evolved"?a.evolutionStroke:O.className==="anchor"?"#000":a.componentLabelColor).attr("font-size",i.labelFontSize).attr("font-weight",O=>O.className==="anchor"?"bold":"normal").attr("text-anchor",O=>O.className==="anchor"?"middle":"start").attr("dominant-baseline",O=>O.className==="anchor"?"middle":"auto").text(O=>O.label),u.annotations.length>0){let O=m.append("g").attr("class","wardley-annotations");if(u.annotations.forEach($=>{let V=$.coordinates.map(G=>({x:x(G.x),y:b(G.y)}));if(V.length>1)for(let G=0;G{let z=O.append("g").attr("class","wardley-annotation");z.append("circle").attr("cx",G.x).attr("cy",G.y).attr("r",10).attr("fill","white").attr("stroke",a.axisColor).attr("stroke-width",1.5),z.append("text").attr("x",G.x).attr("y",G.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",10).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.number)})}),u.annotationsBox){let $=x(u.annotationsBox.x),V=b(u.annotationsBox.y),G=10,z=16,W=11,H=O.append("g").attr("class","wardley-annotations-box"),j=[...u.annotations].filter(U=>U.text).sort((U,oe)=>U.number-oe.number),Q=[];if(j.forEach((U,oe)=>{let te=H.append("text").attr("x",$+G).attr("y",V+G+(oe+1)*z).attr("font-size",W).attr("fill",a.axisTextColor).attr("text-anchor","start").attr("dominant-baseline","middle").text(`${U.number}. ${U.text}`);Q.push(te)}),Q.length>0){let U=0,oe=0;Q.forEach(Pe=>{let Ge=Pe.node(),Oe=Ge.getComputedTextLength();U=Math.max(U,Oe);let ue=Ge.getBBox();oe=Math.max(oe,ue.height)});let te=U+G*2+105,le=j.length*z+G*2+oe/2,ie=i.padding,ae=d-i.padding-te,Re=i.padding,be=f-i.padding-le;$=Math.max(ie,Math.min($,ae)),V=Math.max(Re,Math.min(V,be)),Q.forEach((Pe,Ge)=>{Pe.attr("x",$+G).attr("y",V+G+(Ge+1)*z)}),H.insert("rect","text").attr("x",$).attr("y",V).attr("width",te).attr("height",le).attr("fill","white").attr("stroke",a.axisColor).attr("stroke-width",1.5).attr("rx",4).attr("ry",4)}}}if(u.notes.length>0){let O=m.append("g").attr("class","wardley-notes");u.notes.forEach($=>{let V=x($.x),G=b($.y);O.append("text").attr("x",V).attr("y",G).attr("text-anchor","start").attr("font-size",11).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.text)})}if(u.accelerators.length>0){let O=m.append("g").attr("class","wardley-accelerators");u.accelerators.forEach($=>{let V=x($.x),G=b($.y),z=60,W=30,H=20,j=` + M ${V} ${G-W/2} + L ${V+z-H} ${G-W/2} + L ${V+z-H} ${G-W/2-8} + L ${V+z} ${G} + L ${V+z-H} ${G+W/2+8} + L ${V+z-H} ${G+W/2} + L ${V} ${G+W/2} + Z + `;O.append("path").attr("d",j).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",1),O.append("text").attr("x",V+z/2).attr("y",G+W/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.name)})}if(u.deaccelerators.length>0){let O=m.append("g").attr("class","wardley-deaccelerators");u.deaccelerators.forEach($=>{let V=x($.x),G=b($.y),z=60,W=30,H=20,j=` + M ${V+z} ${G-W/2} + L ${V+H} ${G-W/2} + L ${V+H} ${G-W/2-8} + L ${V} ${G} + L ${V+H} ${G+W/2+8} + L ${V+H} ${G+W/2} + L ${V+z} ${G+W/2} + Z + `;O.append("path").attr("d",j).attr("fill","white").attr("stroke",a.componentStroke).attr("stroke-width",1),O.append("text").attr("x",V+z/2).attr("y",G+W/2+15).attr("text-anchor","middle").attr("font-size",10).attr("fill",a.axisTextColor).attr("font-weight","bold").text($.name)})}},"draw"),f$e={draw:KMt}});var m$e,g$e=F(()=>{"use strict";Qt();Pc();ur();m$e=o(({wardley:e}={})=>{let t=ma(),r=_t(),n=qr(t,r.themeVariables),i=qr(n.wardley,e);return` + .wardley-background { + fill: ${i.backgroundColor}; + } + .wardley-axes line, .wardley-axes path { + stroke: ${i.axisColor}; + } + .wardley-axis-label { + fill: ${i.axisTextColor}; + } + .wardley-stage-label { + fill: ${i.axisTextColor}; + } + .wardley-grid line { + stroke: ${i.gridColor}; + } + .wardley-node circle { + fill: ${i.componentFill}; + stroke: ${i.componentStroke}; + } + .wardley-node-label { + fill: ${i.componentLabelColor}; + } + .wardley-link { + stroke: ${i.linkStroke}; + } + .wardley-link--dashed { + stroke-dasharray: 4 4; + } + .wardley-link-label { + fill: ${i.axisTextColor}; + } + .wardley-trend line { + stroke: ${i.evolutionStroke}; + } + .wardley-annotation-line { + stroke: ${i.annotationStroke}; + } + .wardley-annotation circle { + fill: ${i.annotationFill}; + stroke: ${i.annotationStroke}; + } + .wardley-annotation text { + fill: ${i.annotationTextColor}; + } + .wardley-annotations-box rect { + fill: ${i.annotationFill}; + stroke: ${i.annotationStroke}; + } + .wardley-annotations-box text { + fill: ${i.annotationTextColor}; + } + .wardley-pipeline-box { + stroke: ${i.componentStroke}; + } + .wardley-notes text { + fill: ${i.axisTextColor}; + } + `},"styles")});var y$e={};ir(y$e,{diagram:()=>ZMt});var ZMt,v$e=F(()=>{"use strict";c$e();d$e();p$e();g$e();ZMt={parser:wX,db:h$e,renderer:f$e,styles:m$e}});var T$e,ok,tNt,rNt,nNt,iNt,aNt,sNt,wx,kX=F(()=>{"use strict";ur();Wi();vt();Qt();Nn();T$e=o(()=>({domains:new Map,transitions:[]}),"createDefaultData"),ok=T$e(),tNt=o(()=>ok.domains,"getDomains"),rNt=o(()=>ok.transitions,"getTransitions"),nNt=o(e=>{if(e)for(let t of e){let r=t.domain,n=(t.items??[]).map(i=>({label:i.label}));ok.domains.set(r,{name:r,items:n})}},"setDomains"),iNt=o(e=>{e&&(ok.transitions=e.filter(t=>t.from===t.to?(Z.warn(`Cynefin: self-loop transition on domain "${t.from}" is not meaningful and will be skipped.`),!1):!0).map(t=>({from:t.from,to:t.to,label:t.label||void 0})))},"setTransitions"),aNt=o(()=>qr({...cr.cynefin,..._t().cynefin}),"getConfig"),sNt=o(()=>{yr(),ok=T$e()},"clear"),wx={getDomains:tNt,getTransitions:rNt,setDomains:nNt,setTransitions:iNt,getConfig:aNt,clear:sNt,setAccTitle:kr,getAccTitle:Ar,setDiagramTitle:Or,getDiagramTitle:Lr,getAccDescription:_r,setAccDescription:Rr}});var oNt,C$e,w$e=F(()=>{"use strict";Xa();vt();Hs();kX();oNt=o(e=>{Gn(e,wx),wx.setDomains(e.domains),wx.setTransitions(e.transitions)},"populate"),C$e={parse:o(async e=>{let t=await Si("cynefin",e);Z.debug(t),oNt(t)},"parse")}});function dD(e){let t=e+1831565813|0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function lNt(e){let t=0;for(let r=0;r{"use strict";o(dD,"seededRandom");o(lNt,"hashString");o(k$e,"resolveSeed");o(S$e,"generateFoldPath");o(E$e,"generateHorizontalBoundary");o(A$e,"generateCliffPath");o(R$e,"generateConfusionPath")});var L$e,cNt,uNt,SX,hNt,D$e,I$e=F(()=>{"use strict";Ka();$n();vt();ur();Pc();Qt();_$e();L$e={complex:{model:"Probe \u2192 Sense \u2192 Respond",practice:"Emergent Practices"},complicated:{model:"Sense \u2192 Analyse \u2192 Respond",practice:"Good Practices"},clear:{model:"Sense \u2192 Categorise \u2192 Respond",practice:"Best Practices"},chaotic:{model:"Act \u2192 Sense \u2192 Respond",practice:"Novel Practices"},confusion:{model:"",practice:"Disorder"}},cNt=o((e,t)=>{let r=e/2,n=t/2;return{complex:{cx:r/2,cy:n/2,x:0,y:0,w:r,h:n},complicated:{cx:r+r/2,cy:n/2,x:r,y:0,w:r,h:n},chaotic:{cx:r/2,cy:n+n/2,x:0,y:n,w:r,h:n},clear:{cx:r+r/2,cy:n+n/2,x:r,y:n,w:r,h:n},confusion:{cx:r,cy:n,x:r*.7,y:n*.7,w:r*.6,h:n*.6}}},"getDomainLayouts"),uNt=o(()=>{let e=ma(),t=_t();return qr(e,t.themeVariables).cynefin},"getCynefinDomainColors"),SX=3,hNt=o((e,t,r,n)=>{let i=n.db,a=i.getDomains(),s=i.getTransitions(),l=i.getDiagramTitle(),u=i.getAccTitle(),h=i.getAccDescription(),d=i.getConfig(),f=uNt();Z.debug("Rendering Cynefin diagram");let p=d.width,m=d.height,g=d.padding,y=d.showDomainDescriptions,v=d.boundaryAmplitude,x=p+g*2,b=m+g*2,T={complex:f.complexBg,complicated:f.complicatedBg,clear:f.clearBg,chaotic:f.chaoticBg,confusion:f.confusionBg},k=xn(t);Wr(k,b,x,d.useMaxWidth??!0),k.attr("viewBox",`0 0 ${x} ${b}`),u&&k.append("title").text(u),h&&k.append("desc").text(h);let C=k.append("g").attr("transform",`translate(${g}, ${g})`),w=cNt(p,m),S=k$e(d.seed,t),R=C.append("g").attr("class","cynefin-backgrounds"),L=["complex","complicated","chaotic","clear"];for(let O of L){let $=w[O];R.append("rect").attr("class","cynefinDomain").attr("x",$.x).attr("y",$.y).attr("width",$.w).attr("height",$.h).attr("fill",T[O]).attr("fill-opacity",.4).attr("stroke","none")}let N=C.append("g").attr("class","cynefin-boundaries");N.append("path").attr("class","cynefinBoundary").attr("d",S$e(p,m,S,v)).attr("fill","none"),N.append("path").attr("class","cynefinBoundary").attr("d",E$e(p,m,S+100,v)).attr("fill","none"),N.append("path").attr("class","cynefinCliff").attr("d",A$e(p,m)).attr("fill","none");let I=p*.15,_=m*.15;C.append("path").attr("class","cynefinConfusion").attr("d",R$e(p/2,m/2,I,_)).attr("fill",T.confusion).attr("fill-opacity",.5);let A=C.append("g").attr("class","cynefin-labels");for(let O of L){let $=w[O];A.append("text").attr("class","cynefinDomainLabel").attr("x",$.cx).attr("y",y?$.cy-30:$.cy).attr("text-anchor","middle").attr("dominant-baseline","middle").text(O.charAt(0).toUpperCase()+O.slice(1))}if(A.append("text").attr("class","cynefinDomainLabel").attr("x",p/2).attr("y",y?m/2-10:m/2).attr("text-anchor","middle").attr("dominant-baseline","middle").text("Confusion"),y){let O=C.append("g").attr("class","cynefin-subtitles");for(let $ of L){let V=w[$],G=L$e[$];O.append("text").attr("class","cynefinSubtitle").attr("x",V.cx).attr("y",V.cy-10).attr("text-anchor","middle").attr("dominant-baseline","middle").text(G.model),O.append("text").attr("class","cynefinSubtitle").attr("x",V.cx).attr("y",V.cy+5).attr("text-anchor","middle").attr("dominant-baseline","middle").text(G.practice)}O.append("text").attr("class","cynefinSubtitle").attr("x",p/2).attr("y",m/2+8).attr("text-anchor","middle").attr("dominant-baseline","middle").text(L$e.confusion.practice)}let M=C.append("g").attr("class","cynefin-items"),D=26,P=10,B=["complex","complicated","chaotic","clear","confusion"];for(let O of B){let $=a.get(O);if(!$||$.items.length===0)continue;let V=w[O],G=O==="confusion",z=$.items,W=0;G&&$.items.length>SX&&(W=$.items.length-SX,z=$.items.slice(0,SX));let H;if(G){let j=y?22:14;H=V.cy+j}else H=V.cy+(y?25:15);if([...z].forEach((j,Q)=>{let U=H+Q*(D+4),oe=M.append("g"),te=oe.append("text").attr("class","cynefinItemText").attr("x",0).attr("y",D/2).attr("text-anchor","middle").attr("dominant-baseline","central").text(j.label),le=j.label.length*7,ie=te.node();if(ie&&typeof ie.getBBox=="function"){let be=ie.getBBox();be.width>0&&(le=be.width)}let ae=le+P*2,Re=V.cx-ae/2;oe.attr("transform",`translate(${Re}, ${U})`),oe.insert("rect","text").attr("class","cynefinItem").attr("x",0).attr("y",0).attr("width",ae).attr("height",D).attr("rx",4).attr("ry",4).attr("fill",T[O]).attr("fill-opacity",.95),te.attr("x",ae/2).attr("y",D/2)}),W>0){let j=H+z.length*(D+4),Q=`+${W} more`,U=M.append("g"),oe=U.append("text").attr("class","cynefinItemText").attr("x",0).attr("y",D/2).attr("text-anchor","middle").attr("dominant-baseline","central").text(Q),te=Q.length*7,le=oe.node();if(le&&typeof le.getBBox=="function"){let Re=le.getBBox();Re.width>0&&(te=Re.width)}let ie=te+P*2,ae=V.cx-ie/2;U.attr("transform",`translate(${ae}, ${j})`),U.insert("rect","text").attr("class","cynefinItemOverflow").attr("x",0).attr("y",0).attr("width",ie).attr("height",D).attr("rx",4).attr("ry",4).attr("fill",T[O]).attr("fill-opacity",.6),oe.attr("x",ie/2).attr("y",D/2)}}if(s.length>0){let O=k.select("defs").empty()?k.append("defs"):k.select("defs"),$=`cynefin-arrow-${t}`;O.append("marker").attr("id",$).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","cynefinArrowHead");let V=C.append("g").attr("class","cynefin-arrows");s.forEach(G=>{let z=w[G.from],W=w[G.to];if(!z||!W)return;if(G.from===G.to){Z.warn(`Cynefin renderer: skipping self-loop on domain "${G.from}"`);return}let H=z.cx,j=z.cy,Q=W.cx,U=W.cy,oe=(H+Q)/2,te=(j+U)/2,le=Q-H,ie=U-j,ae=Math.sqrt(le*le+ie*ie),Re=ae*.15,be=-ie/ae,Pe=le/ae,Ge=oe+be*Re,Oe=te+Pe*Re;V.append("path").attr("class","cynefinArrowLine").attr("d",`M${H},${j} Q${Ge},${Oe} ${Q},${U}`).attr("fill","none").attr("marker-end",`url(#${$})`),G.label&&V.append("text").attr("class","cynefinArrowLabel").attr("x",Ge).attr("y",Oe-6).attr("text-anchor","middle").attr("dominant-baseline","auto").text(G.label)})}l&&C.append("text").attr("class","cynefinTitle").attr("x",p/2).attr("y",-g/2).attr("text-anchor","middle").attr("dominant-baseline","middle").text(l)},"draw"),D$e={draw:hNt}});var dNt,fNt,M$e,N$e=F(()=>{"use strict";Qt();Pc();ur();dNt=o(()=>{let e=ma(),t=_t();return qr(e,t.themeVariables).cynefin},"getCynefinTheme"),fNt=o(()=>{let e=dNt();return` + .cynefinDomain { + stroke: none; + } + .cynefinDomainLabel { + font-size: ${e.domainFontSize}px; + font-weight: bold; + fill: ${e.labelColor}; + } + .cynefinSubtitle { + font-size: ${e.itemFontSize-1}px; + fill: ${e.textColor}; + font-style: italic; + } + .cynefinItem { + fill-opacity: 0.95; + stroke: ${e.boundaryColor}; + stroke-width: 1; + } + .cynefinItemText { + font-size: ${e.itemFontSize}px; + fill: ${e.textColor}; + } + .cynefinItemOverflow { + fill-opacity: 0.6; + stroke: ${e.boundaryColor}; + stroke-width: 1; + stroke-dasharray: 3 2; + } + .cynefinBoundary { + stroke: ${e.boundaryColor}; + stroke-width: ${e.boundaryWidth}; + stroke-dasharray: 6 3; + } + .cynefinCliff { + stroke: ${e.cliffColor}; + stroke-width: ${e.cliffWidth}; + } + .cynefinConfusion { + stroke: ${e.boundaryColor}; + stroke-width: 1.5; + stroke-dasharray: 4 2; + } + .cynefinArrowLine { + stroke: ${e.arrowColor}; + stroke-width: ${e.arrowWidth}; + fill: none; + } + .cynefinArrowHead { + fill: ${e.arrowColor}; + stroke: none; + } + .cynefinArrowLabel { + font-size: ${e.itemFontSize-1}px; + fill: ${e.textColor}; + } + .cynefinTitle { + font-size: ${e.domainFontSize+2}px; + font-weight: bold; + fill: ${e.labelColor}; + } + `},"styles"),M$e=fNt});var P$e={};ir(P$e,{diagram:()=>pNt});var pNt,O$e=F(()=>{"use strict";w$e();kX();I$e();N$e();pNt={parser:C$e,db:wx,renderer:D$e,styles:M$e}});var EX,AX,RX,_X,fD,Ip,kx,yNt,F$e,z$e,vNt,xNt,bNt,TNt,CNt,wNt,kNt,SNt,ENt,sn,ju=F(()=>{"use strict";Xt();vt();Nn();Vr();EX="",AX="",RX="",_X=[],fD=new Map,Ip=o(e=>mr(e,Ae()),"sanitizeText"),kx=o(e=>{switch(e.type){case"terminal":return{...e,value:Ip(e.value)};case"nonterminal":return{...e,name:Ip(e.name)};case"sequence":return{...e,elements:e.elements.map(kx)};case"choice":return{...e,alternatives:e.alternatives.map(kx)};case"optional":return{...e,element:kx(e.element)};case"repetition":return{...e,element:kx(e.element),separator:e.separator?kx(e.separator):void 0};case"special":return{...e,text:Ip(e.text)}}},"sanitizeAstNode"),yNt=o(()=>{EX="",AX="",RX="",_X.length=0,fD.clear(),yr(),Z.debug("[Railroad] Database cleared")},"clear"),F$e=o(e=>{EX=Ip(e),Z.debug("[Railroad] Title set:",e)},"setTitle"),z$e=o(()=>EX,"getTitle"),vNt=o(e=>{let t={...e,name:Ip(e.name),definition:kx(e.definition),comment:e.comment?Ip(e.comment):void 0};Z.debug("[Railroad] Adding rule:",t.name),fD.has(t.name)&&Z.warn(`[Railroad] Rule '${t.name}' is already defined. Overwriting.`),_X.push(t),fD.set(t.name,t)},"addRule"),xNt=o(()=>_X,"getRules"),bNt=o(e=>fD.get(e),"getRule"),TNt=o(e=>{AX=Ip(e).replace(/^\s+/g,""),Z.debug("[Railroad] Accessibility title set:",e)},"setAccTitle"),CNt=o(()=>AX,"getAccTitle"),wNt=o(e=>{RX=Ip(e).replace(/\n\s+/g,` +`),Z.debug("[Railroad] Accessibility description set:",e)},"setAccDescription"),kNt=o(()=>RX,"getAccDescription"),SNt=F$e,ENt=z$e,sn={clear:yNt,setTitle:F$e,getTitle:z$e,addRule:vNt,getRules:xNt,getRule:bNt,setAccTitle:TNt,getAccTitle:CNt,setAccDescription:wNt,getAccDescription:kNt,setDiagramTitle:SNt,getDiagramTitle:ENt}});var ANt,Sx,RNt,_Nt,G$e,V$e=F(()=>{"use strict";Xa();vt();Hs();ju();ANt=Vv().Railroad.parser.LangiumParser,Sx=o(e=>{switch(e.$type){case"RailroadTerminalExpr":return{type:"terminal",value:e.value};case"RailroadNonTerminalExpr":return{type:"nonterminal",name:e.name};case"RailroadSpecialExpr":return{type:"special",text:e.text};case"RailroadSequenceExpr":{let t=e.elements.map(Sx);return t.length===1?t[0]:{type:"sequence",elements:t}}case"RailroadChoiceExpr":{let t=e.alternatives.map(Sx);return t.length===1?t[0]:{type:"choice",alternatives:t}}case"RailroadOptionalExpr":return{type:"optional",element:Sx(e.element)};case"RailroadOneOrMoreExpr":return{type:"repetition",element:Sx(e.element),min:1,max:1/0};case"RailroadZeroOrMoreExpr":return{type:"repetition",element:Sx(e.element),min:0,max:1/0};default:throw new Error(`Unsupported railroad expression: ${e.$type}`)}},"transformExpression"),RNt=o(e=>({name:e.name,definition:Sx(e.definition)}),"transformRule"),_Nt=o(e=>{Gn(e,sn),e.title&&sn.setTitle(e.title),e.rules.map(t=>sn.addRule(RNt(t)))},"populateDb"),G$e={parse:o(e=>{sn.clear(),Z.debug("[Railroad Parser] Starting Langium parse");let t=ANt.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new ad(t);let r=t.value;Z.debug("[Railroad Parser] Parsed rules:",r.rules.length),_Nt(r),Z.debug("[Railroad Parser] Parse complete")},"parse"),parser:{yy:sn}}});var Na,W$e=F(()=>{"use strict";Na={compactMode:!1,padding:10,verticalSeparation:8,horizontalSeparation:10,arcRadius:10,fontSize:14,fontFamily:"monospace",terminalFill:"#FFFFC0",terminalStroke:"#000000",terminalTextColor:"#000000",nonTerminalFill:"#FFFFFF",nonTerminalStroke:"#000000",nonTerminalTextColor:"#000000",lineColor:"#000000",strokeWidth:2,markerFill:"#000000",commentFill:"#E8E8E8",commentStroke:"#888888",commentTextColor:"#666666",specialFill:"#F0E0FF",specialStroke:"#8800CC",ruleNameColor:"#000066",showMarkers:!0,markerRadius:5}});var LNt,DNt,INt,q$e,MNt,NNt,Vn,H$e,O0,PNt,ONt,pD,Mp,Ex=F(()=>{"use strict";ur();Pc();W$e();LNt=/^#(?:[\da-f]{3,4}|[\da-f]{6}|[\da-f]{8})$|^(?:rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch)\([\d\s%+,./-]+\)$|^[a-z]+$/i,DNt=/^[\w "',.-]+$/,INt=new Set(["compactMode","padding","verticalSeparation","horizontalSeparation","arcRadius","fontSize","fontFamily","terminalFill","terminalStroke","terminalTextColor","nonTerminalFill","nonTerminalStroke","nonTerminalTextColor","lineColor","strokeWidth","markerFill","commentFill","commentStroke","commentTextColor","specialFill","specialStroke","ruleNameColor","showMarkers","markerRadius"]),q$e=o(e=>e?Object.keys(e).every(t=>t==="railroad"||INt.has(t)):!1,"isRailroadStyleOptions"),MNt=o(e=>e?"railroad"in e&&e.railroad?e.railroad:q$e(e)?e:{}:{},"extractRailroadOverrides"),NNt=o(e=>{if(!e||q$e(e))return{};let{railroad:t,svgId:r,theme:n,look:i,...a}=e;return a},"extractThemeOverrides"),Vn=o((e,t)=>{if(typeof e!="string")return t;let r=e.trim();return LNt.test(r)?r:t},"sanitizeColorValue"),H$e=o((e,t)=>{if(typeof e!="string")return t;let r=e.trim();return DNt.test(r)?r:t},"sanitizeFontFamilyValue"),O0=o((e,t)=>{let r=typeof e=="number"?e:typeof e=="string"?Number.parseFloat(e):Number.NaN;return Number.isFinite(r)&&r>=0?r:t},"sanitizeNumberValue"),PNt=o(e=>{let t=typeof e=="number"?e:typeof e=="string"?Number.parseFloat(e):Number.NaN;return Number.isFinite(t)&&t>0?t:void 0},"parseThemeFontSize"),ONt=o(e=>{let t=H$e(e.fontFamily,Na.fontFamily),r=PNt(e.fontSize)??Na.fontSize;return{...Na,fontFamily:t,fontSize:r,terminalFill:Vn(e.secondBkg??e.secondaryColor,Na.terminalFill),terminalStroke:Vn(e.secondaryBorderColor??e.lineColor,Na.terminalStroke),terminalTextColor:Vn(e.secondaryTextColor??e.textColor,Na.terminalTextColor),nonTerminalFill:Vn(e.mainBkg??e.background,Na.nonTerminalFill),nonTerminalStroke:Vn(e.primaryBorderColor??e.lineColor,Na.nonTerminalStroke),nonTerminalTextColor:Vn(e.primaryTextColor??e.textColor,Na.nonTerminalTextColor),lineColor:Vn(e.lineColor,Na.lineColor),markerFill:Vn(e.lineColor,Na.markerFill),commentFill:Vn(e.labelBackground??e.tertiaryColor,Na.commentFill),commentStroke:Vn(e.tertiaryBorderColor??e.lineColor,Na.commentStroke),commentTextColor:Vn(e.tertiaryTextColor??e.textColor,Na.commentTextColor),specialFill:Vn(e.tertiaryColor??e.secondaryColor,Na.specialFill),specialStroke:Vn(e.tertiaryBorderColor??e.secondaryBorderColor,Na.specialStroke),ruleNameColor:Vn(e.titleColor??e.textColor,Na.ruleNameColor)}},"buildThemeDefaults"),pD=o(e=>{let t=_t(),r={...ma(),...t.themeVariables??{},...NNt(e)},n=ONt(r),i={...t.railroad??{},...MNt(e)};return{compactMode:i.compactMode??n.compactMode,padding:O0(i.padding,n.padding),verticalSeparation:O0(i.verticalSeparation,n.verticalSeparation),horizontalSeparation:O0(i.horizontalSeparation,n.horizontalSeparation),arcRadius:O0(i.arcRadius,n.arcRadius),fontSize:O0(i.fontSize,n.fontSize),fontFamily:H$e(i.fontFamily,n.fontFamily),terminalFill:Vn(i.terminalFill,n.terminalFill),terminalStroke:Vn(i.terminalStroke,n.terminalStroke),terminalTextColor:Vn(i.terminalTextColor,n.terminalTextColor),nonTerminalFill:Vn(i.nonTerminalFill,n.nonTerminalFill),nonTerminalStroke:Vn(i.nonTerminalStroke,n.nonTerminalStroke),nonTerminalTextColor:Vn(i.nonTerminalTextColor,n.nonTerminalTextColor),lineColor:Vn(i.lineColor,n.lineColor),strokeWidth:O0(i.strokeWidth,n.strokeWidth),markerFill:Vn(i.markerFill,n.markerFill),commentFill:Vn(i.commentFill,n.commentFill),commentStroke:Vn(i.commentStroke,n.commentStroke),commentTextColor:Vn(i.commentTextColor,n.commentTextColor),specialFill:Vn(i.specialFill,n.specialFill),specialStroke:Vn(i.specialStroke,n.specialStroke),ruleNameColor:Vn(i.ruleNameColor,n.ruleNameColor),showMarkers:i.showMarkers??n.showMarkers,markerRadius:O0(i.markerRadius,n.markerRadius)}},"buildRailroadStyleOptions"),Mp=o(e=>{let{fontFamily:t,fontSize:r,terminalFill:n,terminalStroke:i,terminalTextColor:a,nonTerminalFill:s,nonTerminalStroke:l,nonTerminalTextColor:u,lineColor:h,strokeWidth:d,markerFill:f,commentFill:p,commentStroke:m,commentTextColor:g,specialFill:y,specialStroke:v,ruleNameColor:x}=pD(e);return` + .railroad-diagram { + font-family: ${t}; + font-size: ${r}px; + } + + .railroad-terminal rect { + fill: ${n}; + stroke: ${i}; + stroke-width: ${d}px; + } + + .railroad-terminal text { + fill: ${a}; + font-family: ${t}; + font-size: ${r}px; + text-anchor: middle; + dominant-baseline: middle; + } + + .railroad-nonterminal rect { + fill: ${s}; + stroke: ${l}; + stroke-width: ${d}px; + } + + .railroad-nonterminal text { + fill: ${u}; + font-family: ${t}; + font-size: ${r}px; + text-anchor: middle; + dominant-baseline: middle; + } + + .railroad-line { + stroke: ${h}; + stroke-width: ${d}px; + fill: none; + } + + .railroad-start circle, + .railroad-end circle { + fill: ${f}; + } + + .railroad-comment ellipse { + fill: ${p}; + stroke: ${m}; + stroke-width: ${d}px; + } + + .railroad-comment text { + fill: ${g}; + font-style: italic; + font-family: ${t}; + font-size: ${r}px; + text-anchor: middle; + dominant-baseline: middle; + } + + .railroad-special rect { + fill: ${y}; + stroke: ${v}; + stroke-width: ${d}px; + stroke-dasharray: 5,3; + } + + .railroad-special text { + fill: ${u}; + font-family: ${t}; + font-size: ${r}px; + text-anchor: middle; + dominant-baseline: middle; + } + + .railroad-rule-name { + font-weight: bold; + fill: ${x}; + font-family: ${t}; + font-size: ${r}px; + } + + .railroad-group { + /* Grouping container, no specific styles */ + } +`},"getStyles")});var _o,LX,U$e,BNt,Np,lk=F(()=>{"use strict";vt();ur();Ka();$n();ju();Ex();_o=class{constructor(){this.d=""}static{o(this,"PathBuilder")}moveTo(t,r){return this.d+=`M ${t} ${r} `,this}lineTo(t,r){return this.d+=`L ${t} ${r} `,this}horizontalTo(t){return this.d+=`H ${t} `,this}verticalTo(t){return this.d+=`V ${t} `,this}arcTo(t,r,n,i,a,s,l){return this.d+=`A ${t} ${r} ${n} ${i?1:0} ${a?1:0} ${s} ${l} `,this}build(){return this.d.trim()}},LX=class{constructor(t,r=pD()){this.textCache=new Map;this.svg=t,this.config=r}static{o(this,"RailroadRenderer")}measureText(t){if(this.textCache.has(t))return this.textCache.get(t);let r=this.svg.append("text").attr("font-family",this.config.fontFamily).attr("font-size",this.config.fontSize).text(t),n=r.node().getBBox(),i={width:n.width,height:n.height};return r.remove(),this.textCache.set(t,i),i}renderTerminal(t,r){let n=this.measureText(r),i=n.width+this.config.padding*2,a=n.height+this.config.padding*2,s=t.append("g").attr("class","railroad-terminal");return s.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",a).attr("rx",10).attr("ry",10),s.append("text").attr("x",i/2).attr("y",a/2).text(r),{element:s.node(),dimensions:{width:i,height:a,up:a/2,down:a/2}}}renderNonTerminal(t,r){let n=this.measureText(r),i=n.width+this.config.padding*2,a=n.height+this.config.padding*2,s=t.append("g").attr("class","railroad-nonterminal");return s.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",a),s.append("text").attr("x",i/2).attr("y",a/2).text(r),{element:s.node(),dimensions:{width:i,height:a,up:a/2,down:a/2}}}renderSequence(t,r){let n=r.map(h=>this.renderExpression(t,h)),i=0,a=0,s=0;for(let h of n)i+=h.dimensions.width,a=Math.max(a,h.dimensions.up),s=Math.max(s,h.dimensions.down);i+=(n.length-1)*this.config.horizontalSeparation;let l=t.append("g").attr("class","railroad-sequence"),u=0;for(let h=0;hthis.renderExpression(t,p)),i=0,a=0;for(let p of n)i=Math.max(i,p.dimensions.width),a+=p.dimensions.height;a+=(n.length-1)*this.config.verticalSeparation;let s=this.config.arcRadius,l=s*4,u=i+l,h=t.append("g").attr("class","railroad-choice"),d=0,f=a/2;for(let p of n){let m=d,g=m+p.dimensions.up,y=s*2+(i-p.dimensions.width)/2;h.node().appendChild(p.element).setAttribute("transform",`translate(${y}, ${m})`);let x=new _o,b=g>f;g===f?x.moveTo(0,f).lineTo(y,g):x.moveTo(0,f).arcTo(s,s,0,!1,b,s,f+(b?s:-s)).lineTo(s,g-(b?s:-s)).arcTo(s,s,0,!1,!b,s*2,g).lineTo(y,g),h.append("path").attr("class","railroad-line").attr("d",x.build());let T=new _o,k=y+p.dimensions.width,C=u-s*2;g===f?T.moveTo(k,g).lineTo(u,f):T.moveTo(k,g).lineTo(C,g).arcTo(s,s,0,!1,!b,u-s,g+(b?-s:s)).lineTo(u-s,f+(b?s:-s)).arcTo(s,s,0,!1,b,u,f),h.append("path").attr("class","railroad-line").attr("d",T.build()),d+=p.dimensions.height+this.config.verticalSeparation}return{element:h.node(),dimensions:{width:u,height:a,up:f,down:a-f}}}renderOptional(t,r){let n=this.renderExpression(t,r),i=this.config.arcRadius,a=i*2,s=n.dimensions.width+i*4,l=n.dimensions.height+a,u=t.append("g").attr("class","railroad-optional"),h=i*2,d=a;u.node().appendChild(n.element).setAttribute("transform",`translate(${h}, ${d})`);let p=d+n.dimensions.up,m=new _o().moveTo(0,p).lineTo(i*2,p);u.append("path").attr("class","railroad-line").attr("d",m.build());let g=new _o().moveTo(h+n.dimensions.width,p).lineTo(s,p);u.append("path").attr("class","railroad-line").attr("d",g.build());let y=new _o().moveTo(0,p).arcTo(i,i,0,!1,!1,i,p-i).lineTo(i,i).arcTo(i,i,0,!1,!0,i*2,0).lineTo(s-i*2,0).arcTo(i,i,0,!1,!0,s-i,i).lineTo(s-i,p-i).arcTo(i,i,0,!1,!1,s,p);return u.append("path").attr("class","railroad-line").attr("d",y.build()),{element:u.node(),dimensions:{width:s,height:l,up:p,down:l-p}}}renderRepetition(t,r,n){let i=this.renderExpression(t,r),a=this.config.arcRadius,s=a*2,l=i.dimensions.width+a*4,u=n===0,h=i.dimensions.height+s+(u?s:0),d=t.append("g").attr("class","railroad-repetition"),f=a*2,p=u?s:0;d.node().appendChild(i.element).setAttribute("transform",`translate(${f}, ${p})`);let g=p+i.dimensions.up;d.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(0,g).lineTo(a*2,g).build()),d.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(f+i.dimensions.width,g).lineTo(l,g).build());let y=p+i.dimensions.height+a,v=new _o().moveTo(f+i.dimensions.width,g).arcTo(a,a,0,!1,!0,f+i.dimensions.width+a,g+a).lineTo(f+i.dimensions.width+a,y).arcTo(a,a,0,!1,!0,f+i.dimensions.width,y+a).lineTo(a*2,y+a).arcTo(a,a,0,!1,!0,a,y).lineTo(a,g+a).arcTo(a,a,0,!1,!0,a*2,g);if(d.append("path").attr("class","railroad-line").attr("d",v.build()),u){let x=new _o().moveTo(0,g).arcTo(a,a,0,!1,!1,a,g-a).lineTo(a,a).arcTo(a,a,0,!1,!0,a*2,0).lineTo(l-a*2,0).arcTo(a,a,0,!1,!0,l-a,a).lineTo(l-a,g-a).arcTo(a,a,0,!1,!1,l,g);d.append("path").attr("class","railroad-line").attr("d",x.build())}return{element:d.node(),dimensions:{width:l,height:h,up:g,down:h-g}}}renderSpecial(t,r){let n=this.measureText("? "+r+" ?"),i=n.width+this.config.padding*2,a=n.height+this.config.padding*2,s=t.append("g").attr("class","railroad-special");return s.append("rect").attr("x",0).attr("y",0).attr("width",i).attr("height",a),s.append("text").attr("x",i/2).attr("y",a/2).text("? "+r+" ?"),{element:s.node(),dimensions:{width:i,height:a,up:a/2,down:a/2}}}renderExpression(t,r){switch(r.type){case"terminal":return this.renderTerminal(t,r.value);case"nonterminal":return this.renderNonTerminal(t,r.name);case"sequence":return this.renderSequence(t,r.elements);case"choice":return this.renderChoice(t,r.alternatives);case"optional":return this.renderOptional(t,r.element);case"repetition":return this.renderRepetition(t,r.element,r.min);case"special":return this.renderSpecial(t,r.text);default:throw new Error(`Unknown node type: ${r.type}`)}}renderRule(t,r){let n=this.svg.append("g").attr("class","railroad-rule").attr("transform",`translate(0, ${r})`),i=t.name+" =",a=this.measureText(i).width+20,s=a+20,l=n.append("g"),u=this.renderExpression(l,t.definition),h=Math.max(20,u.dimensions.up),d=h-u.dimensions.up;return l.attr("transform",`translate(${s}, ${d})`),n.append("g").attr("class","railroad-rule-name-group").append("text").attr("class","railroad-rule-name").attr("x",0).attr("y",h).text(i),n.append("g").attr("class","railroad-start").append("circle").attr("cx",a).attr("cy",h).attr("r",this.config.markerRadius),n.append("g").attr("class","railroad-end").append("circle").attr("cx",s+u.dimensions.width+10).attr("cy",h).attr("r",this.config.markerRadius),n.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(a+this.config.markerRadius,h).lineTo(s,h).build()),n.append("path").attr("class","railroad-line").attr("d",new _o().moveTo(s+u.dimensions.width,h).lineTo(s+u.dimensions.width+10-this.config.markerRadius,h).build()),{height:Math.max(40,d+u.dimensions.height+this.config.padding*2),width:s+u.dimensions.width+10+this.config.markerRadius}}renderDiagram(t){let r=this.config.padding,n=0;for(let i of t){let a=this.renderRule(i,r);r+=a.height+this.config.verticalSeparation,n=Math.max(n,a.width)}return{width:n+this.config.padding*2,height:r+this.config.padding}}},U$e=o((e,t,r)=>{Wr(e,t.height,t.width,r),e.attr("viewBox",`0 0 ${t.width} ${t.height}`)},"configureRailroadSvgSize"),BNt=o((e,t,r)=>{Z.debug(`[Railroad] Rendering diagram +`+e);try{let n=xn(t);n.attr("class","railroad-diagram");let a=_t().railroad?.useMaxWidth??!0,s=sn.getRules();if(Z.debug(`[Railroad] Rendering ${s.length} rules`),s.length===0){Z.warn("[Railroad] No rules to render"),U$e(n,{height:100,width:200},a);return}let u=new LX(n,pD()).renderDiagram(s);U$e(n,u,a),Z.debug("[Railroad] Render complete")}catch(n){throw Z.error("[Railroad] Render error:",n),n}},"draw"),Np={draw:BNt}});var j$e={};ir(j$e,{default:()=>$Nt,diagram:()=>Y$e});var Y$e,$Nt,X$e=F(()=>{"use strict";V$e();ju();lk();Ex();Y$e={parser:G$e,db:sn,renderer:Np,styles:Mp},$Nt=Y$e});var GNt,mD,VNt,Q$e,WNt,qNt,HNt,UNt,J$e,eFe=F(()=>{"use strict";Xa();vt();Hs();ju();GNt=Wv().RailroadEbnf.parser.LangiumParser,mD=o(e=>{let t=e.alternatives.map(VNt);return t.length===1?t[0]:{type:"choice",alternatives:t}},"transformChoice"),VNt=o(e=>{let t=e.elements.map(qNt);return t.length===1?t[0]:{type:"sequence",elements:t}},"transformSequence"),Q$e=o(e=>{switch(e.$type){case"EbnfTerminal":return{type:"terminal",value:e.value};case"EbnfNonTerminal":return{type:"nonterminal",name:e.name};case"EbnfSpecial":return{type:"special",text:e.text};case"EbnfGroup":return mD(e.element);case"EbnfOptional":return{type:"optional",element:mD(e.element)};case"EbnfRepetition":return{type:"repetition",element:mD(e.element),min:0,max:1/0};default:throw new Error(`Unsupported EBNF primary node: ${e.$type}`)}},"transformPrimary"),WNt=o((e,t)=>{switch(t.$type){case"EbnfOptionalPostfix":return{type:"optional",element:e};case"EbnfZeroOrMorePostfix":return{type:"repetition",element:e,min:0,max:1/0};case"EbnfOneOrMorePostfix":return{type:"repetition",element:e,min:1,max:1/0};case"EbnfExceptionPostfix":return{type:"sequence",elements:[e,{type:"terminal",value:"-"},Q$e(t.except)]};default:throw new Error(`Unsupported EBNF postfix node: ${t.$type}`)}},"transformPostfix"),qNt=o(e=>e.postfixes.reduce((t,r)=>WNt(t,r),Q$e(e.base)),"transformTerm"),HNt=o(e=>({name:e.name,definition:mD(e.definition)}),"transformRule"),UNt=o(e=>{Gn(e,sn),e.title&&sn.setTitle(e.title),e.rules.map(t=>sn.addRule(HNt(t)))},"populateDb"),J$e={parse:o(e=>{sn.clear(),Z.debug("[EBNF Parser] Starting Langium parse");let t=GNt.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new ad(t);let r=t.value;Z.debug("[EBNF Parser] Parsed rules:",r.rules.length),UNt(r),Z.debug("[EBNF Parser] Parse complete")},"parse"),parser:{yy:sn}}});var tFe={};ir(tFe,{diagram:()=>YNt});var YNt,rFe=F(()=>{"use strict";eFe();ju();lk();Ex();YNt={parser:J$e,db:sn,renderer:Np,styles:Mp}});var KNt,DX,ZNt,QNt,JNt,ePt,tPt,rPt,aFe,sFe=F(()=>{"use strict";Xa();vt();Hs();ju();KNt=qv().RailroadAbnf.parser.LangiumParser,DX=o(e=>{let t=e.alternatives.map(ZNt);return t.length===1?t[0]:{type:"choice",alternatives:t}},"transformAlternation"),ZNt=o(e=>{let t=e.elements.map(JNt);return t.length===1?t[0]:{type:"sequence",elements:t}},"transformConcatenation"),QNt=o(e=>{if(e.includes("*")){let[r,n]=e.split("*"),i=r?parseInt(r,10):0,a=n?parseInt(n,10):1/0;return{min:i,max:a}}let t=parseInt(e,10);return{min:t,max:t}},"parseRepeat"),JNt=o(e=>{let t=ePt(e.primary);if(!e.repeat)return t;let{min:r,max:n}=QNt(e.repeat);return r===0&&n===1?{type:"optional",element:t}:{type:"repetition",element:t,min:r,max:n}},"transformElement"),ePt=o(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return DX(e.element);case"AbnfOptionalGroup":return{type:"optional",element:DX(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),tPt=o(e=>({name:e.name,definition:DX(e.definition)}),"transformRule"),rPt=o(e=>{Gn(e,sn),e.title&&sn.setTitle(e.title),e.rules.map(t=>sn.addRule(tPt(t)))},"populateDb"),aFe={parse:o(e=>{sn.clear(),Z.debug("[ABNF Parser] Starting Langium parse");let t=KNt.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new ad(t);let r=t.value;Z.debug("[ABNF Parser] Parsed rules:",r.rules.length),rPt(r),Z.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:sn}}});var oFe={};ir(oFe,{diagram:()=>nPt});var nPt,lFe=F(()=>{"use strict";sFe();ju();lk();Ex();nPt={parser:aFe,db:sn,renderer:Np,styles:Mp}});var sPt,dFe,oPt,lPt,hFe,cPt,uPt,hPt,dPt,fFe,pFe=F(()=>{"use strict";Xa();vt();Hs();ju();sPt=Hv().RailroadPeg.parser.LangiumParser,dFe=o(e=>{let t=e.alternatives.map(oPt);return t.length===1?t[0]:{type:"choice",alternatives:t}},"transformOrderedChoice"),oPt=o(e=>{let t=e.elements.map(lPt);return t.length===1?t[0]:{type:"sequence",elements:t}},"transformSequence"),lPt=o(e=>{let t=cPt(e.suffix);return e.operator?{type:"special",text:e.operator==="&"?`&${hFe(t)}`:`!${hFe(t)}`}:t},"transformPrefix"),hFe=o(e=>{switch(e.type){case"terminal":return`"${e.value}"`;case"nonterminal":return e.name;case"special":return e.text;default:return"(...)"}},"nodeToLabel"),cPt=o(e=>{let t=uPt(e.primary);if(!e.operator)return t;switch(e.operator){case"?":return{type:"optional",element:t};case"*":return{type:"repetition",element:t,min:0,max:1/0};case"+":return{type:"repetition",element:t,min:1,max:1/0};default:throw new Error(`Unsupported PEG suffix operator: ${e.operator}`)}},"transformSuffix"),uPt=o(e=>{switch(e.$type){case"PegLiteral":return{type:"terminal",value:e.value};case"PegIdentifier":return{type:"nonterminal",name:e.name};case"PegGroup":return dFe(e.element);case"PegAny":return{type:"special",text:e.dot};default:throw new Error(`Unsupported PEG primary node: ${e.$type}`)}},"transformPrimary"),hPt=o(e=>({name:e.name,definition:dFe(e.definition)}),"transformRule"),dPt=o(e=>{Gn(e,sn),e.title&&sn.setTitle(e.title),e.rules.map(t=>sn.addRule(hPt(t)))},"populateDb"),fFe={parse:o(e=>{sn.clear(),Z.debug("[PEG Parser] Starting Langium parse");let t=sPt.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new ad(t);let r=t.value;Z.debug("[PEG Parser] Parsed rules:",r.rules.length),dPt(r),Z.debug("[PEG Parser] Parse complete")},"parse"),parser:{yy:sn}}});var mFe={};ir(mFe,{diagram:()=>fPt});var fPt,gFe=F(()=>{"use strict";pFe();ju();lk();Ex();fPt={parser:fFe,db:sn,renderer:Np,styles:Mp}});var tOt={};ir(tOt,{default:()=>eOt});Vl();h8();Up();var Bje=o(e=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),"detector"),$je=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(gae(),mae));return{id:"c4",diagram:e}},"loader"),Fje={id:"c4",detector:Bje,loader:$je},yae=Fje;var mTe="flowchart",n0t=o((e,t)=>t?.flowchart?.defaultRenderer==="dagre-wrapper"||t?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(e),"detector"),i0t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(oC(),LA));return{id:mTe,diagram:e}},"loader"),a0t={id:mTe,detector:n0t,loader:i0t},gTe=a0t;var yTe="flowchart-v2",s0t=o((e,t)=>t?.flowchart?.defaultRenderer==="dagre-d3"?!1:(t?.flowchart?.defaultRenderer==="elk"&&(t.layout="elk"),/^\s*graph/.test(e)&&t?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(e)),"detector"),o0t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(oC(),LA));return{id:yTe,diagram:e}},"loader"),l0t={id:yTe,detector:s0t,loader:o0t},vTe=l0t;var wTe="swimlane",h0t=o(e=>/^\s*swimlane-beta\b/.test(e),"detector"),d0t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(CTe(),TTe));return{id:wTe,diagram:e}},"loader"),f0t={id:wTe,detector:h0t,loader:d0t},kTe=f0t;var v0t=o(e=>/^\s*erDiagram/.test(e),"detector"),x0t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(MTe(),ITe));return{id:"er",diagram:e}},"loader"),b0t={id:"er",detector:v0t,loader:x0t},NTe=b0t;var ZDe="gitGraph",H3t=o(e=>/^\s*gitGraph/.test(e),"detector"),U3t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(KDe(),XDe));return{id:ZDe,diagram:e}},"loader"),Y3t={id:ZDe,detector:H3t,loader:U3t},QDe=Y3t;var D7e="gantt",P5t=o(e=>/^\s*gantt/.test(e),"detector"),O5t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(L7e(),_7e));return{id:D7e,diagram:e}},"loader"),B5t={id:D7e,detector:P5t,loader:O5t},I7e=B5t;var G7e="info",V5t=o(e=>/^\s*info/.test(e),"detector"),W5t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(z7e(),F7e));return{id:G7e,diagram:e}},"loader"),V7e={id:G7e,detector:V5t,loader:W5t};var rAt=o(e=>/^\s*pie/.test(e),"detector"),nAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(Z7e(),K7e));return{id:"pie",diagram:e}},"loader"),Q7e={id:"pie",detector:rAt,loader:nAt};var h8e="quadrantChart",bAt=o(e=>/^\s*quadrantChart/.test(e),"detector"),TAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(u8e(),c8e));return{id:h8e,diagram:e}},"loader"),CAt={id:h8e,detector:bAt,loader:TAt},d8e=CAt;var F8e="xychart",FAt=o(e=>/^\s*xychart(-beta)?/.test(e),"detector"),zAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>($8e(),B8e));return{id:F8e,diagram:e}},"loader"),GAt={id:F8e,detector:FAt,loader:zAt},z8e=GAt;var X8e="requirement",UAt=o(e=>/^\s*requirement(Diagram)?/.test(e),"detector"),YAt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(j8e(),Y8e));return{id:X8e,diagram:e}},"loader"),jAt={id:X8e,detector:UAt,loader:YAt},K8e=jAt;var pIe="sequence",q6t=o(e=>/^\s*sequenceDiagram/.test(e),"detector"),H6t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(fIe(),dIe));return{id:pIe,diagram:e}},"loader"),U6t={id:pIe,detector:q6t,loader:H6t},mIe=U6t;var TIe="class",Q6t=o((e,t)=>t?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(e),"detector"),J6t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(bIe(),xIe));return{id:TIe,diagram:e}},"loader"),eRt={id:TIe,detector:Q6t,loader:J6t},CIe=eRt;var SIe="classDiagram",rRt=o((e,t)=>/^\s*classDiagram/.test(e)&&t?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(e),"detector"),nRt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(kIe(),wIe));return{id:SIe,diagram:e}},"loader"),iRt={id:SIe,detector:rRt,loader:nRt},EIe=iRt;var iMe="state",LRt=o((e,t)=>t?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(e),"detector"),DRt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(nMe(),rMe));return{id:iMe,diagram:e}},"loader"),IRt={id:iMe,detector:LRt,loader:DRt},aMe=IRt;var lMe="stateDiagram",NRt=o((e,t)=>!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&t?.state?.defaultRenderer==="dagre-wrapper"),"detector"),PRt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(oMe(),sMe));return{id:lMe,diagram:e}},"loader"),ORt={id:lMe,detector:NRt,loader:PRt},cMe=ORt;var kMe="journey",n_t=o(e=>/^\s*journey/.test(e),"detector"),i_t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(wMe(),CMe));return{id:kMe,diagram:e}},"loader"),a_t={id:kMe,detector:n_t,loader:i_t},SMe=a_t;vt();Ka();$n();var s_t=o((e,t,r)=>{Z.debug(`rendering svg for syntax error +`);let n=xn(t),i=n.append("g");n.attr("viewBox","0 0 2412 512"),Wr(n,100,512,!0),i.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),i.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),i.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),i.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),i.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),i.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),i.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),i.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw"),VY={draw:s_t},EMe=VY;var o_t={db:{},renderer:VY,parser:{parse:o(()=>{},"parse")}},AMe=o_t;var RMe="flowchart-elk",l_t=o((e,t={})=>/^\s*flowchart-elk/.test(e)||/^\s*(flowchart|graph)/.test(e)&&t?.flowchart?.defaultRenderer==="elk"?(t.layout="elk",!0):!1,"detector"),c_t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(oC(),LA));return{id:RMe,diagram:e}},"loader"),u_t={id:RMe,detector:l_t,loader:c_t},_Me=u_t;var uNe="timeline",P_t=o(e=>/^\s*timeline/.test(e),"detector"),O_t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(cNe(),lNe));return{id:uNe,diagram:e}},"loader"),B_t={id:uNe,detector:P_t,loader:O_t},hNe=B_t;var RNe="mindmap",U_t=o(e=>/^\s*mindmap/.test(e),"detector"),Y_t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(ANe(),ENe));return{id:RNe,diagram:e}},"loader"),j_t={id:RNe,detector:U_t,loader:Y_t},_Ne=j_t;var GNe="kanban",uLt=o(e=>/^\s*kanban/.test(e),"detector"),hLt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(zNe(),FNe));return{id:GNe,diagram:e}},"loader"),dLt={id:GNe,detector:uLt,loader:hLt},VNe=dLt;var wPe="sankey",OLt=o(e=>/^\s*sankey(-beta)?/.test(e),"detector"),BLt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(CPe(),TPe));return{id:wPe,diagram:e}},"loader"),$Lt={id:wPe,detector:OLt,loader:BLt},kPe=$Lt;var IPe="packet",YLt=o(e=>/^\s*packet(-beta)?/.test(e),"detector"),jLt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(DPe(),LPe));return{id:IPe,diagram:e}},"loader"),MPe={id:IPe,detector:YLt,loader:jLt};var qPe="radar",gDt=o(e=>/^\s*radar-beta/.test(e),"detector"),yDt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(WPe(),VPe));return{id:qPe,diagram:e}},"loader"),HPe={id:qPe,detector:gDt,loader:yDt};var jOe="block",z7t=o(e=>/^\s*block(-beta)?/.test(e),"detector"),G7t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(YOe(),UOe));return{id:jOe,diagram:e}},"loader"),V7t={id:jOe,detector:z7t,loader:G7t},XOe=V7t;var g9e="treeView",d8t=o(e=>/^\s*treeView-beta/.test(e),"detector"),f8t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(m9e(),p9e));return{id:g9e,diagram:e}},"loader"),p8t={id:g9e,detector:d8t,loader:f8t},y9e=p8t;var z9e="architecture",_8t=o(e=>/^\s*architecture/.test(e),"detector"),L8t=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(F9e(),$9e));return{id:z9e,diagram:e}},"loader"),D8t={id:z9e,detector:_8t,loader:L8t},G9e=D8t;var eBe="eventmodeling",mIt=o(e=>/^\s*eventmodeling/.test(e),"detector"),gIt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(J9e(),Q9e));return{id:eBe,diagram:e}},"loader"),yIt={id:eBe,detector:mIt,loader:gIt},tBe=yIt;var vBe="ishikawa",LIt=o(e=>/^\s*ishikawa(-beta)?\b/i.test(e),"detector"),DIt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(yBe(),gBe));return{id:vBe,diagram:e}},"loader"),xBe={id:vBe,detector:LIt,loader:DIt};var XBe="venn",mMt=o(e=>/^\s*venn-beta/.test(e),"detector"),gMt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(jBe(),YBe));return{id:XBe,diagram:e}},"loader"),yMt={id:XBe,detector:mMt,loader:gMt},KBe=yMt;Up();Xt();var s$e="treemap",EMt=o(e=>/^\s*treemap/.test(e),"detector"),AMt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(a$e(),i$e));return{id:s$e,diagram:e}},"loader"),o$e={id:s$e,detector:EMt,loader:AMt};var x$e="wardley",QMt=o(e=>/^\s*wardley-beta/i.test(e),"detector"),JMt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(v$e(),y$e));return{id:x$e,diagram:e}},"loader"),eNt={id:x$e,detector:QMt,loader:JMt},b$e=eNt;var B$e="cynefin",mNt=o(e=>/^\s*cynefin-beta(?:[\s:]|$)/.test(e),"detector"),gNt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(O$e(),P$e));return{id:B$e,diagram:e}},"loader"),$$e={id:B$e,detector:mNt,loader:gNt};var K$e="railroad",FNt=o(e=>/^\s*railroad-beta/i.test(e),"detector"),zNt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(X$e(),j$e));return{id:K$e,diagram:e}},"loader"),Z$e={id:K$e,detector:FNt,loader:zNt};var nFe="railroadEbnf",jNt=o(e=>/^\s*railroad-ebnf-beta/i.test(e),"detector"),XNt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(rFe(),tFe));return{id:nFe,diagram:e}},"loader"),iFe={id:nFe,detector:jNt,loader:XNt};var cFe="railroadAbnf",iPt=o(e=>/^\s*railroad-abnf-beta/i.test(e),"detector"),aPt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(lFe(),oFe));return{id:cFe,diagram:e}},"loader"),uFe={id:cFe,detector:iPt,loader:aPt};var yFe="railroadPeg",pPt=o(e=>/^\s*railroad-peg-beta/i.test(e),"detector"),mPt=o(async()=>{let{diagram:e}=await Promise.resolve().then(()=>(gFe(),mFe));return{id:yFe,diagram:e}},"loader"),vFe={id:yFe,detector:pPt,loader:mPt};var xFe=!1,Ax=o(()=>{xFe||(xFe=!0,Yp("error",AMe,e=>e.toLowerCase().trim()==="error"),Yp("---",{db:{clear:o(()=>{},"clear")},styles:{},renderer:{draw:o(()=>{},"draw")},parser:{parse:o(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:o(()=>null,"init")},e=>e.toLowerCase().trimStart().startsWith("---")),sb(_Me,_Ne,G9e),sb(yae,VNe,EIe,CIe,NTe,I7e,V7e,Q7e,K8e,mIe,kTe,vTe,gTe,hNe,QDe,cMe,aMe,SMe,d8e,kPe,MPe,z8e,XOe,tBe,y9e,HPe,xBe,o$e,Z$e,iFe,uFe,vFe,KBe,b$e,$$e))},"addDiagrams");vt();Up();Xt();var bFe=o(async()=>{Z.debug("Loading registered diagrams");let t=(await Promise.allSettled(Object.entries(oh).map(async([r,{detector:n,loader:i}])=>{if(i)try{db(r)}catch{try{let{diagram:a,id:s}=await i();Yp(s,a,n)}catch(a){throw Z.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete oh[r],a}}}))).filter(r=>r.status==="rejected");if(t.length>0){Z.error(`Failed to load ${t.length} external diagrams`);for(let r of t)Z.error(r);throw new Error(`Failed to load ${t.length} external diagrams`)}},"loadRegisteredDiagrams");vt();$r();var Rx="comm",gD="rule",yD="decl";var TFe="@media",CFe="@import";var wFe="@supports";var kFe="@namespace",ck="@keyframes";var vD="@layer",SFe="@scope";var IX=Math.abs,uk=String.fromCharCode;function xD(e){return e.trim()}o(xD,"trim");function _x(e,t,r){return e.replace(t,r)}o(_x,"replace");function EFe(e,t,r){return e.indexOf(t,r)}o(EFe,"indexof");function gd(e,t){return e.charCodeAt(t)|0}o(gd,"charat");function yd(e,t,r){return e.slice(t,r)}o(yd,"substr");function Lo(e){return e.length}o(Lo,"strlen");function bD(e){return e.length}o(bD,"sizeof");function Lx(e,t){return t.push(e),e}o(Lx,"append");var TD=1,Dx=1,AFe=0,Bl=0,ea=0,Mx="";function CD(e,t,r,n,i,a,s,l){return{value:e,root:t,parent:r,type:n,props:i,children:a,line:TD,column:Dx,length:s,return:"",siblings:l}}o(CD,"node");function RFe(){return ea}o(RFe,"char");function _Fe(){return ea=Bl>0?gd(Mx,--Bl):0,Dx--,ea===10&&(Dx=1,TD--),ea}o(_Fe,"prev");function $l(){return ea=Bl2||Ix(ea)>3?"":" "}o(IFe,"whitespace");function MFe(e,t){for(;--t&&$l()&&!(ea<48||ea>102||ea>57&&ea<65||ea>70&&ea<97););return wD(e,hk()+(t<6&&vd()==32&&$l()==32))}o(MFe,"escaping");function MX(e){for(;$l();)switch(ea){case e:return Bl;case 34:case 39:e!==34&&e!==39&&MX(ea);break;case 40:e===41&&MX(e);break;case 92:$l();break}return Bl}o(MX,"delimiter");function NFe(e,t){for(;$l()&&e+ea!==57;)if(e+ea===84&&vd()===47)break;return"/*"+wD(t,Bl-1)+"*"+uk(e===47?e:$l())}o(NFe,"commenter");function PFe(e){for(;!Ix(vd());)$l();return wD(e,Bl)}o(PFe,"identifier");function $Fe(e){return DFe(SD("",null,null,null,[""],e=LFe(e),0,[0],e))}o($Fe,"compile");function SD(e,t,r,n,i,a,s,l,u){for(var h=0,d=0,f=s,p=0,m=0,g=0,y=1,v=1,x=1,b=0,T="",k=i,C=a,w=n,S=T;v;)switch(g=b,b=$l()){case 40:if(g!=108&&gd(S,f-1)==58){EFe(S+=_x(kD(b),"&","&\f"),"&\f",IX(h?l[h-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:S+=kD(b);break;case 9:case 10:case 13:case 32:S+=IFe(g);break;case 92:S+=MFe(hk()-1,7);continue;case 47:switch(vd()){case 42:case 47:Lx(yPt(NFe($l(),hk()),t,r,u),u),(Ix(g||1)==5||Ix(vd()||1)==5)&&Lo(S)&&yd(S,-1,void 0)!==" "&&(S+=" ");break;default:S+="/"}break;case 123*y:l[h++]=Lo(S)*x;case 125*y:case 59:case 0:switch(b){case 0:case 125:v=0;case 59+d:x==-1&&(S=_x(S,/\f/g,"")),m>0&&(Lo(S)-f||y===0&&g===47)&&Lx(m>32?BFe(S+";",n,r,f-1,u):BFe(_x(S," ","")+";",n,r,f-2,u),u);break;case 59:S+=";";default:if(Lx(w=OFe(S,t,r,h,d,i,l,T,k=[],C=[],f,a),a),b===123)if(d===0)SD(S,t,w,w,k,a,f,l,C);else{switch(p){case 99:if(gd(S,3)===110)break;case 108:if(gd(S,2)===97)break;default:d=0;case 100:case 109:case 115:}d?SD(e,w,w,n&&Lx(OFe(e,w,w,0,0,i,l,T,i,k=[],f,C),C),i,C,f,l,n?k:C):SD(S,w,w,w,[""],C,0,l,C)}}h=d=m=0,y=x=1,T=S="",f=s;break;case 58:f=1+Lo(S),m=g;default:if(y<1){if(b==123)--y;else if(b==125&&y++==0&&_Fe()==125)continue}switch(S+=uk(b),b*y){case 38:x=d>0?1:(S+="\f",-1);break;case 44:l[h++]=(Lo(S)-1)*x,x=1;break;case 64:vd()===45&&(S+=kD($l())),p=vd(),d=f=Lo(T=S+=PFe(hk())),b++;break;case 45:g===45&&Lo(S)==2&&(y=0)}}return a}o(SD,"parse");function OFe(e,t,r,n,i,a,s,l,u,h,d,f){for(var p=i-1,m=i===0?a:[""],g=bD(m),y=0,v=0,x=0;y0?m[b]+" "+T:_x(T,/&\f/g,m[b])))&&(u[x++]=k);return CD(e,t,r,i===0?gD:l,u,h,d,f)}o(OFe,"ruleset");function yPt(e,t,r,n){return CD(e,t,r,Rx,uk(RFe()),yd(e,2,-2),0,n)}o(yPt,"comment");function BFe(e,t,r,n,i){return CD(e,t,r,yD,yd(e,0,n),yd(e,n+1,-1),n,i)}o(BFe,"declaration");function ED(e,t){for(var r="",n=0;n{WFe.forEach(e=>{e()}),WFe=[]},"attachFunctions");vt();var HFe=o(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");yS();A2();function UFe(e){let t=e.match(gS);if(!t)return{text:e,metadata:{}};let r=t[1],n=r?t[2].split(` +`).map(s=>s.startsWith(r)?s.slice(r.length):s).join(` +`):t[2],i=Qd(n,{schema:Zd})??{};i=typeof i=="object"&&!Array.isArray(i)?i:{};let a={};return i.displayMode&&(a.displayMode=i.displayMode.toString()),i.title&&(a.title=i.title.toString()),i.config&&(a.config=i.config),{text:e.slice(t[0].length),metadata:a}}o(UFe,"extractFrontMatter");Qt();var xPt=o(e=>e.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(t,r,n)=>"<"+r+n.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),bPt=o(e=>{let{text:t,metadata:r}=UFe(e),{displayMode:n,title:i,config:a={}}=r;return n&&(a.gantt||(a.gantt={}),a.gantt.displayMode=n),{title:i,config:a,text:t}},"processFrontmatter"),TPt=o(e=>{let t=Zt.detectInit(e)??{},r=Zt.detectDirective(e,"wrap");return Array.isArray(r)?t.wrap=r.some(({type:n})=>n==="wrap"):r?.type==="wrap"&&(t.wrap=!0),{text:iae(e),directive:t}},"processDirectives");function NX(e){let t=xPt(e),r=bPt(t),n=TPt(r.text),i=qr(r.config,n.directive);return e=HFe(n.text),{code:e,title:r.title,config:i}}o(NX,"preprocessDiagram");g8();Sk();Qt();function YFe(e){let t=new TextEncoder().encode(e),r=Array.from(t,n=>String.fromCodePoint(n)).join("");return btoa(r)}o(YFe,"toBase64");Ek();var CPt=5e4,wPt="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",kPt="sandbox",SPt="loose",EPt="http://www.w3.org/2000/svg",APt="http://www.w3.org/1999/xlink",RPt="http://www.w3.org/1999/xhtml",_Pt="100%",LPt="100%",DPt="border:0;margin:0;",IPt="margin:0",MPt="allow-top-navigation-by-user-activation allow-popups",NPt='The "iframe" tag is not supported by your browser.',PPt=["foreignobject"],OPt=["dominant-baseline"];function ZFe(e){let t=NX(e);return Wx(),sZ(t.config??{}),t}o(ZFe,"processAndSetConfigs");async function BPt(e,t){Ax();try{let{code:r,config:n}=ZFe(e);return{diagramType:(await QFe(r)).type,config:n}}catch(r){if(t?.suppressErrors)return!1;throw r}}o(BPt,"parse");var jFe=o((e,t,r=[])=>{let n=o7(`{ ${r.join(" !important; ")} !important; }`);return`.${e} ${t} ${n}`},"cssImportantStyles"),$Pt=o((e,t=new Map)=>{let r=new CSSStyleSheet;if(e.fontFamily!==void 0&&r.insertRule(`:root { --mermaid-font-family: ${e.fontFamily}}`,r.cssRules.length),e.altFontFamily!==void 0&&r.insertRule(`:root { --mermaid-alt-font-family: ${e.altFontFamily}}`,r.cssRules.length),t instanceof Map){let l=Gr(e)?["> *","span"]:["rect","polygon","ellipse","circle","path"];t.forEach(u=>{a4(u.styles)||l.forEach(h=>{r.insertRule(jFe(u.id,h,u.styles),r.cssRules.length)}),a4(u.textStyles)||r.insertRule(jFe(u.id,"tspan",(u?.textStyles||[]).map(h=>h.replace("color","fill"))),r.cssRules.length)})}let n="";if(e.themeCSS!==void 0)if(typeof r.replaceSync=="function"){let i=new CSSStyleSheet;i.replaceSync(e.themeCSS),n=m8(i)+` +`}else n+=`${e.themeCSS} +`;return n+m8(r)},"createCssStyles"),FPt=o((e,t)=>ED($Fe(`${e}{${t}}`),zFe([o(function(n,i,a,s){if(n.type==="rule"&&Array.isArray(n.props)){if(n.parent&&n.parent.type===ck)return;n.props=n.props.map(l=>l.startsWith(e)?l:`${e} ${l}`)}else n.type.startsWith("@")&&([...[TFe,wFe,vD,SFe,"@container","@starting-style"],ck].includes(n.type)||(Z.warn(`Removing unsupported at-rule ${n.type} from CSS`),n.type=Rx))},"addNamespace"),FFe])),"compileCSS"),zPt=o((e,t,r,n)=>{let i=$Pt(e,r),a=cJ(t,i,{...e.themeVariables,theme:e.theme,look:e.look},n);return FPt(n,a)},"createUserStyles"),GPt=o((e="",t,r)=>{let n=e;return!r&&!t&&(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=Rs(n),n=n.replace(/
    /g,"
    "),n},"cleanUpSvgCode"),VPt=o((e="",t)=>{let r=t?.viewBox?.baseVal?.height?t.viewBox.baseVal.height+"px":LPt,n=YFe(`${e}`);return``},"putIntoIFrame"),XFe=o((e,t,r,n,i)=>{let a=e.append("div");a.attr("id",r),n&&a.attr("style",n);let s=a.append("svg").attr("id",t).attr("width","100%").attr("xmlns",EPt);return i&&s.attr("xmlns:xlink",i),s.append("g"),e},"appendDivSvgG");function KFe(e,t){return e.append("iframe").attr("id",t).attr("style","width: 100%; height: 100%;").attr("sandbox","")}o(KFe,"sandboxedIframe");var WPt=o((e,t,r,n)=>{e.getElementById(t)?.remove(),e.getElementById(r)?.remove(),e.getElementById(n)?.remove()},"removeExistingElements"),qPt=o(async function(e,t,r){Ax();let n=ZFe(t);t=n.code;let i=_t();Z.debug(i),t.length>(i?.maxTextSize??CPt)&&(t=wPt);let a=`#${e}`,s="i"+e,l="#"+s,u="d"+e,h="#"+u,d=o(()=>{let A=et(p?l:h).node();A&&"remove"in A&&A.remove()},"removeTempElements"),f=et(document.body),p=i.securityLevel===kPt,m=i.securityLevel===SPt,g=i.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),p){let _=KFe(et(r),s);f=et(_.nodes()[0].contentDocument.body),f.node().style.margin="0"}else f=et(r);XFe(f,e,u,`font-family: ${g}`,APt)}else{if(WPt(document,e,u,s),p){let _=KFe(et(document.body),s);f=et(_.nodes()[0].contentDocument.body),f.node().style.margin="0"}else f=et("body");XFe(f,e,u)}let y,v;try{y=await Nx.fromText(t,{title:n.title})}catch(_){if(i.suppressErrorRendering)throw d(),_;y=await Nx.fromText("error"),v=_}let x=f.select(h).node(),b=y.type,T=x.firstChild,k=T.firstChild,C=y.renderer.getClasses?.(t,y),w=zPt(i,b,C,a),S=document.createElement("style");S.innerHTML=w,T.insertBefore(S,k);try{await y.renderer.draw(t,e,"11.16.0",y)}catch(_){throw i.suppressErrorRendering?d():EMe.draw(t,e,"11.16.0"),_}let R=f.select(`${h} svg`),L=y.db.getAccTitle?.(),N=y.db.getAccDescription?.();UPt(b,R,L,N),f.select(`[id="${e}"]`).selectAll("foreignobject > *").attr("xmlns",RPt);let I=f.select(h).node().innerHTML;if(Z.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),I=GPt(I,p,ya(i.arrowMarkerAbsolute)),p){let _=f.select(h+" svg").node();I=VPt(I,_)}else m||(I=Zs.sanitize(I,{ADD_TAGS:PPt,ADD_ATTR:OPt,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(qFe(),v)throw v;return d(),{diagramType:b,svg:I,bindFunctions:y.db.bindFunctions}},"render");function HPt(e={}){let t=Yn({},e);t?.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),nZ(t),t?.theme&&t.theme in sl?t.themeVariables=sl[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=sl.default.getThemeVariables(t.themeVariables));let r=typeof t=="object"?l7(t):c7();Bx(r.logLevel),Ax()}o(HPt,"initialize");var QFe=o((e,t={})=>{let{code:r}=NX(e);return Nx.fromText(r,t)},"getDiagramFromText");function UPt(e,t,r,n){GFe(t,e),VFe(t,r,n,t.attr("id"))}o(UPt,"addA11yInfo");var Pp=Object.freeze({render:qPt,parse:BPt,getDiagramFromText:QFe,initialize:HPt,getConfig:_t,setConfig:_k,getSiteConfig:c7,updateSiteConfig:iZ,reset:o(()=>{Wx()},"reset"),globalReset:o(()=>{Wx(Cd)},"globalReset"),defaultConfig:Cd});Bx(_t().logLevel);Wx(_t());Qf();Qt();var YPt=o((e,t,r)=>{Z.warn(e),fP(e)?(r&&r(e.str,e.hash),t.push({...e,message:e.str,error:e})):(r&&r(e),e instanceof Error&&t.push({str:e.message,message:e.message,hash:e.name,error:e}))},"handleError"),JFe=o(async function(e={querySelector:".mermaid"}){try{await jPt(e)}catch(t){if(fP(t)&&Z.error(t.str),xd.parseError&&xd.parseError(t),!e.suppressErrors)throw Z.error("Use the suppressErrors option to suppress these errors"),t}},"run"),jPt=o(async function({postRenderCallback:e,querySelector:t,nodes:r}={querySelector:".mermaid"}){let n=Pp.getConfig();Z.debug(`${e?"":"No "}Callback function found`);let i;if(r)i=r;else if(t)i=document.querySelectorAll(t);else throw new Error("Nodes and querySelector are both undefined");Z.debug(`Found ${i.length} diagrams`),n?.startOnLoad!==void 0&&(Z.debug("Start On Load: "+n?.startOnLoad),Pp.updateSiteConfig({startOnLoad:n?.startOnLoad}));let a=new Zt.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed),s,l=[];for(let u of Array.from(i)){Z.info("Rendering diagram: "+u.id);if(u.getAttribute("data-processed"))continue;u.setAttribute("data-processed","true");let h=`mermaid-${a.next()}`;s=u.innerHTML,s=mS(Zt.entityDecode(s)).trim().replace(//gi,"
    ");let d=Zt.detectInit(s);d&&Z.debug("Detected early reinit: ",d);try{let{svg:f,bindFunctions:p}=await nze(h,s,u);u.innerHTML=f,e&&await e(h),p&&p(u)}catch(f){YPt(f,l,xd.parseError)}}if(l.length>0)throw l[0]},"runThrowsErrors"),eze=o(function(e){Pp.initialize(e)},"initialize"),XPt=o(async function(e,t,r){Z.warn("mermaid.init is deprecated. Please use run instead."),e&&eze(e);let n={postRenderCallback:r,querySelector:".mermaid"};typeof t=="string"?n.querySelector=t:t&&(t instanceof HTMLElement?n.nodes=[t]:n.nodes=t),await JFe(n)},"init"),KPt=o(async(e,{lazyLoad:t=!0}={})=>{Ax(),sb(...e),t===!1&&await bFe()},"registerExternalDiagrams"),tze=o(function(){if(xd.startOnLoad){let{startOnLoad:e}=Pp.getConfig();e&&xd.run().catch(t=>Z.error("Mermaid failed to initialize",t))}},"contentLoaded");if(typeof document<"u"){window.addEventListener("load",tze,!1)}var ZPt=o(function(e){xd.parseError=e},"setParseErrorHandler"),AD=[],PX=!1,rze=o(async()=>{if(!PX){for(PX=!0;AD.length>0;){let e=AD.shift();if(e)try{await e()}catch(t){Z.error("Error executing queue",t)}}PX=!1}},"executeQueue"),QPt=o(async(e,t)=>new Promise((r,n)=>{let i=o(()=>new Promise((a,s)=>{Pp.parse(e,t).then(l=>{a(l),r(l)},l=>{Z.error("Error parsing",l),xd.parseError?.(l),s(l),n(l)})}),"performCall");AD.push(i),rze().catch(n)}),"parse"),nze=o((e,t,r)=>new Promise((n,i)=>{let a=o(()=>new Promise((s,l)=>{Pp.render(e,t,r).then(u=>{s(u),n(u)},u=>{Z.error("Error parsing",u),xd.parseError?.(u),l(u),i(u)})}),"performCall");AD.push(a),rze().catch(i)}),"render"),JPt=o(()=>Object.keys(oh).map(e=>({id:e})),"getRegisteredDiagramsMetadata"),xd={startOnLoad:!0,mermaidAPI:Pp,parse:QPt,render:nze,init:XPt,run:JFe,registerExternalDiagrams:KPt,registerLayoutLoaders:YF,initialize:eze,parseError:void 0,contentLoaded:tze,setParseErrorHandler:ZPt,detectType:ny,registerIconPacks:ty,getRegisteredDiagramsMetadata:JPt},eOt=xd;return cze(tOt);})(); +/*! Bundled license information: + +lodash-es/lodash.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) +*/ +/*! Check if previously processed */ +/*! + * Wait for document loaded before starting the execution + */ +/*! Bundled license information: + +dompurify/dist/purify.es.mjs: + (*! @license DOMPurify 3.4.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.0/LICENSE *) + +js-yaml/dist/js-yaml.mjs: + (*! js-yaml 4.1.1 https://github.com/nodeca/js-yaml @license MIT *) + +lodash-es/lodash.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" --repo lodash/lodash#4.18.1 -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) + +cytoscape/dist/cytoscape.esm.mjs: + (*! + Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable + Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) + Licensed under The MIT License (http://opensource.org/licenses/MIT) + *) + (*! + Event object based on jQuery events, MIT license + + https://jquery.org/license/ + https://tldrlegal.com/license/mit-license + https://github.com/jquery/jquery/blob/master/src/event.js + *) + (*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License *) + (*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License *) +*/ +globalThis["mermaid"] = globalThis.__esbuild_esm_mermaid_nm["mermaid"].default; diff --git a/app/src/Tests/ArticleCatalogTests.fs b/app/src/Tests/ArticleCatalogTests.fs index c498e36..bc87cd0 100644 --- a/app/src/Tests/ArticleCatalogTests.fs +++ b/app/src/Tests/ArticleCatalogTests.fs @@ -59,7 +59,15 @@ let articleCatalogTests = "Cloudflare Tunnel" "Seq" "Snowplow" - "zonal" ] do + "zonal" + "Meier Made Platform" + "platform-identity/" + "application/" + "privateClusterConfig" + "fn::open::pulumi-stacks" + "new k8s.apps.v1.Deployment" + "mermaid.11.16.0.min.js" + "accTitle: Meier Made platform system context" ] do Expect.stringContains infrastructure topic $"Expected infrastructure content for {topic}" for obsoleteTopic in [ "Raspberry Pi"; "Penpot"; "Amazon Web Services" ] do diff --git a/e2e/tests/routes.spec.ts b/e2e/tests/routes.spec.ts index c434423..0de5a18 100644 --- a/e2e/tests/routes.spec.ts +++ b/e2e/tests/routes.spec.ts @@ -51,6 +51,7 @@ test('development environment article presents the current setup', async ({ page }) test('article search and source-controlled detail content are deterministic', async ({ page }) => { + await page.addInitScript(() => localStorage.setItem('theme', 'light')) await page.goto('/articles?search=semantic', { waitUntil: 'domcontentloaded' }) await expect(page.getByRole('heading', { name: 'F# Semantic Kernel', exact: true })).toBeVisible() await expect(page.getByRole('link', { name: 'Clear search' })).toBeVisible() @@ -60,10 +61,27 @@ test('article search and source-controlled detail content are deterministic', as await expect(page.getByRole('heading', { name: 'Personal Infrastructure', exact: true }).first()).toBeVisible() await expect(page.getByText('DevOps', { exact: true }).first()).toBeVisible() - await expect(page.getByRole('heading', { name: 'The platform at a glance', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'System context', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'Repository layout', exact: true })).toBeVisible() await expect(page.getByRole('heading', { name: 'Observability and analytics', exact: true })).toBeVisible() await expect(page.getByText('Seq', { exact: true }).first()).toBeVisible() await expect(page.getByText('Snowplow', { exact: true }).first()).toBeVisible() + + const diagram = page.locator('[data-system-context]') + await expect(diagram.locator('svg')).toBeVisible() + await expect(diagram.locator('svg title')).toHaveText('Meier Made platform system context') + await expect(diagram.locator('svg desc')).toContainText('GitHub Actions, Pulumi Cloud, Google Cloud, Cloudflare, and identity providers') + + const lightDiagram = await diagram.locator('svg').innerHTML() + await page.getByRole('button', { name: 'Choose theme' }).click() + await page.getByRole('button', { name: 'Dark' }).click() + await expect(page.locator('html')).toHaveClass(/dark/) + await expect.poll(async () => { + const svg = diagram.locator('svg') + return await svg.getAttribute('aria-roledescription') !== 'error' && await svg.innerHTML() !== lightDiagram + }).toBe(true) + await expect(diagram.locator('svg title')).toHaveText('Meier Made platform system context') + await expect(page.getByText('Raspberry Pi', { exact: false })).toHaveCount(0) await expect(page.getByText('Penpot', { exact: false })).toHaveCount(0) }) @@ -163,5 +181,11 @@ test('articles remain usable at a mobile viewport', async ({ page }) => { await page.goto(article.path, { waitUntil: 'domcontentloaded' }) await expect(page.getByRole('heading', { name: article.title, exact: true })).toBeVisible() expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) + + if (article.path === '/articles/personal-infrastructure') { + const diagram = page.locator('[data-system-context]') + await expect(diagram.locator('svg')).toBeVisible() + expect(await diagram.evaluate(element => element.scrollWidth > element.clientWidth)).toBe(true) + } } }) From eaf94bddbbc3fea2663d16570029bf7b0cf36d05 Mon Sep 17 00:00:00 2001 From: Andy Meier Date: Tue, 11 Aug 2026 13:30:38 -0400 Subject: [PATCH 7/8] Orient infrastructure diagram vertically --- app/src/App/input.css | 2 +- .../App/src/Articles/Posts/PersonalInfrastructure.fs | 10 ++++++++-- app/src/Tests/ArticleCatalogTests.fs | 1 + e2e/tests/routes.spec.ts | 4 ++++ 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/App/input.css b/app/src/App/input.css index c8ee887..6e9fa57 100644 --- a/app/src/App/input.css +++ b/app/src/App/input.css @@ -15,7 +15,7 @@ } .article-mermaid svg { - min-width: 52rem; + min-width: 40rem; max-width: none; height: auto; } diff --git a/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs b/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs index ee7923e..855ab74 100644 --- a/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs +++ b/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs @@ -44,7 +44,7 @@ let private link href label = a { } let private systemContextDiagram = - """flowchart LR + """flowchart TB accTitle: Meier Made platform system context accDescr: The developer and product users interact with the Meier Made Platform through GitHub Actions, Pulumi Cloud, Google Cloud, Cloudflare, and identity providers. @@ -70,11 +70,17 @@ let private systemContextDiagram = let private systemContext = figure { _class - "not-prose my-8 max-w-full overflow-x-auto rounded-xl border border-gray-200 bg-white p-4 dark:border-gray-700 dark:bg-gray-800 sm:p-6" + "not-prose my-8 max-w-full overflow-x-auto rounded-xl border border-gray-200 bg-white p-4 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-emerald-600 dark:border-gray-700 dark:bg-gray-800 sm:p-6" _attr ("data-system-context", "true") + _attr ("tabindex", "0") _dataInit "renderMermaid($el)" + figcaption { + _class "mb-3 text-xs text-gray-500 dark:text-gray-400 md:hidden" + text "Scroll horizontally to see the complete diagram." + } + div { _class "mermaid article-mermaid" text systemContextDiagram diff --git a/app/src/Tests/ArticleCatalogTests.fs b/app/src/Tests/ArticleCatalogTests.fs index bc87cd0..66006bc 100644 --- a/app/src/Tests/ArticleCatalogTests.fs +++ b/app/src/Tests/ArticleCatalogTests.fs @@ -67,6 +67,7 @@ let articleCatalogTests = "fn::open::pulumi-stacks" "new k8s.apps.v1.Deployment" "mermaid.11.16.0.min.js" + "flowchart TB" "accTitle: Meier Made platform system context" ] do Expect.stringContains infrastructure topic $"Expected infrastructure content for {topic}" diff --git a/e2e/tests/routes.spec.ts b/e2e/tests/routes.spec.ts index 0de5a18..d4e11ab 100644 --- a/e2e/tests/routes.spec.ts +++ b/e2e/tests/routes.spec.ts @@ -72,6 +72,9 @@ test('article search and source-controlled detail content are deterministic', as await expect(diagram.locator('svg title')).toHaveText('Meier Made platform system context') await expect(diagram.locator('svg desc')).toContainText('GitHub Actions, Pulumi Cloud, Google Cloud, Cloudflare, and identity providers') + const [, , diagramWidth, diagramHeight] = (await diagram.locator('svg').getAttribute('viewBox'))!.split(' ').map(Number) + expect(diagramHeight).toBeGreaterThan(diagramWidth) + const lightDiagram = await diagram.locator('svg').innerHTML() await page.getByRole('button', { name: 'Choose theme' }).click() await page.getByRole('button', { name: 'Dark' }).click() @@ -185,6 +188,7 @@ test('articles remain usable at a mobile viewport', async ({ page }) => { if (article.path === '/articles/personal-infrastructure') { const diagram = page.locator('[data-system-context]') await expect(diagram.locator('svg')).toBeVisible() + await expect(diagram.getByText('Scroll horizontally to see the complete diagram.')).toBeVisible() expect(await diagram.evaluate(element => element.scrollWidth > element.clientWidth)).toBe(true) } } From 753bb84d503ca7a79fd1c80975a79697f5ff6456 Mon Sep 17 00:00:00 2001 From: Andy Meier Date: Wed, 12 Aug 2026 14:09:29 -0400 Subject: [PATCH 8/8] Refine personal infrastructure article and navigation --- app/src/App/input.css | 19 + .../Articles/Posts/PersonalInfrastructure.fs | 467 ++++++++++++------ app/src/App/src/Articles/Shared.fs | 7 + app/src/App/src/Common/View.fs | 14 +- app/src/App/src/Index/View.fs | 5 +- app/src/Tests/ArticleCatalogTests.fs | 109 +++- app/src/Tests/ViewTests.fs | 6 + e2e/tests/routes.spec.ts | 113 ++++- 8 files changed, 552 insertions(+), 188 deletions(-) diff --git a/app/src/App/input.css b/app/src/App/input.css index 6e9fa57..2f01734 100644 --- a/app/src/App/input.css +++ b/app/src/App/input.css @@ -4,6 +4,20 @@ @plugin "@tailwindcss/typography"; @custom-variant dark (&:where(.dark, .dark *)); +.article-scroll-progress { + display: none; +} + +#top-nav { + position: sticky; + top: 0; + z-index: 40; +} + +body:has([data-article-page]) .article-scroll-progress { + display: block; +} + /* Monospace fonts render larger at the same font-size, so scale code down to visually match surrounding body text. */ .prose code[class*="language-"] { @@ -20,6 +34,11 @@ height: auto; } +[data-container-view] .article-mermaid svg, +[data-deployment-view] .article-mermaid svg { + min-width: 56rem; +} + @media (min-width: 768px) { .article-mermaid svg { min-width: 0; diff --git a/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs b/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs index 855ab74..3063919 100644 --- a/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs +++ b/app/src/App/src/Articles/Posts/PersonalInfrastructure.fs @@ -11,8 +11,8 @@ open type Html let private metadata = { permalink = "personal-infrastructure" title = "Personal Infrastructure" - summary = "How I run a small GCP platform with GKE, Pulumi ESC, and Cloudflare" - cover = "https://assets.meiermade.com/andymeier/articles/shared/gradient-purple-4776537cdf89.webp" + summary = "How I run personal websites and agents with GCP, Kubernetes, Cloudflare, Pulumi, and GitHub" + cover = "https://assets.meiermade.com/andymeier/articles/personal-infrastructure/system-context-dec390cb7efb.webp" tags = [| "DevOps"; "Pulumi"; "GCP"; "Kubernetes"; "Cloudflare"; "TypeScript" |] createdAt = DateTimeOffset(2026, 8, 11, 0, 0, 0, TimeSpan.Zero) } @@ -22,13 +22,13 @@ let private heading id' label = h2 { text label } -let private paragraph value = p { text value } - -let private inlineCode value = code { - _class "language-none" - text value +let private subheading label = h3 { + _class "mt-8" + text label } +let private paragraph value = p { text value } + let private codeBlock language value = pre { _class $"language-{language}" @@ -45,96 +45,164 @@ let private link href label = a { let private systemContextDiagram = """flowchart TB - accTitle: Meier Made platform system context - accDescr: The developer and product users interact with the Meier Made Platform through GitHub Actions, Pulumi Cloud, Google Cloud, Cloudflare, and identity providers. + accTitle: Personal infrastructure system context + accDescr: The operator and visitors use personal applications supported by GitHub Actions, Pulumi Cloud, Google Cloud, Cloudflare, and Google Workspace. - operator["Developer and operator
    (Person)
    Builds and operates the platform"] - users["Product users and website visitors
    (People)
    Use hosted applications"] - platform["Meier Made Platform
    (Software system)
    Runs applications, data services, analytics, and operational tooling"]:::system + operator["Operator
    (Person)
    Builds and operates personal applications"] + visitors["Visitors
    (People)
    Use public personal applications"] + platform["Personal infrastructure
    (Software system)
    Runs public and private applications and behavioral analytics"]:::system github["GitHub Actions
    (External system)
    Tests, previews, and deploys reviewed changes"] - pulumi["Pulumi Cloud and ESC
    (External system)
    Stores state and composes credentials and configuration"] - gcp["Google Cloud
    (External system)
    Runs compute, networking, databases, messaging, and storage"] + pulumi["Pulumi Cloud and ESC
    (External system)
    Stores state and composes environments"] + gcp["Google Cloud
    (External system)
    Runs compute, storage, messaging, and analytics"] cloudflare["Cloudflare
    (External system)
    Provides DNS, edge policy, Access, and tunnels"] - identity["Auth0 and Google Workspace
    (External systems)
    Authenticate customers and administrators"] + workspace["Google Workspace
    (External system)
    Provides identity for protected applications"] operator -->|Commits and reviews changes| github - operator -->|Operates services| platform + operator -->|Operates applications through| cloudflare + visitors -->|Use public applications through| cloudflare github -->|Runs Pulumi programs| pulumi pulumi -->|Applies desired state| platform - users -->|Use applications through| cloudflare - cloudflare -->|Routes private-origin traffic| platform + cloudflare -->|Routes accepted requests| platform + cloudflare -->|Checks protected access with| workspace platform -->|Runs on| gcp - platform -->|Delegates identity to| identity classDef system fill:#059669,stroke:#047857,color:#ffffff,stroke-width:3px""" -let private systemContext = figure { +let private runtimeDiagram = + """flowchart TB + accTitle: Personal infrastructure runtime + accDescr: Cloudflare routes traffic through outbound cloudflared tunnels directly to andymeier.dev, Benji and Minnie, Seq, and Snowplow. Applications send OpenTelemetry logs and traces to Seq, while Snowplow processes behavioral events with Pub/Sub and BigQuery. + + visitors["Visitors
    (People)"] + operator["Operator
    (Person)"] + cloudflare["Cloudflare
    (External system)
    Applies DNS, edge, and Access policy"] + workspace["Google Workspace
    (External system)
    Confirms identity for protected applications"] + tunnel["Cloudflare connectors
    (Container: cloudflared)
    Create outbound-only origin tunnels"] + website["andymeier.dev
    (Container: Kubernetes Deployment)
    Serves the public personal website"]:::primary + agents["Benji and Minnie
    (Containers: Kubernetes StatefulSets)
    Run long-lived personal agents"]:::primary + seq[("Seq
    (Container: Kubernetes StatefulSet)
    Stores and queries logs and traces")] + assets[("Application assets
    (Container: Cloud Storage bucket)
    Stores immutable public files")] + snowplow["Snowplow analytics
    (Containers: Collector, Enricher, and Loader)
    Processes behavioral events"] + eventStreams[("Event streams
    (Container: Pub/Sub topics)
    Buffer good and bad events")] + warehouse[("Analytics warehouse
    (Container: BigQuery dataset)
    Stores validated events")] + + visitors -->|Use public applications| cloudflare + operator -->|Uses protected applications| cloudflare + cloudflare -->|Checks protected requests with| workspace + cloudflare -->|Routes application traffic| tunnel + cloudflare -->|Serves public assets from| assets + cloudflare -->|Routes event collection| snowplow + tunnel -->|Routes website traffic| website + tunnel -->|Routes agent traffic| agents + tunnel -->|Opens protected interface| seq + website -->|Exports OpenTelemetry| seq + agents -->|Exports OpenTelemetry| seq + website -->|References immutable files| assets + snowplow <-->|Consumes and publishes| eventStreams + snowplow -->|Loads validated events| warehouse + + classDef primary fill:#059669,stroke:#047857,color:#ffffff,stroke-width:3px""" + +let private deploymentDiagram = + """flowchart TB + accTitle: Personal infrastructure deployment + accDescr: GitHub Actions uses Pulumi Cloud and ESC to deploy andymeier.dev, Benji, and Minnie into Google Cloud. Cloudflare connectors, personal applications, Seq, and Snowplow run in a zonal GKE cluster supported by Artifact Registry, Secret Manager, Cloud Storage, Pub/Sub, BigQuery, Cloud Logging, and Cloud Monitoring. + + github["GitHub Actions
    (Deployment environment)"] + pulumi["Pulumi Cloud and ESC
    (Configuration and state)"] + cloudflare["Cloudflare edge
    (External network)"] + + subgraph gcp["Google Cloud"] + direction TB + registry[("Artifact Registry
    Immutable application images")] + + subgraph gke["Zonal GKE cluster"] + direction TB + runtime["GKE runtime
    Nodes and system components"] + connectors["Cloudflare connectors
    Kubernetes Deployments"] + website["andymeier.dev
    Kubernetes Deployment and Service"]:::primary + agents["Benji and Minnie
    Kubernetes StatefulSets and Services"]:::primary + seq["Seq
    Kubernetes StatefulSet and persistent disk"] + snowplow["Snowplow pipeline
    Collector, Enricher, and Loader Deployments"] + end + + secrets[("Secret Manager
    Long-lived application secrets")] + storage[("Cloud Storage
    Immutable application assets")] + pubsub[("Pub/Sub
    Analytics topics and subscriptions")] + bigquery[("BigQuery
    Analytics dataset")] + operations[("Cloud Logging and Monitoring
    System logs, metrics, dashboards, and alerts")] + + registry -->|Supplies website image| website + registry -->|Supplies agent image| agents + connectors -->|Routes website traffic| website + connectors -->|Routes agent traffic| agents + connectors -->|Opens protected interface| seq + connectors -->|Routes event collection| snowplow + website -->|References assets| storage + website -->|Exports logs and traces| seq + agents -->|Reads authorized values| secrets + agents -->|Exports logs and traces| seq + runtime -->|Exports system telemetry| operations + snowplow -->|Streams events through| pubsub + snowplow -->|Loads validated events| bigquery + end + + github -->|Exchanges OIDC identity and runs updates| pulumi + github -->|Publishes images| registry + pulumi -->|Applies desired state| gcp + pulumi -->|Configures routes and policies| cloudflare + cloudflare <-->|Private-origin tunnels| connectors + + style gcp fill:transparent,stroke:#047857,stroke-width:3px + style gke fill:transparent,stroke:#059669,stroke-width:2px + classDef primary fill:#059669,stroke:#047857,color:#ffffff,stroke-width:3px""" + +let private architectureDiagram dataAttribute diagram = figure { _class "not-prose my-8 max-w-full overflow-x-auto rounded-xl border border-gray-200 bg-white p-4 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-emerald-600 dark:border-gray-700 dark:bg-gray-800 sm:p-6" - _attr ("data-system-context", "true") + _attr (dataAttribute, "true") _attr ("tabindex", "0") _dataInit "renderMermaid($el)" figcaption { - _class "mb-3 text-xs text-gray-500 dark:text-gray-400 md:hidden" + _class "sticky left-0 mb-3 w-fit text-xs text-gray-500 dark:text-gray-400 md:hidden" text "Scroll horizontally to see the complete diagram." } div { _class "mermaid article-mermaid" - text systemContextDiagram + text diagram } } -let private sharedRepositoryTree = - """meiermade/ -├── platform-identity/ -│ ├── index.ts -│ └── src/gcp/ -│ ├── project.ts -│ ├── serviceAccount.ts -│ ├── grant.ts -│ └── workloadIdentityPool.ts -│ -├── platform-infrastructure/ -│ ├── index.ts -│ └── src/ -│ ├── auth0/ -│ ├── cloudflare/ -│ ├── gcp/ -│ └── k8s/ -│ -└── environments/ - ├── index.ts - └── environments/ - ├── platform-identity/ - ├── platform-infrastructure/ - ├── shared/ - └── /""" - -let private applicationRepositoryTree = - """application/ -├── app/ -│ ├── src/App/ -│ ├── src/Build/ -│ ├── src/Tests/ -│ ├── Dockerfile -│ └── fake.sh -├── pulumi/ -│ ├── index.ts -│ └── src/ -│ ├── cloudflare/ -│ ├── docker/ -│ └── k8s/ -├── e2e/ -│ └── tests/ -└── .github/workflows/ - ├── preview.yml - └── deploy.yml""" +let private systemContext = + architectureDiagram "data-system-context" systemContextDiagram + +let private runtimeView = architectureDiagram "data-container-view" runtimeDiagram + +let private deploymentView = + architectureDiagram "data-deployment-view" deploymentDiagram + +let private organizationTree = + """personal-cloud/ +├── identity/ +│ ├── project.ts +│ ├── serviceAccounts.ts +│ └── oidc.ts +├── infrastructure/ +│ ├── gcp/ +│ ├── cloudflare/ +│ └── kubernetes/ +├── environments/ +│ ├── shared.yaml +│ └── .yaml +└── applications/ + ├── andymeier/ + └── /""" let private gkeExample = - """const cluster = new gcp.container.Cluster('platform', { + """const cluster = new gcp.container.Cluster('personal', { location: `${region}-b`, network: network.id, subnetwork: subnet.id, @@ -153,7 +221,7 @@ let private gkeExample = }, }) -new gcp.container.NodePool('platform-primary', { +new gcp.container.NodePool('personal-primary', { cluster: cluster.name, autoscaling: { minNodeCount: 1, maxNodeCount: 4 }, management: { autoRepair: true, autoUpgrade: true }, @@ -186,45 +254,69 @@ let private applicationDeploymentExample = }, }, }, +}) + +new k8s.core.v1.Service('app', { + metadata: { namespace: config.k8s.namespace }, + spec: { type: 'ClusterIP', selector: labels, ports: [{ port: 80 }] }, })""" let private escExample = """values: - stacks: - fn::open::pulumi-stacks: - stacks: - identity: - stack: platform-identity/prod - infrastructure: - stack: platform-infrastructure/prod - gcpLogin: fn::open::gcp-login: - project: ${stacks.identity.platformProjectNumber} + project: oidc: - workloadPoolId: ${stacks.identity.workloadIdentityPoolId} + workloadPoolId: providerId: pulumi - serviceAccount: ${stacks.identity.applicationDeployerEmail} + serviceAccount: + subjectAttributes: + - currentEnvironment.name + + secrets: + fn::open::gcp-secrets: + login: ${gcpLogin} + access: + applicationApiKey: + name: environmentVariables: GOOGLE_OAUTH_ACCESS_TOKEN: ${gcpLogin.accessToken} - files: - KUBECONFIG: ${stacks.infrastructure.kubeconfig} - pulumiConfig: - docker:registryUri: ${stacks.infrastructure.registryUri} - k8s:namespace: ${stacks.infrastructure.applicationNamespace} - seq:endpoint: ${stacks.infrastructure.seqIngestEndpoint}""" + application:apiKey: ${secrets.applicationApiKey}""" + +let private githubWorkflowExample = + """permissions: + contents: read + id-token: write + +steps: + - uses: actions/checkout@v7 + - name: Authenticate with Pulumi + uses: pulumi/auth-actions@v2 + with: + organization: + requested-token-type: + - name: Preview or update + uses: pulumi/actions@v7 + with: + work-dir: ./pulumi + stack-name: prod + command: """ let private content = [ p { text - "My personal infrastructure is a small cloud platform for the applications, data systems, automation, and internal tools I operate through Meier Made. Google Cloud provides managed compute and data services, Kubernetes is the common workload layer, Cloudflare is the edge, and Pulumi keeps the system reviewable as code." + "I run my public websites, private utilities, and long-lived AI agents on one small cloud platform. Google Cloud provides the foundation, Kubernetes gives each workload a common deployment API, Cloudflare handles traffic and access, Pulumi defines the infrastructure, and GitHub Actions delivers changes. andymeier.dev, Benji, and Minnie are the current workloads." } p { text - "The goal is one foundation that I can understand and reuse without rebuilding identity, networking, databases, observability, and deployment automation for every product. It is intentionally modest in scale, but it supports real production workloads and a repeatable path from a pull request to a running application." + "I operate it with the same discipline I bring to client infrastructure: changes are defined in code, previewed, and reviewed; identities are narrowly scoped; secrets stay out of repositories; and deployments are observable and reproducible. Because I own the cost and blast radius, it also serves as a proving ground for new tools and architectural patterns before I apply what I learn to client work." + } + p { + text + "I favor a small, coherent set of tools with strong APIs. In an agent-driven workflow, that lets me and my agents build, inspect, and diagnose the same systems programmatically. Every client environment has its own scale, risk, compliance, and operational requirements, so experience here informs those decisions rather than becoming a default blueprint." } nav { _ariaLabel "Table of contents" @@ -238,13 +330,15 @@ let private content = _class "list-disc" for id', label in - [ "context", "System context" - "repositories", "Repository layout" - "foundation", "Identity and GCP foundation" - "applications", "Application repositories" - "services", "Edge and data services" - "observability", "Observability and analytics" - "environments", "Environments and delivery" + [ "architecture", "Architecture at a glance" + "organization", "How it is organized" + "applications", "Personal applications and agents" + "gcp", "Why Google Cloud" + "kubernetes", "Kubernetes without platform engineering" + "cloudflare", "Cloudflare for networking and access" + "observability", "Observability with Seq" + "pulumi", "Pulumi and environments" + "github", "GitHub for delivery" "tradeoffs", "Intentional tradeoffs" ] do li { a { @@ -254,117 +348,178 @@ let private content = } } } - heading "context" "System context" + heading "architecture" "Architecture at a glance" + subheading "System context" paragraph - "At the widest level, the Meier Made Platform is one software system. People reach its applications through Cloudflare, reviewed changes arrive through GitHub and Pulumi, its workloads run on Google Cloud, and identity is delegated to Google Workspace or Auth0. The diagram deliberately omits internal repositories and services; those belong at the next level of detail." + "Cloudflare fronts every public and protected application, while GitHub Actions and Pulumi deliver reviewed changes to Google Cloud. Google Workspace provides my identity for protected applications." systemContext + subheading "Runtime" + paragraph + "andymeier.dev serves the public website, while Benji and Minnie run as long-lived AI agents. Cloudflare connectors route accepted requests to those workloads, Seq, or Snowplow. Applications send telemetry to Seq; managed storage and analytics stay outside the request path." + runtimeView + subheading "Deployment" paragraph - "Cloudflare Access protects administrative services with Google Workspace identity, while Auth0 handles customer-facing authentication. Pulumi Cloud stores stack state and Pulumi ESC composes deployment configuration. GitHub Actions is the normal execution environment for previews and updates, using short-lived credentials rather than a permanent Google Cloud key." - heading "repositories" "Repository layout" + "Application images live in Artifact Registry. andymeier.dev, Benji, Minnie, Cloudflare connectors, Seq, and Snowplow run in one zonal GKE cluster. Secret Manager, Cloud Storage, Pub/Sub, BigQuery, Cloud Logging, and Cloud Monitoring remain managed Google Cloud services." + deploymentView + heading "organization" "How it is organized" paragraph - "The shared platform is split by ownership and deployment order. Identity must exist before shared infrastructure can use it, and both must exist before environments can expose their outputs to applications. Pulumi recommends this kind of layered structure when ownership and blast radius justify separating stacks." - codeBlock "none" sharedRepositoryTree + "I organize the infrastructure in dependency order. Identity comes first, followed by shared infrastructure, application environments, and application-owned deployments." + codeBlock "none" organizationTree + paragraph + "Each resource has one owner. The infrastructure layer owns cluster-wide capabilities; application repositories own their workloads, routes, and access policies. Environments connect the two without copying identifiers or credentials between repositories." + paragraph + "Namespaces are the runtime boundary. Each application gets its own namespace and deployment identity, and Kubernetes RBAC limits the deployer to that namespace. Workload Identity gives a Pod a narrowly scoped Google identity only when it needs a managed service." + heading "applications" "Personal applications and agents" + paragraph + "andymeier.dev is a stateless web application behind a private Service. Benji and Minnie are my two long-running AI agents. I use them for coding, scheduled routines, email and messaging, task follow-up, and other recurring work. All three applications share deployment, identity, networking, and observability conventions." p { - inlineCode "platform-identity" - text " creates projects, service accounts, IAM grants, Google groups, and workload-identity bindings. " - inlineCode "platform-infrastructure" - text " owns the VPC, GKE, data services, Cloudflare, Auth0, namespaces, Seq, and Snowplow. " - inlineCode "environments" + text + "Benji and Minnie share one runtime but deploy as separate single-replica StatefulSets. Each has independent configuration, identity, persistent storage, hostname, Cloudflare policy, and " + + link "https://pi.dev/" "Pi coding agent" text - " defines the Pulumi ESC environments that join their outputs and secrets into configuration applications can consume." + " sessions. Their runtime handles webhooks, scheduled work, and longer task sessions. Each agent can evolve or restart without sharing credentials or session state." } paragraph - "Each resource has one owner. Shared capabilities stay in the platform repositories; a product-specific route, image, deployment, or identity client stays with that product. This keeps routine application changes out of the larger shared-infrastructure preview." - heading "foundation" "Identity and GCP foundation" + "The agents need persistent processes, private endpoints, background work, workload identity, durable volumes, and traceable task execution. Kubernetes gives them and the stateless website one operational model without forcing them into the same architecture." + heading "gcp" "Why Google Cloud" + paragraph + "Google Cloud fits this environment because Google Workspace, IAM, GKE, Artifact Registry, Secret Manager, Cloud Logging, and Cloud Monitoring share a coherent identity and operations model. Its APIs and command-line tools are consistent, and Google Kubernetes Engine (GKE) is the managed Kubernetes service I know best and prefer." p { - text "The identity layer follows the " - - link - "https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy" - "Google Cloud resource hierarchy" - text - ". Projects separate platform, product, and data permissions. Deployment service accounts are distinct from runtime accounts, and the GKE node identity is not reused by applications. Pulumi ESC obtains short-lived deployment credentials through OpenID Connect, while " + "The economics of a small zonal cluster are unusually good. Google charges a cluster management fee, but the " - link - "https://cloud.google.com/kubernetes-engine/docs/concepts/workload-identity" - "Workload Identity Federation for GKE" + link "https://cloud.google.com/kubernetes-engine/pricing" "GKE free tier" - text " gives pods narrowly scoped Google identities without mounted keys." + text + " provides $74.40 in monthly credits per billing account, offsetting the management fee for one zonal Standard or Autopilot cluster. Worker nodes, disks, networking, and usage-based services remain billable, but the managed control plane adds no incremental fee within that allowance." } paragraph - "The shared infrastructure uses a custom VPC, private worker nodes, separate pod and service address ranges, and Cloud NAT for controlled outbound access. The important GKE settings are visible in this abridged version of the current Pulumi program:" + "I use a zonal Standard cluster to control node pools, pack small workloads efficiently, and avoid paying for multi-zone availability I do not need. Auto-repair, auto-upgrade, a regular release channel, and reproducible configuration handle much of the maintenance." + paragraph "This TypeScript is an abridged version of my zonal GKE configuration:" codeBlock "typescript" gkeExample + heading "kubernetes" "Kubernetes without platform engineering" paragraph - "Google Kubernetes Engine (GKE) Standard mode provides explicit node-pool and workload control. The primary pool scales with demand, while a secondary pool can scale down to zero. Artifact Registry holds immutable application images close to the cluster, and namespaces plus Kubernetes RBAC limit each deployer to its assigned product or data boundary." - paragraph - "The platform is intentionally zonal. GKE and Cloud SQL favor one zone, and Redis uses the BASIC tier. A zone-level incident can interrupt service, but this keeps the continuous cost appropriate for the workloads. Backups, point-in-time recovery, health probes, deletion protection, and reproducible Pulumi programs address the failure modes that justify their cost today." - heading "applications" "Application repositories" + "I deliberately use a small Kubernetes vocabulary: Namespaces, Deployments, and Services, with Jobs and ConfigMaps only when a workload requires them. Deployments create and replace Pods, Services give them a stable private address, and Namespaces provide ownership and authorization boundaries." p { + text "That small subset still provides a useful " + link "https://kubernetes.io/docs/concepts/overview/kubernetes-api/" "programmatic API" + text - "Application code and its final infrastructure live together because the same owner changes both. A typical repository has this shape:" + ". A Deployment declares its image, replicas, probes, resources, and security context. Kubernetes reconciles the workload, restarts failed containers, and waits for readiness during a rollout. That gives me repeatable deployments without custom process managers or remote-shell scripts." } - codeBlock "none" applicationRepositoryTree - paragraph - "The application directory contains source, tests, the build, and its container definition. The Pulumi project builds and publishes that container, deploys it into the namespace supplied by the platform, and owns its Cloudflare hostname and product-specific resources. Playwright tests and GitHub workflows provide pre- and post-deployment evidence." paragraph - "There is no universal application chart. Each stack declares the resources its workload actually needs, while following shared security and operational conventions. A representative deployment looks like this:" + "The same tools list workloads, inspect events, stream logs, restart rollouts, and forward private ports for every application. GKE sends logs to Cloud Logging and system metrics to Cloud Monitoring by default. Keeping the Kubernetes vocabulary small keeps its complexity bounded." + paragraph "This is an abridged application Deployment and Service:" codeBlock "typescript" applicationDeploymentExample - paragraph - "Production deployments also drop unnecessary Linux capabilities and may run an application-specific cloudflared connector beside the app. The essential contract is smaller: a reviewed image, a namespace boundary, realistic resource limits, and health endpoints Kubernetes can use during rollout." - heading "services" "Edge and data services" + heading "cloudflare" "Cloudflare for networking and access" p { - text "A " - link "https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/" "Cloudflare Tunnel" + text "All application origins stay on the private network. A " + + link + "https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/" + "Cloudflare Tunnel" text - " is initiated outbound from the cluster, so application origins do not require public IP addresses or inbound firewall openings. Public DNS points to tunnel hostnames, and Cloudflare applies edge and Access policy before sending traffic to ClusterIP services. Platform services can share a connector; an application can own one when that gives it a cleaner lifecycle." + " connector runs in Kubernetes and creates an outbound-only connection to Cloudflare. The cluster does not need a public application load balancer, and its Services can remain private ClusterIP addresses. Public traffic reaches an accepted hostname at Cloudflare and is forwarded through the tunnel to the appropriate Service." } p { - text "The durable transactional store is private " - link "https://cloud.google.com/sql/docs/postgres" "Cloud SQL for PostgreSQL" + text "For a private application, " + + link + "https://developers.cloudflare.com/cloudflare-one/setup/secure-private-apps/private-web-app/" + "Cloudflare Access" text - ". A bootstrap job creates logical databases and restricted roles rather than distributing one superuser credential. Automated backups, point-in-time recovery, encrypted connections, and deletion protection cover durable state. Private Memorystore provides recoverable cache and short-lived state." + " applies an identity policy before the request ever reaches the origin. I can define a policy for each hostname and use Google Workspace as the identity provider. A public website can remain public, while an administration page or experimental utility can require my account or an approved group. Both use the same tunnel and private network. Cloudflare exposes APIs for DNS, tunnel routes, and Access policies, so I manage those controls through Pulumi rather than configuring them only in the dashboard." } paragraph - "Secret Manager holds runtime and integration secrets. Pulumi owns the secret containers and IAM policy, while values are populated separately. Cloud Storage provides private platform buckets and a public asset bucket whose prefix-scoped IAM lets each publisher manage only its own immutable files." - heading "observability" "Observability and analytics" + "For browser-based applications, this gives me per-application access without exposing origins or granting a device network-wide access." + heading "observability" "Observability with Seq" + p { + text "I use " + link "https://datalust.co/docs/getting-started-with-docker" "Seq" + + text + " for application observability because it is equally easy to run locally in Docker or deploy as a StatefulSet in Kubernetes. Applications export structured logs and traces through OpenTelemetry, so the instrumentation does not depend on a proprietary logging client. The same configuration sends local development telemetry to a local Seq instance and production telemetry to the private service in the cluster." + } p { - strong { text "Seq" } + text + "Seq puts correlated logs and traces in one event stream. I can move from an error to its surrounding events and trace, then use the " + + link "https://datalust.co/docs/the-seq-query-language" "query language" + + text " in the UI or the " + link "https://datalust.co/docs/using-the-http-api" "HTTP API" text - " is the shared destination for structured logs and traces. Applications receive its internal ingestion endpoint through their environment, while the interface is routed through Cloudflare Access. Structured properties make Seq the normal starting point for production diagnosis; Kubernetes pod logs remain available for lower-level failures." + " from an agent. Benji, Minnie, and coding agents can retrieve recent errors, filter telemetry, and follow traces without reproducing a browser workflow. Cloudflare Access protects the interface." } p { - strong { text "Snowplow" } + text + "Benji and Minnie each have a separate Google Workspace account and Kubernetes identity. Their Kubernetes identities can inspect workloads, events, and logs without changing them. Because a Workspace account is also a " + + link "https://cloud.google.com/iam/docs/principal-identifiers" "Google Cloud IAM principal" text - " provides behavioral analytics. Collectors in GKE publish good and bad events to Pub/Sub, an enrichment workload adds campaign and referrer context, and the BigQuery loader writes validated events to the data project. Separate workload identities limit each component to the Pub/Sub or BigQuery operations it needs, and failed events follow explicit topics instead of disappearing." + ", I can grant narrowly scoped viewer roles for relevant Google Cloud APIs when an agent needs cloud-level context. Seq covers application behavior and correlated traces; Cloud Logging and Cloud Monitoring provide Kubernetes events, system logs, infrastructure metrics, and cluster context. Together, those APIs let an agent gather evidence without receiving deployment permissions." } - heading "environments" "Environments and delivery" + heading "pulumi" "Pulumi and environments" p { - text "Pulumi ESC is the configuration boundary between shared infrastructure and an application. The " - link "https://www.pulumi.com/docs/esc/providers/pulumi-stacks/" "pulumi-stacks provider" + text "I define infrastructure with " + link "https://www.pulumi.com/docs/iac/languages-sdks/javascript/" "Pulumi and TypeScript" text - " opens outputs at runtime, the GCP login provider exchanges OIDC identity for a short-lived token, and the environment maps only the required values into files, environment variables, and Pulumi configuration. An abridged application environment shows the complete flow:" + " to reuse policies and resource shapes with normal language and refactoring tools. Provider types and IntelliSense expose available properties while I write and review changes, and strong types provide useful evidence even when AI helps with discovery." + } + paragraph + "I keep resource modules small, ownership explicit, and abstractions limited. Pulumi calculates previews, records state, and applies only the reviewed difference." + p { + text + "Pulumi ESC is the environment boundary. An environment composes stack outputs, non-secret configuration, short-lived cloud credentials, and selected secrets into the exact values a deployment needs. The " + + link "https://www.pulumi.com/docs/esc/guides/pulumi-iac/" "GCP login provider" + + text + " exchanges OpenID Connect identity for a temporary Google Cloud token. Long-lived secrets stay in GCP Secret Manager, where I can rotate them independently and audit access." } - codeBlock "yaml" escExample paragraph - "The application pipeline does not need a copied registry address, cluster endpoint, kubeconfig, namespace, or Seq endpoint. It opens the environment and receives a coherent snapshot from the stacks that own those values. Secret Manager values use the same pattern and remain secret as they pass through ESC and Pulumi." + "For secret access, I create the secret container in GCP, grant a dedicated service account permission to read only the required secret, and allow a specific Pulumi environment to impersonate that account through OIDC. ESC then reads the current secret value when the environment opens. The application repository does not receive a service-account key, and one environment cannot automatically read another environment's secrets. An abridged ESC environment captures that trust chain:" + codeBlock "yaml" escExample + heading "github" "GitHub for delivery" paragraph - "Pull requests run tests and a Pulumi preview. After merge, GitHub Actions authenticates to Pulumi, opens the ESC environment, builds the reviewed image, and performs the update. Kubernetes readiness gates the rollout, and product repositories can run browser or API checks against the deployed service. I use local previews for review, but the main-branch workflow—not a workstation running pulumi up—is the normal production path." + "Each application has a GitHub repository. Pull requests collect code and infrastructure changes, run tests, and produce a Pulumi preview. Merging publishes an immutable image, applies the reviewed update, waits for Kubernetes readiness, and runs browser or API checks." + p { + text "GitHub Actions requests an OIDC token, and " + + link "https://www.pulumi.com/docs/iac/guides/continuous-delivery/github-actions/" "Pulumi exchanges it" + + text + " for short-lived, scoped access. ESC obtains a separate temporary Google Cloud identity, so trust follows the repository and environment rather than stored access tokens or cloud keys." + } + paragraph "The core deployment workflow is small:" + codeBlock "yaml" githubWorkflowExample + p { + text "Locally, the " + link "https://cli.github.com/manual/" "GitHub CLI" + + text + " makes the same workflow practical from the terminal. I use it to create and inspect pull requests, read check results, review diffs, and manage branches. The GitHub API also gives agents the same repository, pull-request, and check data without requiring a browser. The pull request—not a workstation running an unreviewed production update—is the normal unit of change." + } heading "tradeoffs" "Intentional tradeoffs" paragraph - "This platform optimizes for one operator running several real services, not for zero downtime through every regional failure. A shared zonal cluster and database instance have more common blast radius than independent regional platforms. Cloudflare, Google Cloud, Pulumi, and Kubernetes are also deliberate dependencies rather than interchangeable abstractions." + "A zonal GKE cluster is not the smallest possible way to host one website. A managed static host or one virtual machine would use fewer concepts. The calculation changes when several personal applications reuse the same cluster, private ingress, deployment workflow, observability, and identity model. Adding another application becomes a namespace, a Deployment, a Service, a route, and a workflow rather than another hand-configured server." + paragraph + "The zonal design also accepts that a zone-level incident can interrupt every application. Regional control planes and multi-zone node pools would improve availability but increase the baseline compute cost and operational surface. For personal applications, I prefer health probes, reproducible deployments, immutable images, and managed data services over paying continuously for regional redundancy." + paragraph + "Cloudflare, Google Cloud, Pulumi, Kubernetes, and GitHub are deliberate dependencies. Replacing any one of them would require real work. I accept that coupling because each product removes more operational burden than it adds, and because the boundaries between them are still visible: containers, Kubernetes resources, DNS routes, OIDC identities, and TypeScript programs." paragraph - "I accept those constraints because the alternative would materially increase baseline cost and operational work. Durable data receives stronger protection; recoverable services are recreated from code. The result is enough infrastructure to add an application with identity, private data access, logs, analytics, and an edge route, while remaining small enough for one person to understand." + "The result is a small, coherent platform that keeps personal applications inexpensive, private by default, observable, and programmatically deployable. A narrow Kubernetes vocabulary and short-lived identities keep it manageable for one operator." script { _src (Asset.fingerprinted "/scripts/mermaid.11.16.0.min.js") } script { js - "window.renderMermaid=async function(el){const nodes=el?.matches?.('.mermaid')?[el]:Array.from(el?.querySelectorAll?.('.mermaid')??[]);if(!window.mermaid||nodes.length===0)return;for(const node of nodes){node.dataset.mermaidSource=node.dataset.mermaidSource||node.textContent.trim();node.textContent=node.dataset.mermaidSource;node.removeAttribute('data-processed')}window.mermaid.initialize({startOnLoad:false,theme:document.documentElement.classList.contains('dark')?'dark':'neutral',securityLevel:'strict'});await window.mermaid.run({nodes})};void window.renderMermaid(document)" + "window.renderMermaid=async function(el){const nodes=el?.matches?.('.mermaid')?[el]:Array.from(el?.querySelectorAll?.('.mermaid')??[]);if(!window.mermaid||nodes.length===0)return;for(const node of nodes){node.dataset.mermaidSource=node.dataset.mermaidSource||node.textContent.trim();node.textContent=node.dataset.mermaidSource;node.removeAttribute('data-processed')}window.mermaid.initialize({startOnLoad:false,theme:document.documentElement.classList.contains('dark')?'dark':'neutral',securityLevel:'strict'});await window.mermaid.run({nodes});for(const node of nodes){const scroller=node.parentElement;if(scroller&&scroller.scrollWidth>scroller.clientWidth&&scroller.scrollLeft===0)scroller.scrollLeft=(scroller.scrollWidth-scroller.clientWidth)/2}};void window.renderMermaid(document)" } ] let article = Article.create metadata (ArticlePage.primary metadata content) diff --git a/app/src/App/src/Articles/Shared.fs b/app/src/App/src/Articles/Shared.fs index 030caa1..1948eac 100644 --- a/app/src/App/src/Articles/Shared.fs +++ b/app/src/App/src/Articles/Shared.fs @@ -70,6 +70,8 @@ module ArticleCard = module ArticlePage = let primary (metadata: ArticleMetadata) (content: HtmlElement list) = let page = div { + _data ("article-page", "") + div { _class "bg-cover bg-no-repeat bg-center bg-blend-overlay bg-gray-800" @@ -114,6 +116,11 @@ module ArticlePage = script { _src (Asset.fingerprinted "/scripts/prism.1.29.0.js") } script { js "function highlightCode(el){if(el?.querySelectorAll)Prism.highlightAllUnder(el)}" } + + script { + js + "window.updateArticleProgress=window.updateArticleProgress||function(){var progress=document.getElementById('article-scroll-progress'),article=document.querySelector('[data-article-page] article');if(!progress||!article)return;var articleBottom=article.getBoundingClientRect().bottom+window.scrollY,maxScroll=Math.max(articleBottom-window.innerHeight,1),value=Math.min(Math.max(window.scrollY/maxScroll,0),1);progress.style.transform='scaleX('+value+')';progress.setAttribute('aria-valuenow',String(Math.round(value*100)))};window.scheduleArticleProgress=window.scheduleArticleProgress||function(){if(window.__articleProgressFrame)return;window.__articleProgressFrame=requestAnimationFrame(function(){window.__articleProgressFrame=0;window.updateArticleProgress()})};window.initializeArticleProgress=window.initializeArticleProgress||function(){if(!window.__articleProgressBound){window.__articleProgressBound=true;window.addEventListener('scroll',window.scheduleArticleProgress,{passive:true});window.addEventListener('resize',window.scheduleArticleProgress)}window.updateArticleProgress()};window.initializeArticleProgress()" + } } Page.primary page diff --git a/app/src/App/src/Common/View.fs b/app/src/App/src/Common/View.fs index f46ecad..4c86451 100644 --- a/app/src/App/src/Common/View.fs +++ b/app/src/App/src/Common/View.fs @@ -276,7 +276,8 @@ module TopNav = let primary = nav { _id "top-nav" - _class "relative bg-gray-100 py-2 px-4 border-b border-gray-300 dark:bg-gray-900 dark:border-gray-700" + _class + "relative h-14 bg-gray-100/80 py-1.5 px-4 border-b border-gray-300/80 backdrop-blur-md dark:bg-gray-900/80 dark:border-gray-700/80" _dataSignals "{theme: 'system'}" _dataInit "$theme = getInitialTheme(); applyTheme($theme)" div { @@ -291,6 +292,17 @@ module TopNav = themeToggle mobileDropdown } + div { + _id "article-scroll-progress" + _role "progressbar" + _ariaLabel "Article reading progress" + _attr ("aria-valuemin", "0") + _attr ("aria-valuemax", "100") + _attr ("aria-valuenow", "0") + _class + "article-scroll-progress pointer-events-none absolute inset-x-0 -bottom-px h-0.5 origin-left bg-emerald-600 dark:bg-emerald-400" + _style "transform:scaleX(0)" + } } module Page = diff --git a/app/src/App/src/Index/View.fs b/app/src/App/src/Index/View.fs index 0c2e128..fbcb964 100644 --- a/app/src/App/src/Index/View.fs +++ b/app/src/App/src/Index/View.fs @@ -11,12 +11,15 @@ open type Datastar let aboutMe = p { _class "mt-4 text-lg text-gray-600 dark:text-gray-400" - "Engineer working in finance, accounting, and capital markets." + text "I’m an engineer and the owner of " + a { _class "underline hover:text-emerald-600 dark:hover:text-emerald-400"; _href "https://meiermade.com"; text "Meier Made, LLC" } + text ". Originally from St. Louis, Missouri, I now live in New York City. The opinions shared here are my own." } let homePage (recentArticles:Article list) = let content = div { + _data ("home-page", "") _class "py-10 mx-auto max-w-5xl px-4" div { _class "grid gap-4 grid-cols-1 md:grid-cols-2" diff --git a/app/src/Tests/ArticleCatalogTests.fs b/app/src/Tests/ArticleCatalogTests.fs index 66006bc..491f7f9 100644 --- a/app/src/Tests/ArticleCatalogTests.fs +++ b/app/src/Tests/ArticleCatalogTests.fs @@ -54,27 +54,114 @@ let articleCatalogTests = Expect.stringContains semanticKernel "Semantic Kernel SDK" "Expected Semantic Kernel content" for topic in - [ "Google Kubernetes Engine" + [ "personal applications" + "andymeier.dev" + "Google Kubernetes Engine" + "Google Workspace" + "GKE free tier" + "$74.40" + "Namespaces, Deployments, and Services" + "Cloud Logging" + "Cloud Monitoring" + "Cloudflare Access" + "outbound-only" "Pulumi ESC" - "Cloudflare Tunnel" + "IntelliSense" + "Secret Manager" + "OpenID Connect" + "GitHub Actions" + "GitHub CLI" + "Benji" + "Minnie" + "StatefulSet" + "OpenTelemetry" "Seq" + "one event stream" + "HTTP API" "Snowplow" - "zonal" - "Meier Made Platform" - "platform-identity/" - "application/" + "Pub/Sub" + "BigQuery" "privateClusterConfig" - "fn::open::pulumi-stacks" + "fn::open::gcp-secrets" "new k8s.apps.v1.Deployment" "mermaid.11.16.0.min.js" "flowchart TB" - "accTitle: Meier Made platform system context" ] do + "accTitle: Personal infrastructure system context" + "accTitle: Personal infrastructure runtime" + "accTitle: Personal infrastructure deployment" + "Personal applications" + "strong APIs" + "agent-driven workflow" + "System context" + "Runtime" + "Deployment" + "same discipline I bring to client infrastructure" + "proving ground for new tools and architectural patterns" + "experience here informs those decisions" + "https://pi.dev/" + "https://assets.meiermade.com/andymeier/articles/personal-infrastructure/system-context-dec390cb7efb.webp" + "Google Workspace account" + "narrowly scoped viewer roles" + "Routes website traffic" + "Routes agent traffic" + "Opens protected interface" ] do Expect.stringContains infrastructure topic $"Expected infrastructure content for {topic}" - for obsoleteTopic in [ "Raspberry Pi"; "Penpot"; "Amazon Web Services" ] do + for excludedTopic in + [ "Meier Made Platform" + "PostgreSQL" + "Cloud SQL" + "Auth0" + "Dagster" + "Airbyte" + "Metabase" + "Raspberry Pi" + "Penpot" + "Amazon Web Services" + "Redis" + "Memorystore" ] do + Expect.isFalse + (infrastructure.Contains excludedTopic) + $"Expected out-of-scope infrastructure content for {excludedTopic} to be removed" + + Expect.isFalse + (infrastructure.Contains "subgraph personal") + "Expected runtime relationships to terminate at containers rather than a decorative boundary" + + for metaLanguage in + [ "the example I will follow through this article" + "The runtime view names" + "The deployment view makes" + "simplest representative workload" + "better explanation for the platform" + "Identifiers and account details are intentionally omitted" + "A VPN would still be appropriate" + "The application repository has a deliberately ordinary shape" + "Kubernetes often gets a bad reputation" + "The point is not to turn infrastructure" + "The goal is not to use the fewest technologies" ] do Expect.isFalse - (infrastructure.Contains obsoleteTopic) - $"Expected obsolete infrastructure content for {obsoleteTopic} to be removed" + (infrastructure.Contains metaLanguage) + $"Expected meta language for {metaLanguage} to be removed" + + Expect.isLessThan + (infrastructure.IndexOf "How it is organized") + (infrastructure.IndexOf "Personal applications and agents") + "Expected infrastructure ownership to be explained before individual technologies" + + for applicationDetail in + [ "href=\"#example\"" + "https://github.com/meiermade/andymeier" + "source for andymeier.dev" + "The site keeps article content in source control" + "I keep application code, infrastructure, tests, and workflows together" ] do + Expect.isFalse + (infrastructure.Contains applicationDetail) + $"Expected the andymeier.dev application section to omit {applicationDetail}" + + Expect.isFalse + (infrastructure.Contains "https://github.com/meiermade/agent") + "Expected the private agent repository not to be linked" for tool in [ "Homebrew" diff --git a/app/src/Tests/ViewTests.fs b/app/src/Tests/ViewTests.fs index b59356e..1791f4a 100644 --- a/app/src/Tests/ViewTests.fs +++ b/app/src/Tests/ViewTests.fs @@ -40,6 +40,12 @@ let tests = Expect.isFalse (navigation.Contains "Services") "Expected company services to leave personal navigation" Expect.isFalse (navigation.Contains "Projects") "Expected company projects to leave personal navigation" Expect.isFalse (profile.Contains "Currently working at") "Expected current-employer claim to be removed" + Expect.stringContains profile "engineer and the owner" "Expected current role" + Expect.stringContains profile "Meier Made, LLC" "Expected company ownership" + Expect.stringContains profile "https://meiermade.com" "Expected company profile link" + Expect.stringContains profile "St. Louis, Missouri" "Expected hometown" + Expect.stringContains profile "New York City" "Expected current city" + Expect.stringContains profile "The opinions shared here are my own." "Expected personal-opinions disclaimer" } test "uses Datastar navigation disclosures without emulated menus" { diff --git a/e2e/tests/routes.spec.ts b/e2e/tests/routes.spec.ts index d4e11ab..ca3c356 100644 --- a/e2e/tests/routes.spec.ts +++ b/e2e/tests/routes.spec.ts @@ -22,7 +22,15 @@ test('homepage renders recent articles', async ({ page }) => { expect(response?.headers()['referrer-policy']).toBe('strict-origin-when-cross-origin') expect(response?.headers()['content-security-policy']).toContain("frame-ancestors 'none'") await expect(page.getByRole('heading', { name: 'Andy Meier', exact: true })).toBeVisible() + await expect(page.getByRole('link', { name: 'Meier Made, LLC', exact: true })).toHaveAttribute('href', 'https://meiermade.com') + await expect(page.getByText('Originally from St. Louis, Missouri', { exact: false })).toBeVisible() + await expect(page.getByText('The opinions shared here are my own.', { exact: false })).toBeVisible() await expect(page.getByRole('heading', { name: 'Recent articles', exact: true })).toBeVisible() + await expect(page.locator('#top-nav')).toHaveCSS('position', 'sticky') + await expect(page.locator('#top-nav')).toHaveCSS('top', '0px') + await expect(page.locator('#top-nav')).toHaveCSS('backdrop-filter', 'blur(12px)') + await expect.poll(async () => page.locator('#top-nav').evaluate(nav => getComputedStyle(nav).backgroundColor)).toContain('/') + await expect(page.getByRole('progressbar', { name: 'Article reading progress' })).toBeHidden() }) test('articles index renders and opens a source-controlled article', async ({ page }) => { @@ -50,6 +58,38 @@ test('development environment article presents the current setup', async ({ page await expect(page.locator('article > div')).toHaveCSS('padding-bottom', '32px') }) +test('article pages keep the top navigation visible and track reading progress', async ({ page }) => { + await page.goto('/articles', { waitUntil: 'domcontentloaded' }) + await page.getByRole('link', { name: 'Personal Infrastructure', exact: true }).click() + await expect(page).toHaveURL('/articles/personal-infrastructure') + + const nav = page.locator('#top-nav') + const progress = page.getByRole('progressbar', { name: 'Article reading progress' }) + + await expect(nav).toHaveCSS('position', 'sticky') + await expect(nav).toHaveCSS('top', '0px') + await expect(nav).toHaveCSS('height', '56px') + await expect(progress).toHaveCSS('display', 'block') + await expect(progress).toHaveAttribute('aria-valuenow', '0') + + await page.evaluate(() => window.scrollTo(0, document.documentElement.scrollHeight * 0.4)) + await expect.poll(async () => Number(await progress.getAttribute('aria-valuenow'))).toBeGreaterThan(0) + await expect(progress).toBeVisible() + await expect.poll(async () => nav.evaluate(element => Math.round(element.getBoundingClientRect().top))).toBe(0) + + await page.locator('article').evaluate(article => { + const articleBottom = article.getBoundingClientRect().bottom + window.scrollY + window.scrollTo(0, articleBottom - window.innerHeight) + }) + await expect(progress).toHaveAttribute('aria-valuenow', '100') + + await page.locator('#nav-articles').click() + await expect(page).toHaveURL('/articles') + await expect(nav).toHaveCSS('position', 'sticky') + await expect(nav).toHaveCSS('top', '0px') + await expect(progress).toBeHidden() +}) + test('article search and source-controlled detail content are deterministic', async ({ page }) => { await page.addInitScript(() => localStorage.setItem('theme', 'light')) await page.goto('/articles?search=semantic', { waitUntil: 'domcontentloaded' }) @@ -61,32 +101,64 @@ test('article search and source-controlled detail content are deterministic', as await expect(page.getByRole('heading', { name: 'Personal Infrastructure', exact: true }).first()).toBeVisible() await expect(page.getByText('DevOps', { exact: true }).first()).toBeVisible() + await expect(page.getByRole('heading', { name: 'Architecture at a glance', exact: true })).toBeVisible() await expect(page.getByRole('heading', { name: 'System context', exact: true })).toBeVisible() - await expect(page.getByRole('heading', { name: 'Repository layout', exact: true })).toBeVisible() - await expect(page.getByRole('heading', { name: 'Observability and analytics', exact: true })).toBeVisible() - await expect(page.getByText('Seq', { exact: true }).first()).toBeVisible() - await expect(page.getByText('Snowplow', { exact: true }).first()).toBeVisible() + await expect(page.getByRole('heading', { name: 'Runtime', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'Deployment', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'Why Google Cloud', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'Kubernetes without platform engineering', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'Personal applications and agents', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'Cloudflare for networking and access', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'Observability with Seq', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'Pulumi and environments', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'GitHub for delivery', exact: true })).toBeVisible() + await expect(page.getByRole('heading', { name: 'andymeier.dev', exact: true })).toHaveCount(0) + await expect(page.getByRole('heading', { name: 'How it is organized', exact: true })).toBeVisible() + await expect(page.getByText('The site keeps article content in source control', { exact: false })).toHaveCount(0) + await expect(page.getByText('Benji and Minnie are my two long-running AI agents', { exact: false })).toBeVisible() + await expect(page.getByText('logs and traces in one event stream', { exact: false })).toBeVisible() + await expect(page.getByText('small, coherent set of tools with strong APIs', { exact: false })).toBeVisible() + await expect(page.getByText('narrowly scoped viewer roles', { exact: false })).toBeVisible() + await expect(page.getByRole('link', { name: 'Pi coding agent', exact: true })).toHaveAttribute('href', 'https://pi.dev/') + await expect(page.getByRole('link', { name: 'source for andymeier.dev', exact: true })).toHaveCount(0) + await expect(page.getByRole('link', { name: 'HTTP API', exact: true })).toHaveAttribute('href', 'https://datalust.co/docs/using-the-http-api') + await expect(page.locator('a[href="https://github.com/meiermade/agent"]')).toHaveCount(0) + + const diagrams = [ + { locator: page.locator('[data-system-context]'), title: 'Personal infrastructure system context' }, + { locator: page.locator('[data-container-view]'), title: 'Personal infrastructure runtime' }, + { locator: page.locator('[data-deployment-view]'), title: 'Personal infrastructure deployment' }, + ] + + for (const diagram of diagrams) { + await expect(diagram.locator.locator('svg')).toBeVisible() + await expect(diagram.locator.locator('svg title')).toHaveText(diagram.title) + await expect(diagram.locator.locator('svg desc')).not.toBeEmpty() + await expect(diagram.locator.locator('svg')).not.toHaveAttribute('aria-roledescription', 'error') + } - const diagram = page.locator('[data-system-context]') - await expect(diagram.locator('svg')).toBeVisible() - await expect(diagram.locator('svg title')).toHaveText('Meier Made platform system context') - await expect(diagram.locator('svg desc')).toContainText('GitHub Actions, Pulumi Cloud, Google Cloud, Cloudflare, and identity providers') + await expect(diagrams[0].locator.locator('svg desc')).toContainText('GitHub Actions, Pulumi Cloud, Google Cloud, Cloudflare, and Google Workspace') - const [, , diagramWidth, diagramHeight] = (await diagram.locator('svg').getAttribute('viewBox'))!.split(' ').map(Number) + const [, , diagramWidth, diagramHeight] = (await diagrams[0].locator.locator('svg').getAttribute('viewBox'))!.split(' ').map(Number) expect(diagramHeight).toBeGreaterThan(diagramWidth) - const lightDiagram = await diagram.locator('svg').innerHTML() + const lightDiagrams = await Promise.all(diagrams.map(diagram => diagram.locator.locator('svg').innerHTML())) await page.getByRole('button', { name: 'Choose theme' }).click() await page.getByRole('button', { name: 'Dark' }).click() await expect(page.locator('html')).toHaveClass(/dark/) await expect.poll(async () => { - const svg = diagram.locator('svg') - return await svg.getAttribute('aria-roledescription') !== 'error' && await svg.innerHTML() !== lightDiagram + const darkDiagrams = await Promise.all(diagrams.map(diagram => diagram.locator.locator('svg').innerHTML())) + const haveErrors = await Promise.all(diagrams.map(diagram => diagram.locator.locator('svg').getAttribute('aria-roledescription'))) + return haveErrors.every(role => role !== 'error') && darkDiagrams.every((svg, index) => svg !== lightDiagrams[index]) }).toBe(true) - await expect(diagram.locator('svg title')).toHaveText('Meier Made platform system context') - await expect(page.getByText('Raspberry Pi', { exact: false })).toHaveCount(0) - await expect(page.getByText('Penpot', { exact: false })).toHaveCount(0) + for (const diagram of diagrams) { + await expect(diagram.locator.locator('svg title')).toHaveText(diagram.title) + } + + for (const excludedTopic of ['Meier Made Platform', 'PostgreSQL', 'Cloud SQL', 'Auth0', 'Dagster', 'Airbyte', 'Metabase', 'Raspberry Pi', 'Penpot', 'Redis', 'Memorystore']) { + await expect(page.getByText(excludedTopic, { exact: false })).toHaveCount(0) + } }) test('article filter disclosures support native keyboard selection', async ({ page }) => { @@ -186,10 +258,13 @@ test('articles remain usable at a mobile viewport', async ({ page }) => { expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth)).toBe(true) if (article.path === '/articles/personal-infrastructure') { - const diagram = page.locator('[data-system-context]') - await expect(diagram.locator('svg')).toBeVisible() - await expect(diagram.getByText('Scroll horizontally to see the complete diagram.')).toBeVisible() - expect(await diagram.evaluate(element => element.scrollWidth > element.clientWidth)).toBe(true) + for (const selector of ['[data-system-context]', '[data-container-view]', '[data-deployment-view]']) { + const diagram = page.locator(selector) + await expect(diagram.locator('svg')).toBeVisible() + await expect(diagram.getByText('Scroll horizontally to see the complete diagram.')).toBeVisible() + expect(await diagram.evaluate(element => element.scrollWidth > element.clientWidth)).toBe(true) + expect(await diagram.evaluate(element => element.scrollLeft > 0)).toBe(true) + } } } })