From 22328cef55bc07db19a805a8176aca67b35bd798 Mon Sep 17 00:00:00 2001 From: <> Date: Sun, 18 Feb 2024 10:41:13 +0000 Subject: [PATCH] Deployed 6c35209 with MkDocs version: 1.5.3 --- .nojekyll | 0 404.html | 2427 ++++++ CNAME | 1 + .../fonts.googleapis.com/css.49ea35f2.css | 594 ++ .../v30/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 | Bin 0 -> 10428 bytes .../v30/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 | Bin 0 -> 12864 bytes .../v30/KFOjCnqEu92Fr1Mu51TjASc1CsTKlA.woff2 | Bin 0 -> 5928 bytes .../v30/KFOjCnqEu92Fr1Mu51TjASc2CsTKlA.woff2 | Bin 0 -> 1512 bytes .../v30/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 | Bin 0 -> 16700 bytes .../v30/KFOjCnqEu92Fr1Mu51TjASc5CsTKlA.woff2 | Bin 0 -> 7696 bytes .../v30/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 | Bin 0 -> 17508 bytes .../v30/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 | Bin 0 -> 10076 bytes .../v30/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 | Bin 0 -> 12620 bytes .../v30/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2 | Bin 0 -> 5972 bytes .../v30/KFOjCnqEu92Fr1Mu51TzBic2CsTKlA.woff2 | Bin 0 -> 1460 bytes .../v30/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 | Bin 0 -> 16024 bytes .../v30/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2 | Bin 0 -> 7460 bytes .../v30/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 | Bin 0 -> 17032 bytes .../v30/KFOkCnqEu92Fr1Mu51xEIzIFKw.woff2 | Bin 0 -> 1512 bytes .../v30/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 | Bin 0 -> 16676 bytes .../v30/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 | Bin 0 -> 12704 bytes .../v30/KFOkCnqEu92Fr1Mu51xHIzIFKw.woff2 | Bin 0 -> 5928 bytes .../roboto/v30/KFOkCnqEu92Fr1Mu51xIIzI.woff2 | Bin 0 -> 17368 bytes .../v30/KFOkCnqEu92Fr1Mu51xLIzIFKw.woff2 | Bin 0 -> 7700 bytes .../v30/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 | Bin 0 -> 10292 bytes .../v30/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 | Bin 0 -> 9576 bytes .../roboto/v30/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 | Bin 0 -> 15740 bytes .../v30/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 | Bin 0 -> 7120 bytes .../v30/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 | Bin 0 -> 1480 bytes .../v30/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 | Bin 0 -> 15000 bytes .../v30/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 | Bin 0 -> 11796 bytes .../v30/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 | Bin 0 -> 5468 bytes .../v30/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 | Bin 0 -> 9644 bytes .../roboto/v30/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 | Bin 0 -> 15860 bytes .../v30/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 | Bin 0 -> 6936 bytes .../v30/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 | Bin 0 -> 1432 bytes .../v30/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 | Bin 0 -> 14684 bytes .../v30/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 | Bin 0 -> 11824 bytes .../v30/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 | Bin 0 -> 5548 bytes .../roboto/v30/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 | Bin 0 -> 7112 bytes .../s/roboto/v30/KFOmCnqEu92Fr1Mu4mxK.woff2 | Bin 0 -> 15744 bytes .../roboto/v30/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 | Bin 0 -> 9628 bytes .../roboto/v30/KFOmCnqEu92Fr1Mu72xKOzY.woff2 | Bin 0 -> 15344 bytes .../roboto/v30/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 | Bin 0 -> 11872 bytes .../roboto/v30/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 | Bin 0 -> 5560 bytes .../roboto/v30/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 | Bin 0 -> 1484 bytes ...wgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 | Bin 0 -> 24792 bytes ...wgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2 | Bin 0 -> 16296 bytes ...wgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2 | Bin 0 -> 7528 bytes ...5mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 | Bin 0 -> 22736 bytes ...wgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 | Bin 0 -> 10096 bytes ...wgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2 | Bin 0 -> 13036 bytes ...euFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2 | Bin 0 -> 7972 bytes ...euFoqFrlnAIe2Imhk1T8rbociImtEleUlYIw.woff2 | Bin 0 -> 17428 bytes ...euFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2 | Bin 0 -> 26644 bytes ...q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2 | Bin 0 -> 24652 bytes ...euFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2 | Bin 0 -> 10704 bytes ...euFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2 | Bin 0 -> 14288 bytes .../mermaid@10.7.0/dist/mermaid.min.js | 1642 ++++ assets/favicon.png | Bin 0 -> 1673 bytes assets/images/favicon.png | Bin 0 -> 1870 bytes assets/javascripts/bundle.0e2aa882.min.js | 3 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.el.min.js | 1 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.he.min.js | 1 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.hy.min.js | 1 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.kn.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + assets/javascripts/lunr/min/lunr.sa.min.js | 1 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.te.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++ .../workers/search.1e90e0fb.min.js | 2 + assets/logo.png | Bin 0 -> 3624 bytes assets/stylesheets/main.ca286e8c.min.css | 1 + assets/stylesheets/palette.ab4e12ef.min.css | 1 + commands/index.html | 2909 +++++++ custom-configuration/index.html | 2654 ++++++ default-configuration/index.html | 2760 ++++++ extensions/index.html | 2703 ++++++ index.html | 2743 ++++++ migration/index.html | 2781 +++++++ modules/WPBrowser/index.html | 5256 ++++++++++++ modules/WPCLI/index.html | 3039 +++++++ modules/WPDb/index.html | 7402 +++++++++++++++++ modules/WPFilesystem/index.html | 4353 ++++++++++ modules/WPLoader/index.html | 3098 +++++++ modules/WPQueries/index.html | 3674 ++++++++ modules/WPWebDriver/index.html | 6313 ++++++++++++++ search/search_index.json | 1 + sitemap.xml | 208 + sitemap.xml.gz | Bin 0 -> 586 bytes troubleshooting/index.html | 2574 ++++++ .../run-in-separate-process/index.html | 2821 +++++++ v3/codeception-4-support/index.html | 2565 ++++++ .../index.html | 2631 ++++++ v3/commands/index.html | 2930 +++++++ v3/configuration/index.html | 3512 ++++++++ v3/events-api/index.html | 2637 ++++++ v3/extensions/index.html | 2753 ++++++ v3/faq/index.html | 2915 +++++++ v3/images/codecept-init-wpbrowser-01.png | Bin 0 -> 61809 bytes v3/images/codecept-init-wpbrowser-02.png | Bin 0 -> 51847 bytes v3/images/codecept-run.png | Bin 0 -> 39371 bytes v3/images/initial-setup.png | Bin 0 -> 80787 bytes v3/index.html | 2471 ++++++ v3/installation/index.html | 2641 ++++++ v3/levels-of-testing/index.html | 2911 +++++++ .../from-version-2-to-version-3/index.html | 2556 ++++++ v3/modules/WPBrowser/index.html | 3143 +++++++ v3/modules/WPCLI/index.html | 2943 +++++++ v3/modules/WPDb/index.html | 5110 ++++++++++++ v3/modules/WPFilesystem/index.html | 3353 ++++++++ v3/modules/WPLoader/index.html | 2982 +++++++ v3/modules/WPQueries/index.html | 3304 ++++++++ v3/modules/WPWebDriver/index.html | 3576 ++++++++ v3/modules/WordPress/index.html | 2910 +++++++ v3/requirements/index.html | 2629 ++++++ .../index.html | 2572 ++++++ .../index.html | 2627 ++++++ .../images/local-flywheel-adminer.png | Bin 0 -> 45827 bytes .../local-flywheel-codecept-version.png | Bin 0 -> 16253 bytes .../images/local-flywheel-composer-init.png | Bin 0 -> 48863 bytes .../images/local-flywheel-create-database.png | Bin 0 -> 79252 bytes .../images/local-flywheel-db-export.png | Bin 0 -> 75067 bytes .../images/local-flywheel-db-import.png | Bin 0 -> 51330 bytes .../images/local-flywheel-mac-db-creds.png | Bin 0 -> 34427 bytes .../local-flywheel-mac-wpbrowser-init-1.png | Bin 0 -> 189315 bytes .../local-flywheel-mac-wpbrowser-init-2.png | Bin 0 -> 220462 bytes .../images/local-flywheel-sites-path.png | Bin 0 -> 35865 bytes .../images/local-flywheel-win-db-creds.png | Bin 0 -> 25065 bytes .../local-flywheel-win-wpbrowser-init-1.png | Bin 0 -> 166801 bytes .../local-flywheel-win-wpbrowser-init-2.png | Bin 0 -> 187208 bytes .../images/local-lite-mac-db-creds.png | Bin 0 -> 47390 bytes v3/tutorials/images/local-my-plugin-shows.png | Bin 0 -> 55068 bytes v3/tutorials/images/mac-codecept-version.png | Bin 0 -> 22048 bytes v3/tutorials/images/mac-composer-init.png | Bin 0 -> 163791 bytes v3/tutorials/images/mamp-create-db.png | Bin 0 -> 88813 bytes v3/tutorials/images/mamp-db-export.png | Bin 0 -> 46387 bytes v3/tutorials/images/mamp-db-import.png | Bin 0 -> 94150 bytes v3/tutorials/images/mamp-mac-dirs.png | Bin 0 -> 191695 bytes v3/tutorials/images/mamp-mac-ports.png | Bin 0 -> 194423 bytes v3/tutorials/images/mamp-my-plugin-shows.png | Bin 0 -> 114597 bytes .../images/mamp-wp-installation-1.png | Bin 0 -> 53828 bytes v3/tutorials/images/mamp-wpbrowser-init-1.png | Bin 0 -> 404776 bytes v3/tutorials/images/mamp-wpbrowser-init-2.png | Bin 0 -> 476281 bytes v3/tutorials/images/vvv-codecept-version.png | Bin 0 -> 18457 bytes .../images/vvv-my-plugin-composer-init.png | Bin 0 -> 62363 bytes v3/tutorials/images/vvv-my-plugin-shows.png | Bin 0 -> 105244 bytes v3/tutorials/images/vvv-ssh.png | Bin 0 -> 34108 bytes v3/tutorials/images/vvv-up.png | Bin 0 -> 76689 bytes v3/tutorials/images/vvv-wp-browser-init-1.png | Bin 0 -> 184741 bytes v3/tutorials/images/vvv-wp-browser-init-2.png | Bin 0 -> 218066 bytes v3/tutorials/images/vvv-wp-db-backup.png | Bin 0 -> 38455 bytes v3/tutorials/images/wamp-codecept-version.png | Bin 0 -> 13725 bytes v3/tutorials/images/wamp-composer-init.png | Bin 0 -> 81379 bytes v3/tutorials/images/wamp-create-db.png | Bin 0 -> 57102 bytes v3/tutorials/images/wamp-db-export.png | Bin 0 -> 58566 bytes v3/tutorials/images/wamp-db-import.png | Bin 0 -> 76354 bytes v3/tutorials/images/wamp-my-plugin-shows.png | Bin 0 -> 59776 bytes .../images/wamp-virtualhost-creation-1.png | Bin 0 -> 54357 bytes .../images/wamp-virtualhost-creation-2.png | Bin 0 -> 40048 bytes .../images/wamp-wp-installation-1.png | Bin 0 -> 39523 bytes v3/tutorials/images/wamp-wpbrowser-init-1.png | Bin 0 -> 145438 bytes v3/tutorials/images/wamp-wpbrowser-init-2.png | Bin 0 -> 141164 bytes v3/tutorials/images/wp-installation-2.png | Bin 0 -> 87553 bytes v3/tutorials/local-flywheel-setup/index.html | 3030 +++++++ v3/tutorials/mamp-mac-setup/index.html | 2940 +++++++ v3/tutorials/vvv-setup/index.html | 3028 +++++++ v3/tutorials/wamp-setup/index.html | 2942 +++++++ 194 files changed, 144772 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 CNAME create mode 100644 assets/external/fonts.googleapis.com/css.49ea35f2.css create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc1CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc2CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc5CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic2CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xEIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xHIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xIIzI.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xLIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4mxK.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu72xKOzY.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEleUlYIw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2 create mode 100644 assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2 create mode 100644 assets/external/unpkg.com/mermaid@10.7.0/dist/mermaid.min.js create mode 100644 assets/favicon.png create mode 100644 assets/images/favicon.png create mode 100644 assets/javascripts/bundle.0e2aa882.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.el.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.he.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.kn.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sa.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.te.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.1e90e0fb.min.js create mode 100644 assets/logo.png create mode 100644 assets/stylesheets/main.ca286e8c.min.css create mode 100644 assets/stylesheets/palette.ab4e12ef.min.css create mode 100644 commands/index.html create mode 100644 custom-configuration/index.html create mode 100644 default-configuration/index.html create mode 100644 extensions/index.html create mode 100644 index.html create mode 100644 migration/index.html create mode 100644 modules/WPBrowser/index.html create mode 100644 modules/WPCLI/index.html create mode 100644 modules/WPDb/index.html create mode 100644 modules/WPFilesystem/index.html create mode 100644 modules/WPLoader/index.html create mode 100644 modules/WPQueries/index.html create mode 100644 modules/WPWebDriver/index.html create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz create mode 100644 troubleshooting/index.html create mode 100644 v3/advanced/run-in-separate-process/index.html create mode 100644 v3/codeception-4-support/index.html create mode 100644 v3/codeception-phpunit-and-wpbrowser/index.html create mode 100644 v3/commands/index.html create mode 100644 v3/configuration/index.html create mode 100644 v3/events-api/index.html create mode 100644 v3/extensions/index.html create mode 100644 v3/faq/index.html create mode 100644 v3/images/codecept-init-wpbrowser-01.png create mode 100644 v3/images/codecept-init-wpbrowser-02.png create mode 100644 v3/images/codecept-run.png create mode 100644 v3/images/initial-setup.png create mode 100644 v3/index.html create mode 100644 v3/installation/index.html create mode 100644 v3/levels-of-testing/index.html create mode 100644 v3/migration/from-version-2-to-version-3/index.html create mode 100644 v3/modules/WPBrowser/index.html create mode 100644 v3/modules/WPCLI/index.html create mode 100644 v3/modules/WPDb/index.html create mode 100644 v3/modules/WPFilesystem/index.html create mode 100644 v3/modules/WPLoader/index.html create mode 100644 v3/modules/WPQueries/index.html create mode 100644 v3/modules/WPWebDriver/index.html create mode 100644 v3/modules/WordPress/index.html create mode 100644 v3/requirements/index.html create mode 100644 v3/setting-up-minimum-wordpress-installation/index.html create mode 100644 v3/tutorials/automatically-change-db-in-tests/index.html create mode 100644 v3/tutorials/images/local-flywheel-adminer.png create mode 100644 v3/tutorials/images/local-flywheel-codecept-version.png create mode 100644 v3/tutorials/images/local-flywheel-composer-init.png create mode 100644 v3/tutorials/images/local-flywheel-create-database.png create mode 100644 v3/tutorials/images/local-flywheel-db-export.png create mode 100644 v3/tutorials/images/local-flywheel-db-import.png create mode 100644 v3/tutorials/images/local-flywheel-mac-db-creds.png create mode 100644 v3/tutorials/images/local-flywheel-mac-wpbrowser-init-1.png create mode 100644 v3/tutorials/images/local-flywheel-mac-wpbrowser-init-2.png create mode 100644 v3/tutorials/images/local-flywheel-sites-path.png create mode 100644 v3/tutorials/images/local-flywheel-win-db-creds.png create mode 100644 v3/tutorials/images/local-flywheel-win-wpbrowser-init-1.png create mode 100644 v3/tutorials/images/local-flywheel-win-wpbrowser-init-2.png create mode 100644 v3/tutorials/images/local-lite-mac-db-creds.png create mode 100644 v3/tutorials/images/local-my-plugin-shows.png create mode 100644 v3/tutorials/images/mac-codecept-version.png create mode 100644 v3/tutorials/images/mac-composer-init.png create mode 100644 v3/tutorials/images/mamp-create-db.png create mode 100644 v3/tutorials/images/mamp-db-export.png create mode 100644 v3/tutorials/images/mamp-db-import.png create mode 100644 v3/tutorials/images/mamp-mac-dirs.png create mode 100644 v3/tutorials/images/mamp-mac-ports.png create mode 100644 v3/tutorials/images/mamp-my-plugin-shows.png create mode 100644 v3/tutorials/images/mamp-wp-installation-1.png create mode 100644 v3/tutorials/images/mamp-wpbrowser-init-1.png create mode 100644 v3/tutorials/images/mamp-wpbrowser-init-2.png create mode 100644 v3/tutorials/images/vvv-codecept-version.png create mode 100644 v3/tutorials/images/vvv-my-plugin-composer-init.png create mode 100644 v3/tutorials/images/vvv-my-plugin-shows.png create mode 100644 v3/tutorials/images/vvv-ssh.png create mode 100644 v3/tutorials/images/vvv-up.png create mode 100644 v3/tutorials/images/vvv-wp-browser-init-1.png create mode 100644 v3/tutorials/images/vvv-wp-browser-init-2.png create mode 100644 v3/tutorials/images/vvv-wp-db-backup.png create mode 100644 v3/tutorials/images/wamp-codecept-version.png create mode 100644 v3/tutorials/images/wamp-composer-init.png create mode 100644 v3/tutorials/images/wamp-create-db.png create mode 100644 v3/tutorials/images/wamp-db-export.png create mode 100644 v3/tutorials/images/wamp-db-import.png create mode 100644 v3/tutorials/images/wamp-my-plugin-shows.png create mode 100644 v3/tutorials/images/wamp-virtualhost-creation-1.png create mode 100644 v3/tutorials/images/wamp-virtualhost-creation-2.png create mode 100644 v3/tutorials/images/wamp-wp-installation-1.png create mode 100644 v3/tutorials/images/wamp-wpbrowser-init-1.png create mode 100644 v3/tutorials/images/wamp-wpbrowser-init-2.png create mode 100644 v3/tutorials/images/wp-installation-2.png create mode 100644 v3/tutorials/local-flywheel-setup/index.html create mode 100644 v3/tutorials/mamp-mac-setup/index.html create mode 100644 v3/tutorials/vvv-setup/index.html create mode 100644 v3/tutorials/wamp-setup/index.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/404.html b/404.html new file mode 100644 index 000000000..e1166534e --- /dev/null +++ b/404.html @@ -0,0 +1,2427 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+ +
+ +

404 - Not found

+ +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 000000000..cdcfdff63 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +wpbrowser.wptestkit.dev diff --git a/assets/external/fonts.googleapis.com/css.49ea35f2.css b/assets/external/fonts.googleapis.com/css.49ea35f2.css new file mode 100644 index 000000000..8187a642b --- /dev/null +++ b/assets/external/fonts.googleapis.com/css.49ea35f2.css @@ -0,0 +1,594 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc2CsTKlA.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc5CsTKlA.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc1CsTKlA.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc0CsTKlA.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xMIzIFKw.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xEIzIFKw.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xLIzIFKw.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xHIzIFKw.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xIIzI.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic3CsTKlA.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic2CsTKlA.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fBBc4.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu72xKOzY.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu5mxKOzY.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu7mxKOzY.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4WxKOzY.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu7WxKOzY.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu7GxKOzY.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBBc4.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek */ +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEleUlYIw.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek */ +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEleUlYIw.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto Mono'; + font-style: italic; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 400; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSx0mf0h.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2) format('woff2'); + unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSd0mf0h.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSZ0mf0h.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto Mono'; + font-style: normal; + font-weight: 700; + font-display: fallback; + src: url(../fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc-CsTKlA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..943c5a0a86672fa62e37e798f763c6fc133fa87a GIT binary patch literal 10428 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc1CsTKlA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc1CsTKlA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b2391b928a412e3963c5e03e9892e5c6f15d9f0c GIT binary patch literal 5928 zcmV+@7uV=_Pew8T0RR9102e3#5&!@I05%{102app0RR9100000000000000000000 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 OnI?o4bc}cCkQo4MZ@9Vu literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc3CsTKlA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..bfcc76fabfd5e447c609af972942d94ae0aa316a GIT binary patch literal 16700 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..22c57b0157cc6b54574811e3ed5c2369b29dd134 GIT binary patch literal 17508 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic-CsTKlA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d2f30b58aa2d18e1a048b945c8d75dc3ee00b55a GIT binary patch literal 10076 zcmV-iC!^SRPew8T0RR9104H1k5&!@I09vR304DkX0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic0CsTKlA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c88b8aeaee17785a36a71f2d8489a0f22d6e3432 GIT binary patch literal 12620 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic1CsTKlA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..6363b1c7ec0c1650cb20d3f46426c4723d43d72c GIT binary patch literal 5972 zcmV-a7pv%ZPew8T0RR9102fpM5&!@I05`}002cHB0RR9100000000000000000000 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 STz45C22uK#sZ+~ShnWC)It(fR literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic5CsTKlA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c8091bc97407ccf475af3a730b85c7f4aeecf7b4 GIT binary patch literal 7460 zcmV+<9oyn}Pew8T0RR91039R%5&!@I06KI4035>r0RR9100000000000000000000 z0000QWE+ci95x1E0D)u(N(qBJ5ey2_B*2CI=u4f-W1m zGerkt*f;n{e4gK-zwGREE*dt;37LIeiLC-tK!}Hthz5j_66tNmqgjS3dAV#5L$I8a&={950jk!#3)3w`qF4Ekz@6Ovz zp6^@I{!UkQlcEwxBr0T!OW7j~%42uutWzj{^51WGlhaflTVs3e--$!ZN@zF0;RQU1 z%D(3XRL6r@|5ukLTc1w~0PZbMgzJ~S8#@5(yI;CBH@8!O=knH0ICYZr-M9q4{ZwVZ z0&}Mf{d3^N!TQczUm0Bs6_E05grAuUSqW*u%KrT_mAhxals?>nfe9*&1~BLeUx;j6=;9)J+Mj%NzIdgLvQhVPM(uM`n%^^KGq&J83 z=a9id^P$}M2y#AAEMF>>Xp0bC&lBJT+jq%@nRGue9I)S&6=VVSr-F>7fc-tCFbA-~ zEguSU039Tu4Dj@1IlV;uo9b&th+8l~)AqZn>u6OEJ1LccqhK_)Sgs$##nG~om3I}o zWE<>qW9??k=DJpy_N9RpM!?U5sJ}3vN9itfWKPdo0_0!m%H~6Q>FW$;0Qm9qER&f6 z@~$jVKK^{nr2L1L%*epsozhdr028F-nawA}zhxl(wwQJ^Un+*#^3N>EFg;X@Jdv-P zBiz?*%z1Pm4ez_w_yaZnkJ{_AP|DFyJWTD9T!nVv&h)YlI!YOl>#%KRsv}7Xd`{0E zO-z|FXTg#+8@5>NaqtL;NH}vdmyDc}4}U>af`tebCRV&;L|Rh7F*LnH(l2tN;0?+m z($EZzj$xtD)Mo-8m2sI6lnGes^PNrZ;G>h}PLR1Jk-B_kv523~=ITZAyrje!a!qJn z2y?JZ?7X^@DC359l=iEI^r1r~R(jdz6UTh#l-sx&!pi_bMhVkLoL&+bpL4!&$ve_? zam_1k`Ac|uMdr5X-lnnX7N1X&3?@4%cvTwh8D-CG&CM`A8vQazoKX_n+&NubGD4a@ z;ky%^JMnxc35zfA5m>j+(-2{w01RIhGKdv&U-q-dSNF+ALW76>PCr9Zm}~ACn?do& ztXvhLGn3+BEErnyjcuOe)8(8;km{1hT=Ug%?(ZYFLTStd>x|+P7--2(qCCtXUczdu zz&%)o%~*|9vJ#%T>=kZ)#Bn|{un)iSpD1I0hMhrSJHykorR5*sM<`PX6rmvKE zP&8nj;^+Aqia-&eX3jBr+I;v`HnU(h%*MB&vpyj1?0&XBHm)tVGN-2mAR6_XsW&nQ z2oJcjN98-3`Xbl|Sl7zxUf@3f>(A{Tpb5MHfF5DAtXM&DPYfBxern*vp)N|YHzpW?Ft5NlVat%|X^Ow2Ri0;X9zeILHe`SE8VKp;y&tf*Lj{2ZJ3P1v%d7A9PTNKvB2;ENMa zAeNAb`185Mg;c_C`5%d6z)`<}O7bS+tovT6bjc=wva@9RV-KschO9@x>~-iX;-x9Hf95CCztR1E+zB%~1DEQ7Okw3rgn`@0$-SHyoRU~&xz7m(v>K)I3tWhJu^ zo1CmpelI7hL_Qv0fMMxIv&rizrXc|H@QF5D1P7UMef3wfRt*>|hOtjx3(-r`yUNuPr@{yMj0|Sc1}EQl?B+EuQ00t$J4;2pU*sFz-MqA=MzZmd9Y<}F0j*T zU}o%46Bh8v*7m*JI$#FDyoYQiP?nGRnu*n}NnEbPE@H;`8AfX$a{Ke(wUBVOki>

m{S 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..91231c9c46f4c145f98b22aed481fe3389fd43d0 GIT binary patch literal 11796 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 SIH&J9Vr~U^zi5Nh0001)vX7Gh literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1bb7737cdc956a43feb1b6d7f911e10b7c547828 GIT binary patch literal 9644 zcmV;dB~#jWPew8T0RR91041yd5&!@I09i-?03}QS0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..771fbeccc691aab1962e33dbdf2be7c659d84c27 GIT binary patch literal 15860 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 K;xZEf00030kB~Y5 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cb9bfa71feafa7badf919a4663d68bbba0c2b36e GIT binary patch literal 6936 zcmV+z8|UPAPew8T0RR9102>$p5&!@I060hh02;Ue0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a0d68e2b4f2d9b4d470e6e679e8e7fccdd3e666b GIT binary patch literal 1432 zcmV;J1!wwqPew8T0RR9100o!;5&!@I012P~00lY#0RR9100000000000000000000 z0000QCL16eHU?k-GzdrugFF!o3WG?4FAER=5)=V80we<*1Rw>1eg_~7f+-t62q2D= zrILZ-4<5d6)4#KVZcI5XOK2T!or*!y)D+@g5#x#5gs1*z>cI1O>tSXSsu*q5->P~s z-T!~D>b*Bp6N;`0{u8D9Gxq4-AO(%lJEhIt*o_;!LIvXLCL&R1+5Y0%tF!L`{w)wF zWCH-j2rLK$0tGMt0|5xYK|Y0uXyvkX7yxJhnam^RQH((ojcnbuxsQs@&F#J2(AT_m zzy$zXwD5dYyGeNj9rR1}$spW)kNPql6_^y@d?`Ds?#e1m_j0|Lg)}fSWG&m2KeqODmu?uWIm-k|*%pbd)!2L)k@%8a;8AO>{p`Ong9a_{{G~ zb#$y153Wka4$cV|bLW;zxJF^rFYUgiYvZw~%fl=E(&3X8F$O1kcNo6mvErned_?r% zd^B2r8z5=8cMjNH?>WgCm+Zq9QdKVET5eJ+G$dgVK32@1aB;=4}w6!hLXvU z1ArBPY`_l81-e6MjP6F~PAFx0O+_y++hRX|+@74Bd%AjTy>&S~qBncb!M8qgBtLm) zgE;i=r)PZpHZAWBNAk6G9DLn*+M65q)H;dJ4kxd#U-!lvV%#(6@)@rIqD(_6ghjeIv-{*L{ESMb~}9 zCsiL__xq(6UGp8EEG|9&vVmEz7JWXq&cF7K2KMafYt~m+)Saw%F$S#?tmywg0t%2W z$$Y18)!#%Ci&TQHVWo6#!bh|i2UD6tUjEFK4y9FLTab?TQbtUfb(E4Tv)>DaQ<~dU z&`O0bt&fJ(#ZD5PUz-1C;}H-IK_?F@yH&Y-luH1Y`oM9-Nkb;|3(?8P7e z!*10;v1nH8c@=N|uD1stY0R1ZyRFOyz%xJP1pr?i;Tu=b@5 zuqREMo;m@+?PXO@r_DV@8v1cIG&i;VxpWBvuyPi~te}@e_B|AoNmvkojSeb8vjYuq ztpbAvtAdRlt4cAOrJ7Y|3@5D?in;T;*{t&niwqjF%Vym=b=k^f5+TBa(WJ^Cr*wVV zovRIK704|R#J=pB!sM2~Uu?HUyUn(1*CxOkgIWyQYS2Q1`m}|!W=n1;t#8qdE&vFa0{!q8WJHmD0aMEfM!FQwd&F?z@W`K1?khRRl5OOwA&)cGSwD| zSz)ah|Cj$p2o(S_J=%a9N@JpAA}QfiCUUAiW1D!t5{>xGd?%}hU9@v{)J425 z`u3)!(?+;hM!QS%oG#Xd(V0002ZB&}uu literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..639955285d3da100daab6772852ca53c1f55d071 GIT binary patch literal 14684 zcmV-iIitpRPew8T0RR9106AO$5&!@I0Eid>066#n0RR9100000000000000000000 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%0Ag;8 z#U(Ev;D zpyHk4wmN66G&(XE{heR=N%_)HaL5c3)+bS?0u38zHh?$@)p@Q)QYbT%+p@n$!1~6%PQ%5=|bR9(Eo` zqP>;P*Ia-;t`_0?3Id!$@UC9@O|J)Dz(*JF5=^00?Q3Y3%LzdjC7IzoRCS>;1P_JE zHAonM^AT#83z%yzL3`(4TP~T`bm+pp+4bLf_vR+`WOhp>GLq5www~DV{QzP7r-)^x zA^=+M{Hz8yP;lPaYp-kG+l7P^y*x(t^9vZn0eJFbf9<1p^(>#_i_N`xWj>f+{iF0oeQvas&>Ss|uHWLK4#%6^TlR zdBnkJD@7n7zd-RrXXDVtYwYu#0cMKObEfbRYK|RbB51W6HKGZ{E#&}=)BI%HZ8Wi& ziJ=V&3>0w}8OZAj=v|j9Pon92F)RaNtD9|h=S*#i61L$8j(n7s6j%^NWGIHRJu_hG z2!@E89TK!P?M{45*3{zKp@YpjfGBcIle;d0v6LylVsZLx7~*eamlX8)zO#qJ^e}lyQl7x+f_~hLHVxmgTK|_XIH7|>T81- zi_A*>WEg^qHJO=@z6 zjC;-LMvY!vkGxE4O5_5$(mNzUcri|j!GuXU_Fn*OZ5IWxvMNm$>o!7VQXAVw#+?)+ zqJ(IeLRk3}&eSxToqTGFWZ4AU^k-qXl!?!m>hDAE8R;2`(I7!gD!mRN_~f*=VD@-Z14MIrILMtT#0 z_IPC;+$KIPso_np8=oS{6ZC|Ib%Pe(UQyZRnu+t(Fk08`9S)@vo|>?WL}pq*O1P^r#yP*;;(*I{VCj3= zSgx5n{X>fBsnFpV3Y95HjuF3kFxSYXg|+ zZyp@)mKeoihJ_gHS8Al8Q9=W4l?)J-qqmBAPsseQI5Jy)ke@0h{##|m3U zga9xAAb@&O69%B~hIzPV+IJ9$)nfmbY9eSt8u$_L`9^rVF&rxf6xM{Z3HA{<>P3rX zqwUff@(NZMwE3`E7Rv1@zQf6Oe6QV+^w?!d+eYnID5VidAH&3`I2smv<6zMPvNhoQ znM;hSlBm+zXZuK2RSM$+$(Bc~m0_>%NH%56bp}DVt1f?zk|BWGIMi~AV1qHLBSfkO zVYL*PUrA6bVQ&YpcOmS38MNXlvjsSoiL$1l;#`XD00}BZhSx#U7wLL8t~LzGr%AWx z#Hd{!Gb@wBem4` zMiA%`$QW|HO$a0p@&ws~M7{C{sn*p1kSWL&$m^%;dSP<9c~(p}m>OR0z4rQg`v%P1xgIX{IY!Z9%IE?h#u-Gj0X zGtw0!Nh32&L||}9BokJ1>72chpd7piph3NT5^Q3DCdKCrO2(LBnaprAzX|#fyE2^= zh!_qyt7t$dDVZ7WSw0d2l1U>vkwEO#jwC6`R@fLqhk^r6F!8_%{it~yaIS7D{U?sHVQ-Ezs7U2!&1`?NCL}VUDBP_g#)Lc|v zLTC|Xzs?FOl8b2Ks%r9L>kMHfEP??$5?4@I$o~G4yX$loQ-eZv#TVh+u3`P3OE-abVu?e;dszqm(0U3m8G5JrXljRpyq&^X- eiu9L5SRK2?c9pHmprN8l#(*KZaBZL=HUI!Xf0hRT literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..3c4501118e82d34740f2fb90d15c9bf4c9821993 GIT binary patch literal 5548 zcmV;d6;tYWPew8T0RR9102QnN5&!@I05vQC02N9A0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fc71d944a5838fcf1a870298679652ccc81ee878 GIT binary patch literal 7112 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4mxK.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4mxK.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..020729ef8d353ff843438008300bedee1f519380 GIT binary patch literal 15744 zcmV-`J%7S?Pew8T0RR9106l;J5&!@I0FHD306iK20RR9100000000000000000000 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 O=*P}hnT+8U0002VxO@Nr literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..8a8de615eb2f70380f60b851f97814cdf1ccda94 GIT binary patch literal 11872 zcmV-mE}zkNPew8T0RR9104`tv5&!@I0COw=04@3e0RR9100000000000000000000 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

3C=zk= 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 b/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSV0mf0h.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..022274d4c4af877ac322df360cb0c1856d2931a1 GIT binary patch literal 24792 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∾9# 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 b/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSh0mQ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1d988a3f4c7e169088a83234773dd3eb346c2196 GIT binary patch literal 22736 zcmV({K+?Z=Pew8T0RR9109eof5&!@I0F*QU09a`N0RR9100000000000000000000 z0000SHa|#KK~gFPU_Vn-K~!WX8UTb=FG3Lr3W1wI`YH>9OaL(N9sxE2Bm;v?1Rw>5 zI0uAl3el^jU`!HS|}lX}_z|0%gKrq%%JpHP5cA&GK38q*Cqz!)Zh z3apH95}Rv5J)>?_K;Z-==Ek~#+>EWbiDH2v&s-r;1M>{N7l_j@J0t7T6f#TVno%yw z4J=Y4{ihNYcGi=>)4lDP>VMu}AEB{Na*wCW`l@=*t?3>FTpS?uO!k`x;gidQ76%9G zOp;Oe8=jwA4Zd{Ygqh6G8V9n8nH1lL{M66LJ>g)1d}kPJ&e5atm-?J zhkwTL-uLM&HM21(53X?kOH?Y%U|QT+W`o}R=d_d)nPm&`3%`IYG)OYV3hqo1AkRfS zwx>On7_+mOVMzX0r+rhBzPLw#Q*pg@v8t9QK(-wjp-AiThCHOx%2@^{hd|X8)!jo= zU0&6CuBv`El;6q_l)!k4c)H_Q;+; zV~`ZmEYSySL-dj*o&M_#O)J@fk2n$!Bdvx&2_AwSExxr~Q$)ZR-*Ah&4&*Z zxRv-7Q4~cQe{ZVR{tplyfN~&Ad$`V&Y>wd!=i0bfnsY^Sb4|5)*yaA+<%)|1BrX8* zxD1*B2x+(k!!2H1@YrKb83^Pc>vI2fqWdcmnyP>4 zFQ{K0Me?FW*aNnlxFcfI*mAv>y@R|05o7>o-3?q6JPaQ8hJ!W~BET^{K^wBm2=qsx z$YI3l;ZYO-J}JyRs?}*uBTcYP>0H()FDj^+B);k;W#!DeWVcX6(=rs{WfagOZD#;$ zu|8AlXnYICq1Ye|E0aHi5rc^GrWv^o2&lvhia`Lb!!`x`x*v|imM^ds`baGrWQ_C=XSFB2=LP9XNzjxUH+vZ4SC%PzHP8(m$Kuy}&Rc z21vRbvyDVFswLeNTv&txlpoLlPUL?J$)t0Ws<-NUt3Ur1kLKd%6cD%ySKvHsk+mno zA!OkP_ujwv-o5Acp4fYO@0rQ=?|YB@|C2jo@!wYWOJA5Q-#_7Jq+knx)Gy$83#smZ;F8QnzgXsM4-lj|a3=)RHBctJ4`BcrI%4 z&^)ItFbjn1q)WPFI*)_zG9dwx6w58O%nH5wi1k}-z)Gu(7&2^)L8CTUYn@HjtGCgl zG2F^4rc>QBd=@Q1%7`rChU*3h9; z>&mESz-6IGV{x6s5>(*4Q&@(EWne`ynMsu6FT;S(qt^oErvMBUFJ?Ocs2|Efa`z_% z4+3-`nsg~u)%>w>kU>I#3DY9O@oV8+5|@}#Q_WJMOA-h0q!0^ZwMq$C2&yp!P?B}P z@=2j4X15s27udgjvj`{xRk)Vg42}kc$VYK}XeQ(MdWFMU+dd|DYIw_WNZfZ={Qg>P z(pa;VGZq{PjM>$55w<85>$GN26xDH@yT7H>HzK!0lB@?0YNLG*)Kfw5L8fQSk-yW? zdK*RC=z}=1`q-Y04rUutp-kgD*M~neG7>ET#ZYW87Frl4qJe6@&I+E_Xaq&Qj-lYY zakSa2)nw5z8X5^!7wa@`8^dL^V8B!O7wBYjz%UNeHM?Z1>}-h;1WeXi5po+HqoFtI zD#-~-qem&XsDR8YYgYy#DX~Tcam>zfHfBlO!D9I4F2+|;7eH(Ua)z!_&V?5df}w>h z;|te>K$xO>e?AGsX9~{gFl-;*V*66(23qLteM )8x2wTy4sm|$UBVF7Wz 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 bGAR@Yh2TTsqnk*C_-*A}-af0}9g0mS;50#L literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 b/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xTDF4xlVMF-BfR8bXMIhJHg45mwgGEFl0_3vrtSM1J-gEPT5Ese6hmHSt0mf0h.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..11e6a46a40c7afdee2981511cf98f78a62ef9f2f GIT binary patch literal 10096 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

-KfCKkVgUqz8QxqfO}8iQ0)j$QDq& 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2 b/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtElOUlYIw.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1f1c97fecdbde2d7c29e8dd92b152e5b4f30f17c GIT binary patch literal 7972 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 XMQ{4hxA|M=Cwa5=H!EjyH2?qr_e6{Z literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2 b/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEluUlYIw.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..6f232c38a17ecea6607432d096a52b3c0ce4fb3a GIT binary patch literal 26644 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2 b/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEm-Ul.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a3e5aef7c93b6334a03923067da54adb1e025619 GIT binary patch literal 24652 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 TS>*;jf81#>o`iG#8mbKdV$}U= literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2 b/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEmOUlYIw.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f73f27d6e1a1f8ae9f9da42274083f7543d85513 GIT binary patch literal 10704 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 CEy7m- literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2 b/assets/external/fonts.gstatic.com/s/robotomono/v23/L0xdDF4xlVMF-BfR8bXMIjhOsXG-q2oeuFoqFrlnAIe2Imhk1T8rbociImtEn-UlYIw.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..135d06e00d05b590861cd226b3bbe781f4940952 GIT binary patch literal 14288 zcmV;>H!sL{Pew8T0RR9105{M85&!@I09+^l05@p>0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/external/unpkg.com/mermaid@10.7.0/dist/mermaid.min.js b/assets/external/unpkg.com/mermaid@10.7.0/dist/mermaid.min.js new file mode 100644 index 000000000..a41e9ef9b --- /dev/null +++ b/assets/external/unpkg.com/mermaid@10.7.0/dist/mermaid.min.js @@ -0,0 +1,1642 @@ +(function(SL,X0){typeof exports=="object"&&typeof module<"u"?module.exports=X0():typeof define=="function"&&define.amd?define(X0):(SL=typeof globalThis<"u"?globalThis:SL||self,SL.mermaid=X0())})(this,function(){"use strict";function SL(i){for(var a=[],f=1;f=Nt?V:""+Array(Nt+1-jt.length).join(Dt)+V},yt={s:pt,z:function(V){var Nt=-V.utcOffset(),Dt=Math.abs(Nt),jt=Math.floor(Dt/60),Ct=Dt%60;return(Nt<=0?"+":"-")+pt(jt,2,"0")+":"+pt(Ct,2,"0")},m:function V(Nt,Dt){if(Nt.date()1)return V(_t[0])}else{var xt=Nt.name;gt[xt]=Nt,Ct=xt}return!jt&&Ct&&(mt=Ct),Ct||!jt&&mt},Z=function(V,Nt){if(ht(V))return V.clone();var Dt=typeof Nt=="object"?Nt:{};return Dt.date=V,Dt.args=arguments,new Y(Dt)},ft=yt;ft.l=bt,ft.i=ht,ft.w=function(V,Nt){return Z(V,{locale:Nt.$L,utc:Nt.$u,x:Nt.$x,$offset:Nt.$offset})};var Y=function(){function V(Dt){this.$L=bt(Dt.locale,null,!0),this.parse(Dt)}var Nt=V.prototype;return Nt.parse=function(Dt){this.$d=function(jt){var Ct=jt.date,Ft=jt.utc;if(Ct===null)return new Date(NaN);if(ft.u(Ct))return new Date;if(Ct instanceof Date)return new Date(Ct);if(typeof Ct=="string"&&!/Z$/i.test(Ct)){var _t=Ct.match(rt);if(_t){var xt=_t[2]-1||0,Gt=(_t[7]||"0").substring(0,3);return Ft?new Date(Date.UTC(_t[1],xt,_t[3]||1,_t[4]||0,_t[5]||0,_t[6]||0,Gt)):new Date(_t[1],xt,_t[3]||1,_t[4]||0,_t[5]||0,_t[6]||0,Gt)}}return new Date(Ct)}(Dt),this.$x=Dt.x||{},this.init()},Nt.init=function(){var Dt=this.$d;this.$y=Dt.getFullYear(),this.$M=Dt.getMonth(),this.$D=Dt.getDate(),this.$W=Dt.getDay(),this.$H=Dt.getHours(),this.$m=Dt.getMinutes(),this.$s=Dt.getSeconds(),this.$ms=Dt.getMilliseconds()},Nt.$utils=function(){return ft},Nt.isValid=function(){return this.$d.toString()!==X},Nt.isSame=function(Dt,jt){var Ct=Z(Dt);return this.startOf(jt)<=Ct&&Ct<=this.endOf(jt)},Nt.isAfter=function(Dt,jt){return Z(Dt){},debug:(...i)=>{},info:(...i)=>{},warn:(...i)=>{},error:(...i)=>{},fatal:(...i)=>{}},s0t=function(i="fatal"){let a=wx.fatal;typeof i=="string"?(i=i.toLowerCase(),i in wx&&(a=wx[i])):typeof i=="number"&&(a=i),Wt.trace=()=>{},Wt.debug=()=>{},Wt.info=()=>{},Wt.warn=()=>{},Wt.error=()=>{},Wt.fatal=()=>{},a<=wx.fatal&&(Wt.fatal=console.error?console.error.bind(console,$w("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",$w("FATAL"))),a<=wx.error&&(Wt.error=console.error?console.error.bind(console,$w("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",$w("ERROR"))),a<=wx.warn&&(Wt.warn=console.warn?console.warn.bind(console,$w("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",$w("WARN"))),a<=wx.info&&(Wt.info=console.info?console.info.bind(console,$w("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",$w("INFO"))),a<=wx.debug&&(Wt.debug=console.debug?console.debug.bind(console,$w("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",$w("DEBUG"))),a<=wx.trace&&(Wt.trace=console.debug?console.debug.bind(console,$w("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",$w("TRACE")))},$w=i=>`%c${Q0().format("ss.SSS")} : ${i} : `;var a0t={};Object.defineProperty(a0t,"__esModule",{value:!0});var c8=a0t.sanitizeUrl=void 0,KTe=/^([^\w]*)(javascript|data|vbscript)/im,WTe=/&#(\w+)(^\w|;)?/g,YTe=/&(newline|tab);/gi,XTe=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,QTe=/^.+(:|:)/gim,JTe=[".","/"];function ZTe(i){return JTe.indexOf(i[0])>-1}function t9e(i){return i.replace(WTe,function(a,f){return String.fromCharCode(f)})}function e9e(i){var a=t9e(i||"").replace(YTe,"").replace(XTe,"").trim();if(!a)return"about:blank";if(ZTe(a))return a;var f=a.match(QTe);if(!f)return a;var g=f[0];return KTe.test(g)?"about:blank":a}c8=a0t.sanitizeUrl=e9e;function QK(i,a){return i==null||a==null?NaN:ia?1:i>=a?0:NaN}function n9e(i,a){return i==null||a==null?NaN:ai?1:a>=i?0:NaN}function o0t(i){let a,f,g;i.length!==2?(a=QK,f=(E,_)=>QK(i(E),_),g=(E,_)=>i(E)-_):(a=i===QK||i===n9e?i:r9e,f=i,g=i);function w(E,_,S=0,I=E.length){if(S>>1;f(E[B],_)<0?S=B+1:I=B}while(S>>1;f(E[B],_)<=0?S=B+1:I=B}while(SS&&g(E[B-1],_)>-g(E[B],_)?B-1:B}return{left:w,center:b,right:v}}function r9e(){return 0}function i9e(i){return i===null?NaN:+i}const s9e=o0t(QK).right;o0t(i9e).center;const a9e=s9e;class cOt extends Map{constructor(a,f=u9e){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:f}}),a!=null)for(const[g,w]of a)this.set(g,w)}get(a){return super.get(uOt(this,a))}has(a){return super.has(uOt(this,a))}set(a,f){return super.set(o9e(this,a),f)}delete(a){return super.delete(c9e(this,a))}}function uOt({_intern:i,_key:a},f){const g=a(f);return i.has(g)?i.get(g):f}function o9e({_intern:i,_key:a},f){const g=a(f);return i.has(g)?i.get(g):(i.set(g,f),f)}function c9e({_intern:i,_key:a},f){const g=a(f);return i.has(g)&&(f=i.get(g),i.delete(g)),f}function u9e(i){return i!==null&&typeof i=="object"?i.valueOf():i}const l9e=Math.sqrt(50),h9e=Math.sqrt(10),f9e=Math.sqrt(2);function JK(i,a,f){const g=(a-i)/Math.max(0,f),w=Math.floor(Math.log10(g)),v=g/Math.pow(10,w),b=v>=l9e?10:v>=h9e?5:v>=f9e?2:1;let E,_,S;return w<0?(S=Math.pow(10,-w)/b,E=Math.round(i*S),_=Math.round(a*S),E/Sa&&--_,S=-S):(S=Math.pow(10,w)*b,E=Math.round(i/S),_=Math.round(a/S),E*Sa&&--_),_0))return[];if(i===a)return[i];const g=a=w))return[];const E=v-w+1,_=new Array(E);if(g)if(b<0)for(let S=0;S=g)&&(f=g);else{let g=-1;for(let w of i)(w=a(w,++g,i))!=null&&(f=w)&&(f=w)}return f}function p9e(i,a){let f;if(a===void 0)for(const g of i)g!=null&&(f>g||f===void 0&&g>=g)&&(f=g);else{let g=-1;for(let w of i)(w=a(w,++g,i))!=null&&(f>w||f===void 0&&w>=w)&&(f=w)}return f}function b9e(i,a,f){i=+i,a=+a,f=(w=arguments.length)<2?(a=i,i=0,1):w<3?1:+f;for(var g=-1,w=Math.max(0,Math.ceil((a-i)/f))|0,v=new Array(w);++g+i(a)}function x9e(i,a){return a=Math.max(0,i.bandwidth()-a*2)/2,i.round()&&(a=Math.round(a)),f=>+i(f)+a}function k9e(){return!this.__axis}function hOt(i,a){var f=[],g=null,w=null,v=6,b=6,E=3,_=typeof window<"u"&&window.devicePixelRatio>1?0:.5,S=i===ZK||i===tW?-1:1,I=i===tW||i===l0t?"x":"y",B=i===ZK||i===h0t?m9e:v9e;function F(R){var q=g??(a.ticks?a.ticks.apply(a,f):a.domain()),X=w??(a.tickFormat?a.tickFormat.apply(a,f):w9e),rt=Math.max(v,0)+E,at=a.range(),ut=+at[0]+_,pt=+at[at.length-1]+_,yt=(a.bandwidth?x9e:y9e)(a.copy(),_),mt=R.selection?R.selection():R,gt=mt.selectAll(".domain").data([null]),ht=mt.selectAll(".tick").data(q,a).order(),bt=ht.exit(),Z=ht.enter().append("g").attr("class","tick"),ft=ht.select("line"),Y=ht.select("text");gt=gt.merge(gt.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),ht=ht.merge(Z),ft=ft.merge(Z.append("line").attr("stroke","currentColor").attr(I+"2",S*v)),Y=Y.merge(Z.append("text").attr("fill","currentColor").attr(I,S*rt).attr("dy",i===ZK?"0em":i===h0t?"0.71em":"0.32em")),R!==mt&&(gt=gt.transition(R),ht=ht.transition(R),ft=ft.transition(R),Y=Y.transition(R),bt=bt.transition(R).attr("opacity",lOt).attr("transform",function(Et){return isFinite(Et=yt(Et))?B(Et+_):this.getAttribute("transform")}),Z.attr("opacity",lOt).attr("transform",function(Et){var V=this.parentNode.__axis;return B((V&&isFinite(V=V(Et))?V:yt(Et))+_)})),bt.remove(),gt.attr("d",i===tW||i===l0t?b?"M"+S*b+","+ut+"H"+_+"V"+pt+"H"+S*b:"M"+_+","+ut+"V"+pt:b?"M"+ut+","+S*b+"V"+_+"H"+pt+"V"+S*b:"M"+ut+","+_+"H"+pt),ht.attr("opacity",1).attr("transform",function(Et){return B(yt(Et)+_)}),ft.attr(I+"2",S*v),Y.attr(I,S*rt).text(X),mt.filter(k9e).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",i===l0t?"start":i===tW?"end":"middle"),mt.each(function(){this.__axis=yt})}return F.scale=function(R){return arguments.length?(a=R,F):a},F.ticks=function(){return f=Array.from(arguments),F},F.tickArguments=function(R){return arguments.length?(f=R==null?[]:Array.from(R),F):f.slice()},F.tickValues=function(R){return arguments.length?(g=R==null?null:Array.from(R),F):g&&g.slice()},F.tickFormat=function(R){return arguments.length?(w=R,F):w},F.tickSize=function(R){return arguments.length?(v=b=+R,F):v},F.tickSizeInner=function(R){return arguments.length?(v=+R,F):v},F.tickSizeOuter=function(R){return arguments.length?(b=+R,F):b},F.tickPadding=function(R){return arguments.length?(E=+R,F):E},F.offset=function(R){return arguments.length?(_=+R,F):_},F}function E9e(i){return hOt(ZK,i)}function T9e(i){return hOt(h0t,i)}var C9e={value:()=>{}};function fOt(){for(var i=0,a=arguments.length,f={},g;i=0&&(g=f.slice(w+1),f=f.slice(0,w)),f&&!a.hasOwnProperty(f))throw new Error("unknown type: "+f);return{type:f,name:g}})}eW.prototype=fOt.prototype={constructor:eW,on:function(i,a){var f=this._,g=_9e(i+"",f),w,v=-1,b=g.length;if(arguments.length<2){for(;++v0)for(var f=new Array(w),g=0,w,v;g=0&&(a=i.slice(0,f))!=="xmlns"&&(i=i.slice(f+1)),gOt.hasOwnProperty(a)?{space:gOt[a],local:i}:i}function A9e(i){return function(){var a=this.ownerDocument,f=this.namespaceURI;return f===f0t&&a.documentElement.namespaceURI===f0t?a.createElement(i):a.createElementNS(f,i)}}function L9e(i){return function(){return this.ownerDocument.createElementNS(i.space,i.local)}}function pOt(i){var a=nW(i);return(a.local?L9e:A9e)(a)}function M9e(){}function d0t(i){return i==null?M9e:function(){return this.querySelector(i)}}function D9e(i){typeof i!="function"&&(i=d0t(i));for(var a=this._groups,f=a.length,g=new Array(f),w=0;w=pt&&(pt=ut+1);!(mt=rt[pt])&&++pt=0;)(b=g[w])&&(v&&b.compareDocumentPosition(v)^4&&v.parentNode.insertBefore(b,v),v=b);return this}function eCe(i){i||(i=nCe);function a(B,F){return B&&F?i(B.__data__,F.__data__):!B-!F}for(var f=this._groups,g=f.length,w=new Array(g),v=0;va?1:i>=a?0:NaN}function rCe(){var i=arguments[0];return arguments[0]=this,i.apply(null,arguments),this}function iCe(){return Array.from(this)}function sCe(){for(var i=this._groups,a=0,f=i.length;a1?this.each((a==null?bCe:typeof a=="function"?mCe:wCe)(i,a,f??"")):AL(this.node(),i)}function AL(i,a){return i.style.getPropertyValue(a)||xOt(i).getComputedStyle(i,null).getPropertyValue(a)}function yCe(i){return function(){delete this[i]}}function xCe(i,a){return function(){this[i]=a}}function kCe(i,a){return function(){var f=a.apply(this,arguments);f==null?delete this[i]:this[i]=f}}function ECe(i,a){return arguments.length>1?this.each((a==null?yCe:typeof a=="function"?kCe:xCe)(i,a)):this.node()[i]}function kOt(i){return i.trim().split(/^|\s+/)}function g0t(i){return i.classList||new EOt(i)}function EOt(i){this._node=i,this._names=kOt(i.getAttribute("class")||"")}EOt.prototype={add:function(i){var a=this._names.indexOf(i);a<0&&(this._names.push(i),this._node.setAttribute("class",this._names.join(" ")))},remove:function(i){var a=this._names.indexOf(i);a>=0&&(this._names.splice(a,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(i){return this._names.indexOf(i)>=0}};function TOt(i,a){for(var f=g0t(i),g=-1,w=a.length;++g=0&&(f=a.slice(g+1),a=a.slice(0,g)),{type:a,name:f}})}function QCe(i){return function(){var a=this.__on;if(a){for(var f=0,g=-1,w=a.length,v;f>8&15|a>>4&240,a>>4&15|a&240,(a&15)<<4|a&15,1):f===8?aW(a>>24&255,a>>16&255,a>>8&255,(a&255)/255):f===4?aW(a>>12&15|a>>8&240,a>>8&15|a>>4&240,a>>4&15|a&240,((a&15)<<4|a&15)/255):null):(a=a_e.exec(i))?new J0(a[1],a[2],a[3],1):(a=o_e.exec(i))?new J0(a[1]*255/100,a[2]*255/100,a[3]*255/100,1):(a=c_e.exec(i))?aW(a[1],a[2],a[3],a[4]):(a=u_e.exec(i))?aW(a[1]*255/100,a[2]*255/100,a[3]*255/100,a[4]):(a=l_e.exec(i))?NOt(a[1],a[2]/100,a[3]/100,1):(a=h_e.exec(i))?NOt(a[1],a[2]/100,a[3]/100,a[4]):AOt.hasOwnProperty(i)?DOt(AOt[i]):i==="transparent"?new J0(NaN,NaN,NaN,0):null}function DOt(i){return new J0(i>>16&255,i>>8&255,i&255,1)}function aW(i,a,f,g){return g<=0&&(i=a=f=NaN),new J0(i,a,f,g)}function IOt(i){return i instanceof ZT||(i=t9(i)),i?(i=i.rgb(),new J0(i.r,i.g,i.b,i.opacity)):new J0}function b0t(i,a,f,g){return arguments.length===1?IOt(i):new J0(i,a,f,g??1)}function J0(i,a,f,g){this.r=+i,this.g=+a,this.b=+f,this.opacity=+g}KN(J0,b0t,iW(ZT,{brighter(i){return i=i==null?sW:Math.pow(sW,i),new J0(this.r*i,this.g*i,this.b*i,this.opacity)},darker(i){return i=i==null?WN:Math.pow(WN,i),new J0(this.r*i,this.g*i,this.b*i,this.opacity)},rgb(){return this},clamp(){return new J0(e9(this.r),e9(this.g),e9(this.b),oW(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:OOt,formatHex:OOt,formatHex8:g_e,formatRgb:POt,toString:POt}));function OOt(){return`#${n9(this.r)}${n9(this.g)}${n9(this.b)}`}function g_e(){return`#${n9(this.r)}${n9(this.g)}${n9(this.b)}${n9((isNaN(this.opacity)?1:this.opacity)*255)}`}function POt(){const i=oW(this.opacity);return`${i===1?"rgb(":"rgba("}${e9(this.r)}, ${e9(this.g)}, ${e9(this.b)}${i===1?")":`, ${i})`}`}function oW(i){return isNaN(i)?1:Math.max(0,Math.min(1,i))}function e9(i){return Math.max(0,Math.min(255,Math.round(i)||0))}function n9(i){return i=e9(i),(i<16?"0":"")+i.toString(16)}function NOt(i,a,f,g){return g<=0?i=a=f=NaN:f<=0||f>=1?i=a=NaN:a<=0&&(i=NaN),new Rv(i,a,f,g)}function FOt(i){if(i instanceof Rv)return new Rv(i.h,i.s,i.l,i.opacity);if(i instanceof ZT||(i=t9(i)),!i)return new Rv;if(i instanceof Rv)return i;i=i.rgb();var a=i.r/255,f=i.g/255,g=i.b/255,w=Math.min(a,f,g),v=Math.max(a,f,g),b=NaN,E=v-w,_=(v+w)/2;return E?(a===v?b=(f-g)/E+(f0&&_<1?0:b,new Rv(b,E,_,i.opacity)}function p_e(i,a,f,g){return arguments.length===1?FOt(i):new Rv(i,a,f,g??1)}function Rv(i,a,f,g){this.h=+i,this.s=+a,this.l=+f,this.opacity=+g}KN(Rv,p_e,iW(ZT,{brighter(i){return i=i==null?sW:Math.pow(sW,i),new Rv(this.h,this.s,this.l*i,this.opacity)},darker(i){return i=i==null?WN:Math.pow(WN,i),new Rv(this.h,this.s,this.l*i,this.opacity)},rgb(){var i=this.h%360+(this.h<0)*360,a=isNaN(i)||isNaN(this.s)?0:this.s,f=this.l,g=f+(f<.5?f:1-f)*a,w=2*f-g;return new J0(w0t(i>=240?i-240:i+120,w,g),w0t(i,w,g),w0t(i<120?i+240:i-120,w,g),this.opacity)},clamp(){return new Rv(BOt(this.h),cW(this.s),cW(this.l),oW(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const i=oW(this.opacity);return`${i===1?"hsl(":"hsla("}${BOt(this.h)}, ${cW(this.s)*100}%, ${cW(this.l)*100}%${i===1?")":`, ${i})`}`}}));function BOt(i){return i=(i||0)%360,i<0?i+360:i}function cW(i){return Math.max(0,Math.min(1,i||0))}function w0t(i,a,f){return(i<60?a+(f-a)*i/60:i<180?f:i<240?a+(f-a)*(240-i)/60:a)*255}const b_e=Math.PI/180,w_e=180/Math.PI,uW=18,ROt=.96422,jOt=1,$Ot=.82521,zOt=4/29,ML=6/29,qOt=3*ML*ML,m_e=ML*ML*ML;function HOt(i){if(i instanceof J3)return new J3(i.l,i.a,i.b,i.opacity);if(i instanceof mx)return VOt(i);i instanceof J0||(i=IOt(i));var a=x0t(i.r),f=x0t(i.g),g=x0t(i.b),w=m0t((.2225045*a+.7168786*f+.0606169*g)/jOt),v,b;return a===f&&f===g?v=b=w:(v=m0t((.4360747*a+.3850649*f+.1430804*g)/ROt),b=m0t((.0139322*a+.0971045*f+.7141733*g)/$Ot)),new J3(116*w-16,500*(v-w),200*(w-b),i.opacity)}function v_e(i,a,f,g){return arguments.length===1?HOt(i):new J3(i,a,f,g??1)}function J3(i,a,f,g){this.l=+i,this.a=+a,this.b=+f,this.opacity=+g}KN(J3,v_e,iW(ZT,{brighter(i){return new J3(this.l+uW*(i??1),this.a,this.b,this.opacity)},darker(i){return new J3(this.l-uW*(i??1),this.a,this.b,this.opacity)},rgb(){var i=(this.l+16)/116,a=isNaN(this.a)?i:i+this.a/500,f=isNaN(this.b)?i:i-this.b/200;return a=ROt*v0t(a),i=jOt*v0t(i),f=$Ot*v0t(f),new J0(y0t(3.1338561*a-1.6168667*i-.4906146*f),y0t(-.9787684*a+1.9161415*i+.033454*f),y0t(.0719453*a-.2289914*i+1.4052427*f),this.opacity)}}));function m0t(i){return i>m_e?Math.pow(i,1/3):i/qOt+zOt}function v0t(i){return i>ML?i*i*i:qOt*(i-zOt)}function y0t(i){return 255*(i<=.0031308?12.92*i:1.055*Math.pow(i,1/2.4)-.055)}function x0t(i){return(i/=255)<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4)}function y_e(i){if(i instanceof mx)return new mx(i.h,i.c,i.l,i.opacity);if(i instanceof J3||(i=HOt(i)),i.a===0&&i.b===0)return new mx(NaN,0()=>i;function UOt(i,a){return function(f){return i+f*a}}function x_e(i,a,f){return i=Math.pow(i,f),a=Math.pow(a,f)-i,f=1/f,function(g){return Math.pow(i+g*a,f)}}function k_e(i,a){var f=a-i;return f?UOt(i,f>180||f<-180?f-360*Math.round(f/360):f):lW(isNaN(i)?a:i)}function E_e(i){return(i=+i)==1?XN:function(a,f){return f-a?x_e(a,f,i):lW(isNaN(a)?f:a)}}function XN(i,a){var f=a-i;return f?UOt(i,f):lW(isNaN(i)?a:i)}const hW=function i(a){var f=E_e(a);function g(w,v){var b=f((w=b0t(w)).r,(v=b0t(v)).r),E=f(w.g,v.g),_=f(w.b,v.b),S=XN(w.opacity,v.opacity);return function(I){return w.r=b(I),w.g=E(I),w.b=_(I),w.opacity=S(I),w+""}}return g.gamma=i,g}(1);function T_e(i,a){a||(a=[]);var f=i?Math.min(a.length,i.length):0,g=a.slice(),w;return function(v){for(w=0;wf&&(v=a.slice(f,v),E[b]?E[b]+=v:E[++b]=v),(g=g[0])===(w=w[0])?E[b]?E[b]+=w:E[++b]=w:(E[++b]=null,_.push({i:b,x:jv(g,w)})),f=T0t.lastIndex;return f180?I+=360:I-S>180&&(S+=360),F.push({i:B.push(w(B)+"rotate(",null,g)-2,x:jv(S,I)})):I&&B.push(w(B)+"rotate("+I+g)}function E(S,I,B,F){S!==I?F.push({i:B.push(w(B)+"skewX(",null,g)-2,x:jv(S,I)}):I&&B.push(w(B)+"skewX("+I+g)}function _(S,I,B,F,R,q){if(S!==B||I!==F){var X=R.push(w(R)+"scale(",null,",",null,")");q.push({i:X-4,x:jv(S,B)},{i:X-2,x:jv(I,F)})}else(B!==1||F!==1)&&R.push(w(R)+"scale("+B+","+F+")")}return function(S,I){var B=[],F=[];return S=i(S),I=i(I),v(S.translateX,S.translateY,I.translateX,I.translateY,B,F),b(S.rotate,I.rotate,B,F),E(S.skewX,I.skewX,B,F),_(S.scaleX,S.scaleY,I.scaleX,I.scaleY,B,F),S=I=null,function(R){for(var q=-1,X=F.length,rt;++q=0&&i._call.call(void 0,a),i=i._next;--DL}function ZOt(){r9=(gW=tF.now())+pW,DL=QN=0;try{j_e()}finally{DL=0,z_e(),r9=0}}function $_e(){var i=tF.now(),a=i-gW;a>XOt&&(pW-=a,gW=i)}function z_e(){for(var i,a=dW,f,g=1/0;a;)a._call?(g>a._time&&(g=a._time),i=a,a=a._next):(f=a._next,a._next=null,a=i?i._next=f:dW=f);ZN=i,A0t(g)}function A0t(i){if(!DL){QN&&(QN=clearTimeout(QN));var a=i-r9;a>24?(i<1/0&&(QN=setTimeout(ZOt,i-tF.now()-pW)),JN&&(JN=clearInterval(JN))):(JN||(gW=tF.now(),JN=setInterval($_e,XOt)),DL=1,QOt(ZOt))}}function tPt(i,a,f){var g=new bW;return a=a==null?0:+a,g.restart(w=>{g.stop(),i(w+a)},a,f),g}var q_e=fOt("start","end","cancel","interrupt"),H_e=[],ePt=0,nPt=1,L0t=2,wW=3,rPt=4,M0t=5,mW=6;function vW(i,a,f,g,w,v){var b=i.__transition;if(!b)i.__transition={};else if(f in b)return;V_e(i,f,{name:a,index:g,group:w,on:q_e,tween:H_e,time:v.time,delay:v.delay,duration:v.duration,ease:v.ease,timer:null,state:ePt})}function D0t(i,a){var f=$v(i,a);if(f.state>ePt)throw new Error("too late; already scheduled");return f}function Z3(i,a){var f=$v(i,a);if(f.state>wW)throw new Error("too late; already running");return f}function $v(i,a){var f=i.__transition;if(!f||!(f=f[a]))throw new Error("transition not found");return f}function V_e(i,a,f){var g=i.__transition,w;g[a]=f,f.timer=JOt(v,0,f.time);function v(S){f.state=nPt,f.timer.restart(b,f.delay,f.time),f.delay<=S&&b(S-f.delay)}function b(S){var I,B,F,R;if(f.state!==nPt)return _();for(I in g)if(R=g[I],R.name===f.name){if(R.state===wW)return tPt(b);R.state===rPt?(R.state=mW,R.timer.stop(),R.on.call("interrupt",i,i.__data__,R.index,R.group),delete g[I]):+IL0t&&g.state=0&&(a=a.slice(0,f)),!a||a==="start"})}function xSe(i,a,f){var g,w,v=ySe(a)?D0t:Z3;return function(){var b=v(this,i),E=b.on;E!==g&&(w=(g=E).copy()).on(a,f),b.on=w}}function kSe(i,a){var f=this._id;return arguments.length<2?$v(this.node(),f).on.on(i):this.each(xSe(f,i,a))}function ESe(i){return function(){var a=this.parentNode;for(var f in this.__transition)if(+f!==i)return;a&&a.removeChild(this)}}function TSe(){return this.on("end.remove",ESe(this._id))}function CSe(i){var a=this._name,f=this._id;typeof i!="function"&&(i=d0t(i));for(var g=this._groups,w=g.length,v=new Array(w),b=0;b=0))throw new Error(`invalid digits: ${i}`);if(a>15)return oPt;const f=10**a;return function(g){this._+=g[0];for(let w=1,v=g.length;wi9)if(!(Math.abs(B*_-S*I)>i9)||!v)this._append`L${this._x1=a},${this._y1=f}`;else{let R=g-b,q=w-E,X=_*_+S*S,rt=R*R+q*q,at=Math.sqrt(X),ut=Math.sqrt(F),pt=v*Math.tan((O0t-Math.acos((X+F-rt)/(2*at*ut)))/2),yt=pt/ut,mt=pt/at;Math.abs(yt-1)>i9&&this._append`L${a+yt*I},${f+yt*B}`,this._append`A${v},${v},0,0,${+(B*R>I*q)},${this._x1=a+mt*_},${this._y1=f+mt*S}`}}arc(a,f,g,w,v,b){if(a=+a,f=+f,g=+g,b=!!b,g<0)throw new Error(`negative radius: ${g}`);let E=g*Math.cos(w),_=g*Math.sin(w),S=a+E,I=f+_,B=1^b,F=b?w-v:v-w;this._x1===null?this._append`M${S},${I}`:(Math.abs(this._x1-S)>i9||Math.abs(this._y1-I)>i9)&&this._append`L${S},${I}`,g&&(F<0&&(F=F%P0t+P0t),F>XSe?this._append`A${g},${g},0,1,${B},${a-E},${f-_}A${g},${g},0,1,${B},${this._x1=S},${this._y1=I}`:F>i9&&this._append`A${g},${g},0,${+(F>=O0t)},${B},${this._x1=a+g*Math.cos(v)},${this._y1=f+g*Math.sin(v)}`)}rect(a,f,g,w){this._append`M${this._x0=this._x1=+a},${this._y0=this._y1=+f}h${g=+g}v${+w}h${-g}Z`}toString(){return this._}};function ZSe(i){if(!i.ok)throw new Error(i.status+" "+i.statusText);return i.text()}function tAe(i,a){return fetch(i,a).then(ZSe)}function eAe(i){return(a,f)=>tAe(a,f).then(g=>new DOMParser().parseFromString(g,i))}var nAe=eAe("image/svg+xml");function rAe(i){return Math.abs(i=Math.round(i))>=1e21?i.toLocaleString("en").replace(/,/g,""):i.toString(10)}function yW(i,a){if((f=(i=a?i.toExponential(a-1):i.toExponential()).indexOf("e"))<0)return null;var f,g=i.slice(0,f);return[g.length>1?g[0]+g.slice(2):g,+i.slice(f+1)]}function IL(i){return i=yW(Math.abs(i)),i?i[1]:NaN}function iAe(i,a){return function(f,g){for(var w=f.length,v=[],b=0,E=i[0],_=0;w>0&&E>0&&(_+E+1>g&&(E=Math.max(1,g-_)),v.push(f.substring(w-=E,w+E)),!((_+=E+1)>g));)E=i[b=(b+1)%i.length];return v.reverse().join(a)}}function sAe(i){return function(a){return a.replace(/[0-9]/g,function(f){return i[+f]})}}var aAe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function xW(i){if(!(a=aAe.exec(i)))throw new Error("invalid format: "+i);var a;return new N0t({fill:a[1],align:a[2],sign:a[3],symbol:a[4],zero:a[5],width:a[6],comma:a[7],precision:a[8]&&a[8].slice(1),trim:a[9],type:a[10]})}xW.prototype=N0t.prototype;function N0t(i){this.fill=i.fill===void 0?" ":i.fill+"",this.align=i.align===void 0?">":i.align+"",this.sign=i.sign===void 0?"-":i.sign+"",this.symbol=i.symbol===void 0?"":i.symbol+"",this.zero=!!i.zero,this.width=i.width===void 0?void 0:+i.width,this.comma=!!i.comma,this.precision=i.precision===void 0?void 0:+i.precision,this.trim=!!i.trim,this.type=i.type===void 0?"":i.type+""}N0t.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 oAe(i){t:for(var a=i.length,f=1,g=-1,w;f0&&(g=0);break}return g>0?i.slice(0,g)+i.slice(w+1):i}var cPt;function cAe(i,a){var f=yW(i,a);if(!f)return i+"";var g=f[0],w=f[1],v=w-(cPt=Math.max(-8,Math.min(8,Math.floor(w/3)))*3)+1,b=g.length;return v===b?g:v>b?g+new Array(v-b+1).join("0"):v>0?g.slice(0,v)+"."+g.slice(v):"0."+new Array(1-v).join("0")+yW(i,Math.max(0,a+v-1))[0]}function uPt(i,a){var f=yW(i,a);if(!f)return i+"";var g=f[0],w=f[1];return w<0?"0."+new Array(-w).join("0")+g:g.length>w+1?g.slice(0,w+1)+"."+g.slice(w+1):g+new Array(w-g.length+2).join("0")}const lPt={"%":(i,a)=>(i*100).toFixed(a),b:i=>Math.round(i).toString(2),c:i=>i+"",d:rAe,e:(i,a)=>i.toExponential(a),f:(i,a)=>i.toFixed(a),g:(i,a)=>i.toPrecision(a),o:i=>Math.round(i).toString(8),p:(i,a)=>uPt(i*100,a),r:uPt,s:cAe,X:i=>Math.round(i).toString(16).toUpperCase(),x:i=>Math.round(i).toString(16)};function hPt(i){return i}var fPt=Array.prototype.map,dPt=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function uAe(i){var a=i.grouping===void 0||i.thousands===void 0?hPt:iAe(fPt.call(i.grouping,Number),i.thousands+""),f=i.currency===void 0?"":i.currency[0]+"",g=i.currency===void 0?"":i.currency[1]+"",w=i.decimal===void 0?".":i.decimal+"",v=i.numerals===void 0?hPt:sAe(fPt.call(i.numerals,String)),b=i.percent===void 0?"%":i.percent+"",E=i.minus===void 0?"−":i.minus+"",_=i.nan===void 0?"NaN":i.nan+"";function S(B){B=xW(B);var F=B.fill,R=B.align,q=B.sign,X=B.symbol,rt=B.zero,at=B.width,ut=B.comma,pt=B.precision,yt=B.trim,mt=B.type;mt==="n"?(ut=!0,mt="g"):lPt[mt]||(pt===void 0&&(pt=12),yt=!0,mt="g"),(rt||F==="0"&&R==="=")&&(rt=!0,F="0",R="=");var gt=X==="$"?f:X==="#"&&/[boxX]/.test(mt)?"0"+mt.toLowerCase():"",ht=X==="$"?g:/[%p]/.test(mt)?b:"",bt=lPt[mt],Z=/[defgprs%]/.test(mt);pt=pt===void 0?6:/[gprs]/.test(mt)?Math.max(1,Math.min(21,pt)):Math.max(0,Math.min(20,pt));function ft(Y){var Et=gt,V=ht,Nt,Dt,jt;if(mt==="c")V=bt(Y)+V,Y="";else{Y=+Y;var Ct=Y<0||1/Y<0;if(Y=isNaN(Y)?_:bt(Math.abs(Y),pt),yt&&(Y=oAe(Y)),Ct&&+Y==0&&q!=="+"&&(Ct=!1),Et=(Ct?q==="("?q:E:q==="-"||q==="("?"":q)+Et,V=(mt==="s"?dPt[8+cPt/3]:"")+V+(Ct&&q==="("?")":""),Z){for(Nt=-1,Dt=Y.length;++Ntjt||jt>57){V=(jt===46?w+Y.slice(Nt+1):Y.slice(Nt))+V,Y=Y.slice(0,Nt);break}}}ut&&!rt&&(Y=a(Y,1/0));var Ft=Et.length+Y.length+V.length,_t=Ft>1)+Et+Y+V+_t.slice(Ft);break;default:Y=_t+Et+Y+V;break}return v(Y)}return ft.toString=function(){return B+""},ft}function I(B,F){var R=S((B=xW(B),B.type="f",B)),q=Math.max(-8,Math.min(8,Math.floor(IL(F)/3)))*3,X=Math.pow(10,-q),rt=dPt[8+q/3];return function(at){return R(X*at)+rt}}return{format:S,formatPrefix:I}}var kW,gPt,pPt;lAe({thousands:",",grouping:[3],currency:["$",""]});function lAe(i){return kW=uAe(i),gPt=kW.format,pPt=kW.formatPrefix,kW}function hAe(i){return Math.max(0,-IL(Math.abs(i)))}function fAe(i,a){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(IL(a)/3)))*3-IL(Math.abs(i)))}function dAe(i,a){return i=Math.abs(i),a=Math.abs(a)-i,Math.max(0,IL(a)-IL(i))+1}function EW(i,a){switch(arguments.length){case 0:break;case 1:this.range(i);break;default:this.range(a).domain(i);break}return this}const bPt=Symbol("implicit");function TW(){var i=new cOt,a=[],f=[],g=bPt;function w(v){let b=i.get(v);if(b===void 0){if(g!==bPt)return g;i.set(v,b=a.push(v)-1)}return f[b%f.length]}return w.domain=function(v){if(!arguments.length)return a.slice();a=[],i=new cOt;for(const b of v)i.has(b)||i.set(b,a.push(b)-1);return w},w.range=function(v){return arguments.length?(f=Array.from(v),w):f.slice()},w.unknown=function(v){return arguments.length?(g=v,w):g},w.copy=function(){return TW(a,f).unknown(g)},EW.apply(w,arguments),w}function F0t(){var i=TW().unknown(void 0),a=i.domain,f=i.range,g=0,w=1,v,b,E=!1,_=0,S=0,I=.5;delete i.unknown;function B(){var F=a().length,R=wa&&(f=i,i=a,a=f),function(g){return Math.max(i,Math.min(a,g))}}function wAe(i,a,f){var g=i[0],w=i[1],v=a[0],b=a[1];return w2?mAe:wAe,_=S=null,B}function B(F){return F==null||isNaN(F=+F)?v:(_||(_=E(i.map(g),a,f)))(g(b(F)))}return B.invert=function(F){return b(w((S||(S=E(a,i.map(g),jv)))(F)))},B.domain=function(F){return arguments.length?(i=Array.from(F,pAe),I()):i.slice()},B.range=function(F){return arguments.length?(a=Array.from(F),I()):a.slice()},B.rangeRound=function(F){return a=Array.from(F),f=D_e,I()},B.clamp=function(F){return arguments.length?(b=F?!0:OL,I()):b!==OL},B.interpolate=function(F){return arguments.length?(f=F,I()):f},B.unknown=function(F){return arguments.length?(v=F,B):v},function(F,R){return g=F,w=R,I()}}function vPt(){return vAe()(OL,OL)}function yAe(i,a,f,g){var w=u0t(i,a,f),v;switch(g=xW(g??",f"),g.type){case"s":{var b=Math.max(Math.abs(i),Math.abs(a));return g.precision==null&&!isNaN(v=fAe(w,b))&&(g.precision=v),pPt(g,b)}case"":case"e":case"g":case"p":case"r":{g.precision==null&&!isNaN(v=dAe(w,Math.max(Math.abs(i),Math.abs(a))))&&(g.precision=v-(g.type==="e"));break}case"f":case"%":{g.precision==null&&!isNaN(v=hAe(w))&&(g.precision=v-(g.type==="%")*2);break}}return gPt(g)}function xAe(i){var a=i.domain;return i.ticks=function(f){var g=a();return d9e(g[0],g[g.length-1],f??10)},i.tickFormat=function(f,g){var w=a();return yAe(w[0],w[w.length-1],f??10,g)},i.nice=function(f){f==null&&(f=10);var g=a(),w=0,v=g.length-1,b=g[w],E=g[v],_,S,I=10;for(E0;){if(S=c0t(b,E,f),S===_)return g[w]=b,g[v]=E,a(g);if(S>0)b=Math.floor(b/S)*S,E=Math.ceil(E/S)*S;else if(S<0)b=Math.ceil(b*S)/S,E=Math.floor(E*S)/S;else break;_=S}return i},i}function PL(){var i=vPt();return i.copy=function(){return mPt(i,PL())},EW.apply(i,arguments),xAe(i)}function kAe(i,a){i=i.slice();var f=0,g=i.length-1,w=i[f],v=i[g],b;return v(i(v=new Date(+v)),v),w.ceil=v=>(i(v=new Date(v-1)),a(v,1),i(v),v),w.round=v=>{const b=w(v),E=w.ceil(v);return v-b(a(v=new Date(+v),b==null?1:Math.floor(b)),v),w.range=(v,b,E)=>{const _=[];if(v=w.ceil(v),E=E==null?1:Math.floor(E),!(v0))return _;let S;do _.push(S=new Date(+v)),a(v,E),i(v);while(SF1(b=>{if(b>=b)for(;i(b),!v(b);)b.setTime(b-1)},(b,E)=>{if(b>=b)if(E<0)for(;++E<=0;)for(;a(b,-1),!v(b););else for(;--E>=0;)for(;a(b,1),!v(b););}),f&&(w.count=(v,b)=>(R0t.setTime(+v),j0t.setTime(+b),i(R0t),i(j0t),Math.floor(f(R0t,j0t))),w.every=v=>(v=Math.floor(v),!isFinite(v)||!(v>0)?null:v>1?w.filter(g?b=>g(b)%v===0:b=>w.count(0,b)%v===0):w)),w}const NL=F1(()=>{},(i,a)=>{i.setTime(+i+a)},(i,a)=>a-i);NL.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?F1(a=>{a.setTime(Math.floor(a/i)*i)},(a,f)=>{a.setTime(+a+f*i)},(a,f)=>(f-a)/i):NL),NL.range;const xx=1e3,zw=xx*60,kx=zw*60,Ex=kx*24,$0t=Ex*7,yPt=Ex*30,z0t=Ex*365,u8=F1(i=>{i.setTime(i-i.getMilliseconds())},(i,a)=>{i.setTime(+i+a*xx)},(i,a)=>(a-i)/xx,i=>i.getUTCSeconds());u8.range;const eF=F1(i=>{i.setTime(i-i.getMilliseconds()-i.getSeconds()*xx)},(i,a)=>{i.setTime(+i+a*zw)},(i,a)=>(a-i)/zw,i=>i.getMinutes());eF.range,F1(i=>{i.setUTCSeconds(0,0)},(i,a)=>{i.setTime(+i+a*zw)},(i,a)=>(a-i)/zw,i=>i.getUTCMinutes()).range;const nF=F1(i=>{i.setTime(i-i.getMilliseconds()-i.getSeconds()*xx-i.getMinutes()*zw)},(i,a)=>{i.setTime(+i+a*kx)},(i,a)=>(a-i)/kx,i=>i.getHours());nF.range,F1(i=>{i.setUTCMinutes(0,0,0)},(i,a)=>{i.setTime(+i+a*kx)},(i,a)=>(a-i)/kx,i=>i.getUTCHours()).range;const s9=F1(i=>i.setHours(0,0,0,0),(i,a)=>i.setDate(i.getDate()+a),(i,a)=>(a-i-(a.getTimezoneOffset()-i.getTimezoneOffset())*zw)/Ex,i=>i.getDate()-1);s9.range;const q0t=F1(i=>{i.setUTCHours(0,0,0,0)},(i,a)=>{i.setUTCDate(i.getUTCDate()+a)},(i,a)=>(a-i)/Ex,i=>i.getUTCDate()-1);q0t.range,F1(i=>{i.setUTCHours(0,0,0,0)},(i,a)=>{i.setUTCDate(i.getUTCDate()+a)},(i,a)=>(a-i)/Ex,i=>Math.floor(i/Ex)).range;function a9(i){return F1(a=>{a.setDate(a.getDate()-(a.getDay()+7-i)%7),a.setHours(0,0,0,0)},(a,f)=>{a.setDate(a.getDate()+f*7)},(a,f)=>(f-a-(f.getTimezoneOffset()-a.getTimezoneOffset())*zw)/$0t)}const rF=a9(0),iF=a9(1),xPt=a9(2),kPt=a9(3),o9=a9(4),EPt=a9(5),TPt=a9(6);rF.range,iF.range,xPt.range,kPt.range,o9.range,EPt.range,TPt.range;function c9(i){return F1(a=>{a.setUTCDate(a.getUTCDate()-(a.getUTCDay()+7-i)%7),a.setUTCHours(0,0,0,0)},(a,f)=>{a.setUTCDate(a.getUTCDate()+f*7)},(a,f)=>(f-a)/$0t)}const CPt=c9(0),CW=c9(1),EAe=c9(2),TAe=c9(3),FL=c9(4),CAe=c9(5),_Ae=c9(6);CPt.range,CW.range,EAe.range,TAe.range,FL.range,CAe.range,_Ae.range;const sF=F1(i=>{i.setDate(1),i.setHours(0,0,0,0)},(i,a)=>{i.setMonth(i.getMonth()+a)},(i,a)=>a.getMonth()-i.getMonth()+(a.getFullYear()-i.getFullYear())*12,i=>i.getMonth());sF.range,F1(i=>{i.setUTCDate(1),i.setUTCHours(0,0,0,0)},(i,a)=>{i.setUTCMonth(i.getUTCMonth()+a)},(i,a)=>a.getUTCMonth()-i.getUTCMonth()+(a.getUTCFullYear()-i.getUTCFullYear())*12,i=>i.getUTCMonth()).range;const Tx=F1(i=>{i.setMonth(0,1),i.setHours(0,0,0,0)},(i,a)=>{i.setFullYear(i.getFullYear()+a)},(i,a)=>a.getFullYear()-i.getFullYear(),i=>i.getFullYear());Tx.every=i=>!isFinite(i=Math.floor(i))||!(i>0)?null:F1(a=>{a.setFullYear(Math.floor(a.getFullYear()/i)*i),a.setMonth(0,1),a.setHours(0,0,0,0)},(a,f)=>{a.setFullYear(a.getFullYear()+f*i)}),Tx.range;const u9=F1(i=>{i.setUTCMonth(0,1),i.setUTCHours(0,0,0,0)},(i,a)=>{i.setUTCFullYear(i.getUTCFullYear()+a)},(i,a)=>a.getUTCFullYear()-i.getUTCFullYear(),i=>i.getUTCFullYear());u9.every=i=>!isFinite(i=Math.floor(i))||!(i>0)?null:F1(a=>{a.setUTCFullYear(Math.floor(a.getUTCFullYear()/i)*i),a.setUTCMonth(0,1),a.setUTCHours(0,0,0,0)},(a,f)=>{a.setUTCFullYear(a.getUTCFullYear()+f*i)}),u9.range;function SAe(i,a,f,g,w,v){const b=[[u8,1,xx],[u8,5,5*xx],[u8,15,15*xx],[u8,30,30*xx],[v,1,zw],[v,5,5*zw],[v,15,15*zw],[v,30,30*zw],[w,1,kx],[w,3,3*kx],[w,6,6*kx],[w,12,12*kx],[g,1,Ex],[g,2,2*Ex],[f,1,$0t],[a,1,yPt],[a,3,3*yPt],[i,1,z0t]];function E(S,I,B){const F=Irt).right(b,F);if(R===b.length)return i.every(u0t(S/z0t,I/z0t,B));if(R===0)return NL.every(Math.max(u0t(S,I,B),1));const[q,X]=b[F/b[R-1][2]53)return null;"w"in Ae||(Ae.w=1),"Z"in Ae?(Dn=V0t(aF(Ae.y,0,1)),oe=Dn.getUTCDay(),Dn=oe>4||oe===0?CW.ceil(Dn):CW(Dn),Dn=q0t.offset(Dn,(Ae.V-1)*7),Ae.y=Dn.getUTCFullYear(),Ae.m=Dn.getUTCMonth(),Ae.d=Dn.getUTCDate()+(Ae.w+6)%7):(Dn=H0t(aF(Ae.y,0,1)),oe=Dn.getDay(),Dn=oe>4||oe===0?iF.ceil(Dn):iF(Dn),Dn=s9.offset(Dn,(Ae.V-1)*7),Ae.y=Dn.getFullYear(),Ae.m=Dn.getMonth(),Ae.d=Dn.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),oe="Z"in Ae?V0t(aF(Ae.y,0,1)).getUTCDay():H0t(aF(Ae.y,0,1)).getDay(),Ae.m=0,Ae.d="W"in Ae?(Ae.w+6)%7+Ae.W*7-(oe+5)%7:Ae.w+Ae.U*7-(oe+6)%7);return"Z"in Ae?(Ae.H+=Ae.Z/100|0,Ae.M+=Ae.Z%100,V0t(Ae)):H0t(Ae)}}function bt(me,Fe,Qt,Ae){for(var Se=0,Dn=Fe.length,oe=Qt.length,Pr,we;Se=oe)return-1;if(Pr=Fe.charCodeAt(Se++),Pr===37){if(Pr=Fe.charAt(Se++),we=mt[Pr in _Pt?Fe.charAt(Se++):Pr],!we||(Ae=we(me,Qt,Ae))<0)return-1}else if(Pr!=Qt.charCodeAt(Ae++))return-1}return Ae}function Z(me,Fe,Qt){var Ae=S.exec(Fe.slice(Qt));return Ae?(me.p=I.get(Ae[0].toLowerCase()),Qt+Ae[0].length):-1}function ft(me,Fe,Qt){var Ae=R.exec(Fe.slice(Qt));return Ae?(me.w=q.get(Ae[0].toLowerCase()),Qt+Ae[0].length):-1}function Y(me,Fe,Qt){var Ae=B.exec(Fe.slice(Qt));return Ae?(me.w=F.get(Ae[0].toLowerCase()),Qt+Ae[0].length):-1}function Et(me,Fe,Qt){var Ae=at.exec(Fe.slice(Qt));return Ae?(me.m=ut.get(Ae[0].toLowerCase()),Qt+Ae[0].length):-1}function V(me,Fe,Qt){var Ae=X.exec(Fe.slice(Qt));return Ae?(me.m=rt.get(Ae[0].toLowerCase()),Qt+Ae[0].length):-1}function Nt(me,Fe,Qt){return bt(me,a,Fe,Qt)}function Dt(me,Fe,Qt){return bt(me,f,Fe,Qt)}function jt(me,Fe,Qt){return bt(me,g,Fe,Qt)}function Ct(me){return b[me.getDay()]}function Ft(me){return v[me.getDay()]}function _t(me){return _[me.getMonth()]}function xt(me){return E[me.getMonth()]}function Gt(me){return w[+(me.getHours()>=12)]}function Be(me){return 1+~~(me.getMonth()/3)}function Ot(me){return b[me.getUTCDay()]}function vn(me){return v[me.getUTCDay()]}function Pe(me){return _[me.getUTCMonth()]}function Ee(me){return E[me.getUTCMonth()]}function nn(me){return w[+(me.getUTCHours()>=12)]}function sn(me){return 1+~~(me.getUTCMonth()/3)}return{format:function(me){var Fe=gt(me+="",pt);return Fe.toString=function(){return me},Fe},parse:function(me){var Fe=ht(me+="",!1);return Fe.toString=function(){return me},Fe},utcFormat:function(me){var Fe=gt(me+="",yt);return Fe.toString=function(){return me},Fe},utcParse:function(me){var Fe=ht(me+="",!0);return Fe.toString=function(){return me},Fe}}}var _Pt={"-":"",_:" ",0:"0"},kd=/^\s*\d+/,DAe=/^%/,IAe=/[\\^$*+?|[\]().{}]/g;function Xc(i,a,f){var g=i<0?"-":"",w=(g?-i:i)+"",v=w.length;return g+(v[a.toLowerCase(),f]))}function PAe(i,a,f){var g=kd.exec(a.slice(f,f+1));return g?(i.w=+g[0],f+g[0].length):-1}function NAe(i,a,f){var g=kd.exec(a.slice(f,f+1));return g?(i.u=+g[0],f+g[0].length):-1}function FAe(i,a,f){var g=kd.exec(a.slice(f,f+2));return g?(i.U=+g[0],f+g[0].length):-1}function BAe(i,a,f){var g=kd.exec(a.slice(f,f+2));return g?(i.V=+g[0],f+g[0].length):-1}function RAe(i,a,f){var g=kd.exec(a.slice(f,f+2));return g?(i.W=+g[0],f+g[0].length):-1}function SPt(i,a,f){var g=kd.exec(a.slice(f,f+4));return g?(i.y=+g[0],f+g[0].length):-1}function APt(i,a,f){var g=kd.exec(a.slice(f,f+2));return g?(i.y=+g[0]+(+g[0]>68?1900:2e3),f+g[0].length):-1}function jAe(i,a,f){var g=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(a.slice(f,f+6));return g?(i.Z=g[1]?0:-(g[2]+(g[3]||"00")),f+g[0].length):-1}function $Ae(i,a,f){var g=kd.exec(a.slice(f,f+1));return g?(i.q=g[0]*3-3,f+g[0].length):-1}function zAe(i,a,f){var g=kd.exec(a.slice(f,f+2));return g?(i.m=g[0]-1,f+g[0].length):-1}function LPt(i,a,f){var g=kd.exec(a.slice(f,f+2));return g?(i.d=+g[0],f+g[0].length):-1}function qAe(i,a,f){var g=kd.exec(a.slice(f,f+3));return g?(i.m=0,i.d=+g[0],f+g[0].length):-1}function MPt(i,a,f){var g=kd.exec(a.slice(f,f+2));return g?(i.H=+g[0],f+g[0].length):-1}function HAe(i,a,f){var g=kd.exec(a.slice(f,f+2));return g?(i.M=+g[0],f+g[0].length):-1}function VAe(i,a,f){var g=kd.exec(a.slice(f,f+2));return g?(i.S=+g[0],f+g[0].length):-1}function UAe(i,a,f){var g=kd.exec(a.slice(f,f+3));return g?(i.L=+g[0],f+g[0].length):-1}function GAe(i,a,f){var g=kd.exec(a.slice(f,f+6));return g?(i.L=Math.floor(g[0]/1e3),f+g[0].length):-1}function KAe(i,a,f){var g=DAe.exec(a.slice(f,f+1));return g?f+g[0].length:-1}function WAe(i,a,f){var g=kd.exec(a.slice(f));return g?(i.Q=+g[0],f+g[0].length):-1}function YAe(i,a,f){var g=kd.exec(a.slice(f));return g?(i.s=+g[0],f+g[0].length):-1}function DPt(i,a){return Xc(i.getDate(),a,2)}function XAe(i,a){return Xc(i.getHours(),a,2)}function QAe(i,a){return Xc(i.getHours()%12||12,a,2)}function JAe(i,a){return Xc(1+s9.count(Tx(i),i),a,3)}function IPt(i,a){return Xc(i.getMilliseconds(),a,3)}function ZAe(i,a){return IPt(i,a)+"000"}function tLe(i,a){return Xc(i.getMonth()+1,a,2)}function eLe(i,a){return Xc(i.getMinutes(),a,2)}function nLe(i,a){return Xc(i.getSeconds(),a,2)}function rLe(i){var a=i.getDay();return a===0?7:a}function iLe(i,a){return Xc(rF.count(Tx(i)-1,i),a,2)}function OPt(i){var a=i.getDay();return a>=4||a===0?o9(i):o9.ceil(i)}function sLe(i,a){return i=OPt(i),Xc(o9.count(Tx(i),i)+(Tx(i).getDay()===4),a,2)}function aLe(i){return i.getDay()}function oLe(i,a){return Xc(iF.count(Tx(i)-1,i),a,2)}function cLe(i,a){return Xc(i.getFullYear()%100,a,2)}function uLe(i,a){return i=OPt(i),Xc(i.getFullYear()%100,a,2)}function lLe(i,a){return Xc(i.getFullYear()%1e4,a,4)}function hLe(i,a){var f=i.getDay();return i=f>=4||f===0?o9(i):o9.ceil(i),Xc(i.getFullYear()%1e4,a,4)}function fLe(i){var a=i.getTimezoneOffset();return(a>0?"-":(a*=-1,"+"))+Xc(a/60|0,"0",2)+Xc(a%60,"0",2)}function PPt(i,a){return Xc(i.getUTCDate(),a,2)}function dLe(i,a){return Xc(i.getUTCHours(),a,2)}function gLe(i,a){return Xc(i.getUTCHours()%12||12,a,2)}function pLe(i,a){return Xc(1+q0t.count(u9(i),i),a,3)}function NPt(i,a){return Xc(i.getUTCMilliseconds(),a,3)}function bLe(i,a){return NPt(i,a)+"000"}function wLe(i,a){return Xc(i.getUTCMonth()+1,a,2)}function mLe(i,a){return Xc(i.getUTCMinutes(),a,2)}function vLe(i,a){return Xc(i.getUTCSeconds(),a,2)}function yLe(i){var a=i.getUTCDay();return a===0?7:a}function xLe(i,a){return Xc(CPt.count(u9(i)-1,i),a,2)}function FPt(i){var a=i.getUTCDay();return a>=4||a===0?FL(i):FL.ceil(i)}function kLe(i,a){return i=FPt(i),Xc(FL.count(u9(i),i)+(u9(i).getUTCDay()===4),a,2)}function ELe(i){return i.getUTCDay()}function TLe(i,a){return Xc(CW.count(u9(i)-1,i),a,2)}function CLe(i,a){return Xc(i.getUTCFullYear()%100,a,2)}function _Le(i,a){return i=FPt(i),Xc(i.getUTCFullYear()%100,a,2)}function SLe(i,a){return Xc(i.getUTCFullYear()%1e4,a,4)}function ALe(i,a){var f=i.getUTCDay();return i=f>=4||f===0?FL(i):FL.ceil(i),Xc(i.getUTCFullYear()%1e4,a,4)}function LLe(){return"+0000"}function BPt(){return"%"}function RPt(i){return+i}function jPt(i){return Math.floor(+i/1e3)}var BL,_W;MLe({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"]});function MLe(i){return BL=MAe(i),_W=BL.format,BL.parse,BL.utcFormat,BL.utcParse,BL}function DLe(i){return new Date(i)}function ILe(i){return i instanceof Date?+i:+new Date(+i)}function $Pt(i,a,f,g,w,v,b,E,_,S){var I=vPt(),B=I.invert,F=I.domain,R=S(".%L"),q=S(":%S"),X=S("%I:%M"),rt=S("%I %p"),at=S("%a %d"),ut=S("%b %d"),pt=S("%B"),yt=S("%Y");function mt(gt){return(_(gt)1?0:i<-1?uF:Math.acos(i)}function qPt(i){return i>=1?SW:i<=-1?-SW:Math.asin(i)}function HPt(i){let a=3;return i.digits=function(f){if(!arguments.length)return a;if(f==null)a=null;else{const g=Math.floor(f);if(!(g>=0))throw new RangeError(`invalid digits: ${f}`);a=g}return i},()=>new JSe(a)}function RLe(i){return i.innerRadius}function jLe(i){return i.outerRadius}function $Le(i){return i.startAngle}function zLe(i){return i.endAngle}function qLe(i){return i&&i.padAngle}function HLe(i,a,f,g,w,v,b,E){var _=f-i,S=g-a,I=b-w,B=E-v,F=B*_-I*S;if(!(F*FNt*Nt+Dt*Dt&&(bt=ft,Z=Y),{cx:bt,cy:Z,x01:-I,y01:-B,x11:bt*(w/mt-1),y11:Z*(w/mt-1)}}function jL(){var i=RLe,a=jLe,f=vf(0),g=null,w=$Le,v=zLe,b=qLe,E=null,_=HPt(S);function S(){var I,B,F=+i.apply(this,arguments),R=+a.apply(this,arguments),q=w.apply(this,arguments)-SW,X=v.apply(this,arguments)-SW,rt=zPt(X-q),at=X>q;if(E||(E=I=_()),Rtg))E.moveTo(0,0);else if(rt>AW-tg)E.moveTo(R*l9(q),R*t4(q)),E.arc(0,0,R,q,X,!at),F>tg&&(E.moveTo(F*l9(X),F*t4(X)),E.arc(0,0,F,X,q,at));else{var ut=q,pt=X,yt=q,mt=X,gt=rt,ht=rt,bt=b.apply(this,arguments)/2,Z=bt>tg&&(g?+g.apply(this,arguments):RL(F*F+R*R)),ft=U0t(zPt(R-F)/2,+f.apply(this,arguments)),Y=ft,Et=ft,V,Nt;if(Z>tg){var Dt=qPt(Z/F*t4(bt)),jt=qPt(Z/R*t4(bt));(gt-=Dt*2)>tg?(Dt*=at?1:-1,yt+=Dt,mt-=Dt):(gt=0,yt=mt=(q+X)/2),(ht-=jt*2)>tg?(jt*=at?1:-1,ut+=jt,pt-=jt):(ht=0,ut=pt=(q+X)/2)}var Ct=R*l9(ut),Ft=R*t4(ut),_t=F*l9(mt),xt=F*t4(mt);if(ft>tg){var Gt=R*l9(pt),Be=R*t4(pt),Ot=F*l9(yt),vn=F*t4(yt),Pe;if(rttg?Et>tg?(V=LW(Ot,vn,Ct,Ft,R,Et,at),Nt=LW(Gt,Be,_t,xt,R,Et,at),E.moveTo(V.cx+V.x01,V.cy+V.y01),Ettg)||!(gt>tg)?E.lineTo(_t,xt):Y>tg?(V=LW(_t,xt,Gt,Be,F,-Y,at),Nt=LW(Ct,Ft,Ot,vn,F,-Y,at),E.lineTo(V.cx+V.x01,V.cy+V.y01),Yi?1:a>=i?0:NaN}function KLe(i){return i}function WLe(){var i=KLe,a=GLe,f=null,g=vf(0),w=vf(AW),v=vf(0);function b(E){var _,S=(E=VPt(E)).length,I,B,F=0,R=new Array(S),q=new Array(S),X=+g.apply(this,arguments),rt=Math.min(AW,Math.max(-AW,w.apply(this,arguments)-X)),at,ut=Math.min(Math.abs(rt)/S,v.apply(this,arguments)),pt=ut*(rt<0?-1:1),yt;for(_=0;_0&&(F+=yt);for(a!=null?R.sort(function(mt,gt){return a(q[mt],q[gt])}):f!=null&&R.sort(function(mt,gt){return f(E[mt],E[gt])}),_=0,B=F?(rt-S*pt)/F:0;_0?yt*B:0)+pt,q[I]={data:E[I],index:_,value:yt,startAngle:X,endAngle:at,padAngle:ut};return q}return b.value=function(E){return arguments.length?(i=typeof E=="function"?E:vf(+E),b):i},b.sortValues=function(E){return arguments.length?(a=E,f=null,b):a},b.sort=function(E){return arguments.length?(f=E,a=null,b):f},b.startAngle=function(E){return arguments.length?(g=typeof E=="function"?E:vf(+E),b):g},b.endAngle=function(E){return arguments.length?(w=typeof E=="function"?E:vf(+E),b):w},b.padAngle=function(E){return arguments.length?(v=typeof E=="function"?E:vf(+E),b):v},b}class GPt{constructor(a,f){this._context=a,this._x=f}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(a,f){switch(a=+a,f=+f,this._point){case 0:{this._point=1,this._line?this._context.lineTo(a,f):this._context.moveTo(a,f);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+a)/2,this._y0,this._x0,f,a,f):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+f)/2,a,this._y0,a,f);break}}this._x0=a,this._y0=f}}function YLe(i){return new GPt(i,!0)}function XLe(i){return new GPt(i,!1)}function l8(){}function MW(i,a,f){i._context.bezierCurveTo((2*i._x0+i._x1)/3,(2*i._y0+i._y1)/3,(i._x0+2*i._x1)/3,(i._y0+2*i._y1)/3,(i._x0+4*i._x1+a)/6,(i._y0+4*i._y1+f)/6)}function DW(i){this._context=i}DW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:MW(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},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);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:MW(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function lF(i){return new DW(i)}function KPt(i){this._context=i}KPt.prototype={areaStart:l8,areaEnd:l8,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._x2=i,this._y2=a;break;case 1:this._point=2,this._x3=i,this._y3=a;break;case 2:this._point=3,this._x4=i,this._y4=a,this._context.moveTo((this._x0+4*this._x1+i)/6,(this._y0+4*this._y1+a)/6);break;default:MW(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function QLe(i){return new KPt(i)}function WPt(i){this._context=i}WPt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var f=(this._x0+4*this._x1+i)/6,g=(this._y0+4*this._y1+a)/6;this._line?this._context.lineTo(f,g):this._context.moveTo(f,g);break;case 3:this._point=4;default:MW(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function JLe(i){return new WPt(i)}function YPt(i,a){this._basis=new DW(i),this._beta=a}YPt.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var i=this._x,a=this._y,f=i.length-1;if(f>0)for(var g=i[0],w=a[0],v=i[f]-g,b=a[f]-w,E=-1,_;++E<=f;)_=E/f,this._basis.point(this._beta*i[E]+(1-this._beta)*(g+_*v),this._beta*a[E]+(1-this._beta)*(w+_*b));this._x=this._y=null,this._basis.lineEnd()},point:function(i,a){this._x.push(+i),this._y.push(+a)}};const ZLe=function i(a){function f(g){return a===1?new DW(g):new YPt(g,a)}return f.beta=function(g){return i(+g)},f}(.85);function IW(i,a,f){i._context.bezierCurveTo(i._x1+i._k*(i._x2-i._x0),i._y1+i._k*(i._y2-i._y0),i._x2+i._k*(i._x1-a),i._y2+i._k*(i._y1-f),i._x2,i._y2)}function G0t(i,a){this._context=i,this._k=(1-a)/6}G0t.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:IW(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2,this._x1=i,this._y1=a;break;case 2:this._point=3;default:IW(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const tMe=function i(a){function f(g){return new G0t(g,a)}return f.tension=function(g){return i(+g)},f}(0);function K0t(i,a){this._context=i,this._k=(1-a)/6}K0t.prototype={areaStart:l8,areaEnd:l8,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._x3=i,this._y3=a;break;case 1:this._point=2,this._context.moveTo(this._x4=i,this._y4=a);break;case 2:this._point=3,this._x5=i,this._y5=a;break;default:IW(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const eMe=function i(a){function f(g){return new K0t(g,a)}return f.tension=function(g){return i(+g)},f}(0);function W0t(i,a){this._context=i,this._k=(1-a)/6}W0t.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,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:IW(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const nMe=function i(a){function f(g){return new W0t(g,a)}return f.tension=function(g){return i(+g)},f}(0);function Y0t(i,a,f){var g=i._x1,w=i._y1,v=i._x2,b=i._y2;if(i._l01_a>tg){var E=2*i._l01_2a+3*i._l01_a*i._l12_a+i._l12_2a,_=3*i._l01_a*(i._l01_a+i._l12_a);g=(g*E-i._x0*i._l12_2a+i._x2*i._l01_2a)/_,w=(w*E-i._y0*i._l12_2a+i._y2*i._l01_2a)/_}if(i._l23_a>tg){var S=2*i._l23_2a+3*i._l23_a*i._l12_a+i._l12_2a,I=3*i._l23_a*(i._l23_a+i._l12_a);v=(v*S+i._x1*i._l23_2a-a*i._l12_2a)/I,b=(b*S+i._y1*i._l23_2a-f*i._l12_2a)/I}i._context.bezierCurveTo(g,w,v,b,i._x2,i._y2)}function XPt(i,a){this._context=i,this._alpha=a}XPt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,g=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+g*g,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3;default:Y0t(this,i,a);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=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const rMe=function i(a){function f(g){return a?new XPt(g,a):new G0t(g,0)}return f.alpha=function(g){return i(+g)},f}(.5);function QPt(i,a){this._context=i,this._alpha=a}QPt.prototype={areaStart:l8,areaEnd:l8,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,g=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+g*g,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=i,this._y3=a;break;case 1:this._point=2,this._context.moveTo(this._x4=i,this._y4=a);break;case 2:this._point=3,this._x5=i,this._y5=a;break;default:Y0t(this,i,a);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=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const iMe=function i(a){function f(g){return a?new QPt(g,a):new K0t(g,0)}return f.alpha=function(g){return i(+g)},f}(.5);function JPt(i,a){this._context=i,this._alpha=a}JPt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,g=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+g*g,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:Y0t(this,i,a);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=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const sMe=function i(a){function f(g){return a?new JPt(g,a):new W0t(g,0)}return f.alpha=function(g){return i(+g)},f}(.5);function ZPt(i){this._context=i}ZPt.prototype={areaStart:l8,areaEnd:l8,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(i,a){i=+i,a=+a,this._point?this._context.lineTo(i,a):(this._point=1,this._context.moveTo(i,a))}};function aMe(i){return new ZPt(i)}function tNt(i){return i<0?-1:1}function eNt(i,a,f){var g=i._x1-i._x0,w=a-i._x1,v=(i._y1-i._y0)/(g||w<0&&-0),b=(f-i._y1)/(w||g<0&&-0),E=(v*w+b*g)/(g+w);return(tNt(v)+tNt(b))*Math.min(Math.abs(v),Math.abs(b),.5*Math.abs(E))||0}function nNt(i,a){var f=i._x1-i._x0;return f?(3*(i._y1-i._y0)/f-a)/2:a}function X0t(i,a,f){var g=i._x0,w=i._y0,v=i._x1,b=i._y1,E=(v-g)/3;i._context.bezierCurveTo(g+E,w+E*a,v-E,b-E*f,v,b)}function OW(i){this._context=i}OW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:X0t(this,this._t0,nNt(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){var f=NaN;if(i=+i,a=+a,!(i===this._x1&&a===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3,X0t(this,nNt(this,f=eNt(this,i,a)),f);break;default:X0t(this,this._t0,f=eNt(this,i,a));break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a,this._t0=f}}};function rNt(i){this._context=new iNt(i)}(rNt.prototype=Object.create(OW.prototype)).point=function(i,a){OW.prototype.point.call(this,a,i)};function iNt(i){this._context=i}iNt.prototype={moveTo:function(i,a){this._context.moveTo(a,i)},closePath:function(){this._context.closePath()},lineTo:function(i,a){this._context.lineTo(a,i)},bezierCurveTo:function(i,a,f,g,w,v){this._context.bezierCurveTo(a,i,g,f,v,w)}};function oMe(i){return new OW(i)}function cMe(i){return new rNt(i)}function sNt(i){this._context=i}sNt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var i=this._x,a=this._y,f=i.length;if(f)if(this._line?this._context.lineTo(i[0],a[0]):this._context.moveTo(i[0],a[0]),f===2)this._context.lineTo(i[1],a[1]);else for(var g=aNt(i),w=aNt(a),v=0,b=1;b=0;--a)w[a]=(b[a]-w[a+1])/v[a];for(v[f-1]=(i[f]+w[f-1])/2,a=0;a=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,a),this._context.lineTo(i,a);else{var f=this._x*(1-this._t)+i*this._t;this._context.lineTo(f,this._y),this._context.lineTo(f,a)}break}}this._x=i,this._y=a}};function lMe(i){return new PW(i,.5)}function hMe(i){return new PW(i,0)}function fMe(i){return new PW(i,1)}function hF(i,a,f){this.k=i,this.x=a,this.y=f}hF.prototype={constructor:hF,scale:function(i){return i===1?this:new hF(this.k*i,this.x,this.y)},translate:function(i,a){return i===0&a===0?this:new hF(this.k,this.x+this.k*i,this.y+this.k*a)},apply:function(i){return[i[0]*this.k+this.x,i[1]*this.k+this.y]},applyX:function(i){return i*this.k+this.x},applyY:function(i){return i*this.k+this.y},invert:function(i){return[(i[0]-this.x)/this.k,(i[1]-this.y)/this.k]},invertX:function(i){return(i-this.x)/this.k},invertY:function(i){return(i-this.y)/this.k},rescaleX:function(i){return i.copy().domain(i.range().map(this.invertX,this).map(i.invert,i))},rescaleY:function(i){return i.copy().domain(i.range().map(this.invertY,this).map(i.invert,i))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}},hF.prototype;/*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE */const{entries:oNt,setPrototypeOf:cNt,isFrozen:dMe,getPrototypeOf:gMe,getOwnPropertyDescriptor:pMe}=Object;let{freeze:Ug,seal:zv,create:bMe}=Object,{apply:Q0t,construct:J0t}=typeof Reflect<"u"&&Reflect;Q0t||(Q0t=function(a,f,g){return a.apply(f,g)}),Ug||(Ug=function(a){return a}),zv||(zv=function(a){return a}),J0t||(J0t=function(a,f){return new a(...f)});const wMe=qw(Array.prototype.forEach),uNt=qw(Array.prototype.pop),fF=qw(Array.prototype.push),NW=qw(String.prototype.toLowerCase),Z0t=qw(String.prototype.toString),mMe=qw(String.prototype.match),qv=qw(String.prototype.replace),vMe=qw(String.prototype.indexOf),yMe=qw(String.prototype.trim),m2=qw(RegExp.prototype.test),dF=xMe(TypeError);function qw(i){return function(a){for(var f=arguments.length,g=new Array(f>1?f-1:0),w=1;w/gm),_Me=zv(/\${[\w\W]*}/gm),SMe=zv(/^data-[\-\w.\u00B7-\uFFFF]/),AMe=zv(/^aria-[\-\w]+$/),gNt=zv(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),LMe=zv(/^(?:\w+script|data):/i),MMe=zv(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),pNt=zv(/^html$/i);var bNt=Object.freeze({__proto__:null,MUSTACHE_EXPR:TMe,ERB_EXPR:CMe,TMPLIT_EXPR:_Me,DATA_ATTR:SMe,ARIA_ATTR:AMe,IS_ALLOWED_URI:gNt,IS_SCRIPT_OR_DATA:LMe,ATTR_WHITESPACE:MMe,DOCTYPE_NAME:pNt});const DMe=()=>typeof window>"u"?null:window,IMe=function(a,f){if(typeof a!="object"||typeof a.createPolicy!="function")return null;let g=null;const w="data-tt-policy-suffix";f&&f.hasAttribute(w)&&(g=f.getAttribute(w));const v="dompurify"+(g?"#"+g:"");try{return a.createPolicy(v,{createHTML(b){return b},createScriptURL(b){return b}})}catch{return console.warn("TrustedTypes policy "+v+" could not be created."),null}};function wNt(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:DMe();const a=Yi=>wNt(Yi);if(a.version="3.0.5",a.removed=[],!i||!i.document||i.document.nodeType!==9)return a.isSupported=!1,a;const f=i.document,g=f.currentScript;let{document:w}=i;const{DocumentFragment:v,HTMLTemplateElement:b,Node:E,Element:_,NodeFilter:S,NamedNodeMap:I=i.NamedNodeMap||i.MozNamedAttrMap,HTMLFormElement:B,DOMParser:F,trustedTypes:R}=i,q=_.prototype,X=FW(q,"cloneNode"),rt=FW(q,"nextSibling"),at=FW(q,"childNodes"),ut=FW(q,"parentNode");if(typeof b=="function"){const Yi=w.createElement("template");Yi.content&&Yi.content.ownerDocument&&(w=Yi.content.ownerDocument)}let pt,yt="";const{implementation:mt,createNodeIterator:gt,createDocumentFragment:ht,getElementsByTagName:bt}=w,{importNode:Z}=f;let ft={};a.isSupported=typeof oNt=="function"&&typeof ut=="function"&&mt&&mt.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:Y,ERB_EXPR:Et,TMPLIT_EXPR:V,DATA_ATTR:Nt,ARIA_ATTR:Dt,IS_SCRIPT_OR_DATA:jt,ATTR_WHITESPACE:Ct}=bNt;let{IS_ALLOWED_URI:Ft}=bNt,_t=null;const xt=Po({},[...lNt,...tgt,...egt,...ngt,...hNt]);let Gt=null;const Be=Po({},[...fNt,...rgt,...dNt,...BW]);let Ot=Object.seal(Object.create(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}})),vn=null,Pe=null,Ee=!0,nn=!0,sn=!1,me=!0,Fe=!1,Qt=!1,Ae=!1,Se=!1,Dn=!1,oe=!1,Pr=!1,we=!0,Ri=!1;const yi="user-content-";let da=!0,Ss=!1,Ra={},fr=null;const An=Po({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Pn=null;const Bn=Po({},["audio","video","img","source","image","track"]);let Te=null;const be=Po({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Qe="http://www.w3.org/1998/Math/MathML",rn="http://www.w3.org/2000/svg",yn="http://www.w3.org/1999/xhtml";let ja=yn,mo=!1,vo=null;const ma=Po({},[Qe,rn,yn],Z0t);let $a;const gs=["application/xhtml+xml","text/html"],Nu="text/html";let ta,l1=null;const _2=w.createElement("form"),ll=function(cn){return cn instanceof RegExp||cn instanceof Function},Ac=function(cn){if(!(l1&&l1===cn)){if((!cn||typeof cn!="object")&&(cn={}),cn=$L(cn),$a=gs.indexOf(cn.PARSER_MEDIA_TYPE)===-1?$a=Nu:$a=cn.PARSER_MEDIA_TYPE,ta=$a==="application/xhtml+xml"?Z0t:NW,_t="ALLOWED_TAGS"in cn?Po({},cn.ALLOWED_TAGS,ta):xt,Gt="ALLOWED_ATTR"in cn?Po({},cn.ALLOWED_ATTR,ta):Be,vo="ALLOWED_NAMESPACES"in cn?Po({},cn.ALLOWED_NAMESPACES,Z0t):ma,Te="ADD_URI_SAFE_ATTR"in cn?Po($L(be),cn.ADD_URI_SAFE_ATTR,ta):be,Pn="ADD_DATA_URI_TAGS"in cn?Po($L(Bn),cn.ADD_DATA_URI_TAGS,ta):Bn,fr="FORBID_CONTENTS"in cn?Po({},cn.FORBID_CONTENTS,ta):An,vn="FORBID_TAGS"in cn?Po({},cn.FORBID_TAGS,ta):{},Pe="FORBID_ATTR"in cn?Po({},cn.FORBID_ATTR,ta):{},Ra="USE_PROFILES"in cn?cn.USE_PROFILES:!1,Ee=cn.ALLOW_ARIA_ATTR!==!1,nn=cn.ALLOW_DATA_ATTR!==!1,sn=cn.ALLOW_UNKNOWN_PROTOCOLS||!1,me=cn.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Fe=cn.SAFE_FOR_TEMPLATES||!1,Qt=cn.WHOLE_DOCUMENT||!1,Dn=cn.RETURN_DOM||!1,oe=cn.RETURN_DOM_FRAGMENT||!1,Pr=cn.RETURN_TRUSTED_TYPE||!1,Se=cn.FORCE_BODY||!1,we=cn.SANITIZE_DOM!==!1,Ri=cn.SANITIZE_NAMED_PROPS||!1,da=cn.KEEP_CONTENT!==!1,Ss=cn.IN_PLACE||!1,Ft=cn.ALLOWED_URI_REGEXP||gNt,ja=cn.NAMESPACE||yn,Ot=cn.CUSTOM_ELEMENT_HANDLING||{},cn.CUSTOM_ELEMENT_HANDLING&&ll(cn.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Ot.tagNameCheck=cn.CUSTOM_ELEMENT_HANDLING.tagNameCheck),cn.CUSTOM_ELEMENT_HANDLING&&ll(cn.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Ot.attributeNameCheck=cn.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),cn.CUSTOM_ELEMENT_HANDLING&&typeof cn.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(Ot.allowCustomizedBuiltInElements=cn.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Fe&&(nn=!1),oe&&(Dn=!0),Ra&&(_t=Po({},[...hNt]),Gt=[],Ra.html===!0&&(Po(_t,lNt),Po(Gt,fNt)),Ra.svg===!0&&(Po(_t,tgt),Po(Gt,rgt),Po(Gt,BW)),Ra.svgFilters===!0&&(Po(_t,egt),Po(Gt,rgt),Po(Gt,BW)),Ra.mathMl===!0&&(Po(_t,ngt),Po(Gt,dNt),Po(Gt,BW))),cn.ADD_TAGS&&(_t===xt&&(_t=$L(_t)),Po(_t,cn.ADD_TAGS,ta)),cn.ADD_ATTR&&(Gt===Be&&(Gt=$L(Gt)),Po(Gt,cn.ADD_ATTR,ta)),cn.ADD_URI_SAFE_ATTR&&Po(Te,cn.ADD_URI_SAFE_ATTR,ta),cn.FORBID_CONTENTS&&(fr===An&&(fr=$L(fr)),Po(fr,cn.FORBID_CONTENTS,ta)),da&&(_t["#text"]=!0),Qt&&Po(_t,["html","head","body"]),_t.table&&(Po(_t,["tbody"]),delete vn.tbody),cn.TRUSTED_TYPES_POLICY){if(typeof cn.TRUSTED_TYPES_POLICY.createHTML!="function")throw dF('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof cn.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw dF('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');pt=cn.TRUSTED_TYPES_POLICY,yt=pt.createHTML("")}else pt===void 0&&(pt=IMe(R,g)),pt!==null&&typeof yt=="string"&&(yt=pt.createHTML(""));Ug&&Ug(cn),l1=cn}},pc=Po({},["mi","mo","mn","ms","mtext"]),ka=Po({},["foreignobject","desc","title","annotation-xml"]),du=Po({},["title","style","font","a","script"]),ea=Po({},tgt);Po(ea,egt),Po(ea,kMe);const co=Po({},ngt);Po(co,EMe);const bc=function(cn){let Dr=ut(cn);(!Dr||!Dr.tagName)&&(Dr={namespaceURI:ja,tagName:"template"});const Si=NW(cn.tagName),wc=NW(Dr.tagName);return vo[cn.namespaceURI]?cn.namespaceURI===rn?Dr.namespaceURI===yn?Si==="svg":Dr.namespaceURI===Qe?Si==="svg"&&(wc==="annotation-xml"||pc[wc]):!!ea[Si]:cn.namespaceURI===Qe?Dr.namespaceURI===yn?Si==="math":Dr.namespaceURI===rn?Si==="math"&&ka[wc]:!!co[Si]:cn.namespaceURI===yn?Dr.namespaceURI===rn&&!ka[wc]||Dr.namespaceURI===Qe&&!pc[wc]?!1:!co[Si]&&(du[Si]||!ea[Si]):!!($a==="application/xhtml+xml"&&vo[cn.namespaceURI]):!1},oa=function(cn){fF(a.removed,{element:cn});try{cn.parentNode.removeChild(cn)}catch{cn.remove()}},va=function(cn,Dr){try{fF(a.removed,{attribute:Dr.getAttributeNode(cn),from:Dr})}catch{fF(a.removed,{attribute:null,from:Dr})}if(Dr.removeAttribute(cn),cn==="is"&&!Gt[cn])if(Dn||oe)try{oa(Dr)}catch{}else try{Dr.setAttribute(cn,"")}catch{}},na=function(cn){let Dr,Si;if(Se)cn=""+cn;else{const vh=mMe(cn,/^[\r\n\t ]+/);Si=vh&&vh[0]}$a==="application/xhtml+xml"&&ja===yn&&(cn=''+cn+"");const wc=pt?pt.createHTML(cn):cn;if(ja===yn)try{Dr=new F().parseFromString(wc,$a)}catch{}if(!Dr||!Dr.documentElement){Dr=mt.createDocument(ja,"template",null);try{Dr.documentElement.innerHTML=mo?yt:wc}catch{}}const Fc=Dr.body||Dr.documentElement;return cn&&Si&&Fc.insertBefore(w.createTextNode(Si),Fc.childNodes[0]||null),ja===yn?bt.call(Dr,Qt?"html":"body")[0]:Qt?Dr.documentElement:Fc},Xl=function(cn){return gt.call(cn.ownerDocument||cn,cn,S.SHOW_ELEMENT|S.SHOW_COMMENT|S.SHOW_TEXT,null,!1)},Hc=function(cn){return cn instanceof B&&(typeof cn.nodeName!="string"||typeof cn.textContent!="string"||typeof cn.removeChild!="function"||!(cn.attributes instanceof I)||typeof cn.removeAttribute!="function"||typeof cn.setAttribute!="function"||typeof cn.namespaceURI!="string"||typeof cn.insertBefore!="function"||typeof cn.hasChildNodes!="function")},Zw=function(cn){return typeof E=="object"?cn instanceof E:cn&&typeof cn=="object"&&typeof cn.nodeType=="number"&&typeof cn.nodeName=="string"},mh=function(cn,Dr,Si){ft[cn]&&wMe(ft[cn],wc=>{wc.call(a,Dr,Si,l1)})},_d=function(cn){let Dr;if(mh("beforeSanitizeElements",cn,null),Hc(cn))return oa(cn),!0;const Si=ta(cn.nodeName);if(mh("uponSanitizeElement",cn,{tagName:Si,allowedTags:_t}),cn.hasChildNodes()&&!Zw(cn.firstElementChild)&&(!Zw(cn.content)||!Zw(cn.content.firstElementChild))&&m2(/<[/\w]/g,cn.innerHTML)&&m2(/<[/\w]/g,cn.textContent))return oa(cn),!0;if(!_t[Si]||vn[Si]){if(!vn[Si]&&Sd(Si)&&(Ot.tagNameCheck instanceof RegExp&&m2(Ot.tagNameCheck,Si)||Ot.tagNameCheck instanceof Function&&Ot.tagNameCheck(Si)))return!1;if(da&&!fr[Si]){const wc=ut(cn)||cn.parentNode,Fc=at(cn)||cn.childNodes;if(Fc&&wc){const vh=Fc.length;for(let Qc=vh-1;Qc>=0;--Qc)wc.insertBefore(X(Fc[Qc],!0),rt(cn))}}return oa(cn),!0}return cn instanceof _&&!bc(cn)||(Si==="noscript"||Si==="noembed"||Si==="noframes")&&m2(/<\/no(script|embed|frames)/i,cn.innerHTML)?(oa(cn),!0):(Fe&&cn.nodeType===3&&(Dr=cn.textContent,Dr=qv(Dr,Y," "),Dr=qv(Dr,Et," "),Dr=qv(Dr,V," "),cn.textContent!==Dr&&(fF(a.removed,{element:cn.cloneNode()}),cn.textContent=Dr)),mh("afterSanitizeElements",cn,null),!1)},b0=function(cn,Dr,Si){if(we&&(Dr==="id"||Dr==="name")&&(Si in w||Si in _2))return!1;if(!(nn&&!Pe[Dr]&&m2(Nt,Dr))){if(!(Ee&&m2(Dt,Dr))){if(!Gt[Dr]||Pe[Dr]){if(!(Sd(cn)&&(Ot.tagNameCheck instanceof RegExp&&m2(Ot.tagNameCheck,cn)||Ot.tagNameCheck instanceof Function&&Ot.tagNameCheck(cn))&&(Ot.attributeNameCheck instanceof RegExp&&m2(Ot.attributeNameCheck,Dr)||Ot.attributeNameCheck instanceof Function&&Ot.attributeNameCheck(Dr))||Dr==="is"&&Ot.allowCustomizedBuiltInElements&&(Ot.tagNameCheck instanceof RegExp&&m2(Ot.tagNameCheck,Si)||Ot.tagNameCheck instanceof Function&&Ot.tagNameCheck(Si))))return!1}else if(!Te[Dr]){if(!m2(Ft,qv(Si,Ct,""))){if(!((Dr==="src"||Dr==="xlink:href"||Dr==="href")&&cn!=="script"&&vMe(Si,"data:")===0&&Pn[cn])){if(!(sn&&!m2(jt,qv(Si,Ct,"")))){if(Si)return!1}}}}}}return!0},Sd=function(cn){return cn.indexOf("-")>0},w0=function(cn){let Dr,Si,wc,Fc;mh("beforeSanitizeAttributes",cn,null);const{attributes:vh}=cn;if(!vh)return;const Qc={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Gt};for(Fc=vh.length;Fc--;){Dr=vh[Fc];const{name:Wh,namespaceURI:Ad}=Dr;if(Si=Wh==="value"?Dr.value:yMe(Dr.value),wc=ta(Wh),Qc.attrName=wc,Qc.attrValue=Si,Qc.keepAttr=!0,Qc.forceKeepAttr=void 0,mh("uponSanitizeAttribute",cn,Qc),Si=Qc.attrValue,Qc.forceKeepAttr||(va(Wh,cn),!Qc.keepAttr))continue;if(!me&&m2(/\/>/i,Si)){va(Wh,cn);continue}Fe&&(Si=qv(Si,Y," "),Si=qv(Si,Et," "),Si=qv(Si,V," "));const ls=ta(cn.nodeName);if(b0(ls,wc,Si)){if(Ri&&(wc==="id"||wc==="name")&&(va(Wh,cn),Si=yi+Si),pt&&typeof R=="object"&&typeof R.getAttributeType=="function"&&!Ad)switch(R.getAttributeType(ls,wc)){case"TrustedHTML":{Si=pt.createHTML(Si);break}case"TrustedScriptURL":{Si=pt.createScriptURL(Si);break}}try{Ad?cn.setAttributeNS(Ad,Wh,Si):cn.setAttribute(Wh,Si),uNt(a.removed)}catch{}}}mh("afterSanitizeAttributes",cn,null)},ag=function Yi(cn){let Dr;const Si=Xl(cn);for(mh("beforeSanitizeShadowDOM",cn,null);Dr=Si.nextNode();)mh("uponSanitizeShadowNode",Dr,null),!_d(Dr)&&(Dr.content instanceof v&&Yi(Dr.content),w0(Dr));mh("afterSanitizeShadowDOM",cn,null)};return a.sanitize=function(Yi){let cn=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Dr,Si,wc,Fc;if(mo=!Yi,mo&&(Yi=""),typeof Yi!="string"&&!Zw(Yi))if(typeof Yi.toString=="function"){if(Yi=Yi.toString(),typeof Yi!="string")throw dF("dirty is not a string, aborting")}else throw dF("toString is not a function");if(!a.isSupported)return Yi;if(Ae||Ac(cn),a.removed=[],typeof Yi=="string"&&(Ss=!1),Ss){if(Yi.nodeName){const Wh=ta(Yi.nodeName);if(!_t[Wh]||vn[Wh])throw dF("root node is forbidden and cannot be sanitized in-place")}}else if(Yi instanceof E)Dr=na(""),Si=Dr.ownerDocument.importNode(Yi,!0),Si.nodeType===1&&Si.nodeName==="BODY"||Si.nodeName==="HTML"?Dr=Si:Dr.appendChild(Si);else{if(!Dn&&!Fe&&!Qt&&Yi.indexOf("<")===-1)return pt&&Pr?pt.createHTML(Yi):Yi;if(Dr=na(Yi),!Dr)return Dn?null:Pr?yt:""}Dr&&Se&&oa(Dr.firstChild);const vh=Xl(Ss?Yi:Dr);for(;wc=vh.nextNode();)_d(wc)||(wc.content instanceof v&&ag(wc.content),w0(wc));if(Ss)return Yi;if(Dn){if(oe)for(Fc=ht.call(Dr.ownerDocument);Dr.firstChild;)Fc.appendChild(Dr.firstChild);else Fc=Dr;return(Gt.shadowroot||Gt.shadowrootmode)&&(Fc=Z.call(f,Fc,!0)),Fc}let Qc=Qt?Dr.outerHTML:Dr.innerHTML;return Qt&&_t["!doctype"]&&Dr.ownerDocument&&Dr.ownerDocument.doctype&&Dr.ownerDocument.doctype.name&&m2(pNt,Dr.ownerDocument.doctype.name)&&(Qc=" +`+Qc),Fe&&(Qc=qv(Qc,Y," "),Qc=qv(Qc,Et," "),Qc=qv(Qc,V," ")),pt&&Pr?pt.createHTML(Qc):Qc},a.setConfig=function(Yi){Ac(Yi),Ae=!0},a.clearConfig=function(){l1=null,Ae=!1},a.isValidAttribute=function(Yi,cn,Dr){l1||Ac({});const Si=ta(Yi),wc=ta(cn);return b0(Si,wc,Dr)},a.addHook=function(Yi,cn){typeof cn=="function"&&(ft[Yi]=ft[Yi]||[],fF(ft[Yi],cn))},a.removeHook=function(Yi){if(ft[Yi])return uNt(ft[Yi])},a.removeHooks=function(Yi){ft[Yi]&&(ft[Yi]=[])},a.removeAllHooks=function(){ft={}},a}var zL=wNt();const gF=//gi,OMe=i=>i?yNt(i).replace(/\\n/g,"#br#").split("#br#"):[""],mNt=i=>{const a="data-temp-href-target";zL.addHook("beforeSanitizeAttributes",g=>{g.tagName==="A"&&g.hasAttribute("target")&&g.setAttribute(a,g.getAttribute("target")||"")});const f=zL.sanitize(i);return zL.addHook("afterSanitizeAttributes",g=>{g.tagName==="A"&&g.hasAttribute(a)&&(g.setAttribute("target",g.getAttribute(a)||""),g.removeAttribute(a),g.getAttribute("target")==="_blank"&&g.setAttribute("rel","noopener"))}),f},vNt=(i,a)=>{var f;if(((f=a.flowchart)==null?void 0:f.htmlLabels)!==!1){const g=a.securityLevel;g==="antiscript"||g==="strict"?i=mNt(i):g!=="loose"&&(i=yNt(i),i=i.replace(//g,">"),i=i.replace(/=/g,"="),i=BMe(i))}return i},Ed=(i,a)=>i&&(a.dompurifyConfig?i=zL.sanitize(vNt(i,a),a.dompurifyConfig).toString():i=zL.sanitize(vNt(i,a),{FORBID_TAGS:["style"]}).toString(),i),PMe=(i,a)=>typeof i=="string"?Ed(i,a):i.flat().map(f=>Ed(f,a)),NMe=i=>gF.test(i),FMe=i=>i.split(gF),BMe=i=>i.replace(/#br#/g,"
"),yNt=i=>i.replace(gF,"#br#"),RMe=i=>{let a="";return i&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,a=a.replaceAll(/\(/g,"\\("),a=a.replaceAll(/\)/g,"\\)")),a},B1=i=>!(i===!1||["false","null","0"].includes(String(i).trim().toLowerCase())),jMe=function(...i){const a=i.filter(f=>!isNaN(f));return Math.max(...a)},$Me=function(...i){const a=i.filter(f=>!isNaN(f));return Math.min(...a)},pF=function(i){const a=i.split(/(,)/),f=[];for(let g=0;g0&&g+1Math.max(0,i.split(a).length-1),zMe=(i,a)=>{const f=igt(i,"~"),g=igt(a,"~");return f===1&&g===1},qMe=i=>{const a=igt(i,"~");let f=!1;if(a<=1)return i;a%2!==0&&i.startsWith("~")&&(i=i.substring(1),f=!0);const g=[...i];let w=g.indexOf("~"),v=g.lastIndexOf("~");for(;w!==-1&&v!==-1&&w!==v;)g[w]="<",g[v]=">",w=g.indexOf("~"),v=g.lastIndexOf("~");return f&&g.unshift("~"),g.join("")},ei={getRows:OMe,sanitizeText:Ed,sanitizeTextOrArray:PMe,hasBreaks:NMe,splitBreaks:FMe,lineBreakRegex:gF,removeScript:mNt,getUrl:RMe,evaluate:B1,getMax:jMe,getMin:$Me},RW={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:i=>i>=255?255:i<0?0:i,g:i=>i>=255?255:i<0?0:i,b:i=>i>=255?255:i<0?0:i,h:i=>i%360,s:i=>i>=100?100:i<0?0:i,l:i=>i>=100?100:i<0?0:i,a:i=>i>=1?1:i<0?0:i},toLinear:i=>{const a=i/255;return i>.03928?Math.pow((a+.055)/1.055,2.4):a/12.92},hue2rgb:(i,a,f)=>(f<0&&(f+=1),f>1&&(f-=1),f<1/6?i+(a-i)*6*f:f<1/2?a:f<2/3?i+(a-i)*(2/3-f)*6:i),hsl2rgb:({h:i,s:a,l:f},g)=>{if(!a)return f*2.55;i/=360,a/=100,f/=100;const w=f<.5?f*(1+a):f+a-f*a,v=2*f-w;switch(g){case"r":return RW.hue2rgb(v,w,i+1/3)*255;case"g":return RW.hue2rgb(v,w,i)*255;case"b":return RW.hue2rgb(v,w,i-1/3)*255}},rgb2hsl:({r:i,g:a,b:f},g)=>{i/=255,a/=255,f/=255;const w=Math.max(i,a,f),v=Math.min(i,a,f),b=(w+v)/2;if(g==="l")return b*100;if(w===v)return 0;const E=w-v,_=b>.5?E/(2-w-v):E/(w+v);if(g==="s")return _*100;switch(w){case i:return((a-f)/E+(aa>f?Math.min(a,Math.max(f,i)):Math.min(f,Math.max(a,i)),round:i=>Math.round(i*1e10)/1e10},unit:{dec2hex:i=>{const a=Math.round(i).toString(16);return a.length>1?a:`0${a}`}}},h8={};for(let i=0;i<=255;i++)h8[i]=La.unit.dec2hex(i);const eg={ALL:0,RGB:1,HSL:2};class HMe{constructor(){this.type=eg.ALL}get(){return this.type}set(a){if(this.type&&this.type!==a)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=a}reset(){this.type=eg.ALL}is(a){return this.type===a}}const VMe=HMe;class UMe{constructor(a,f){this.color=f,this.changed=!1,this.data=a,this.type=new VMe}set(a,f){return this.color=f,this.changed=!1,this.data=a,this.type.type=eg.ALL,this}_ensureHSL(){const a=this.data,{h:f,s:g,l:w}=a;f===void 0&&(a.h=La.channel.rgb2hsl(a,"h")),g===void 0&&(a.s=La.channel.rgb2hsl(a,"s")),w===void 0&&(a.l=La.channel.rgb2hsl(a,"l"))}_ensureRGB(){const a=this.data,{r:f,g,b:w}=a;f===void 0&&(a.r=La.channel.hsl2rgb(a,"r")),g===void 0&&(a.g=La.channel.hsl2rgb(a,"g")),w===void 0&&(a.b=La.channel.hsl2rgb(a,"b"))}get r(){const a=this.data,f=a.r;return!this.type.is(eg.HSL)&&f!==void 0?f:(this._ensureHSL(),La.channel.hsl2rgb(a,"r"))}get g(){const a=this.data,f=a.g;return!this.type.is(eg.HSL)&&f!==void 0?f:(this._ensureHSL(),La.channel.hsl2rgb(a,"g"))}get b(){const a=this.data,f=a.b;return!this.type.is(eg.HSL)&&f!==void 0?f:(this._ensureHSL(),La.channel.hsl2rgb(a,"b"))}get h(){const a=this.data,f=a.h;return!this.type.is(eg.RGB)&&f!==void 0?f:(this._ensureRGB(),La.channel.rgb2hsl(a,"h"))}get s(){const a=this.data,f=a.s;return!this.type.is(eg.RGB)&&f!==void 0?f:(this._ensureRGB(),La.channel.rgb2hsl(a,"s"))}get l(){const a=this.data,f=a.l;return!this.type.is(eg.RGB)&&f!==void 0?f:(this._ensureRGB(),La.channel.rgb2hsl(a,"l"))}get a(){return this.data.a}set r(a){this.type.set(eg.RGB),this.changed=!0,this.data.r=a}set g(a){this.type.set(eg.RGB),this.changed=!0,this.data.g=a}set b(a){this.type.set(eg.RGB),this.changed=!0,this.data.b=a}set h(a){this.type.set(eg.HSL),this.changed=!0,this.data.h=a}set s(a){this.type.set(eg.HSL),this.changed=!0,this.data.s=a}set l(a){this.type.set(eg.HSL),this.changed=!0,this.data.l=a}set a(a){this.changed=!0,this.data.a=a}}const GMe=UMe,jW=new GMe({r:0,g:0,b:0,a:0},"transparent"),xNt={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:i=>{if(i.charCodeAt(0)!==35)return;const a=i.match(xNt.re);if(!a)return;const f=a[1],g=parseInt(f,16),w=f.length,v=w%4===0,b=w>4,E=b?1:17,_=b?8:4,S=v?0:-1,I=b?255:15;return jW.set({r:(g>>_*(S+3)&I)*E,g:(g>>_*(S+2)&I)*E,b:(g>>_*(S+1)&I)*E,a:v?(g&I)*E/255:1},i)},stringify:i=>{const{r:a,g:f,b:g,a:w}=i;return w<1?`#${h8[Math.round(a)]}${h8[Math.round(f)]}${h8[Math.round(g)]}${h8[Math.round(w*255)]}`:`#${h8[Math.round(a)]}${h8[Math.round(f)]}${h8[Math.round(g)]}`}},bF=xNt,$W={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:i=>{const a=i.match($W.hueRe);if(a){const[,f,g]=a;switch(g){case"grad":return La.channel.clamp.h(parseFloat(f)*.9);case"rad":return La.channel.clamp.h(parseFloat(f)*180/Math.PI);case"turn":return La.channel.clamp.h(parseFloat(f)*360)}}return La.channel.clamp.h(parseFloat(i))},parse:i=>{const a=i.charCodeAt(0);if(a!==104&&a!==72)return;const f=i.match($W.re);if(!f)return;const[,g,w,v,b,E]=f;return jW.set({h:$W._hue2deg(g),s:La.channel.clamp.s(parseFloat(w)),l:La.channel.clamp.l(parseFloat(v)),a:b?La.channel.clamp.a(E?parseFloat(b)/100:parseFloat(b)):1},i)},stringify:i=>{const{h:a,s:f,l:g,a:w}=i;return w<1?`hsla(${La.lang.round(a)}, ${La.lang.round(f)}%, ${La.lang.round(g)}%, ${w})`:`hsl(${La.lang.round(a)}, ${La.lang.round(f)}%, ${La.lang.round(g)}%)`}},zW=$W,qW={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:i=>{i=i.toLowerCase();const a=qW.colors[i];if(a)return bF.parse(a)},stringify:i=>{const a=bF.stringify(i);for(const f in qW.colors)if(qW.colors[f]===a)return f}},kNt=qW,ENt={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:i=>{const a=i.charCodeAt(0);if(a!==114&&a!==82)return;const f=i.match(ENt.re);if(!f)return;const[,g,w,v,b,E,_,S,I]=f;return jW.set({r:La.channel.clamp.r(w?parseFloat(g)*2.55:parseFloat(g)),g:La.channel.clamp.g(b?parseFloat(v)*2.55:parseFloat(v)),b:La.channel.clamp.b(_?parseFloat(E)*2.55:parseFloat(E)),a:S?La.channel.clamp.a(I?parseFloat(S)/100:parseFloat(S)):1},i)},stringify:i=>{const{r:a,g:f,b:g,a:w}=i;return w<1?`rgba(${La.lang.round(a)}, ${La.lang.round(f)}, ${La.lang.round(g)}, ${La.lang.round(w)})`:`rgb(${La.lang.round(a)}, ${La.lang.round(f)}, ${La.lang.round(g)})`}},HW=ENt,Hv={format:{keyword:kNt,hex:bF,rgb:HW,rgba:HW,hsl:zW,hsla:zW},parse:i=>{if(typeof i!="string")return i;const a=bF.parse(i)||HW.parse(i)||zW.parse(i)||kNt.parse(i);if(a)return a;throw new Error(`Unsupported color format: "${i}"`)},stringify:i=>!i.changed&&i.color?i.color:i.type.is(eg.HSL)||i.data.r===void 0?zW.stringify(i):i.a<1||!Number.isInteger(i.r)||!Number.isInteger(i.g)||!Number.isInteger(i.b)?HW.stringify(i):bF.stringify(i)},TNt=(i,a)=>{const f=Hv.parse(i);for(const g in a)f[g]=La.channel.clamp[g](a[g]);return Hv.stringify(f)},qL=(i,a,f=0,g=1)=>{if(typeof i!="number")return TNt(i,{a});const w=jW.set({r:La.channel.clamp.r(i),g:La.channel.clamp.g(a),b:La.channel.clamp.b(f),a:La.channel.clamp.a(g)});return Hv.stringify(w)},KMe=(i,a)=>La.lang.round(Hv.parse(i)[a]),WMe=i=>{const{r:a,g:f,b:g}=Hv.parse(i),w=.2126*La.channel.toLinear(a)+.7152*La.channel.toLinear(f)+.0722*La.channel.toLinear(g);return La.lang.round(w)},YMe=i=>WMe(i)>=.5,h9=i=>!YMe(i),CNt=(i,a,f)=>{const g=Hv.parse(i),w=g[a],v=La.channel.clamp[a](w+f);return w!==v&&(g[a]=v),Hv.stringify(g)},Is=(i,a)=>CNt(i,"l",a),Zs=(i,a)=>CNt(i,"l",-a),Cn=(i,a)=>{const f=Hv.parse(i),g={};for(const w in a)a[w]&&(g[w]=f[w]+a[w]);return TNt(i,g)},XMe=(i,a,f=50)=>{const{r:g,g:w,b:v,a:b}=Hv.parse(i),{r:E,g:_,b:S,a:I}=Hv.parse(a),B=f/100,F=B*2-1,R=b-I,X=((F*R===-1?F:(F+R)/(1+F*R))+1)/2,rt=1-X,at=g*X+E*rt,ut=w*X+_*rt,pt=v*X+S*rt,yt=b*B+I*(1-B);return qL(at,ut,pt,yt)},Pi=(i,a=100)=>{const f=Hv.parse(i);return f.r=255-f.r,f.g=255-f.g,f.b=255-f.b,XMe(f,i,a)},Gg=(i,a)=>a?Cn(i,{s:-40,l:10}):Cn(i,{s:-40,l:-10}),VW="#ffffff",UW="#f2f2f2";let QMe=class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){var f,g,w,v,b,E,_,S,I,B,F;if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||Cn(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Cn(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Gg(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Gg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Gg(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Gg(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Pi(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Pi(this.tertiaryColor),this.lineColor=this.lineColor||Pi(this.background),this.arrowheadColor=this.arrowheadColor||Pi(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?Zs(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||"grey",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||Zs(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Pi(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Is(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.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||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||Cn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Cn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Cn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Cn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Cn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Cn(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Cn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Cn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Cn(this.primaryColor,{h:330}),this.darkMode)for(let R=0;R{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}};const JMe=i=>{const a=new QMe;return a.calculate(i),a};let ZMe=class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Is(this.primaryColor,16),this.tertiaryColor=Cn(this.primaryColor,{h:-160}),this.primaryBorderColor=Pi(this.background),this.secondaryBorderColor=Gg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Gg(this.tertiaryColor,this.darkMode),this.primaryTextColor=Pi(this.primaryColor),this.secondaryTextColor=Pi(this.secondaryColor),this.tertiaryTextColor=Pi(this.tertiaryColor),this.lineColor=Pi(this.background),this.textColor=Pi(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Is(Pi("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=qL(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.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.sectionBkgColor=Zs("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Zs(this.sectionBkgColor,10),this.taskBorderColor=qL(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=qL(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.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){var a,f,g,w,v,b,E,_,S,I,B;this.secondBkg=Is(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=Is(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=Is(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=this.darkTextColor,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=Cn(this.primaryColor,{h:64}),this.fillType3=Cn(this.secondaryColor,{h:64}),this.fillType4=Cn(this.primaryColor,{h:-64}),this.fillType5=Cn(this.secondaryColor,{h:-64}),this.fillType6=Cn(this.primaryColor,{h:128}),this.fillType7=Cn(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||Cn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Cn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Cn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Cn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Cn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Cn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Cn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Cn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Cn(this.primaryColor,{h:330});for(let F=0;F{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}};const tDe=i=>{const a=new ZMe;return a.calculate(i),a};let eDe=class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Cn(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Cn(this.primaryColor,{h:-160}),this.primaryBorderColor=Gg(this.primaryColor,this.darkMode),this.secondaryBorderColor=Gg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Gg(this.tertiaryColor,this.darkMode),this.primaryTextColor=Pi(this.primaryColor),this.secondaryTextColor=Pi(this.secondaryColor),this.tertiaryTextColor=Pi(this.tertiaryColor),this.lineColor=Pi(this.background),this.textColor=Pi(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,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="grey",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.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.sectionBkgColor=qL(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.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){var a,f,g,w,v,b,E,_,S,I,B;this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Cn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Cn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Cn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Cn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Cn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Cn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Cn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Cn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Cn(this.primaryColor,{h:330}),this["cScalePeer1"]=this["cScalePeer1"]||Zs(this.secondaryColor,45),this["cScalePeer2"]=this["cScalePeer2"]||Zs(this.tertiaryColor,40);for(let F=0;F{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}};const sgt=i=>{const a=new eDe;return a.calculate(i),a};let nDe=class{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=Is("#cde498",10),this.primaryBorderColor=Gg(this.primaryColor,this.darkMode),this.secondaryBorderColor=Gg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Gg(this.tertiaryColor,this.darkMode),this.primaryTextColor=Pi(this.primaryColor),this.secondaryTextColor=Pi(this.secondaryColor),this.tertiaryTextColor=Pi(this.primaryColor),this.lineColor=Pi(this.background),this.textColor=Pi(this.background),this.THEME_COLOR_LIMIT=12,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="grey",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.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){var a,f,g,w,v,b,E,_,S,I,B;this.actorBorder=Zs(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.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Cn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Cn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Cn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Cn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Cn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Cn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Cn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Cn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Cn(this.primaryColor,{h:330}),this["cScalePeer1"]=this["cScalePeer1"]||Zs(this.secondaryColor,45),this["cScalePeer2"]=this["cScalePeer2"]||Zs(this.tertiaryColor,40);for(let F=0;F{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}};const rDe=i=>{const a=new nDe;return a.calculate(i),a};class iDe{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Is(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Cn(this.primaryColor,{h:-160}),this.primaryBorderColor=Gg(this.primaryColor,this.darkMode),this.secondaryBorderColor=Gg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Gg(this.tertiaryColor,this.darkMode),this.primaryTextColor=Pi(this.primaryColor),this.secondaryTextColor=Pi(this.secondaryColor),this.tertiaryTextColor=Pi(this.tertiaryColor),this.lineColor=Pi(this.background),this.textColor=Pi(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.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="calculated",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.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){var a,f,g,w,v,b,E,_,S,I,B;this.secondBkg=Is(this.contrast,55),this.border2=this.contrast,this.actorBorder=Is(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,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 F=0;F{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}}const _x={base:{getThemeVariables:JMe},dark:{getThemeVariables:tDe},default:{getThemeVariables:sgt},forest:{getThemeVariables:rDe},neutral:{getThemeVariables:i=>{const a=new iDe;return a.calculate(i),a}}},Sx={flowchart:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200},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,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"]},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1},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,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},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,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:""},theme:"default",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","maxEdges"],deterministicIds:!1,fontSize:16},_Nt={...Sx,deterministicIDSeed:void 0,themeCSS:void 0,themeVariables:_x.default.getThemeVariables(),sequence:{...Sx.sequence,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{...Sx.gantt,tickInterval:void 0,useWidth:void 0},c4:{...Sx.c4,useWidth:void 0,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}}},pie:{...Sx.pie,useWidth:984},xyChart:{...Sx.xyChart,useWidth:void 0},requirement:{...Sx.requirement,useWidth:void 0},gitGraph:{...Sx.gitGraph,useMaxWidth:!1},sankey:{...Sx.sankey,useMaxWidth:!1}},SNt=(i,a="")=>Object.keys(i).reduce((f,g)=>Array.isArray(i[g])?f:typeof i[g]=="object"&&i[g]!==null?[...f,a+g,...SNt(i[g],"")]:[...f,a+g],[]),sDe=new Set(SNt(_Nt,"")),yf=_Nt,GW=i=>{if(Wt.debug("sanitizeDirective called with",i),!(typeof i!="object"||i==null)){if(Array.isArray(i)){i.forEach(a=>GW(a));return}for(const a of Object.keys(i)){if(Wt.debug("Checking key",a),a.startsWith("__")||a.includes("proto")||a.includes("constr")||!sDe.has(a)||i[a]==null){Wt.debug("sanitize deleting key: ",a),delete i[a];continue}if(typeof i[a]=="object"){Wt.debug("sanitizing object",a),GW(i[a]);continue}const f=["themeCSS","fontFamily","altFontFamily"];for(const g of f)a.includes(g)&&(Wt.debug("sanitizing css option",a),i[a]=aDe(i[a]))}if(i.themeVariables)for(const a of Object.keys(i.themeVariables)){const f=i.themeVariables[a];f!=null&&f.match&&!f.match(/^[\d "#%(),.;A-Za-z]+$/)&&(i.themeVariables[a]="")}Wt.debug("After sanitization",i)}},aDe=i=>{let a=0,f=0;for(const g of i){if(a{for(const{id:a,detector:f,loader:g}of i)DNt(a,f,g)},DNt=(i,a,f)=>{HL[i]?Wt.error(`Detector with key ${i} already exists`):HL[i]={detector:a,loader:f},Wt.debug(`Detector with key ${i} added${f?" with loader":""}`)},cDe=i=>HL[i].loader,agt=(i,a,{depth:f=2,clobber:g=!1}={})=>{const w={depth:f,clobber:g};return Array.isArray(a)&&!Array.isArray(i)?(a.forEach(v=>agt(i,v,w)),i):Array.isArray(a)&&Array.isArray(i)?(a.forEach(v=>{i.includes(v)||i.push(v)}),i):i===void 0||f<=0?i!=null&&typeof i=="object"&&typeof a=="object"?Object.assign(i,a):a:(a!==void 0&&typeof i=="object"&&typeof a=="object"&&Object.keys(a).forEach(v=>{typeof a[v]=="object"&&(i[v]===void 0||typeof i[v]=="object")?(i[v]===void 0&&(i[v]=Array.isArray(a[v])?[]:{}),i[v]=agt(i[v],a[v],{depth:f-1,clobber:g})):(g||typeof i[v]!="object"&&typeof a[v]!="object")&&(i[v]=a[v])}),i)},Td=agt;var uDe=typeof global=="object"&&global&&global.Object===Object&&global;const INt=uDe;var lDe=typeof self=="object"&&self&&self.Object===Object&&self,hDe=INt||lDe||Function("return this")();const Vv=hDe;var fDe=Vv.Symbol;const Hw=fDe;var ONt=Object.prototype,dDe=ONt.hasOwnProperty,gDe=ONt.toString,mF=Hw?Hw.toStringTag:void 0;function pDe(i){var a=dDe.call(i,mF),f=i[mF];try{i[mF]=void 0;var g=!0}catch{}var w=gDe.call(i);return g&&(a?i[mF]=f:delete i[mF]),w}var bDe=Object.prototype,wDe=bDe.toString;function mDe(i){return wDe.call(i)}var vDe="[object Null]",yDe="[object Undefined]",PNt=Hw?Hw.toStringTag:void 0;function f9(i){return i==null?i===void 0?yDe:vDe:PNt&&PNt in Object(i)?pDe(i):mDe(i)}function v2(i){var a=typeof i;return i!=null&&(a=="object"||a=="function")}var xDe="[object AsyncFunction]",kDe="[object Function]",EDe="[object GeneratorFunction]",TDe="[object Proxy]";function VL(i){if(!v2(i))return!1;var a=f9(i);return a==kDe||a==EDe||a==xDe||a==TDe}var CDe=Vv["__core-js_shared__"];const ogt=CDe;var NNt=function(){var i=/[^.]+$/.exec(ogt&&ogt.keys&&ogt.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function _De(i){return!!NNt&&NNt in i}var SDe=Function.prototype,ADe=SDe.toString;function d9(i){if(i!=null){try{return ADe.call(i)}catch{}try{return i+""}catch{}}return""}var LDe=/[\\^$.*+?()[\]{}|]/g,MDe=/^\[object .+?Constructor\]$/,DDe=Function.prototype,IDe=Object.prototype,ODe=DDe.toString,PDe=IDe.hasOwnProperty,NDe=RegExp("^"+ODe.call(PDe).replace(LDe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function FDe(i){if(!v2(i)||_De(i))return!1;var a=VL(i)?NDe:MDe;return a.test(d9(i))}function BDe(i,a){return i==null?void 0:i[a]}function g9(i,a){var f=BDe(i,a);return FDe(f)?f:void 0}var RDe=g9(Object,"create");const vF=RDe;function jDe(){this.__data__=vF?vF(null):{},this.size=0}function $De(i){var a=this.has(i)&&delete this.__data__[i];return this.size-=a?1:0,a}var zDe="__lodash_hash_undefined__",qDe=Object.prototype,HDe=qDe.hasOwnProperty;function VDe(i){var a=this.__data__;if(vF){var f=a[i];return f===zDe?void 0:f}return HDe.call(a,i)?a[i]:void 0}var UDe=Object.prototype,GDe=UDe.hasOwnProperty;function KDe(i){var a=this.__data__;return vF?a[i]!==void 0:GDe.call(a,i)}var WDe="__lodash_hash_undefined__";function YDe(i,a){var f=this.__data__;return this.size+=this.has(i)?0:1,f[i]=vF&&a===void 0?WDe:a,this}function p9(i){var a=-1,f=i==null?0:i.length;for(this.clear();++a-1}function nIe(i,a){var f=this.__data__,g=WW(f,i);return g<0?(++this.size,f.push([i,a])):f[g][1]=a,this}function Ax(i){var a=-1,f=i==null?0:i.length;for(this.clear();++a-1&&i%1==0&&i<=DIe}function f8(i){return i!=null&&fgt(i.length)&&!VL(i)}function WNt(i){return e4(i)&&f8(i)}function IIe(){return!1}var YNt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,XNt=YNt&&typeof module=="object"&&module&&!module.nodeType&&module,OIe=XNt&&XNt.exports===YNt,QNt=OIe?Vv.Buffer:void 0,PIe=QNt?QNt.isBuffer:void 0,NIe=PIe||IIe;const WL=NIe;var FIe="[object Object]",BIe=Function.prototype,RIe=Object.prototype,JNt=BIe.toString,jIe=RIe.hasOwnProperty,$Ie=JNt.call(Object);function ZNt(i){if(!e4(i)||f9(i)!=FIe)return!1;var a=hgt(i);if(a===null)return!0;var f=jIe.call(a,"constructor")&&a.constructor;return typeof f=="function"&&f instanceof f&&JNt.call(f)==$Ie}var zIe="[object Arguments]",qIe="[object Array]",HIe="[object Boolean]",VIe="[object Date]",UIe="[object Error]",GIe="[object Function]",KIe="[object Map]",WIe="[object Number]",YIe="[object Object]",XIe="[object RegExp]",QIe="[object Set]",JIe="[object String]",ZIe="[object WeakMap]",tOe="[object ArrayBuffer]",eOe="[object DataView]",nOe="[object Float32Array]",rOe="[object Float64Array]",iOe="[object Int8Array]",sOe="[object Int16Array]",aOe="[object Int32Array]",oOe="[object Uint8Array]",cOe="[object Uint8ClampedArray]",uOe="[object Uint16Array]",lOe="[object Uint32Array]",Bl={};Bl[nOe]=Bl[rOe]=Bl[iOe]=Bl[sOe]=Bl[aOe]=Bl[oOe]=Bl[cOe]=Bl[uOe]=Bl[lOe]=!0,Bl[zIe]=Bl[qIe]=Bl[tOe]=Bl[HIe]=Bl[eOe]=Bl[VIe]=Bl[UIe]=Bl[GIe]=Bl[KIe]=Bl[WIe]=Bl[YIe]=Bl[XIe]=Bl[QIe]=Bl[JIe]=Bl[ZIe]=!1;function hOe(i){return e4(i)&&fgt(i.length)&&!!Bl[f9(i)]}function tY(i){return function(a){return i(a)}}var tFt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,xF=tFt&&typeof module=="object"&&module&&!module.nodeType&&module,fOe=xF&&xF.exports===tFt,dgt=fOe&&INt.process,dOe=function(){try{var i=xF&&xF.require&&xF.require("util").types;return i||dgt&&dgt.binding&&dgt.binding("util")}catch{}}();const YL=dOe;var eFt=YL&&YL.isTypedArray,gOe=eFt?tY(eFt):hOe;const eY=gOe;function ggt(i,a){if(!(a==="constructor"&&typeof i[a]=="function")&&a!="__proto__")return i[a]}var pOe=Object.prototype,bOe=pOe.hasOwnProperty;function nY(i,a,f){var g=i[a];(!(bOe.call(i,a)&&UL(g,f))||f===void 0&&!(a in i))&&QW(i,a,f)}function kF(i,a,f,g){var w=!f;f||(f={});for(var v=-1,b=a.length;++v-1&&i%1==0&&i0){if(++a>=DOe)return arguments[0]}else a=0;return i.apply(void 0,arguments)}}var NOe=POe(MOe);const aFt=NOe;function iY(i,a){return aFt(sFt(i,a,w9),i+"")}function EF(i,a,f){if(!v2(f))return!1;var g=typeof a;return(g=="number"?f8(f)&&rY(a,f.length):g=="string"&&a in f)?UL(f[a],i):!1}function FOe(i){return iY(function(a,f){var g=-1,w=f.length,v=w>1?f[w-1]:void 0,b=w>2?f[2]:void 0;for(v=i.length>3&&typeof v=="function"?(w--,v):void 0,b&&EF(f[0],f[1],b)&&(v=w<3?void 0:v,w=1),a=Object(a);++gE.args);GW(b),g=Td(g,[...b])}else g=f.args;if(!g)return;let w=KW(i,a);const v="config";return g[v]!==void 0&&(w==="flowchart-v2"&&(w="flowchart"),g[w]=g[v],delete g[v]),g},cFt=function(i,a=null){try{const f=new RegExp(`[%]{2}(?![{]${jOe.source})(?=[}][%]{2}).* +`,"ig");i=i.trim().replace(f,"").replace(/'/gm,'"'),Wt.debug(`Detecting diagram directive${a!==null?" type:"+a:""} based on the text:${i}`);let g;const w=[];for(;(g=wF.exec(i))!==null;)if(g.index===wF.lastIndex&&wF.lastIndex++,g&&!a||a&&g[1]&&g[1].match(a)||a&&g[2]&&g[2].match(a)){const v=g[1]?g[1]:g[2],b=g[3]?g[3].trim():g[4]?JSON.parse(g[4].trim()):null;w.push({type:v,args:b})}return w.length===0?{type:i,args:null}:w.length===1?w[0]:w}catch(f){return Wt.error(`ERROR: ${f.message} - Unable to parse directive type: '${a}' based on the text: '${i}'`),{type:void 0,args:null}}},zOe=function(i){return i.replace(wF,"")},qOe=function(i,a){for(const[f,g]of a.entries())if(g.match(i))return f;return-1};function Vw(i,a){if(!i)return a;const f=`curve${i.charAt(0).toUpperCase()+i.slice(1)}`;return ROe[f]??a}function HOe(i,a){const f=i.trim();if(f)return a.securityLevel!=="loose"?c8(f):f}const VOe=(i,...a)=>{const f=i.split("."),g=f.length-1,w=f[g];let v=window;for(let b=0;b{f+=uFt(w,a),a=w});const g=f/2;return pgt(i,g)}function GOe(i){return i.length===1?i[0]:UOe(i)}const lFt=(i,a=2)=>{const f=Math.pow(10,a);return Math.round(i*f)/f},pgt=(i,a)=>{let f,g=a;for(const w of i){if(f){const v=uFt(w,f);if(v=1)return{x:w.x,y:w.y};if(b>0&&b<1)return{x:lFt((1-b)*f.x+b*w.x,5),y:lFt((1-b)*f.y+b*w.y,5)}}}f=w}throw new Error("Could not find a suitable point for the given distance")},KOe=(i,a,f)=>{Wt.info(`our points ${JSON.stringify(a)}`),a[0]!==f&&(a=a.reverse());const w=pgt(a,25),v=i?10:5,b=Math.atan2(a[0].y-w.y,a[0].x-w.x),E={x:0,y:0};return E.x=Math.sin(b)*v+(a[0].x+w.x)/2,E.y=-Math.cos(b)*v+(a[0].y+w.y)/2,E};function WOe(i,a,f){const g=structuredClone(f);Wt.info("our points",g),a!=="start_left"&&a!=="start_right"&&g.reverse();const w=25+i,v=pgt(g,w),b=10+i*.5,E=Math.atan2(g[0].y-v.y,g[0].x-v.x),_={x:0,y:0};return a==="start_left"?(_.x=Math.sin(E+Math.PI)*b+(g[0].x+v.x)/2,_.y=-Math.cos(E+Math.PI)*b+(g[0].y+v.y)/2):a==="end_right"?(_.x=Math.sin(E-Math.PI)*b+(g[0].x+v.x)/2-5,_.y=-Math.cos(E-Math.PI)*b+(g[0].y+v.y)/2-5):a==="end_left"?(_.x=Math.sin(E)*b+(g[0].x+v.x)/2-5,_.y=-Math.cos(E)*b+(g[0].y+v.y)/2-5):(_.x=Math.sin(E)*b+(g[0].x+v.x)/2,_.y=-Math.cos(E)*b+(g[0].y+v.y)/2),_}function Uw(i){let a="",f="";for(const g of i)g!==void 0&&(g.startsWith("color:")||g.startsWith("text-align:")?f=f+g+";":a=a+g+";");return{style:a,labelStyle:f}}let hFt=0;const fFt=()=>(hFt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+hFt);function YOe(i){let a="";const f="0123456789abcdef",g=f.length;for(let w=0;wYOe(i.length),XOe=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:""}},QOe=function(i,a){const f=a.text.replace(ei.lineBreakRegex," "),[,g]=QL(a.fontSize),w=i.append("text");w.attr("x",a.x),w.attr("y",a.y),w.style("text-anchor",a.anchor),w.style("font-family",a.fontFamily),w.style("font-size",g),w.style("font-weight",a.fontWeight),w.attr("fill",a.fill),a.class!==void 0&&w.attr("class",a.class);const v=w.append("tspan");return v.attr("x",a.x+a.textMargin*2),v.attr("fill",a.fill),v.text(f),w},gFt=GL((i,a,f)=>{if(!i||(f=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},f),ei.lineBreakRegex.test(i)))return i;const g=i.split(" "),w=[];let v="";return g.forEach((b,E)=>{const _=n4(`${b} `,f),S=n4(v,f);if(_>a){const{hyphenatedStrings:F,remainingWord:R}=JOe(b,a,"-",f);w.push(v,...F),v=R}else S+_>=a?(w.push(v),v=b):v=[v,b].filter(Boolean).join(" ");E+1===g.length&&w.push(v)}),w.filter(b=>b!=="").join(f.joinWith)},(i,a,f)=>`${i}${a}${f.fontSize}${f.fontWeight}${f.fontFamily}${f.joinWith}`),JOe=GL((i,a,f="-",g)=>{g=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},g);const w=[...i],v=[];let b="";return w.forEach((E,_)=>{const S=`${b}${E}`;if(n4(S,g)>=a){const B=_+1,F=w.length===B,R=`${S}${f}`;v.push(F?S:R),b=""}else b=S}),{hyphenatedStrings:v,remainingWord:b}},(i,a,f="-",g)=>`${i}${a}${f}${g.fontSize}${g.fontWeight}${g.fontFamily}`);function bgt(i,a){return wgt(i,a).height}function n4(i,a){return wgt(i,a).width}const wgt=GL((i,a)=>{const{fontSize:f=12,fontFamily:g="Arial",fontWeight:w=400}=a;if(!i)return{width:0,height:0};const[,v]=QL(f),b=["sans-serif",g],E=i.split(ei.lineBreakRegex),_=[],S=xr("body");if(!S.remove)return{width:0,height:0,lineHeight:0};const I=S.append("svg");for(const F of b){let R=0;const q={width:0,height:0,lineHeight:0};for(const X of E){const rt=XOe();rt.text=X||oFt;const at=QOe(I,rt).style("font-size",v).style("font-weight",w).style("font-family",F),ut=(at._groups||at)[0][0].getBBox();if(ut.width===0&&ut.height===0)throw new Error("svg element not in render tree");q.width=Math.round(Math.max(q.width,ut.width)),R=Math.round(ut.height),q.height+=R,q.lineHeight=Math.round(Math.max(q.lineHeight,R))}_.push(q)}I.remove();const B=isNaN(_[1].height)||isNaN(_[1].width)||isNaN(_[1].lineHeight)||_[0].height>_[1].height&&_[0].width>_[1].width&&_[0].lineHeight>_[1].lineHeight?0:1;return _[B]},(i,a)=>`${i}${a.fontSize}${a.fontWeight}${a.fontFamily}`);class ZOe{constructor(a=!1,f){this.count=0,this.count=f?f.length:0,this.next=a?()=>this.count++:()=>Date.now()}}let aY;const tPe=function(i){return aY=aY||document.createElement("div"),i=escape(i).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),aY.innerHTML=i,unescape(aY.textContent)};function pFt(i){return"str"in i}const ePe=(i,a,f,g)=>{var v;if(!g)return;const w=(v=i.node())==null?void 0:v.getBBox();w&&i.append("text").text(g).attr("x",w.x+w.width/2).attr("y",-f).attr("class",a)},QL=i=>{if(typeof i=="number")return[i,i+"px"];const a=parseInt(i??"",10);return Number.isNaN(a)?[void 0,void 0]:i===String(a)?[a,i+"px"]:[a,i]};function TF(i,a){return sY({},i,a)}const ao={assignWithDepth:Td,wrapLabel:gFt,calculateTextHeight:bgt,calculateTextWidth:n4,calculateTextDimensions:wgt,cleanAndMerge:TF,detectInit:$Oe,detectDirective:cFt,isSubstringInArray:qOe,interpolateToCurve:Vw,calcLabelPosition:GOe,calcCardinalityPosition:KOe,calcTerminalLabelPosition:WOe,formatUrl:HOe,getStylesFromArray:Uw,generateId:fFt,random:dFt,runFunc:VOe,entityDecode:tPe,insertTitle:ePe,parseFontSize:QL,InitIDGenerator:ZOe},nPe=function(i){let a=i;return a=a.replace(/style.*:\S*#.*;/g,function(f){return f.substring(0,f.length-1)}),a=a.replace(/classDef.*:\S*#.*;/g,function(f){return f.substring(0,f.length-1)}),a=a.replace(/#\w+;/g,function(f){const g=f.substring(1,f.length-1);return/^\+?\d+$/.test(g)?"fl°°"+g+"¶ß":"fl°"+g+"¶ß"}),a},CF=function(i){return i.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")};var bFt="comm",wFt="rule",mFt="decl",rPe="@import",iPe="@keyframes",sPe=Math.abs,mgt=String.fromCharCode;function vFt(i){return i.trim()}function vgt(i,a,f){return i.replace(a,f)}function aPe(i,a){return i.indexOf(a)}function _F(i,a){return i.charCodeAt(a)|0}function SF(i,a,f){return i.slice(a,f)}function d8(i){return i.length}function yFt(i){return i.length}function oY(i,a){return a.push(i),i}var cY=1,JL=1,xFt=0,Gw=0,a1=0,ZL="";function ygt(i,a,f,g,w,v,b){return{value:i,root:a,parent:f,type:g,props:w,children:v,line:cY,column:JL,length:b,return:""}}function oPe(){return a1}function cPe(){return a1=Gw>0?_F(ZL,--Gw):0,JL--,a1===10&&(JL=1,cY--),a1}function Gv(){return a1=Gw2||xgt(a1)>3?"":" "}function fPe(i,a){for(;--a&&Gv()&&!(a1<48||a1>102||a1>57&&a1<65||a1>70&&a1<97););return lY(i,uY()+(a<6&&m9()==32&&Gv()==32))}function Egt(i){for(;Gv();)switch(a1){case i:return Gw;case 34:case 39:i!==34&&i!==39&&Egt(a1);break;case 40:i===41&&Egt(i);break;case 92:Gv();break}return Gw}function dPe(i,a){for(;Gv()&&i+a1!==47+10;)if(i+a1===42+42&&m9()===47)break;return"/*"+lY(a,Gw-1)+"*"+mgt(i===47?i:Gv())}function gPe(i){for(;!xgt(m9());)Gv();return lY(i,Gw)}function pPe(i){return lPe(hY("",null,null,null,[""],i=uPe(i),0,[0],i))}function hY(i,a,f,g,w,v,b,E,_){for(var S=0,I=0,B=b,F=0,R=0,q=0,X=1,rt=1,at=1,ut=0,pt="",yt=w,mt=v,gt=g,ht=pt;rt;)switch(q=ut,ut=Gv()){case 40:if(q!=108&&_F(ht,B-1)==58){aPe(ht+=vgt(kgt(ut),"&","&\f"),"&\f")!=-1&&(at=-1);break}case 34:case 39:case 91:ht+=kgt(ut);break;case 9:case 10:case 13:case 32:ht+=hPe(q);break;case 92:ht+=fPe(uY()-1,7);continue;case 47:switch(m9()){case 42:case 47:oY(bPe(dPe(Gv(),uY()),a,f),_);break;default:ht+="/"}break;case 123*X:E[S++]=d8(ht)*at;case 125*X:case 59:case 0:switch(ut){case 0:case 125:rt=0;case 59+I:R>0&&d8(ht)-B&&oY(R>32?EFt(ht+";",g,f,B-1):EFt(vgt(ht," ","")+";",g,f,B-2),_);break;case 59:ht+=";";default:if(oY(gt=kFt(ht,a,f,S,I,w,E,pt,yt=[],mt=[],B),v),ut===123)if(I===0)hY(ht,a,gt,gt,yt,v,B,E,mt);else switch(F===99&&_F(ht,3)===110?100:F){case 100:case 109:case 115:hY(i,gt,gt,g&&oY(kFt(i,gt,gt,0,0,w,E,pt,w,yt=[],B),mt),w,mt,B,E,g?yt:mt);break;default:hY(ht,gt,gt,gt,[""],mt,0,E,mt)}}S=I=R=0,X=at=1,pt=ht="",B=b;break;case 58:B=1+d8(ht),R=q;default:if(X<1){if(ut==123)--X;else if(ut==125&&X++==0&&cPe()==125)continue}switch(ht+=mgt(ut),ut*X){case 38:at=I>0?1:(ht+="\f",-1);break;case 44:E[S++]=(d8(ht)-1)*at,at=1;break;case 64:m9()===45&&(ht+=kgt(Gv())),F=m9(),I=B=d8(pt=ht+=gPe(uY())),ut++;break;case 45:q===45&&d8(ht)==2&&(X=0)}}return v}function kFt(i,a,f,g,w,v,b,E,_,S,I){for(var B=w-1,F=w===0?v:[""],R=yFt(F),q=0,X=0,rt=0;q0?F[at]+" "+ut:vgt(ut,/&\f/g,F[at])))&&(_[rt++]=pt);return ygt(i,a,f,w===0?wFt:E,_,S,I)}function bPe(i,a,f){return ygt(i,a,f,bFt,mgt(oPe()),SF(i,2,-2),0)}function EFt(i,a,f,g){return ygt(i,a,f,mFt,SF(i,0,g),SF(i,g+1,-1),g)}function Tgt(i,a){for(var f="",g=yFt(i),w=0;w{let f=Td({},i),g={};for(const w of a)AFt(w),g=Td(g,w);if(f=Td(f,g),g.theme&&g.theme in _x){const w=Td({},CFt),v=Td(w.themeVariables||{},g.themeVariables);f.theme&&f.theme in _x&&(f.themeVariables=_x[f.theme].getThemeVariables(v))}return AF=f,MFt(AF),AF},mPe=i=>(nb=Td({},tM),nb=Td(nb,i),i.theme&&_x[i.theme]&&(nb.themeVariables=_x[i.theme].getThemeVariables(i.themeVariables)),fY(nb,eM),nb),vPe=i=>{CFt=Td({},i)},yPe=i=>(nb=Td(nb,i),fY(nb,eM),nb),_Ft=()=>Td({},nb),SFt=i=>(MFt(i),Td(AF,i),h0()),h0=()=>Td({},AF),AFt=i=>{i&&(["secure",...nb.secure??[]].forEach(a=>{Object.hasOwn(i,a)&&(Wt.debug(`Denied attempt to modify a secure key ${a}`,i[a]),delete i[a])}),Object.keys(i).forEach(a=>{a.startsWith("__")&&delete i[a]}),Object.keys(i).forEach(a=>{typeof i[a]=="string"&&(i[a].includes("<")||i[a].includes(">")||i[a].includes("url(data:"))&&delete i[a],typeof i[a]=="object"&&AFt(i[a])}))},xPe=i=>{GW(i),i.fontFamily&&(!i.themeVariables||!i.themeVariables.fontFamily)&&(i.themeVariables={fontFamily:i.fontFamily}),eM.push(i),fY(nb,eM)},dY=(i=nb)=>{eM=[],fY(i,eM)},kPe={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},LFt={},EPe=i=>{LFt[i]||(Wt.warn(kPe[i]),LFt[i]=!0)},MFt=i=>{i&&(i.lazyLoadedDiagrams||i.loadExternalDiagramsAtStartup)&&EPe("LAZY_LOAD_DEPRECATED")},DFt="c4",TPe={id:DFt,detector:i=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>zRe);return{id:DFt,diagram:i}}},IFt="flowchart",CPe={id:IFt,detector:(i,a)=>{var f,g;return((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="dagre-wrapper"||((g=a==null?void 0:a.flowchart)==null?void 0:g.defaultRenderer)==="elk"?!1:/^\s*graph/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>WKe);return{id:IFt,diagram:i}}},OFt="flowchart-v2",_Pe={id:OFt,detector:(i,a)=>{var f,g,w;return((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="dagre-d3"||((g=a==null?void 0:a.flowchart)==null?void 0:g.defaultRenderer)==="elk"?!1:/^\s*graph/.test(i)&&((w=a==null?void 0:a.flowchart)==null?void 0:w.defaultRenderer)==="dagre-wrapper"?!0:/^\s*flowchart/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>YKe);return{id:OFt,diagram:i}}},PFt="er",SPe={id:PFt,detector:i=>/^\s*erDiagram/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>xWe);return{id:PFt,diagram:i}}},NFt="gitGraph",APe={id:NFt,detector:i=>/^\s*gitGraph/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>GWe);return{id:NFt,diagram:i}}},FFt="gantt",LPe={id:FFt,detector:i=>/^\s*gantt/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>NYe);return{id:FFt,diagram:i}}},BFt="info",MPe={id:BFt,detector:i=>/^\s*info/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>BYe);return{id:BFt,diagram:i}}},RFt="pie",DPe={id:RFt,detector:i=>/^\s*pie/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>HYe);return{id:RFt,diagram:i}}},jFt="quadrantChart",IPe={id:jFt,detector:i=>/^\s*quadrantChart/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>sXe);return{id:jFt,diagram:i}}},$Ft="xychart",OPe={id:$Ft,detector:i=>/^\s*xychart-beta/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>LXe);return{id:$Ft,diagram:i}}},zFt="requirement",PPe={id:zFt,detector:i=>/^\s*requirement(Diagram)?/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>jXe);return{id:zFt,diagram:i}}},qFt="sequence",NPe={id:qFt,detector:i=>/^\s*sequenceDiagram/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>UQe);return{id:qFt,diagram:i}}},HFt="class",FPe={id:HFt,detector:(i,a)=>{var f;return((f=a==null?void 0:a.class)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!1:/^\s*classDiagram/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>pJe);return{id:HFt,diagram:i}}},VFt="classDiagram",BPe={id:VFt,detector:(i,a)=>{var f;return/^\s*classDiagram/.test(i)&&((f=a==null?void 0:a.class)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>xJe);return{id:VFt,diagram:i}}},UFt="state",RPe={id:UFt,detector:(i,a)=>{var f;return((f=a==null?void 0:a.state)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>cZe);return{id:UFt,diagram:i}}},GFt="stateDiagram",jPe={id:GFt,detector:(i,a)=>{var f;return!!(/^\s*stateDiagram-v2/.test(i)||/^\s*stateDiagram/.test(i)&&((f=a==null?void 0:a.state)==null?void 0:f.defaultRenderer)==="dagre-wrapper")},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>SZe);return{id:GFt,diagram:i}}},KFt="journey",$Pe={id:KFt,detector:i=>/^\s*journey/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>GZe);return{id:KFt,diagram:i}}},zPe=function(i,a){for(let f of a)i.attr(f[0],f[1])},qPe=function(i,a,f){let g=new Map;return f?(g.set("width","100%"),g.set("style",`max-width: ${a}px;`)):(g.set("height",i),g.set("width",a)),g},Kg=function(i,a,f,g){const w=qPe(a,f,g);zPe(i,w)},g8=function(i,a,f,g){const w=a.node().getBBox(),v=w.width,b=w.height;Wt.info(`SVG bounds: ${v}x${b}`,w);let E=0,_=0;Wt.info(`Graph bounds: ${E}x${_}`,i),E=v+f*2,_=b+f*2,Wt.info(`Calculated bounds: ${E}x${_}`),Kg(a,_,E,g);const S=`${w.x-f} ${w.y-f} ${w.width+2*f} ${w.height+2*f}`;a.attr("viewBox",S)},gY={},HPe=(i,a,f)=>{let g="";return i in gY&&gY[i]?g=gY[i](f):Wt.warn(`No theme found for ${i}`),` & { + font-family: ${f.fontFamily}; + font-size: ${f.fontSize}; + fill: ${f.textColor} + } + + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${f.errorBkgColor}; + } + & .error-text { + fill: ${f.errorTextColor}; + stroke: ${f.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 2px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${f.lineColor}; + stroke: ${f.lineColor}; + } + & .marker.cross { + stroke: ${f.lineColor}; + } + + & svg { + font-family: ${f.fontFamily}; + font-size: ${f.fontSize}; + } + + ${g} + + ${a} +`},VPe=(i,a)=>{a!==void 0&&(gY[i]=a)},UPe=HPe;let Cgt="",_gt="",Sgt="";const Agt=i=>Ed(i,h0()),Wg=()=>{Cgt="",Sgt="",_gt=""},ng=i=>{Cgt=Agt(i).replace(/^\s+/g,"")},Yg=()=>Cgt,Xg=i=>{Sgt=Agt(i).replace(/\n\s+/g,` +`)},Qg=()=>Sgt,y2=i=>{_gt=Agt(i)},Jg=()=>_gt,WFt=Object.freeze(Object.defineProperty({__proto__:null,clear:Wg,getAccDescription:Qg,getAccTitle:Yg,getDiagramTitle:Jg,setAccDescription:Xg,setAccTitle:ng,setDiagramTitle:y2},Symbol.toStringTag,{value:"Module"})),GPe=Wt,KPe=s0t,Re=h0,WPe=SFt,YFt=tM,YPe=i=>Ed(i,Re()),XFt=g8,XPe=()=>WFt,pY={},bY=(i,a,f)=>{var g;if(pY[i])throw new Error(`Diagram ${i} already registered.`);pY[i]=a,f&&DNt(i,f),VPe(i,a.styles),(g=a.injectUtils)==null||g.call(a,GPe,KPe,Re,YPe,XFt,XPe(),()=>{})},Lgt=i=>{if(i in pY)return pY[i];throw new QPe(i)};class QPe extends Error{constructor(a){super(`Diagram ${a} not found.`)}}const wY=i=>{var w;const{securityLevel:a}=Re();let f=xr("body");if(a==="sandbox"){const b=((w=xr(`#i${i}`).node())==null?void 0:w.contentDocument)??document;f=xr(b.body)}return f.select(`#${i}`)},QFt={draw:(i,a,f)=>{Wt.debug(`renering svg for syntax error +`);const g=wY(a);g.attr("viewBox","0 0 2412 512"),Kg(g,100,512,!0);const w=g.append("g");w.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"),w.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"),w.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"),w.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"),w.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"),w.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"),w.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"),w.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${f}`)}},JPe=QFt,ZPe={db:{},renderer:QFt,parser:{parser:{yy:{}},parse:()=>{}}},JFt="flowchart-elk",tNe={id:JFt,detector:(i,a)=>{var f;return!!(/^\s*flowchart-elk/.test(i)||/^\s*flowchart|graph/.test(i)&&((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="elk")},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>ctn);return{id:JFt,diagram:i}}},ZFt="timeline",eNe={id:ZFt,detector:i=>/^\s*timeline/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>Stn);return{id:ZFt,diagram:i}}},tBt="mindmap",nNe={id:tBt,detector:i=>/^\s*mindmap/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>ren);return{id:tBt,diagram:i}}},eBt="sankey",rNe={id:eBt,detector:i=>/^\s*sankey-beta/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>Oen);return{id:eBt,diagram:i}}};let nBt=!1;const Mgt=()=>{nBt||(nBt=!0,bY("error",ZPe,i=>i.toLowerCase().trim()==="error"),bY("---",{db:{clear:()=>{}},styles:{},renderer:{draw:()=>{}},parser:{parser:{yy:{}},parse:()=>{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")}},init:()=>null},i=>i.toLowerCase().trimStart().startsWith("---")),MNt(TPe,BPe,FPe,SPe,LPe,MPe,DPe,PPe,NPe,tNe,_Pe,CPe,nNe,eNe,APe,jPe,RPe,$Pe,IPe,rNe,OPe))};class rBt{constructor(a,f={}){this.text=a,this.metadata=f,this.type="graph",this.text=nPe(a),this.text+=` +`;const g=h0();try{this.type=KW(a,g)}catch(v){this.type="error",this.detectError=v}const w=Lgt(this.type);Wt.debug("Type "+this.type),this.db=w.db,this.renderer=w.renderer,this.parser=w.parser,this.parser.parser.yy=this.db,this.init=w.init,this.parse()}parse(){var f,g,w,v,b;if(this.detectError)throw this.detectError;(g=(f=this.db).clear)==null||g.call(f);const a=h0();(w=this.init)==null||w.call(this,a),this.metadata.title&&((b=(v=this.db).setDiagramTitle)==null||b.call(v,this.metadata.title)),this.parser.parse(this.text)}async render(a,f){await this.renderer.draw(this.text,a,f,this)}getParser(){return this.parser}getType(){return this.type}}const iNe=async(i,a={})=>{const f=KW(i,h0());try{Lgt(f)}catch{const w=cDe(f);if(!w)throw new LNt(`Diagram ${f} not found.`);const{id:v,diagram:b}=await w();bY(v,b)}return new rBt(i,a)};let Dgt=[];const sNe=i=>{Dgt.push(i)},aNe=()=>{Dgt.forEach(i=>{i()}),Dgt=[]};var oNe=VNt(Object.keys,Object);const cNe=oNe;var uNe=Object.prototype,lNe=uNe.hasOwnProperty;function iBt(i){if(!ZW(i))return cNe(i);var a=[];for(var f in Object(i))lNe.call(i,f)&&f!="constructor"&&a.push(f);return a}var hNe=g9(Vv,"DataView");const Igt=hNe;var fNe=g9(Vv,"Promise");const Ogt=fNe;var dNe=g9(Vv,"Set");const nM=dNe;var gNe=g9(Vv,"WeakMap");const Pgt=gNe;var sBt="[object Map]",pNe="[object Object]",aBt="[object Promise]",oBt="[object Set]",cBt="[object WeakMap]",uBt="[object DataView]",bNe=d9(Igt),wNe=d9(yF),mNe=d9(Ogt),vNe=d9(nM),yNe=d9(Pgt),v9=f9;(Igt&&v9(new Igt(new ArrayBuffer(1)))!=uBt||yF&&v9(new yF)!=sBt||Ogt&&v9(Ogt.resolve())!=aBt||nM&&v9(new nM)!=oBt||Pgt&&v9(new Pgt)!=cBt)&&(v9=function(i){var a=f9(i),f=a==pNe?i.constructor:void 0,g=f?d9(f):"";if(g)switch(g){case bNe:return uBt;case wNe:return sBt;case mNe:return aBt;case vNe:return oBt;case yNe:return cBt}return a});const rM=v9;var xNe="[object Map]",kNe="[object Set]",ENe=Object.prototype,TNe=ENe.hasOwnProperty;function LF(i){if(i==null)return!0;if(f8(i)&&(s1(i)||typeof i=="string"||typeof i.splice=="function"||WL(i)||eY(i)||KL(i)))return!i.length;var a=rM(i);if(a==xNe||a==kNe)return!i.size;if(ZW(i))return!iBt(i).length;for(var f in i)if(TNe.call(i,f))return!1;return!0}const CNe="graphics-document document";function _Ne(i,a){i.attr("role",CNe),a!==""&&i.attr("aria-roledescription",a)}function SNe(i,a,f,g){if(i.insert!==void 0){if(f){const w=`chart-desc-${g}`;i.attr("aria-describedby",w),i.insert("desc",":first-child").attr("id",w).text(f)}if(a){const w=`chart-title-${g}`;i.attr("aria-labelledby",w),i.insert("title",":first-child").attr("id",w).text(a)}}}const ANe=i=>i.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart();/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function lBt(i){return typeof i>"u"||i===null}function LNe(i){return typeof i=="object"&&i!==null}function MNe(i){return Array.isArray(i)?i:lBt(i)?[]:[i]}function DNe(i,a){var f,g,w,v;if(a)for(v=Object.keys(a),f=0,g=v.length;fE&&(v=" ... ",a=g-E+v.length),f-g>E&&(b=" ...",f=g+E-b.length),{str:v+i.slice(a,f).replace(/\t/g,"→")+b,pos:g-a+v.length}}function Fgt(i,a){return Zg.repeat(" ",a-i.length)+i}function $Ne(i,a){if(a=Object.create(a||null),!i.buffer)return null;a.maxLength||(a.maxLength=79),typeof a.indent!="number"&&(a.indent=1),typeof a.linesBefore!="number"&&(a.linesBefore=3),typeof a.linesAfter!="number"&&(a.linesAfter=2);for(var f=/\r?\n|\r|\0/g,g=[0],w=[],v,b=-1;v=f.exec(i.buffer);)w.push(v.index),g.push(v.index+v[0].length),i.position<=v.index&&b<0&&(b=g.length-2);b<0&&(b=g.length-1);var E="",_,S,I=Math.min(i.line+a.linesAfter,w.length).toString().length,B=a.maxLength-(a.indent+I+3);for(_=1;_<=a.linesBefore&&!(b-_<0);_++)S=Ngt(i.buffer,g[b-_],w[b-_],i.position-(g[b]-g[b-_]),B),E=Zg.repeat(" ",a.indent)+Fgt((i.line-_+1).toString(),I)+" | "+S.str+` +`+E;for(S=Ngt(i.buffer,g[b],w[b],i.position,B),E+=Zg.repeat(" ",a.indent)+Fgt((i.line+1).toString(),I)+" | "+S.str+` +`,E+=Zg.repeat("-",a.indent+I+3+S.pos)+`^ +`,_=1;_<=a.linesAfter&&!(b+_>=w.length);_++)S=Ngt(i.buffer,g[b+_],w[b+_],i.position-(g[b]-g[b+_]),B),E+=Zg.repeat(" ",a.indent)+Fgt((i.line+_+1).toString(),I)+" | "+S.str+` +`;return E.replace(/\n$/,"")}var zNe=$Ne,qNe=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],HNe=["scalar","sequence","mapping"];function VNe(i){var a={};return i!==null&&Object.keys(i).forEach(function(f){i[f].forEach(function(g){a[String(g)]=f})}),a}function UNe(i,a){if(a=a||{},Object.keys(a).forEach(function(f){if(qNe.indexOf(f)===-1)throw new Mx('Unknown option "'+f+'" is met in definition of "'+i+'" YAML type.')}),this.options=a,this.tag=i,this.kind=a.kind||null,this.resolve=a.resolve||function(){return!0},this.construct=a.construct||function(f){return f},this.instanceOf=a.instanceOf||null,this.predicate=a.predicate||null,this.represent=a.represent||null,this.representName=a.representName||null,this.defaultStyle=a.defaultStyle||null,this.multi=a.multi||!1,this.styleAliases=VNe(a.styleAliases||null),HNe.indexOf(this.kind)===-1)throw new Mx('Unknown kind "'+this.kind+'" is specified for "'+i+'" YAML type.')}var rg=UNe;function fBt(i,a){var f=[];return i[a].forEach(function(g){var w=f.length;f.forEach(function(v,b){v.tag===g.tag&&v.kind===g.kind&&v.multi===g.multi&&(w=b)}),f[w]=g}),f}function GNe(){var i={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},a,f;function g(w){w.multi?(i.multi[w.kind].push(w),i.multi.fallback.push(w)):i[w.kind][w.tag]=i.fallback[w.tag]=w}for(a=0,f=arguments.length;a=0?"0b"+i.toString(2):"-0b"+i.toString(2).slice(1)},octal:function(i){return i>=0?"0o"+i.toString(8):"-0o"+i.toString(8).slice(1)},decimal:function(i){return i.toString(10)},hexadecimal:function(i){return i>=0?"0x"+i.toString(16).toUpperCase():"-0x"+i.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),dFe=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function gFe(i){return!(i===null||!dFe.test(i)||i[i.length-1]==="_")}function pFe(i){var a,f;return a=i.replace(/_/g,"").toLowerCase(),f=a[0]==="-"?-1:1,"+-".indexOf(a[0])>=0&&(a=a.slice(1)),a===".inf"?f===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:a===".nan"?NaN:f*parseFloat(a,10)}var bFe=/^[-+]?[0-9]+e/;function wFe(i,a){var f;if(isNaN(i))switch(a){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===i)switch(a){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===i)switch(a){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Zg.isNegativeZero(i))return"-0.0";return f=i.toString(10),bFe.test(f)?f.replace("e",".e"):f}function mFe(i){return Object.prototype.toString.call(i)==="[object Number]"&&(i%1!==0||Zg.isNegativeZero(i))}var vFe=new rg("tag:yaml.org,2002:float",{kind:"scalar",resolve:gFe,construct:pFe,predicate:mFe,represent:wFe,defaultStyle:"lowercase"}),dBt=QNe.extend({implicit:[eFe,sFe,fFe,vFe]}),yFe=dBt,gBt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),pBt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function xFe(i){return i===null?!1:gBt.exec(i)!==null||pBt.exec(i)!==null}function kFe(i){var a,f,g,w,v,b,E,_=0,S=null,I,B,F;if(a=gBt.exec(i),a===null&&(a=pBt.exec(i)),a===null)throw new Error("Date resolve error");if(f=+a[1],g=+a[2]-1,w=+a[3],!a[4])return new Date(Date.UTC(f,g,w));if(v=+a[4],b=+a[5],E=+a[6],a[7]){for(_=a[7].slice(0,3);_.length<3;)_+="0";_=+_}return a[9]&&(I=+a[10],B=+(a[11]||0),S=(I*60+B)*6e4,a[9]==="-"&&(S=-S)),F=new Date(Date.UTC(f,g,w,v,b,E,_)),S&&F.setTime(F.getTime()-S),F}function EFe(i){return i.toISOString()}var TFe=new rg("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:xFe,construct:kFe,instanceOf:Date,represent:EFe});function CFe(i){return i==="<<"||i===null}var _Fe=new rg("tag:yaml.org,2002:merge",{kind:"scalar",resolve:CFe}),Rgt=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function SFe(i){if(i===null)return!1;var a,f,g=0,w=i.length,v=Rgt;for(f=0;f64)){if(a<0)return!1;g+=6}return g%8===0}function AFe(i){var a,f,g=i.replace(/[\r\n=]/g,""),w=g.length,v=Rgt,b=0,E=[];for(a=0;a>16&255),E.push(b>>8&255),E.push(b&255)),b=b<<6|v.indexOf(g.charAt(a));return f=w%4*6,f===0?(E.push(b>>16&255),E.push(b>>8&255),E.push(b&255)):f===18?(E.push(b>>10&255),E.push(b>>2&255)):f===12&&E.push(b>>4&255),new Uint8Array(E)}function LFe(i){var a="",f=0,g,w,v=i.length,b=Rgt;for(g=0;g>18&63],a+=b[f>>12&63],a+=b[f>>6&63],a+=b[f&63]),f=(f<<8)+i[g];return w=v%3,w===0?(a+=b[f>>18&63],a+=b[f>>12&63],a+=b[f>>6&63],a+=b[f&63]):w===2?(a+=b[f>>10&63],a+=b[f>>4&63],a+=b[f<<2&63],a+=b[64]):w===1&&(a+=b[f>>2&63],a+=b[f<<4&63],a+=b[64],a+=b[64]),a}function MFe(i){return Object.prototype.toString.call(i)==="[object Uint8Array]"}var DFe=new rg("tag:yaml.org,2002:binary",{kind:"scalar",resolve:SFe,construct:AFe,predicate:MFe,represent:LFe}),IFe=Object.prototype.hasOwnProperty,OFe=Object.prototype.toString;function PFe(i){if(i===null)return!0;var a=[],f,g,w,v,b,E=i;for(f=0,g=E.length;f>10)+55296,(i-65536&1023)+56320)}for(var EBt=new Array(256),TBt=new Array(256),sM=0;sM<256;sM++)EBt[sM]=kBt(sM)?1:0,TBt[sM]=kBt(sM);function tBe(i,a){this.input=i,this.filename=a.filename||null,this.schema=a.schema||UFe,this.onWarning=a.onWarning||null,this.legacy=a.legacy||!1,this.json=a.json||!1,this.listener=a.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=i.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function CBt(i,a){var f={name:i.filename,buffer:i.input.slice(0,-1),position:i.position,line:i.line,column:i.position-i.lineStart};return f.snippet=zNe(f),new Mx(a,f)}function Ks(i,a){throw CBt(i,a)}function yY(i,a){i.onWarning&&i.onWarning.call(null,CBt(i,a))}var _Bt={YAML:function(a,f,g){var w,v,b;a.version!==null&&Ks(a,"duplication of %YAML directive"),g.length!==1&&Ks(a,"YAML directive accepts exactly one argument"),w=/^([0-9]+)\.([0-9]+)$/.exec(g[0]),w===null&&Ks(a,"ill-formed argument of the YAML directive"),v=parseInt(w[1],10),b=parseInt(w[2],10),v!==1&&Ks(a,"unacceptable YAML version of the document"),a.version=g[0],a.checkLineBreaks=b<2,b!==1&&b!==2&&yY(a,"unsupported YAML version of the document")},TAG:function(a,f,g){var w,v;g.length!==2&&Ks(a,"TAG directive accepts exactly two arguments"),w=g[0],v=g[1],vBt.test(w)||Ks(a,"ill-formed tag handle (first argument) of the TAG directive"),p8.call(a.tagMap,w)&&Ks(a,'there is a previously declared suffix for "'+w+'" tag handle'),yBt.test(v)||Ks(a,"ill-formed tag prefix (second argument) of the TAG directive");try{v=decodeURIComponent(v)}catch{Ks(a,"tag prefix is malformed: "+v)}a.tagMap[w]=v}};function b8(i,a,f,g){var w,v,b,E;if(a1&&(i.result+=Zg.repeat(` +`,a-1))}function eBe(i,a,f){var g,w,v,b,E,_,S,I,B=i.kind,F=i.result,R;if(R=i.input.charCodeAt(i.position),rb(R)||iM(R)||R===35||R===38||R===42||R===33||R===124||R===62||R===39||R===34||R===37||R===64||R===96||(R===63||R===45)&&(w=i.input.charCodeAt(i.position+1),rb(w)||f&&iM(w)))return!1;for(i.kind="scalar",i.result="",v=b=i.position,E=!1;R!==0;){if(R===58){if(w=i.input.charCodeAt(i.position+1),rb(w)||f&&iM(w))break}else if(R===35){if(g=i.input.charCodeAt(i.position-1),rb(g))break}else{if(i.position===i.lineStart&&xY(i)||f&&iM(R))break;if(r4(R))if(_=i.line,S=i.lineStart,I=i.lineIndent,o1(i,!1,-1),i.lineIndent>=a){E=!0,R=i.input.charCodeAt(i.position);continue}else{i.position=b,i.line=_,i.lineStart=S,i.lineIndent=I;break}}E&&(b8(i,v,b,!1),zgt(i,i.line-_),v=b=i.position,E=!1),y9(R)||(b=i.position+1),R=i.input.charCodeAt(++i.position)}return b8(i,v,b,!1),i.result?!0:(i.kind=B,i.result=F,!1)}function nBe(i,a){var f,g,w;if(f=i.input.charCodeAt(i.position),f!==39)return!1;for(i.kind="scalar",i.result="",i.position++,g=w=i.position;(f=i.input.charCodeAt(i.position))!==0;)if(f===39)if(b8(i,g,i.position,!0),f=i.input.charCodeAt(++i.position),f===39)g=i.position,i.position++,w=i.position;else return!0;else r4(f)?(b8(i,g,w,!0),zgt(i,o1(i,!1,a)),g=w=i.position):i.position===i.lineStart&&xY(i)?Ks(i,"unexpected end of the document within a single quoted scalar"):(i.position++,w=i.position);Ks(i,"unexpected end of the stream within a single quoted scalar")}function rBe(i,a){var f,g,w,v,b,E;if(E=i.input.charCodeAt(i.position),E!==34)return!1;for(i.kind="scalar",i.result="",i.position++,f=g=i.position;(E=i.input.charCodeAt(i.position))!==0;){if(E===34)return b8(i,f,i.position,!0),i.position++,!0;if(E===92){if(b8(i,f,i.position,!0),E=i.input.charCodeAt(++i.position),r4(E))o1(i,!1,a);else if(E<256&&EBt[E])i.result+=TBt[E],i.position++;else if((b=QFe(E))>0){for(w=b,v=0;w>0;w--)E=i.input.charCodeAt(++i.position),(b=XFe(E))>=0?v=(v<<4)+b:Ks(i,"expected hexadecimal character");i.result+=ZFe(v),i.position++}else Ks(i,"unknown escape sequence");f=g=i.position}else r4(E)?(b8(i,f,g,!0),zgt(i,o1(i,!1,a)),f=g=i.position):i.position===i.lineStart&&xY(i)?Ks(i,"unexpected end of the document within a double quoted scalar"):(i.position++,g=i.position)}Ks(i,"unexpected end of the stream within a double quoted scalar")}function iBe(i,a){var f=!0,g,w,v,b=i.tag,E,_=i.anchor,S,I,B,F,R,q=Object.create(null),X,rt,at,ut;if(ut=i.input.charCodeAt(i.position),ut===91)I=93,R=!1,E=[];else if(ut===123)I=125,R=!0,E={};else return!1;for(i.anchor!==null&&(i.anchorMap[i.anchor]=E),ut=i.input.charCodeAt(++i.position);ut!==0;){if(o1(i,!0,a),ut=i.input.charCodeAt(i.position),ut===I)return i.position++,i.tag=b,i.anchor=_,i.kind=R?"mapping":"sequence",i.result=E,!0;f?ut===44&&Ks(i,"expected the node content, but found ','"):Ks(i,"missed comma between flow collection entries"),rt=X=at=null,B=F=!1,ut===63&&(S=i.input.charCodeAt(i.position+1),rb(S)&&(B=F=!0,i.position++,o1(i,!0,a))),g=i.line,w=i.lineStart,v=i.position,oM(i,a,mY,!1,!0),rt=i.tag,X=i.result,o1(i,!0,a),ut=i.input.charCodeAt(i.position),(F||i.line===g)&&ut===58&&(B=!0,ut=i.input.charCodeAt(++i.position),o1(i,!0,a),oM(i,a,mY,!1,!0),at=i.result),R?aM(i,E,q,rt,X,at,g,w,v):B?E.push(aM(i,null,q,rt,X,at,g,w,v)):E.push(X),o1(i,!0,a),ut=i.input.charCodeAt(i.position),ut===44?(f=!0,ut=i.input.charCodeAt(++i.position)):f=!1}Ks(i,"unexpected end of the stream within a flow collection")}function sBe(i,a){var f,g,w=jgt,v=!1,b=!1,E=a,_=0,S=!1,I,B;if(B=i.input.charCodeAt(i.position),B===124)g=!1;else if(B===62)g=!0;else return!1;for(i.kind="scalar",i.result="";B!==0;)if(B=i.input.charCodeAt(++i.position),B===43||B===45)jgt===w?w=B===43?mBt:GFe:Ks(i,"repeat of a chomping mode identifier");else if((I=JFe(B))>=0)I===0?Ks(i,"bad explicit indentation width of a block scalar; it cannot be less than one"):b?Ks(i,"repeat of an indentation width identifier"):(E=a+I-1,b=!0);else break;if(y9(B)){do B=i.input.charCodeAt(++i.position);while(y9(B));if(B===35)do B=i.input.charCodeAt(++i.position);while(!r4(B)&&B!==0)}for(;B!==0;){for($gt(i),i.lineIndent=0,B=i.input.charCodeAt(i.position);(!b||i.lineIndentE&&(E=i.lineIndent),r4(B)){_++;continue}if(i.lineIndenta)&&_!==0)Ks(i,"bad indentation of a sequence entry");else if(i.lineIndenta)&&(rt&&(b=i.line,E=i.lineStart,_=i.position),oM(i,a,vY,!0,w)&&(rt?q=i.result:X=i.result),rt||(aM(i,B,F,R,q,X,b,E,_),R=q=X=null),o1(i,!0,-1),ut=i.input.charCodeAt(i.position)),(i.line===v||i.lineIndent>a)&&ut!==0)Ks(i,"bad indentation of a mapping entry");else if(i.lineIndenta?_=1:i.lineIndent===a?_=0:i.lineIndenta?_=1:i.lineIndent===a?_=0:i.lineIndent tag; it should be "scalar", not "'+i.kind+'"'),B=0,F=i.implicitTypes.length;B"),i.result!==null&&q.kind!==i.kind&&Ks(i,"unacceptable node kind for !<"+i.tag+'> tag; it should be "'+q.kind+'", not "'+i.kind+'"'),q.resolve(i.result,i.tag)?(i.result=q.construct(i.result,i.tag),i.anchor!==null&&(i.anchorMap[i.anchor]=i.result)):Ks(i,"cannot resolve a node with !<"+i.tag+"> explicit tag")}return i.listener!==null&&i.listener("close",i),i.tag!==null||i.anchor!==null||I}function lBe(i){var a=i.position,f,g,w,v=!1,b;for(i.version=null,i.checkLineBreaks=i.legacy,i.tagMap=Object.create(null),i.anchorMap=Object.create(null);(b=i.input.charCodeAt(i.position))!==0&&(o1(i,!0,-1),b=i.input.charCodeAt(i.position),!(i.lineIndent>0||b!==37));){for(v=!0,b=i.input.charCodeAt(++i.position),f=i.position;b!==0&&!rb(b);)b=i.input.charCodeAt(++i.position);for(g=i.input.slice(f,i.position),w=[],g.length<1&&Ks(i,"directive name must not be less than one character in length");b!==0;){for(;y9(b);)b=i.input.charCodeAt(++i.position);if(b===35){do b=i.input.charCodeAt(++i.position);while(b!==0&&!r4(b));break}if(r4(b))break;for(f=i.position;b!==0&&!rb(b);)b=i.input.charCodeAt(++i.position);w.push(i.input.slice(f,i.position))}b!==0&&$gt(i),p8.call(_Bt,g)?_Bt[g](i,g,w):yY(i,'unknown document directive "'+g+'"')}if(o1(i,!0,-1),i.lineIndent===0&&i.input.charCodeAt(i.position)===45&&i.input.charCodeAt(i.position+1)===45&&i.input.charCodeAt(i.position+2)===45?(i.position+=3,o1(i,!0,-1)):v&&Ks(i,"directives end mark is expected"),oM(i,i.lineIndent-1,vY,!1,!0),o1(i,!0,-1),i.checkLineBreaks&&WFe.test(i.input.slice(a,i.position))&&yY(i,"non-ASCII line breaks are interpreted as content"),i.documents.push(i.result),i.position===i.lineStart&&xY(i)){i.input.charCodeAt(i.position)===46&&(i.position+=3,o1(i,!0,-1));return}if(i.position"u"&&(f=a,a=null);var g=LBt(i,f);if(typeof a!="function")return g;for(var w=0,v=g.length;wi.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(a,f,g)=>"<"+f+g.replace(/="([^"]*)"/g,"='$1'")+">"),yBe=i=>{const{text:a,metadata:f}=mBe(i),{displayMode:g,title:w,config:v={}}=f;return g&&(v.gantt||(v.gantt={}),v.gantt.displayMode=g),{title:w,config:v,text:a}},xBe=i=>{const a=ao.detectInit(i)??{},f=ao.detectDirective(i,"wrap");return Array.isArray(f)?a.wrap=f.some(({type:g})=>{}):(f==null?void 0:f.type)==="wrap"&&(a.wrap=!0),{text:zOe(i),directive:a}};function MBt(i){const a=vBe(i),f=yBe(a),g=xBe(f.text),w=TF(f.config,g.directive);return i=ANe(g.text),{code:i,title:f.title,config:w}}const kBe=5e4,EBe="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",TBe="sandbox",CBe="loose",_Be="http://www.w3.org/2000/svg",SBe="http://www.w3.org/1999/xlink",ABe="http://www.w3.org/1999/xhtml",LBe="100%",MBe="100%",DBe="border:0;margin:0;",IBe="margin:0",OBe="allow-top-navigation-by-user-activation allow-popups",PBe='The "iframe" tag is not supported by your browser.',NBe=["foreignobject"],FBe=["dominant-baseline"];function DBt(i){const a=MBt(i);return dY(),xPe(a.config??{}),a}async function BBe(i,a){Mgt(),i=DBt(i).code;try{await qgt(i)}catch(f){if(a!=null&&a.suppressErrors)return!1;throw f}return!0}const IBt=(i,a,f=[])=>` +.${i} ${a} { ${f.join(" !important; ")} !important; }`,RBe=(i,a={})=>{var g;let f="";if(i.themeCSS!==void 0&&(f+=` +${i.themeCSS}`),i.fontFamily!==void 0&&(f+=` +:root { --mermaid-font-family: ${i.fontFamily}}`),i.altFontFamily!==void 0&&(f+=` +:root { --mermaid-alt-font-family: ${i.altFontFamily}}`),!LF(a)){const E=i.htmlLabels||((g=i.flowchart)==null?void 0:g.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];for(const _ in a){const S=a[_];LF(S.styles)||E.forEach(I=>{f+=IBt(S.id,I,S.styles)}),LF(S.textStyles)||(f+=IBt(S.id,"tspan",S.textStyles))}}return f},jBe=(i,a,f,g)=>{const w=RBe(i,f),v=UPe(a,w,i.themeVariables);return Tgt(pPe(`${g}{${v}}`),wPe)},$Be=(i="",a,f)=>{let g=i;return!f&&!a&&(g=g.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),g=CF(g),g=g.replace(/
/g,"
"),g},zBe=(i="",a)=>{var w,v;const f=(v=(w=a==null?void 0:a.viewBox)==null?void 0:w.baseVal)!=null&&v.height?a.viewBox.baseVal.height+"px":MBe,g=btoa(''+i+"");return``},OBt=(i,a,f,g,w)=>{const v=i.append("div");v.attr("id",f),g&&v.attr("style",g);const b=v.append("svg").attr("id",a).attr("width","100%").attr("xmlns",_Be);return w&&b.attr("xmlns:xlink",w),b.append("g"),i};function PBt(i,a){return i.append("iframe").attr("id",a).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const qBe=(i,a,f,g)=>{var w,v,b;(w=i.getElementById(a))==null||w.remove(),(v=i.getElementById(f))==null||v.remove(),(b=i.getElementById(g))==null||b.remove()},HBe=async function(i,a,f){var V,Nt,Dt,jt,Ct,Ft;Mgt();const g=DBt(a);a=g.code;const w=h0();Wt.debug(w),a.length>((w==null?void 0:w.maxTextSize)??kBe)&&(a=EBe);const v="#"+i,b="i"+i,E="#"+b,_="d"+i,S="#"+_;let I=xr("body");const B=w.securityLevel===TBe,F=w.securityLevel===CBe,R=w.fontFamily;if(f!==void 0){if(f&&(f.innerHTML=""),B){const _t=PBt(xr(f),b);I=xr(_t.nodes()[0].contentDocument.body),I.node().style.margin=0}else I=xr(f);OBt(I,i,_,`font-family: ${R}`,SBe)}else{if(qBe(document,i,_,b),B){const _t=PBt(xr("body"),b);I=xr(_t.nodes()[0].contentDocument.body),I.node().style.margin=0}else I=xr("body");OBt(I,i,_)}let q,X;try{q=await qgt(a,{title:g.title})}catch(_t){q=new rBt("error"),X=_t}const rt=I.select(S).node(),at=q.type,ut=rt.firstChild,pt=ut.firstChild,yt=(Nt=(V=q.renderer).getClasses)==null?void 0:Nt.call(V,a,q),mt=jBe(w,at,yt,v),gt=document.createElement("style");gt.innerHTML=mt,ut.insertBefore(gt,pt);try{await q.renderer.draw(a,i,TFt,q)}catch(_t){throw JPe.draw(a,i,TFt),_t}const ht=I.select(`${S} svg`),bt=(jt=(Dt=q.db).getAccTitle)==null?void 0:jt.call(Dt),Z=(Ft=(Ct=q.db).getAccDescription)==null?void 0:Ft.call(Ct);UBe(at,ht,bt,Z),I.select(`[id="${i}"]`).selectAll("foreignobject > *").attr("xmlns",ABe);let ft=I.select(S).node().innerHTML;if(Wt.debug("config.arrowMarkerAbsolute",w.arrowMarkerAbsolute),ft=$Be(ft,B,B1(w.arrowMarkerAbsolute)),B){const _t=I.select(S+" svg").node();ft=zBe(ft,_t)}else F||(ft=zL.sanitize(ft,{ADD_TAGS:NBe,ADD_ATTR:FBe}));if(aNe(),X)throw X;const Et=xr(B?E:S).node();return Et&&"remove"in Et&&Et.remove(),{svg:ft,bindFunctions:q.db.bindFunctions}};function VBe(i={}){var f;i!=null&&i.fontFamily&&!((f=i.themeVariables)!=null&&f.fontFamily)&&(i.themeVariables||(i.themeVariables={}),i.themeVariables.fontFamily=i.fontFamily),vPe(i),i!=null&&i.theme&&i.theme in _x?i.themeVariables=_x[i.theme].getThemeVariables(i.themeVariables):i&&(i.themeVariables=_x.default.getThemeVariables(i.themeVariables));const a=typeof i=="object"?mPe(i):_Ft();s0t(a.logLevel),Mgt()}const qgt=(i,a={})=>{const{code:f}=MBt(i);return iNe(f,a)};function UBe(i,a,f,g){_Ne(a,i),SNe(a,f,g,a.attr("id"))}const x9=Object.freeze({render:HBe,parse:BBe,getDiagramFromText:qgt,initialize:VBe,getConfig:h0,setConfig:SFt,getSiteConfig:_Ft,updateSiteConfig:yPe,reset:()=>{dY()},globalReset:()=>{dY(tM)},defaultConfig:tM});s0t(h0().logLevel),dY(h0());const GBe=async()=>{Wt.debug("Loading registered diagrams");const a=(await Promise.allSettled(Object.entries(HL).map(async([f,{detector:g,loader:w}])=>{if(w)try{Lgt(f)}catch{try{const{diagram:b,id:E}=await w();bY(E,b,g)}catch(b){throw Wt.error(`Failed to load external diagram with key ${f}. Removing from detectors.`),delete HL[f],b}}}))).filter(f=>f.status==="rejected");if(a.length>0){Wt.error(`Failed to load ${a.length} external diagrams`);for(const f of a)Wt.error(f);throw new Error(`Failed to load ${a.length} external diagrams`)}},KBe=(i,a,f)=>{Wt.warn(i),pFt(i)?(f&&f(i.str,i.hash),a.push({...i,message:i.str,error:i})):(f&&f(i),i instanceof Error&&a.push({str:i.message,message:i.message,hash:i.name,error:i}))},NBt=async function(i={querySelector:".mermaid"}){try{await WBe(i)}catch(a){if(pFt(a)&&Wt.error(a.str),x2.parseError&&x2.parseError(a),!i.suppressErrors)throw Wt.error("Use the suppressErrors option to suppress these errors"),a}},WBe=async function({postRenderCallback:i,querySelector:a,nodes:f}={querySelector:".mermaid"}){const g=x9.getConfig();Wt.debug(`${i?"":"No "}Callback function found`);let w;if(f)w=f;else if(a)w=document.querySelectorAll(a);else throw new Error("Nodes and querySelector are both undefined");Wt.debug(`Found ${w.length} diagrams`),(g==null?void 0:g.startOnLoad)!==void 0&&(Wt.debug("Start On Load: "+(g==null?void 0:g.startOnLoad)),x9.updateSiteConfig({startOnLoad:g==null?void 0:g.startOnLoad}));const v=new ao.InitIDGenerator(g.deterministicIds,g.deterministicIDSeed);let b;const E=[];for(const _ of Array.from(w)){Wt.info("Rendering diagram: "+_.id);/*! Check if previously processed */if(_.getAttribute("data-processed"))continue;_.setAttribute("data-processed","true");const S=`mermaid-${v.next()}`;b=_.innerHTML,b=SL(ao.entityDecode(b)).trim().replace(//gi,"
");const I=ao.detectInit(b);I&&Wt.debug("Detected early reinit: ",I);try{const{svg:B,bindFunctions:F}=await jBt(S,b,_);_.innerHTML=B,i&&await i(S),F&&F(_)}catch(B){KBe(B,E,x2.parseError)}}if(E.length>0)throw E[0]},FBt=function(i){x9.initialize(i)},YBe=async function(i,a,f){Wt.warn("mermaid.init is deprecated. Please use run instead."),i&&FBt(i);const g={postRenderCallback:f,querySelector:".mermaid"};typeof a=="string"?g.querySelector=a:a&&(a instanceof HTMLElement?g.nodes=[a]:g.nodes=a),await NBt(g)},XBe=async(i,{lazyLoad:a=!0}={})=>{MNt(...i),a===!1&&await GBe()},BBt=function(){if(x2.startOnLoad){const{startOnLoad:i}=x9.getConfig();i&&x2.run().catch(a=>Wt.error("Mermaid failed to initialize",a))}};if(typeof document<"u"){/*! + * Wait for document loaded before starting the execution + */window.addEventListener("load",BBt,!1)}const QBe=function(i){x2.parseError=i},kY=[];let Hgt=!1;const RBt=async()=>{if(!Hgt){for(Hgt=!0;kY.length>0;){const i=kY.shift();if(i)try{await i()}catch(a){Wt.error("Error executing queue",a)}}Hgt=!1}},JBe=async(i,a)=>new Promise((f,g)=>{const w=()=>new Promise((v,b)=>{x9.parse(i,a).then(E=>{v(E),f(E)},E=>{var _;Wt.error("Error parsing",E),(_=x2.parseError)==null||_.call(x2,E),b(E),g(E)})});kY.push(w),RBt().catch(g)}),jBt=(i,a,f)=>new Promise((g,w)=>{const v=()=>new Promise((b,E)=>{x9.render(i,a,f).then(_=>{b(_),g(_)},_=>{var S;Wt.error("Error parsing",_),(S=x2.parseError)==null||S.call(x2,_),E(_),w(_)})});kY.push(v),RBt().catch(w)}),x2={startOnLoad:!0,mermaidAPI:x9,parse:JBe,render:jBt,init:YBe,run:NBt,registerExternalDiagrams:XBe,initialize:FBt,parseError:void 0,contentLoaded:BBt,setParseErrorHandler:QBe,detectType:KW};var EY=function(){var i=function(fr,An,Pn,Bn){for(Pn=Pn||{},Bn=fr.length;Bn--;Pn[fr[Bn]]=An);return Pn},a=[1,24],f=[1,25],g=[1,26],w=[1,27],v=[1,28],b=[1,63],E=[1,64],_=[1,65],S=[1,66],I=[1,67],B=[1,68],F=[1,69],R=[1,29],q=[1,30],X=[1,31],rt=[1,32],at=[1,33],ut=[1,34],pt=[1,35],yt=[1,36],mt=[1,37],gt=[1,38],ht=[1,39],bt=[1,40],Z=[1,41],ft=[1,42],Y=[1,43],Et=[1,44],V=[1,45],Nt=[1,46],Dt=[1,47],jt=[1,48],Ct=[1,50],Ft=[1,51],_t=[1,52],xt=[1,53],Gt=[1,54],Be=[1,55],Ot=[1,56],vn=[1,57],Pe=[1,58],Ee=[1,59],nn=[1,60],sn=[14,42],me=[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],Fe=[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],Qt=[1,82],Ae=[1,83],Se=[1,84],Dn=[1,85],oe=[12,14,42],Pr=[12,14,33,42],we=[12,14,33,42,76,77,79,80],Ri=[12,33],yi=[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],da={trace:function(){},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:function(An,Pn,Bn,Te,be,Qe,rn){var yn=Qe.length-1;switch(be){case 3:Te.setDirection("TB");break;case 4:Te.setDirection("BT");break;case 5:Te.setDirection("RL");break;case 6:Te.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:Te.setC4Type(Qe[yn-3]);break;case 19:Te.setTitle(Qe[yn].substring(6)),this.$=Qe[yn].substring(6);break;case 20:Te.setAccDescription(Qe[yn].substring(15)),this.$=Qe[yn].substring(15);break;case 21:this.$=Qe[yn].trim(),Te.setTitle(this.$);break;case 22:case 23:this.$=Qe[yn].trim(),Te.setAccDescription(this.$);break;case 28:case 29:Qe[yn].splice(2,0,"ENTERPRISE"),Te.addPersonOrSystemBoundary(...Qe[yn]),this.$=Qe[yn];break;case 30:Te.addPersonOrSystemBoundary(...Qe[yn]),this.$=Qe[yn];break;case 31:Qe[yn].splice(2,0,"CONTAINER"),Te.addContainerBoundary(...Qe[yn]),this.$=Qe[yn];break;case 32:Te.addDeploymentNode("node",...Qe[yn]),this.$=Qe[yn];break;case 33:Te.addDeploymentNode("nodeL",...Qe[yn]),this.$=Qe[yn];break;case 34:Te.addDeploymentNode("nodeR",...Qe[yn]),this.$=Qe[yn];break;case 35:Te.popBoundaryParseStack();break;case 39:Te.addPersonOrSystem("person",...Qe[yn]),this.$=Qe[yn];break;case 40:Te.addPersonOrSystem("external_person",...Qe[yn]),this.$=Qe[yn];break;case 41:Te.addPersonOrSystem("system",...Qe[yn]),this.$=Qe[yn];break;case 42:Te.addPersonOrSystem("system_db",...Qe[yn]),this.$=Qe[yn];break;case 43:Te.addPersonOrSystem("system_queue",...Qe[yn]),this.$=Qe[yn];break;case 44:Te.addPersonOrSystem("external_system",...Qe[yn]),this.$=Qe[yn];break;case 45:Te.addPersonOrSystem("external_system_db",...Qe[yn]),this.$=Qe[yn];break;case 46:Te.addPersonOrSystem("external_system_queue",...Qe[yn]),this.$=Qe[yn];break;case 47:Te.addContainer("container",...Qe[yn]),this.$=Qe[yn];break;case 48:Te.addContainer("container_db",...Qe[yn]),this.$=Qe[yn];break;case 49:Te.addContainer("container_queue",...Qe[yn]),this.$=Qe[yn];break;case 50:Te.addContainer("external_container",...Qe[yn]),this.$=Qe[yn];break;case 51:Te.addContainer("external_container_db",...Qe[yn]),this.$=Qe[yn];break;case 52:Te.addContainer("external_container_queue",...Qe[yn]),this.$=Qe[yn];break;case 53:Te.addComponent("component",...Qe[yn]),this.$=Qe[yn];break;case 54:Te.addComponent("component_db",...Qe[yn]),this.$=Qe[yn];break;case 55:Te.addComponent("component_queue",...Qe[yn]),this.$=Qe[yn];break;case 56:Te.addComponent("external_component",...Qe[yn]),this.$=Qe[yn];break;case 57:Te.addComponent("external_component_db",...Qe[yn]),this.$=Qe[yn];break;case 58:Te.addComponent("external_component_queue",...Qe[yn]),this.$=Qe[yn];break;case 60:Te.addRel("rel",...Qe[yn]),this.$=Qe[yn];break;case 61:Te.addRel("birel",...Qe[yn]),this.$=Qe[yn];break;case 62:Te.addRel("rel_u",...Qe[yn]),this.$=Qe[yn];break;case 63:Te.addRel("rel_d",...Qe[yn]),this.$=Qe[yn];break;case 64:Te.addRel("rel_l",...Qe[yn]),this.$=Qe[yn];break;case 65:Te.addRel("rel_r",...Qe[yn]),this.$=Qe[yn];break;case 66:Te.addRel("rel_b",...Qe[yn]),this.$=Qe[yn];break;case 67:Qe[yn].splice(0,1),Te.addRel("rel",...Qe[yn]),this.$=Qe[yn];break;case 68:Te.updateElStyle("update_el_style",...Qe[yn]),this.$=Qe[yn];break;case 69:Te.updateRelStyle("update_rel_style",...Qe[yn]),this.$=Qe[yn];break;case 70:Te.updateLayoutConfig("update_layout_config",...Qe[yn]),this.$=Qe[yn];break;case 71:this.$=[Qe[yn]];break;case 72:Qe[yn].unshift(Qe[yn-1]),this.$=Qe[yn];break;case 73:case 75:this.$=Qe[yn].trim();break;case 74:let ja={};ja[Qe[yn-1].trim()]=Qe[yn].trim(),this.$=ja;break;case 76:this.$="";break}},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:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:_,38:S,39:I,40:B,41:F,43:23,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt,51:yt,52:mt,53:gt,54:ht,55:bt,56:Z,57:ft,58:Y,59:Et,60:V,61:Nt,62:Dt,63:jt,64:Ct,65:Ft,66:_t,67:xt,68:Gt,69:Be,70:Ot,71:vn,72:Pe,73:Ee,74:nn},{13:70,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:_,38:S,39:I,40:B,41:F,43:23,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt,51:yt,52:mt,53:gt,54:ht,55:bt,56:Z,57:ft,58:Y,59:Et,60:V,61:Nt,62:Dt,63:jt,64:Ct,65:Ft,66:_t,67:xt,68:Gt,69:Be,70:Ot,71:vn,72:Pe,73:Ee,74:nn},{13:71,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:_,38:S,39:I,40:B,41:F,43:23,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt,51:yt,52:mt,53:gt,54:ht,55:bt,56:Z,57:ft,58:Y,59:Et,60:V,61:Nt,62:Dt,63:jt,64:Ct,65:Ft,66:_t,67:xt,68:Gt,69:Be,70:Ot,71:vn,72:Pe,73:Ee,74:nn},{13:72,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:_,38:S,39:I,40:B,41:F,43:23,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt,51:yt,52:mt,53:gt,54:ht,55:bt,56:Z,57:ft,58:Y,59:Et,60:V,61:Nt,62:Dt,63:jt,64:Ct,65:Ft,66:_t,67:xt,68:Gt,69:Be,70:Ot,71:vn,72:Pe,73:Ee,74:nn},{13:73,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:_,38:S,39:I,40:B,41:F,43:23,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt,51:yt,52:mt,53:gt,54:ht,55:bt,56:Z,57:ft,58:Y,59:Et,60:V,61:Nt,62:Dt,63:jt,64:Ct,65:Ft,66:_t,67:xt,68:Gt,69:Be,70:Ot,71:vn,72:Pe,73:Ee,74:nn},{14:[1,74]},i(sn,[2,13],{43:23,29:49,30:61,32:62,20:75,34:b,36:E,37:_,38:S,39:I,40:B,41:F,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt,51:yt,52:mt,53:gt,54:ht,55:bt,56:Z,57:ft,58:Y,59:Et,60:V,61:Nt,62:Dt,63:jt,64:Ct,65:Ft,66:_t,67:xt,68:Gt,69:Be,70:Ot,71:vn,72:Pe,73:Ee,74:nn}),i(sn,[2,14]),i(me,[2,16],{12:[1,76]}),i(sn,[2,36],{12:[1,77]}),i(Fe,[2,19]),i(Fe,[2,20]),{25:[1,78]},{27:[1,79]},i(Fe,[2,23]),{35:80,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:86,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:87,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:88,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:89,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:90,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:91,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:92,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:93,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:94,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:95,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:96,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:97,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:98,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:99,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:100,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:101,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:102,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:103,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:104,75:81,76:Qt,77:Ae,79:Se,80:Dn},i(oe,[2,59]),{35:105,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:106,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:107,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:108,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:109,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:110,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:111,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:112,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:113,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:114,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:115,75:81,76:Qt,77:Ae,79:Se,80:Dn},{20:116,29:49,30:61,32:62,34:b,36:E,37:_,38:S,39:I,40:B,41:F,43:23,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt,51:yt,52:mt,53:gt,54:ht,55:bt,56:Z,57:ft,58:Y,59:Et,60:V,61:Nt,62:Dt,63:jt,64:Ct,65:Ft,66:_t,67:xt,68:Gt,69:Be,70:Ot,71:vn,72:Pe,73:Ee,74:nn},{12:[1,118],33:[1,117]},{35:119,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:120,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:121,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:122,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:123,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:124,75:81,76:Qt,77:Ae,79:Se,80:Dn},{35:125,75:81,76:Qt,77:Ae,79:Se,80:Dn},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},i(sn,[2,15]),i(me,[2,17],{21:22,19:130,22:a,23:f,24:g,26:w,28:v}),i(sn,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:a,23:f,24:g,26:w,28:v,34:b,36:E,37:_,38:S,39:I,40:B,41:F,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt,51:yt,52:mt,53:gt,54:ht,55:bt,56:Z,57:ft,58:Y,59:Et,60:V,61:Nt,62:Dt,63:jt,64:Ct,65:Ft,66:_t,67:xt,68:Gt,69:Be,70:Ot,71:vn,72:Pe,73:Ee,74:nn}),i(Fe,[2,21]),i(Fe,[2,22]),i(oe,[2,39]),i(Pr,[2,71],{75:81,35:132,76:Qt,77:Ae,79:Se,80:Dn}),i(we,[2,73]),{78:[1,133]},i(we,[2,75]),i(we,[2,76]),i(oe,[2,40]),i(oe,[2,41]),i(oe,[2,42]),i(oe,[2,43]),i(oe,[2,44]),i(oe,[2,45]),i(oe,[2,46]),i(oe,[2,47]),i(oe,[2,48]),i(oe,[2,49]),i(oe,[2,50]),i(oe,[2,51]),i(oe,[2,52]),i(oe,[2,53]),i(oe,[2,54]),i(oe,[2,55]),i(oe,[2,56]),i(oe,[2,57]),i(oe,[2,58]),i(oe,[2,60]),i(oe,[2,61]),i(oe,[2,62]),i(oe,[2,63]),i(oe,[2,64]),i(oe,[2,65]),i(oe,[2,66]),i(oe,[2,67]),i(oe,[2,68]),i(oe,[2,69]),i(oe,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},i(Ri,[2,28]),i(Ri,[2,29]),i(Ri,[2,30]),i(Ri,[2,31]),i(Ri,[2,32]),i(Ri,[2,33]),i(Ri,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},i(me,[2,18]),i(sn,[2,38]),i(Pr,[2,72]),i(we,[2,74]),i(oe,[2,24]),i(oe,[2,35]),i(yi,[2,25]),i(yi,[2,26],{12:[1,138]}),i(yi,[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:function(An,Pn){if(Pn.recoverable)this.trace(An);else{var Bn=new Error(An);throw Bn.hash=Pn,Bn}},parse:function(An){var Pn=this,Bn=[0],Te=[],be=[null],Qe=[],rn=this.table,yn="",ja=0,mo=0,vo=2,ma=1,$a=Qe.slice.call(arguments,1),gs=Object.create(this.lexer),Nu={yy:{}};for(var ta in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ta)&&(Nu.yy[ta]=this.yy[ta]);gs.setInput(An,Nu.yy),Nu.yy.lexer=gs,Nu.yy.parser=this,typeof gs.yylloc>"u"&&(gs.yylloc={});var l1=gs.yylloc;Qe.push(l1);var _2=gs.options&&gs.options.ranges;typeof Nu.yy.parseError=="function"?this.parseError=Nu.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ll(){var Xl;return Xl=Te.pop()||gs.lex()||ma,typeof Xl!="number"&&(Xl instanceof Array&&(Te=Xl,Xl=Te.pop()),Xl=Pn.symbols_[Xl]||Xl),Xl}for(var Ac,pc,ka,du,ea={},co,bc,oa,va;;){if(pc=Bn[Bn.length-1],this.defaultActions[pc]?ka=this.defaultActions[pc]:((Ac===null||typeof Ac>"u")&&(Ac=ll()),ka=rn[pc]&&rn[pc][Ac]),typeof ka>"u"||!ka.length||!ka[0]){var na="";va=[];for(co in rn[pc])this.terminals_[co]&&co>vo&&va.push("'"+this.terminals_[co]+"'");gs.showPosition?na="Parse error on line "+(ja+1)+`: +`+gs.showPosition()+` +Expecting `+va.join(", ")+", got '"+(this.terminals_[Ac]||Ac)+"'":na="Parse error on line "+(ja+1)+": Unexpected "+(Ac==ma?"end of input":"'"+(this.terminals_[Ac]||Ac)+"'"),this.parseError(na,{text:gs.match,token:this.terminals_[Ac]||Ac,line:gs.yylineno,loc:l1,expected:va})}if(ka[0]instanceof Array&&ka.length>1)throw new Error("Parse Error: multiple actions possible at state: "+pc+", token: "+Ac);switch(ka[0]){case 1:Bn.push(Ac),be.push(gs.yytext),Qe.push(gs.yylloc),Bn.push(ka[1]),Ac=null,mo=gs.yyleng,yn=gs.yytext,ja=gs.yylineno,l1=gs.yylloc;break;case 2:if(bc=this.productions_[ka[1]][1],ea.$=be[be.length-bc],ea._$={first_line:Qe[Qe.length-(bc||1)].first_line,last_line:Qe[Qe.length-1].last_line,first_column:Qe[Qe.length-(bc||1)].first_column,last_column:Qe[Qe.length-1].last_column},_2&&(ea._$.range=[Qe[Qe.length-(bc||1)].range[0],Qe[Qe.length-1].range[1]]),du=this.performAction.apply(ea,[yn,mo,ja,Nu.yy,ka[1],be,Qe].concat($a)),typeof du<"u")return du;bc&&(Bn=Bn.slice(0,-1*bc*2),be=be.slice(0,-1*bc),Qe=Qe.slice(0,-1*bc)),Bn.push(this.productions_[ka[1]][0]),be.push(ea.$),Qe.push(ea._$),oa=rn[Bn[Bn.length-2]][Bn[Bn.length-1]],Bn.push(oa);break;case 3:return!0}}return!0}},Ss=function(){var fr={EOF:1,parseError:function(Pn,Bn){if(this.yy.parser)this.yy.parser.parseError(Pn,Bn);else throw new Error(Pn)},setInput:function(An,Pn){return this.yy=Pn||this.yy||{},this._input=An,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},input:function(){var An=this._input[0];this.yytext+=An,this.yyleng++,this.offset++,this.match+=An,this.matched+=An;var Pn=An.match(/(?:\r\n?|\n).*/g);return Pn?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),An},unput:function(An){var Pn=An.length,Bn=An.split(/(?:\r\n?|\n)/g);this._input=An+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Pn),this.offset-=Pn;var Te=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),Bn.length-1&&(this.yylineno-=Bn.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:Bn?(Bn.length===Te.length?this.yylloc.first_column:0)+Te[Te.length-Bn.length].length-Bn[0].length:this.yylloc.first_column-Pn},this.options.ranges&&(this.yylloc.range=[be[0],be[0]+this.yyleng-Pn]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(An){this.unput(this.match.slice(An))},pastInput:function(){var An=this.matched.substr(0,this.matched.length-this.match.length);return(An.length>20?"...":"")+An.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var An=this.match;return An.length<20&&(An+=this._input.substr(0,20-An.length)),(An.substr(0,20)+(An.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var An=this.pastInput(),Pn=new Array(An.length+1).join("-");return An+this.upcomingInput()+` +`+Pn+"^"},test_match:function(An,Pn){var Bn,Te,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))),Te=An[0].match(/(?:\r\n?|\n).*/g),Te&&(this.yylineno+=Te.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Te?Te[Te.length-1].length-Te[Te.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+An[0].length},this.yytext+=An[0],this.match+=An[0],this.matches=An,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(An[0].length),this.matched+=An[0],Bn=this.performAction.call(this,this.yy,this,Pn,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Bn)return Bn;if(this._backtrack){for(var Qe in be)this[Qe]=be[Qe];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var An,Pn,Bn,Te;this._more||(this.yytext="",this.match="");for(var be=this._currentRules(),Qe=0;QePn[0].length)){if(Pn=Bn,Te=Qe,this.options.backtrack_lexer){if(An=this.test_match(Bn,be[Qe]),An!==!1)return An;if(this._backtrack){Pn=!1;continue}else return!1}else if(!this.options.flex)break}return Pn?(An=this.test_match(Pn,be[Te]),An!==!1?An:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Pn=this.next();return Pn||this.lex()},begin:function(Pn){this.conditionStack.push(Pn)},popState:function(){var Pn=this.conditionStack.length-1;return Pn>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Pn){return Pn=this.conditionStack.length-1-Math.abs(Pn||0),Pn>=0?this.conditionStack[Pn]:"INITIAL"},pushState:function(Pn){this.begin(Pn)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(Pn,Bn,Te,be){switch(Te){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),26;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11: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;case 23:return this.begin("person"),44;case 24:return this.begin("system_ext_queue"),51;case 25:return this.begin("system_ext_db"),50;case 26:return this.begin("system_ext"),49;case 27:return this.begin("system_queue"),48;case 28:return this.begin("system_db"),47;case 29:return this.begin("system"),46;case 30:return this.begin("boundary"),37;case 31:return this.begin("enterprise_boundary"),34;case 32:return this.begin("system_boundary"),36;case 33:return this.begin("container_ext_queue"),57;case 34:return this.begin("container_ext_db"),56;case 35:return this.begin("container_ext"),55;case 36:return this.begin("container_queue"),54;case 37:return this.begin("container_db"),53;case 38:return this.begin("container"),52;case 39:return this.begin("container_boundary"),38;case 40:return this.begin("component_ext_queue"),63;case 41:return this.begin("component_ext_db"),62;case 42:return this.begin("component_ext"),61;case 43:return this.begin("component_queue"),60;case 44:return this.begin("component_db"),59;case 45:return this.begin("component"),58;case 46:return this.begin("node"),39;case 47:return this.begin("node"),39;case 48:return this.begin("node_l"),40;case 49:return this.begin("node_r"),41;case 50:return this.begin("rel"),64;case 51:return this.begin("birel"),65;case 52:return this.begin("rel_u"),66;case 53:return this.begin("rel_u"),66;case 54:return this.begin("rel_d"),67;case 55:return this.begin("rel_d"),67;case 56:return this.begin("rel_l"),68;case 57:return this.begin("rel_l"),68;case 58:return this.begin("rel_r"),69;case 59:return this.begin("rel_r"),69;case 60:return this.begin("rel_b"),70;case 61:return this.begin("rel_index"),71;case 62:return this.begin("update_el_style"),72;case 63:return this.begin("update_rel_style"),73;case 64:return this.begin("update_layout_config"),74;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 67:this.begin("attribute");break;case 68: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";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}},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:[],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 fr}();da.lexer=Ss;function Ra(){this.yy={}}return Ra.prototype=da,da.Parser=Ra,new Ra}();EY.parser=EY;const ZBe=EY;let Kv=[],w8=[""],tp="global",Wv="",i4=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],DF=[],Vgt="",Ugt=!1,TY=4,CY=2;var $Bt;const tRe=function(){return $Bt},eRe=function(i){$Bt=Ed(i,Re())},nRe=function(i,a,f,g,w,v,b,E,_){if(i==null||a===void 0||a===null||f===void 0||f===null||g===void 0||g===null)return;let S={};const I=DF.find(B=>B.from===a&&B.to===f);if(I?S=I:DF.push(S),S.type=i,S.from=a,S.to=f,S.label={text:g},w==null)S.techn={text:""};else if(typeof w=="object"){let[B,F]=Object.entries(w)[0];S[B]={text:F}}else S.techn={text:w};if(v==null)S.descr={text:""};else if(typeof v=="object"){let[B,F]=Object.entries(v)[0];S[B]={text:F}}else S.descr={text:v};if(typeof b=="object"){let[B,F]=Object.entries(b)[0];S[B]=F}else S.sprite=b;if(typeof E=="object"){let[B,F]=Object.entries(E)[0];S[B]=F}else S.tags=E;if(typeof _=="object"){let[B,F]=Object.entries(_)[0];S[B]=F}else S.link=_;S.wrap=m8()},rRe=function(i,a,f,g,w,v,b){if(a===null||f===null)return;let E={};const _=Kv.find(S=>S.alias===a);if(_&&a===_.alias?E=_:(E.alias=a,Kv.push(E)),f==null?E.label={text:""}:E.label={text:f},g==null)E.descr={text:""};else if(typeof g=="object"){let[S,I]=Object.entries(g)[0];E[S]={text:I}}else E.descr={text:g};if(typeof w=="object"){let[S,I]=Object.entries(w)[0];E[S]=I}else E.sprite=w;if(typeof v=="object"){let[S,I]=Object.entries(v)[0];E[S]=I}else E.tags=v;if(typeof b=="object"){let[S,I]=Object.entries(b)[0];E[S]=I}else E.link=b;E.typeC4Shape={text:i},E.parentBoundary=tp,E.wrap=m8()},iRe=function(i,a,f,g,w,v,b,E){if(a===null||f===null)return;let _={};const S=Kv.find(I=>I.alias===a);if(S&&a===S.alias?_=S:(_.alias=a,Kv.push(_)),f==null?_.label={text:""}:_.label={text:f},g==null)_.techn={text:""};else if(typeof g=="object"){let[I,B]=Object.entries(g)[0];_[I]={text:B}}else _.techn={text:g};if(w==null)_.descr={text:""};else if(typeof w=="object"){let[I,B]=Object.entries(w)[0];_[I]={text:B}}else _.descr={text:w};if(typeof v=="object"){let[I,B]=Object.entries(v)[0];_[I]=B}else _.sprite=v;if(typeof b=="object"){let[I,B]=Object.entries(b)[0];_[I]=B}else _.tags=b;if(typeof E=="object"){let[I,B]=Object.entries(E)[0];_[I]=B}else _.link=E;_.wrap=m8(),_.typeC4Shape={text:i},_.parentBoundary=tp},sRe=function(i,a,f,g,w,v,b,E){if(a===null||f===null)return;let _={};const S=Kv.find(I=>I.alias===a);if(S&&a===S.alias?_=S:(_.alias=a,Kv.push(_)),f==null?_.label={text:""}:_.label={text:f},g==null)_.techn={text:""};else if(typeof g=="object"){let[I,B]=Object.entries(g)[0];_[I]={text:B}}else _.techn={text:g};if(w==null)_.descr={text:""};else if(typeof w=="object"){let[I,B]=Object.entries(w)[0];_[I]={text:B}}else _.descr={text:w};if(typeof v=="object"){let[I,B]=Object.entries(v)[0];_[I]=B}else _.sprite=v;if(typeof b=="object"){let[I,B]=Object.entries(b)[0];_[I]=B}else _.tags=b;if(typeof E=="object"){let[I,B]=Object.entries(E)[0];_[I]=B}else _.link=E;_.wrap=m8(),_.typeC4Shape={text:i},_.parentBoundary=tp},aRe=function(i,a,f,g,w){if(i===null||a===null)return;let v={};const b=i4.find(E=>E.alias===i);if(b&&i===b.alias?v=b:(v.alias=i,i4.push(v)),a==null?v.label={text:""}:v.label={text:a},f==null)v.type={text:"system"};else if(typeof f=="object"){let[E,_]=Object.entries(f)[0];v[E]={text:_}}else v.type={text:f};if(typeof g=="object"){let[E,_]=Object.entries(g)[0];v[E]=_}else v.tags=g;if(typeof w=="object"){let[E,_]=Object.entries(w)[0];v[E]=_}else v.link=w;v.parentBoundary=tp,v.wrap=m8(),Wv=tp,tp=i,w8.push(Wv)},oRe=function(i,a,f,g,w){if(i===null||a===null)return;let v={};const b=i4.find(E=>E.alias===i);if(b&&i===b.alias?v=b:(v.alias=i,i4.push(v)),a==null?v.label={text:""}:v.label={text:a},f==null)v.type={text:"container"};else if(typeof f=="object"){let[E,_]=Object.entries(f)[0];v[E]={text:_}}else v.type={text:f};if(typeof g=="object"){let[E,_]=Object.entries(g)[0];v[E]=_}else v.tags=g;if(typeof w=="object"){let[E,_]=Object.entries(w)[0];v[E]=_}else v.link=w;v.parentBoundary=tp,v.wrap=m8(),Wv=tp,tp=i,w8.push(Wv)},cRe=function(i,a,f,g,w,v,b,E){if(a===null||f===null)return;let _={};const S=i4.find(I=>I.alias===a);if(S&&a===S.alias?_=S:(_.alias=a,i4.push(_)),f==null?_.label={text:""}:_.label={text:f},g==null)_.type={text:"node"};else if(typeof g=="object"){let[I,B]=Object.entries(g)[0];_[I]={text:B}}else _.type={text:g};if(w==null)_.descr={text:""};else if(typeof w=="object"){let[I,B]=Object.entries(w)[0];_[I]={text:B}}else _.descr={text:w};if(typeof b=="object"){let[I,B]=Object.entries(b)[0];_[I]=B}else _.tags=b;if(typeof E=="object"){let[I,B]=Object.entries(E)[0];_[I]=B}else _.link=E;_.nodeType=i,_.parentBoundary=tp,_.wrap=m8(),Wv=tp,tp=a,w8.push(Wv)},uRe=function(){tp=Wv,w8.pop(),Wv=w8.pop(),w8.push(Wv)},lRe=function(i,a,f,g,w,v,b,E,_,S,I){let B=Kv.find(F=>F.alias===a);if(!(B===void 0&&(B=i4.find(F=>F.alias===a),B===void 0))){if(f!=null)if(typeof f=="object"){let[F,R]=Object.entries(f)[0];B[F]=R}else B.bgColor=f;if(g!=null)if(typeof g=="object"){let[F,R]=Object.entries(g)[0];B[F]=R}else B.fontColor=g;if(w!=null)if(typeof w=="object"){let[F,R]=Object.entries(w)[0];B[F]=R}else B.borderColor=w;if(v!=null)if(typeof v=="object"){let[F,R]=Object.entries(v)[0];B[F]=R}else B.shadowing=v;if(b!=null)if(typeof b=="object"){let[F,R]=Object.entries(b)[0];B[F]=R}else B.shape=b;if(E!=null)if(typeof E=="object"){let[F,R]=Object.entries(E)[0];B[F]=R}else B.sprite=E;if(_!=null)if(typeof _=="object"){let[F,R]=Object.entries(_)[0];B[F]=R}else B.techn=_;if(S!=null)if(typeof S=="object"){let[F,R]=Object.entries(S)[0];B[F]=R}else B.legendText=S;if(I!=null)if(typeof I=="object"){let[F,R]=Object.entries(I)[0];B[F]=R}else B.legendSprite=I}},hRe=function(i,a,f,g,w,v,b){const E=DF.find(_=>_.from===a&&_.to===f);if(E!==void 0){if(g!=null)if(typeof g=="object"){let[_,S]=Object.entries(g)[0];E[_]=S}else E.textColor=g;if(w!=null)if(typeof w=="object"){let[_,S]=Object.entries(w)[0];E[_]=S}else E.lineColor=w;if(v!=null)if(typeof v=="object"){let[_,S]=Object.entries(v)[0];E[_]=parseInt(S)}else E.offsetX=parseInt(v);if(b!=null)if(typeof b=="object"){let[_,S]=Object.entries(b)[0];E[_]=parseInt(S)}else E.offsetY=parseInt(b)}},fRe=function(i,a,f){let g=TY,w=CY;if(typeof a=="object"){const v=Object.values(a)[0];g=parseInt(v)}else g=parseInt(a);if(typeof f=="object"){const v=Object.values(f)[0];w=parseInt(v)}else w=parseInt(f);g>=1&&(TY=g),w>=1&&(CY=w)},dRe=function(){return TY},gRe=function(){return CY},pRe=function(){return tp},bRe=function(){return Wv},zBt=function(i){return i==null?Kv:Kv.filter(a=>a.parentBoundary===i)},wRe=function(i){return Kv.find(a=>a.alias===i)},mRe=function(i){return Object.keys(zBt(i))},vRe=function(i){return i==null?i4:i4.filter(a=>a.parentBoundary===i)},yRe=function(){return DF},xRe=function(){return Vgt},kRe=function(i){Ugt=i},m8=function(){return Ugt},Ggt={addPersonOrSystem:rRe,addPersonOrSystemBoundary:aRe,addContainer:iRe,addContainerBoundary:oRe,addComponent:sRe,addDeploymentNode:cRe,popBoundaryParseStack:uRe,addRel:nRe,updateElStyle:lRe,updateRelStyle:hRe,updateLayoutConfig:fRe,autoWrap:m8,setWrap:kRe,getC4ShapeArray:zBt,getC4Shape:wRe,getC4ShapeKeys:mRe,getBoundarys:vRe,getCurrentBoundaryParse:pRe,getParentBoundaryParse:bRe,getRels:yRe,getTitle:xRe,getC4Type:tRe,getC4ShapeInRow:dRe,getC4BoundaryInRow:gRe,setAccTitle:ng,getAccTitle:Yg,getAccDescription:Qg,setAccDescription:Xg,getConfig:()=>Re().c4,clear:function(){Kv=[],i4=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Wv="",tp="global",w8=[""],DF=[],w8=[""],Vgt="",Ugt=!1,TY=4,CY=2},LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:function(i){Vgt=Ed(i,Re())},setC4Type:eRe},_Y=(i,a)=>{const f=i.append("rect");if(f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),a.rx!==void 0&&f.attr("rx",a.rx),a.ry!==void 0&&f.attr("ry",a.ry),a.attrs!==void 0)for(const g in a.attrs)f.attr(g,a.attrs[g]);return a.class!==void 0&&f.attr("class",a.class),f},qBt=(i,a)=>{const f={x:a.startx,y:a.starty,width:a.stopx-a.startx,height:a.stopy-a.starty,fill:a.fill,stroke:a.stroke,class:"rect"};_Y(i,f).lower()},ERe=(i,a)=>{const f=a.text.replace(gF," "),g=i.append("text");g.attr("x",a.x),g.attr("y",a.y),g.attr("class","legend"),g.style("text-anchor",a.anchor),a.class!==void 0&&g.attr("class",a.class);const w=g.append("tspan");return w.attr("x",a.x+a.textMargin*2),w.text(f),g},TRe=(i,a,f,g)=>{const w=i.append("image");w.attr("x",a),w.attr("y",f);const v=c8(g);w.attr("xlink:href",v)},CRe=(i,a,f,g)=>{const w=i.append("use");w.attr("x",a),w.attr("y",f);const v=c8(g);w.attr("xlink:href",`#${v}`)},k9=()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),Kgt=()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),Wgt=function(i,a){return _Y(i,a)},HBt=function(i,a,f,g,w,v){const b=i.append("image");b.attr("width",a),b.attr("height",f),b.attr("x",g),b.attr("y",w);let E=v.startsWith("data:image/png;base64")?v:c8(v);b.attr("xlink:href",E)},_Re=(i,a,f)=>{const g=i.append("g");let w=0;for(let v of a){let b=v.textColor?v.textColor:"#444444",E=v.lineColor?v.lineColor:"#444444",_=v.offsetX?parseInt(v.offsetX):0,S=v.offsetY?parseInt(v.offsetY):0,I="";if(w===0){let F=g.append("line");F.attr("x1",v.startPoint.x),F.attr("y1",v.startPoint.y),F.attr("x2",v.endPoint.x),F.attr("y2",v.endPoint.y),F.attr("stroke-width","1"),F.attr("stroke",E),F.style("fill","none"),v.type!=="rel_b"&&F.attr("marker-end","url("+I+"#arrowhead)"),(v.type==="birel"||v.type==="rel_b")&&F.attr("marker-start","url("+I+"#arrowend)"),w=-1}else{let F=g.append("path");F.attr("fill","none").attr("stroke-width","1").attr("stroke",E).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",v.startPoint.x).replaceAll("starty",v.startPoint.y).replaceAll("controlx",v.startPoint.x+(v.endPoint.x-v.startPoint.x)/2-(v.endPoint.x-v.startPoint.x)/4).replaceAll("controly",v.startPoint.y+(v.endPoint.y-v.startPoint.y)/2).replaceAll("stopx",v.endPoint.x).replaceAll("stopy",v.endPoint.y)),v.type!=="rel_b"&&F.attr("marker-end","url("+I+"#arrowhead)"),(v.type==="birel"||v.type==="rel_b")&&F.attr("marker-start","url("+I+"#arrowend)")}let B=f.messageFont();Dx(f)(v.label.text,g,Math.min(v.startPoint.x,v.endPoint.x)+Math.abs(v.endPoint.x-v.startPoint.x)/2+_,Math.min(v.startPoint.y,v.endPoint.y)+Math.abs(v.endPoint.y-v.startPoint.y)/2+S,v.label.width,v.label.height,{fill:b},B),v.techn&&v.techn.text!==""&&(B=f.messageFont(),Dx(f)("["+v.techn.text+"]",g,Math.min(v.startPoint.x,v.endPoint.x)+Math.abs(v.endPoint.x-v.startPoint.x)/2+_,Math.min(v.startPoint.y,v.endPoint.y)+Math.abs(v.endPoint.y-v.startPoint.y)/2+f.messageFontSize+5+S,Math.max(v.label.width,v.techn.width),v.techn.height,{fill:b,"font-style":"italic"},B))}},SRe=function(i,a,f){const g=i.append("g");let w=a.bgColor?a.bgColor:"none",v=a.borderColor?a.borderColor:"#444444",b=a.fontColor?a.fontColor:"black",E={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};a.nodeType&&(E={"stroke-width":1});let _={x:a.x,y:a.y,fill:w,stroke:v,width:a.width,height:a.height,rx:2.5,ry:2.5,attrs:E};Wgt(g,_);let S=f.boundaryFont();S.fontWeight="bold",S.fontSize=S.fontSize+2,S.fontColor=b,Dx(f)(a.label.text,g,a.x,a.y+a.label.Y,a.width,a.height,{fill:"#444444"},S),a.type&&a.type.text!==""&&(S=f.boundaryFont(),S.fontColor=b,Dx(f)(a.type.text,g,a.x,a.y+a.type.Y,a.width,a.height,{fill:"#444444"},S)),a.descr&&a.descr.text!==""&&(S=f.boundaryFont(),S.fontSize=S.fontSize-2,S.fontColor=b,Dx(f)(a.descr.text,g,a.x,a.y+a.descr.Y,a.width,a.height,{fill:"#444444"},S))},ARe=function(i,a,f){var B;let g=a.bgColor?a.bgColor:f[a.typeC4Shape.text+"_bg_color"],w=a.borderColor?a.borderColor:f[a.typeC4Shape.text+"_border_color"],v=a.fontColor?a.fontColor:"#FFFFFF",b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(a.typeC4Shape.text){case"person":b="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":b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}const E=i.append("g");E.attr("class","person-man");const _=k9();switch(a.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":_.x=a.x,_.y=a.y,_.fill=g,_.width=a.width,_.height=a.height,_.stroke=w,_.rx=2.5,_.ry=2.5,_.attrs={"stroke-width":.5},Wgt(E,_);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":E.append("path").attr("fill",g).attr("stroke-width","0.5").attr("stroke",w).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",a.x).replaceAll("starty",a.y).replaceAll("half",a.width/2).replaceAll("height",a.height)),E.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("half",a.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":E.append("path").attr("fill",g).attr("stroke-width","0.5").attr("stroke",w).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",a.x).replaceAll("starty",a.y).replaceAll("width",a.width).replaceAll("half",a.height/2)),E.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",a.x+a.width).replaceAll("starty",a.y).replaceAll("half",a.height/2));break}let S=BRe(f,a.typeC4Shape.text);switch(E.append("text").attr("fill",v).attr("font-family",S.fontFamily).attr("font-size",S.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",a.typeC4Shape.width).attr("x",a.x+a.width/2-a.typeC4Shape.width/2).attr("y",a.y+a.typeC4Shape.Y).text("<<"+a.typeC4Shape.text+">>"),a.typeC4Shape.text){case"person":case"external_person":HBt(E,48,48,a.x+a.width/2-24,a.y+a.image.Y,b);break}let I=f[a.typeC4Shape.text+"Font"]();return I.fontWeight="bold",I.fontSize=I.fontSize+2,I.fontColor=v,Dx(f)(a.label.text,E,a.x,a.y+a.label.Y,a.width,a.height,{fill:v},I),I=f[a.typeC4Shape.text+"Font"](),I.fontColor=v,a.techn&&((B=a.techn)==null?void 0:B.text)!==""?Dx(f)(a.techn.text,E,a.x,a.y+a.techn.Y,a.width,a.height,{fill:v,"font-style":"italic"},I):a.type&&a.type.text!==""&&Dx(f)(a.type.text,E,a.x,a.y+a.type.Y,a.width,a.height,{fill:v,"font-style":"italic"},I),a.descr&&a.descr.text!==""&&(I=f.personFont(),I.fontColor=v,Dx(f)(a.descr.text,E,a.x,a.y+a.descr.Y,a.width,a.height,{fill:v},I)),a.height},LRe=function(i){i.append("defs").append("symbol").attr("id","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")},MRe=function(i){i.append("defs").append("symbol").attr("id","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")},DRe=function(i){i.append("defs").append("symbol").attr("id","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")},IRe=function(i){i.append("defs").append("marker").attr("id","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")},ORe=function(i){i.append("defs").append("marker").attr("id","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")},PRe=function(i){i.append("defs").append("marker").attr("id","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")},NRe=function(i){i.append("defs").append("marker").attr("id","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)},FRe=function(i){const f=i.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);f.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"),f.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")},BRe=(i,a)=>({fontFamily:i[a+"FontFamily"],fontSize:i[a+"FontSize"],fontWeight:i[a+"FontWeight"]}),Dx=function(){function i(w,v,b,E,_,S,I){const B=v.append("text").attr("x",b+_/2).attr("y",E+S/2+5).style("text-anchor","middle").text(w);g(B,I)}function a(w,v,b,E,_,S,I,B){const{fontSize:F,fontFamily:R,fontWeight:q}=B,X=w.split(ei.lineBreakRegex);for(let rt=0;rt=this.data.widthLimit||g>=this.data.widthLimit||this.nextData.cnt>VBt)&&(f=this.nextData.startx+a.margin+_s.nextLinePaddingX,w=this.nextData.stopy+a.margin*2,this.nextData.stopx=g=f+a.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=v=w+a.height,this.nextData.cnt=1),a.x=f,a.y=w,this.updateVal(this.data,"startx",f,Math.min),this.updateVal(this.data,"starty",w,Math.min),this.updateVal(this.data,"stopx",g,Math.max),this.updateVal(this.data,"stopy",v,Math.max),this.updateVal(this.nextData,"startx",f,Math.min),this.updateVal(this.nextData,"starty",w,Math.min),this.updateVal(this.nextData,"stopx",g,Math.max),this.updateVal(this.nextData,"stopy",v,Math.max)}init(a){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},Xgt(a.db.getConfig())}bumpLastMargin(a){this.data.stopx+=a,this.data.stopy+=a}}const Xgt=function(i){Td(_s,i),i.fontFamily&&(_s.personFontFamily=_s.systemFontFamily=_s.messageFontFamily=i.fontFamily),i.fontSize&&(_s.personFontSize=_s.systemFontSize=_s.messageFontSize=i.fontSize),i.fontWeight&&(_s.personFontWeight=_s.systemFontWeight=_s.messageFontWeight=i.fontWeight)},IF=(i,a)=>({fontFamily:i[a+"FontFamily"],fontSize:i[a+"FontSize"],fontWeight:i[a+"FontWeight"]}),LY=i=>({fontFamily:i.boundaryFontFamily,fontSize:i.boundaryFontSize,fontWeight:i.boundaryFontWeight}),RRe=i=>({fontFamily:i.messageFontFamily,fontSize:i.messageFontSize,fontWeight:i.messageFontWeight});function Yv(i,a,f,g,w){if(!a[i].width)if(f)a[i].text=gFt(a[i].text,w,g),a[i].textLines=a[i].text.split(ei.lineBreakRegex).length,a[i].width=w,a[i].height=bgt(a[i].text,g);else{let v=a[i].text.split(ei.lineBreakRegex);a[i].textLines=v.length;let b=0;a[i].height=0,a[i].width=0;for(const E of v)a[i].width=Math.max(n4(E,g),a[i].width),b=bgt(E,g),a[i].height=a[i].height+b}}const GBt=function(i,a,f){a.x=f.data.startx,a.y=f.data.starty,a.width=f.data.stopx-f.data.startx,a.height=f.data.stopy-f.data.starty,a.label.y=_s.c4ShapeMargin-35;let g=a.wrap&&_s.wrap,w=LY(_s);w.fontSize=w.fontSize+2,w.fontWeight="bold";let v=n4(a.label.text,w);Yv("label",a,g,w,v),s4.drawBoundary(i,a,_s)},KBt=function(i,a,f,g){let w=0;for(const v of g){w=0;const b=f[v];let E=IF(_s,b.typeC4Shape.text);switch(E.fontSize=E.fontSize-2,b.typeC4Shape.width=n4("«"+b.typeC4Shape.text+"»",E),b.typeC4Shape.height=E.fontSize+2,b.typeC4Shape.Y=_s.c4ShapePadding,w=b.typeC4Shape.Y+b.typeC4Shape.height-4,b.image={width:0,height:0,Y:0},b.typeC4Shape.text){case"person":case"external_person":b.image.width=48,b.image.height=48,b.image.Y=w,w=b.image.Y+b.image.height;break}b.sprite&&(b.image.width=48,b.image.height=48,b.image.Y=w,w=b.image.Y+b.image.height);let _=b.wrap&&_s.wrap,S=_s.width-_s.c4ShapePadding*2,I=IF(_s,b.typeC4Shape.text);if(I.fontSize=I.fontSize+2,I.fontWeight="bold",Yv("label",b,_,I,S),b.label.Y=w+8,w=b.label.Y+b.label.height,b.type&&b.type.text!==""){b.type.text="["+b.type.text+"]";let R=IF(_s,b.typeC4Shape.text);Yv("type",b,_,R,S),b.type.Y=w+5,w=b.type.Y+b.type.height}else if(b.techn&&b.techn.text!==""){b.techn.text="["+b.techn.text+"]";let R=IF(_s,b.techn.text);Yv("techn",b,_,R,S),b.techn.Y=w+5,w=b.techn.Y+b.techn.height}let B=w,F=b.label.width;if(b.descr&&b.descr.text!==""){let R=IF(_s,b.typeC4Shape.text);Yv("descr",b,_,R,S),b.descr.Y=w+20,w=b.descr.Y+b.descr.height,F=Math.max(b.label.width,b.descr.width),B=w-b.descr.textLines*5}F=F+_s.c4ShapePadding,b.width=Math.max(b.width||_s.width,F,_s.width),b.height=Math.max(b.height||_s.height,B,_s.height),b.margin=b.margin||_s.c4ShapeMargin,i.insert(b),s4.drawC4Shape(a,b,_s)}i.bumpLastMargin(_s.c4ShapeMargin)};let Kw=class{constructor(a,f){this.x=a,this.y=f}},WBt=function(i,a){let f=i.x,g=i.y,w=a.x,v=a.y,b=f+i.width/2,E=g+i.height/2,_=Math.abs(f-w),S=Math.abs(g-v),I=S/_,B=i.height/i.width,F=null;return g==v&&fw?F=new Kw(f,E):f==w&&gv&&(F=new Kw(b,g)),f>w&&g=I?F=new Kw(f,E+I*i.width/2):F=new Kw(b-_/S*i.height/2,g+i.height):f=I?F=new Kw(f+i.width,E+I*i.width/2):F=new Kw(b+_/S*i.height/2,g+i.height):fv?B>=I?F=new Kw(f+i.width,E-I*i.width/2):F=new Kw(b+i.height/2*_/S,g):f>w&&g>v&&(B>=I?F=new Kw(f,E-i.width/2*I):F=new Kw(b-i.height/2*_/S,g)),F},jRe=function(i,a){let f={x:0,y:0};f.x=a.x+a.width/2,f.y=a.y+a.height/2;let g=WBt(i,f);f.x=i.x+i.width/2,f.y=i.y+i.height/2;let w=WBt(a,f);return{startPoint:g,endPoint:w}};const $Re=function(i,a,f,g){let w=0;for(let v of a){w=w+1;let b=v.wrap&&_s.wrap,E=RRe(_s);g.db.getC4Type()==="C4Dynamic"&&(v.label.text=w+": "+v.label.text);let S=n4(v.label.text,E);Yv("label",v,b,E,S),v.techn&&v.techn.text!==""&&(S=n4(v.techn.text,E),Yv("techn",v,b,E,S)),v.descr&&v.descr.text!==""&&(S=n4(v.descr.text,E),Yv("descr",v,b,E,S));let I=f(v.from),B=f(v.to),F=jRe(I,B);v.startPoint=F.startPoint,v.endPoint=F.endPoint}s4.drawRels(i,a,_s)};function YBt(i,a,f,g,w){let v=new UBt(w);v.data.widthLimit=f.data.widthLimit/Math.min(Ygt,g.length);for(let[b,E]of g.entries()){let _=0;E.image={width:0,height:0,Y:0},E.sprite&&(E.image.width=48,E.image.height=48,E.image.Y=_,_=E.image.Y+E.image.height);let S=E.wrap&&_s.wrap,I=LY(_s);if(I.fontSize=I.fontSize+2,I.fontWeight="bold",Yv("label",E,S,I,v.data.widthLimit),E.label.Y=_+8,_=E.label.Y+E.label.height,E.type&&E.type.text!==""){E.type.text="["+E.type.text+"]";let q=LY(_s);Yv("type",E,S,q,v.data.widthLimit),E.type.Y=_+5,_=E.type.Y+E.type.height}if(E.descr&&E.descr.text!==""){let q=LY(_s);q.fontSize=q.fontSize-2,Yv("descr",E,S,q,v.data.widthLimit),E.descr.Y=_+20,_=E.descr.Y+E.descr.height}if(b==0||b%Ygt===0){let q=f.data.startx+_s.diagramMarginX,X=f.data.stopy+_s.diagramMarginY+_;v.setData(q,q,X,X)}else{let q=v.data.stopx!==v.data.startx?v.data.stopx+_s.diagramMarginX:v.data.startx,X=v.data.starty;v.setData(q,q,X,X)}v.name=E.alias;let B=w.db.getC4ShapeArray(E.alias),F=w.db.getC4ShapeKeys(E.alias);F.length>0&&KBt(v,i,B,F),a=E.alias;let R=w.db.getBoundarys(a);R.length>0&&YBt(i,a,v,R,w),E.alias!=="global"&&GBt(i,E,v),f.data.stopy=Math.max(v.data.stopy+_s.c4ShapeMargin,f.data.stopy),f.data.stopx=Math.max(v.data.stopx+_s.c4ShapeMargin,f.data.stopx),SY=Math.max(SY,f.data.stopx),AY=Math.max(AY,f.data.stopy)}}const XBt={drawPersonOrSystemArray:KBt,drawBoundary:GBt,setConf:Xgt,draw:function(i,a,f,g){_s=Re().c4;const w=Re().securityLevel;let v;w==="sandbox"&&(v=xr("#i"+a));const b=xr(w==="sandbox"?v.nodes()[0].contentDocument.body:"body");let E=g.db;g.db.setWrap(_s.wrap),VBt=E.getC4ShapeInRow(),Ygt=E.getC4BoundaryInRow(),Wt.debug(`C:${JSON.stringify(_s,null,2)}`);const _=w==="sandbox"?b.select(`[id="${a}"]`):xr(`[id="${a}"]`);s4.insertComputerIcon(_),s4.insertDatabaseIcon(_),s4.insertClockIcon(_);let S=new UBt(g);S.setData(_s.diagramMarginX,_s.diagramMarginX,_s.diagramMarginY,_s.diagramMarginY),S.data.widthLimit=screen.availWidth,SY=_s.diagramMarginX,AY=_s.diagramMarginY;const I=g.db.getTitle();let B=g.db.getBoundarys("");YBt(_,"",S,B,g),s4.insertArrowHead(_),s4.insertArrowEnd(_),s4.insertArrowCrossHead(_),s4.insertArrowFilledHead(_),$Re(_,g.db.getRels(),g.db.getC4Shape,g),S.data.stopx=SY,S.data.stopy=AY;const F=S.data;let q=F.stopy-F.starty+2*_s.diagramMarginY;const rt=F.stopx-F.startx+2*_s.diagramMarginX;I&&_.append("text").text(I).attr("x",(F.stopx-F.startx)/2-4*_s.diagramMarginX).attr("y",F.starty+_s.diagramMarginY),Kg(_,q,rt,_s.useMaxWidth);const at=I?60:0;_.attr("viewBox",F.startx-_s.diagramMarginX+" -"+(_s.diagramMarginY+at)+" "+rt+" "+(q+at)),Wt.debug("models:",F)}},zRe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:ZBe,db:Ggt,renderer:XBt,styles:i=>`.person { + stroke: ${i.personBorder}; + fill: ${i.personBkg}; + } +`,init:({c4:i,wrap:a})=>{XBt.setConf(i),Ggt.setWrap(a)}}},Symbol.toStringTag,{value:"Module"}));var Qgt=function(){var i=function(Ad,ls,Ls,Za){for(Ls=Ls||{},Za=Ad.length;Za--;Ls[Ad[Za]]=ls);return Ls},a=[1,4],f=[1,3],g=[1,5],w=[1,8,9,10,11,27,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],v=[2,2],b=[1,13],E=[1,14],_=[1,15],S=[1,16],I=[1,23],B=[1,25],F=[1,26],R=[1,27],q=[1,49],X=[1,48],rt=[1,29],at=[1,30],ut=[1,31],pt=[1,32],yt=[1,33],mt=[1,44],gt=[1,46],ht=[1,42],bt=[1,47],Z=[1,43],ft=[1,50],Y=[1,45],Et=[1,51],V=[1,52],Nt=[1,34],Dt=[1,35],jt=[1,36],Ct=[1,37],Ft=[1,57],_t=[1,8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],xt=[1,61],Gt=[1,60],Be=[1,62],Ot=[8,9,11,73,75],vn=[1,88],Pe=[1,93],Ee=[1,92],nn=[1,89],sn=[1,85],me=[1,91],Fe=[1,87],Qt=[1,94],Ae=[1,90],Se=[1,95],Dn=[1,86],oe=[8,9,10,11,73,75],Pr=[8,9,10,11,44,73,75],we=[8,9,10,11,29,42,44,46,48,50,52,54,56,58,61,63,65,66,68,73,75,86,99,102,103,106,108,111,112,113],Ri=[8,9,11,42,58,73,75,86,99,102,103,106,108,111,112,113],yi=[42,58,86,99,102,103,106,108,111,112,113],da=[1,121],Ss=[1,120],Ra=[1,128],fr=[1,142],An=[1,143],Pn=[1,144],Bn=[1,145],Te=[1,130],be=[1,132],Qe=[1,136],rn=[1,137],yn=[1,138],ja=[1,139],mo=[1,140],vo=[1,141],ma=[1,146],$a=[1,147],gs=[1,126],Nu=[1,127],ta=[1,134],l1=[1,129],_2=[1,133],ll=[1,131],Ac=[8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],pc=[1,149],ka=[8,9,11],du=[8,9,10,11,14,42,58,86,102,103,106,108,111,112,113],ea=[1,169],co=[1,165],bc=[1,166],oa=[1,170],va=[1,167],na=[1,168],Xl=[75,113,116],Hc=[8,9,10,11,12,14,27,29,32,42,58,73,81,82,83,84,85,86,87,102,106,108,111,112,113],Zw=[10,103],mh=[31,47,49,51,53,55,60,62,64,65,67,69,113,114,115],_d=[1,235],b0=[1,233],Sd=[1,237],w0=[1,231],ag=[1,232],Yi=[1,234],cn=[1,236],Dr=[1,238],Si=[1,255],wc=[8,9,11,103],Fc=[8,9,10,11,58,81,102,103,106,107,108,109],vh={trace:function(){},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,FirstStmtSeperator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,verticeStatement: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,link:39,node:40,styledVertex:41,AMP:42,vertex:43,STYLE_SEPARATOR:44,idString:45,DOUBLECIRCLESTART:46,DOUBLECIRCLEEND:47,PS:48,PE:49,"(-":50,"-)":51,STADIUMSTART:52,STADIUMEND:53,SUBROUTINESTART:54,SUBROUTINEEND:55,VERTEX_WITH_PROPS_START:56,"NODE_STRING[field]":57,COLON:58,"NODE_STRING[value]":59,PIPE:60,CYLINDERSTART:61,CYLINDEREND:62,DIAMOND_START:63,DIAMOND_STOP:64,TAGEND:65,TRAPSTART:66,TRAPEND:67,INVTRAPSTART:68,INVTRAPEND:69,linkStatement:70,arrowText:71,TESTSTR:72,START_LINK:73,edgeText:74,LINK:75,edgeTextToken:76,STR:77,MD_STR:78,textToken:79,keywords:80,STYLE:81,LINKSTYLE:82,CLASSDEF:83,CLASS:84,CLICK:85,DOWN:86,UP:87,textNoTagsToken:88,stylesOpt:89,"idString[vertex]":90,"idString[class]":91,CALLBACKNAME:92,CALLBACKARGS:93,HREF:94,LINK_TARGET:95,"STR[link]":96,"STR[tooltip]":97,alphaNum:98,DEFAULT:99,numList:100,INTERPOLATE:101,NUM:102,COMMA:103,style:104,styleComponent:105,NODE_STRING:106,UNIT:107,BRKT:108,PCT:109,idStringToken:110,MINUS:111,MULT:112,UNICODE_TEXT:113,TEXT:114,TAGSTART:115,EDGE_TEXT:116,alphaNumToken:117,direction_tb:118,direction_bt:119,direction_rl:120,direction_lr:121,$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",42:"AMP",44:"STYLE_SEPARATOR",46:"DOUBLECIRCLESTART",47:"DOUBLECIRCLEEND",48:"PS",49:"PE",50:"(-",51:"-)",52:"STADIUMSTART",53:"STADIUMEND",54:"SUBROUTINESTART",55:"SUBROUTINEEND",56:"VERTEX_WITH_PROPS_START",57:"NODE_STRING[field]",58:"COLON",59:"NODE_STRING[value]",60:"PIPE",61:"CYLINDERSTART",62:"CYLINDEREND",63:"DIAMOND_START",64:"DIAMOND_STOP",65:"TAGEND",66:"TRAPSTART",67:"TRAPEND",68:"INVTRAPSTART",69:"INVTRAPEND",72:"TESTSTR",73:"START_LINK",75:"LINK",77:"STR",78:"MD_STR",81:"STYLE",82:"LINKSTYLE",83:"CLASSDEF",84:"CLASS",85:"CLICK",86:"DOWN",87:"UP",90:"idString[vertex]",91:"idString[class]",92:"CALLBACKNAME",93:"CALLBACKARGS",94:"HREF",95:"LINK_TARGET",96:"STR[link]",97:"STR[tooltip]",99:"DEFAULT",101:"INTERPOLATE",102:"NUM",103:"COMMA",106:"NODE_STRING",107:"UNIT",108:"BRKT",109:"PCT",111:"MINUS",112:"MULT",113:"UNICODE_TEXT",114:"TEXT",115:"TAGSTART",116:"EDGE_TEXT",118:"direction_tb",119:"direction_bt",120:"direction_rl",121:"direction_lr"},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],[20,3],[20,4],[20,2],[20,1],[40,1],[40,5],[41,1],[41,3],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,8],[43,4],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,4],[43,4],[43,1],[39,2],[39,3],[39,3],[39,1],[39,3],[74,1],[74,2],[74,1],[74,1],[70,1],[71,3],[30,1],[30,2],[30,1],[30,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,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],[100,1],[100,3],[89,1],[89,3],[104,1],[104,2],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[79,1],[79,1],[79,1],[79,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[76,1],[76,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[45,1],[45,2],[98,1],[98,2],[33,1],[33,1],[33,1],[33,1]],performAction:function(ls,Ls,Za,_i,gu,Le,ry){var $e=Le.length-1;switch(gu){case 2:this.$=[];break;case 3:(!Array.isArray(Le[$e])||Le[$e].length>0)&&Le[$e-1].push(Le[$e]),this.$=Le[$e-1];break;case 4:case 176:this.$=Le[$e];break;case 11:_i.setDirection("TB"),this.$="TB";break;case 12:_i.setDirection(Le[$e-1]),this.$=Le[$e-1];break;case 27:this.$=Le[$e-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=_i.addSubGraph(Le[$e-6],Le[$e-1],Le[$e-4]);break;case 34:this.$=_i.addSubGraph(Le[$e-3],Le[$e-1],Le[$e-3]);break;case 35:this.$=_i.addSubGraph(void 0,Le[$e-1],void 0);break;case 37:this.$=Le[$e].trim(),_i.setAccTitle(this.$);break;case 38:case 39:this.$=Le[$e].trim(),_i.setAccDescription(this.$);break;case 43:_i.addLink(Le[$e-2].stmt,Le[$e],Le[$e-1]),this.$={stmt:Le[$e],nodes:Le[$e].concat(Le[$e-2].nodes)};break;case 44:_i.addLink(Le[$e-3].stmt,Le[$e-1],Le[$e-2]),this.$={stmt:Le[$e-1],nodes:Le[$e-1].concat(Le[$e-3].nodes)};break;case 45:this.$={stmt:Le[$e-1],nodes:Le[$e-1]};break;case 46:this.$={stmt:Le[$e],nodes:Le[$e]};break;case 47:this.$=[Le[$e]];break;case 48:this.$=Le[$e-4].concat(Le[$e]);break;case 49:this.$=Le[$e];break;case 50:this.$=Le[$e-2],_i.setClass(Le[$e-2],Le[$e]);break;case 51:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"square");break;case 52:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"doublecircle");break;case 53:this.$=Le[$e-5],_i.addVertex(Le[$e-5],Le[$e-2],"circle");break;case 54:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"ellipse");break;case 55:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"stadium");break;case 56:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"subroutine");break;case 57:this.$=Le[$e-7],_i.addVertex(Le[$e-7],Le[$e-1],"rect",void 0,void 0,void 0,Object.fromEntries([[Le[$e-5],Le[$e-3]]]));break;case 58:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"cylinder");break;case 59:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"round");break;case 60:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"diamond");break;case 61:this.$=Le[$e-5],_i.addVertex(Le[$e-5],Le[$e-2],"hexagon");break;case 62:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"odd");break;case 63:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"trapezoid");break;case 64:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"inv_trapezoid");break;case 65:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"lean_right");break;case 66:this.$=Le[$e-3],_i.addVertex(Le[$e-3],Le[$e-1],"lean_left");break;case 67:this.$=Le[$e],_i.addVertex(Le[$e]);break;case 68:Le[$e-1].text=Le[$e],this.$=Le[$e-1];break;case 69:case 70:Le[$e-2].text=Le[$e-1],this.$=Le[$e-2];break;case 71:this.$=Le[$e];break;case 72:var h1=_i.destructLink(Le[$e],Le[$e-2]);this.$={type:h1.type,stroke:h1.stroke,length:h1.length,text:Le[$e-1]};break;case 73:this.$={text:Le[$e],type:"text"};break;case 74:this.$={text:Le[$e-1].text+""+Le[$e],type:Le[$e-1].type};break;case 75:this.$={text:Le[$e],type:"string"};break;case 76:this.$={text:Le[$e],type:"markdown"};break;case 77:var h1=_i.destructLink(Le[$e]);this.$={type:h1.type,stroke:h1.stroke,length:h1.length};break;case 78:this.$=Le[$e-1];break;case 79:this.$={text:Le[$e],type:"text"};break;case 80:this.$={text:Le[$e-1].text+""+Le[$e],type:Le[$e-1].type};break;case 81:this.$={text:Le[$e],type:"string"};break;case 82:case 97:this.$={text:Le[$e],type:"markdown"};break;case 94:this.$={text:Le[$e],type:"text"};break;case 95:this.$={text:Le[$e-1].text+""+Le[$e],type:Le[$e-1].type};break;case 96:this.$={text:Le[$e],type:"text"};break;case 98:this.$=Le[$e-4],_i.addClass(Le[$e-2],Le[$e]);break;case 99:this.$=Le[$e-4],_i.setClass(Le[$e-2],Le[$e]);break;case 100:case 108:this.$=Le[$e-1],_i.setClickEvent(Le[$e-1],Le[$e]);break;case 101:case 109:this.$=Le[$e-3],_i.setClickEvent(Le[$e-3],Le[$e-2]),_i.setTooltip(Le[$e-3],Le[$e]);break;case 102:this.$=Le[$e-2],_i.setClickEvent(Le[$e-2],Le[$e-1],Le[$e]);break;case 103:this.$=Le[$e-4],_i.setClickEvent(Le[$e-4],Le[$e-3],Le[$e-2]),_i.setTooltip(Le[$e-4],Le[$e]);break;case 104:this.$=Le[$e-2],_i.setLink(Le[$e-2],Le[$e]);break;case 105:this.$=Le[$e-4],_i.setLink(Le[$e-4],Le[$e-2]),_i.setTooltip(Le[$e-4],Le[$e]);break;case 106:this.$=Le[$e-4],_i.setLink(Le[$e-4],Le[$e-2],Le[$e]);break;case 107:this.$=Le[$e-6],_i.setLink(Le[$e-6],Le[$e-4],Le[$e]),_i.setTooltip(Le[$e-6],Le[$e-2]);break;case 110:this.$=Le[$e-1],_i.setLink(Le[$e-1],Le[$e]);break;case 111:this.$=Le[$e-3],_i.setLink(Le[$e-3],Le[$e-2]),_i.setTooltip(Le[$e-3],Le[$e]);break;case 112:this.$=Le[$e-3],_i.setLink(Le[$e-3],Le[$e-2],Le[$e]);break;case 113:this.$=Le[$e-5],_i.setLink(Le[$e-5],Le[$e-4],Le[$e]),_i.setTooltip(Le[$e-5],Le[$e-2]);break;case 114:this.$=Le[$e-4],_i.addVertex(Le[$e-2],void 0,void 0,Le[$e]);break;case 115:this.$=Le[$e-4],_i.updateLink([Le[$e-2]],Le[$e]);break;case 116:this.$=Le[$e-4],_i.updateLink(Le[$e-2],Le[$e]);break;case 117:this.$=Le[$e-8],_i.updateLinkInterpolate([Le[$e-6]],Le[$e-2]),_i.updateLink([Le[$e-6]],Le[$e]);break;case 118:this.$=Le[$e-8],_i.updateLinkInterpolate(Le[$e-6],Le[$e-2]),_i.updateLink(Le[$e-6],Le[$e]);break;case 119:this.$=Le[$e-6],_i.updateLinkInterpolate([Le[$e-4]],Le[$e]);break;case 120:this.$=Le[$e-6],_i.updateLinkInterpolate(Le[$e-4],Le[$e]);break;case 121:case 123:this.$=[Le[$e]];break;case 122:case 124:Le[$e-2].push(Le[$e]),this.$=Le[$e-2];break;case 126:this.$=Le[$e-1]+Le[$e];break;case 174:this.$=Le[$e];break;case 175:this.$=Le[$e-1]+""+Le[$e];break;case 177:this.$=Le[$e-1]+""+Le[$e];break;case 178:this.$={stmt:"dir",value:"TB"};break;case 179:this.$={stmt:"dir",value:"BT"};break;case 180:this.$={stmt:"dir",value:"RL"};break;case 181:this.$={stmt:"dir",value:"LR"};break}},table:[{3:1,4:2,9:a,10:f,12:g},{1:[3]},i(w,v,{5:6}),{4:7,9:a,10:f,12:g},{4:8,9:a,10:f,12:g},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:b,9:E,10:_,11:S,20:17,22:18,23:19,24:20,25:21,26:22,27:I,33:24,34:B,36:F,38:R,40:28,41:38,42:q,43:39,45:40,58:X,81:rt,82:at,83:ut,84:pt,85:yt,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:41,111:Y,112:Et,113:V,118:Nt,119:Dt,120:jt,121:Ct},i(w,[2,9]),i(w,[2,10]),i(w,[2,11]),{8:[1,54],9:[1,55],10:Ft,15:53,18:56},i(_t,[2,3]),i(_t,[2,4]),i(_t,[2,5]),i(_t,[2,6]),i(_t,[2,7]),i(_t,[2,8]),{8:xt,9:Gt,11:Be,21:58,39:59,70:63,73:[1,64],75:[1,65]},{8:xt,9:Gt,11:Be,21:66},{8:xt,9:Gt,11:Be,21:67},{8:xt,9:Gt,11:Be,21:68},{8:xt,9:Gt,11:Be,21:69},{8:xt,9:Gt,11:Be,21:70},{8:xt,9:Gt,10:[1,71],11:Be,21:72},i(_t,[2,36]),{35:[1,73]},{37:[1,74]},i(_t,[2,39]),i(Ot,[2,46],{18:75,10:Ft}),{10:[1,76]},{10:[1,77]},{10:[1,78]},{10:[1,79]},{14:vn,42:Pe,58:Ee,77:[1,83],86:nn,92:[1,80],94:[1,81],98:82,102:sn,103:me,106:Fe,108:Qt,111:Ae,112:Se,113:Dn,117:84},i(_t,[2,178]),i(_t,[2,179]),i(_t,[2,180]),i(_t,[2,181]),i(oe,[2,47]),i(oe,[2,49],{44:[1,96]}),i(Pr,[2,67],{110:109,29:[1,97],42:q,46:[1,98],48:[1,99],50:[1,100],52:[1,101],54:[1,102],56:[1,103],58:X,61:[1,104],63:[1,105],65:[1,106],66:[1,107],68:[1,108],86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,111:Y,112:Et,113:V}),i(we,[2,174]),i(we,[2,135]),i(we,[2,136]),i(we,[2,137]),i(we,[2,138]),i(we,[2,139]),i(we,[2,140]),i(we,[2,141]),i(we,[2,142]),i(we,[2,143]),i(we,[2,144]),i(we,[2,145]),i(w,[2,12]),i(w,[2,18]),i(w,[2,19]),{9:[1,110]},i(Ri,[2,26],{18:111,10:Ft}),i(_t,[2,27]),{40:112,41:38,42:q,43:39,45:40,58:X,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:41,111:Y,112:Et,113:V},i(_t,[2,40]),i(_t,[2,41]),i(_t,[2,42]),i(yi,[2,71],{71:113,60:[1,115],72:[1,114]}),{74:116,76:117,77:[1,118],78:[1,119],113:da,116:Ss},i([42,58,60,72,86,99,102,103,106,108,111,112,113],[2,77]),i(_t,[2,28]),i(_t,[2,29]),i(_t,[2,30]),i(_t,[2,31]),i(_t,[2,32]),{10:Ra,12:fr,14:An,27:Pn,28:122,32:Bn,42:Te,58:be,73:Qe,77:[1,124],78:[1,125],80:135,81:rn,82:yn,83:ja,84:mo,85:vo,86:ma,87:$a,88:123,102:gs,106:Nu,108:ta,111:l1,112:_2,113:ll},i(Ac,v,{5:148}),i(_t,[2,37]),i(_t,[2,38]),i(Ot,[2,45],{42:pc}),{42:q,45:150,58:X,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:41,111:Y,112:Et,113:V},{99:[1,151],100:152,102:[1,153]},{42:q,45:154,58:X,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:41,111:Y,112:Et,113:V},{42:q,45:155,58:X,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:41,111:Y,112:Et,113:V},i(ka,[2,100],{10:[1,156],93:[1,157]}),{77:[1,158]},i(ka,[2,108],{117:160,10:[1,159],14:vn,42:Pe,58:Ee,86:nn,102:sn,103:me,106:Fe,108:Qt,111:Ae,112:Se,113:Dn}),i(ka,[2,110],{10:[1,161]}),i(du,[2,176]),i(du,[2,163]),i(du,[2,164]),i(du,[2,165]),i(du,[2,166]),i(du,[2,167]),i(du,[2,168]),i(du,[2,169]),i(du,[2,170]),i(du,[2,171]),i(du,[2,172]),i(du,[2,173]),{42:q,45:162,58:X,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:41,111:Y,112:Et,113:V},{30:163,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{30:171,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{30:173,48:[1,172],65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{30:174,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{30:175,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{30:176,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{106:[1,177]},{30:178,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{30:179,63:[1,180],65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{30:181,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{30:182,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{30:183,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},i(we,[2,175]),i(w,[2,20]),i(Ri,[2,25]),i(Ot,[2,43],{18:184,10:Ft}),i(yi,[2,68],{10:[1,185]}),{10:[1,186]},{30:187,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{75:[1,188],76:189,113:da,116:Ss},i(Xl,[2,73]),i(Xl,[2,75]),i(Xl,[2,76]),i(Xl,[2,161]),i(Xl,[2,162]),{8:xt,9:Gt,10:Ra,11:Be,12:fr,14:An,21:191,27:Pn,29:[1,190],32:Bn,42:Te,58:be,73:Qe,80:135,81:rn,82:yn,83:ja,84:mo,85:vo,86:ma,87:$a,88:192,102:gs,106:Nu,108:ta,111:l1,112:_2,113:ll},i(Hc,[2,94]),i(Hc,[2,96]),i(Hc,[2,97]),i(Hc,[2,150]),i(Hc,[2,151]),i(Hc,[2,152]),i(Hc,[2,153]),i(Hc,[2,154]),i(Hc,[2,155]),i(Hc,[2,156]),i(Hc,[2,157]),i(Hc,[2,158]),i(Hc,[2,159]),i(Hc,[2,160]),i(Hc,[2,83]),i(Hc,[2,84]),i(Hc,[2,85]),i(Hc,[2,86]),i(Hc,[2,87]),i(Hc,[2,88]),i(Hc,[2,89]),i(Hc,[2,90]),i(Hc,[2,91]),i(Hc,[2,92]),i(Hc,[2,93]),{6:11,7:12,8:b,9:E,10:_,11:S,20:17,22:18,23:19,24:20,25:21,26:22,27:I,32:[1,193],33:24,34:B,36:F,38:R,40:28,41:38,42:q,43:39,45:40,58:X,81:rt,82:at,83:ut,84:pt,85:yt,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:41,111:Y,112:Et,113:V,118:Nt,119:Dt,120:jt,121:Ct},{10:Ft,18:194},{10:[1,195],42:q,58:X,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:109,111:Y,112:Et,113:V},{10:[1,196]},{10:[1,197],103:[1,198]},i(Zw,[2,121]),{10:[1,199],42:q,58:X,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:109,111:Y,112:Et,113:V},{10:[1,200],42:q,58:X,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:109,111:Y,112:Et,113:V},{77:[1,201]},i(ka,[2,102],{10:[1,202]}),i(ka,[2,104],{10:[1,203]}),{77:[1,204]},i(du,[2,177]),{77:[1,205],95:[1,206]},i(oe,[2,50],{110:109,42:q,58:X,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,111:Y,112:Et,113:V}),{31:[1,207],65:ea,79:208,113:oa,114:va,115:na},i(mh,[2,79]),i(mh,[2,81]),i(mh,[2,82]),i(mh,[2,146]),i(mh,[2,147]),i(mh,[2,148]),i(mh,[2,149]),{47:[1,209],65:ea,79:208,113:oa,114:va,115:na},{30:210,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{49:[1,211],65:ea,79:208,113:oa,114:va,115:na},{51:[1,212],65:ea,79:208,113:oa,114:va,115:na},{53:[1,213],65:ea,79:208,113:oa,114:va,115:na},{55:[1,214],65:ea,79:208,113:oa,114:va,115:na},{58:[1,215]},{62:[1,216],65:ea,79:208,113:oa,114:va,115:na},{64:[1,217],65:ea,79:208,113:oa,114:va,115:na},{30:218,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},{31:[1,219],65:ea,79:208,113:oa,114:va,115:na},{65:ea,67:[1,220],69:[1,221],79:208,113:oa,114:va,115:na},{65:ea,67:[1,223],69:[1,222],79:208,113:oa,114:va,115:na},i(Ot,[2,44],{42:pc}),i(yi,[2,70]),i(yi,[2,69]),{60:[1,224],65:ea,79:208,113:oa,114:va,115:na},i(yi,[2,72]),i(Xl,[2,74]),{30:225,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},i(Ac,v,{5:226}),i(Hc,[2,95]),i(_t,[2,35]),{41:227,42:q,43:39,45:40,58:X,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:41,111:Y,112:Et,113:V},{10:_d,58:b0,81:Sd,89:228,102:w0,104:229,105:230,106:ag,107:Yi,108:cn,109:Dr},{10:_d,58:b0,81:Sd,89:239,101:[1,240],102:w0,104:229,105:230,106:ag,107:Yi,108:cn,109:Dr},{10:_d,58:b0,81:Sd,89:241,101:[1,242],102:w0,104:229,105:230,106:ag,107:Yi,108:cn,109:Dr},{102:[1,243]},{10:_d,58:b0,81:Sd,89:244,102:w0,104:229,105:230,106:ag,107:Yi,108:cn,109:Dr},{42:q,45:245,58:X,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:41,111:Y,112:Et,113:V},i(ka,[2,101]),{77:[1,246]},{77:[1,247],95:[1,248]},i(ka,[2,109]),i(ka,[2,111],{10:[1,249]}),i(ka,[2,112]),i(Pr,[2,51]),i(mh,[2,80]),i(Pr,[2,52]),{49:[1,250],65:ea,79:208,113:oa,114:va,115:na},i(Pr,[2,59]),i(Pr,[2,54]),i(Pr,[2,55]),i(Pr,[2,56]),{106:[1,251]},i(Pr,[2,58]),i(Pr,[2,60]),{64:[1,252],65:ea,79:208,113:oa,114:va,115:na},i(Pr,[2,62]),i(Pr,[2,63]),i(Pr,[2,65]),i(Pr,[2,64]),i(Pr,[2,66]),i([10,42,58,86,99,102,103,106,108,111,112,113],[2,78]),{31:[1,253],65:ea,79:208,113:oa,114:va,115:na},{6:11,7:12,8:b,9:E,10:_,11:S,20:17,22:18,23:19,24:20,25:21,26:22,27:I,32:[1,254],33:24,34:B,36:F,38:R,40:28,41:38,42:q,43:39,45:40,58:X,81:rt,82:at,83:ut,84:pt,85:yt,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:41,111:Y,112:Et,113:V,118:Nt,119:Dt,120:jt,121:Ct},i(oe,[2,48]),i(ka,[2,114],{103:Si}),i(wc,[2,123],{105:256,10:_d,58:b0,81:Sd,102:w0,106:ag,107:Yi,108:cn,109:Dr}),i(Fc,[2,125]),i(Fc,[2,127]),i(Fc,[2,128]),i(Fc,[2,129]),i(Fc,[2,130]),i(Fc,[2,131]),i(Fc,[2,132]),i(Fc,[2,133]),i(Fc,[2,134]),i(ka,[2,115],{103:Si}),{10:[1,257]},i(ka,[2,116],{103:Si}),{10:[1,258]},i(Zw,[2,122]),i(ka,[2,98],{103:Si}),i(ka,[2,99],{110:109,42:q,58:X,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,111:Y,112:Et,113:V}),i(ka,[2,103]),i(ka,[2,105],{10:[1,259]}),i(ka,[2,106]),{95:[1,260]},{49:[1,261]},{60:[1,262]},{64:[1,263]},{8:xt,9:Gt,11:Be,21:264},i(_t,[2,34]),{10:_d,58:b0,81:Sd,102:w0,104:265,105:230,106:ag,107:Yi,108:cn,109:Dr},i(Fc,[2,126]),{14:vn,42:Pe,58:Ee,86:nn,98:266,102:sn,103:me,106:Fe,108:Qt,111:Ae,112:Se,113:Dn,117:84},{14:vn,42:Pe,58:Ee,86:nn,98:267,102:sn,103:me,106:Fe,108:Qt,111:Ae,112:Se,113:Dn,117:84},{95:[1,268]},i(ka,[2,113]),i(Pr,[2,53]),{30:269,65:ea,77:co,78:bc,79:164,113:oa,114:va,115:na},i(Pr,[2,61]),i(Ac,v,{5:270}),i(wc,[2,124],{105:256,10:_d,58:b0,81:Sd,102:w0,106:ag,107:Yi,108:cn,109:Dr}),i(ka,[2,119],{117:160,10:[1,271],14:vn,42:Pe,58:Ee,86:nn,102:sn,103:me,106:Fe,108:Qt,111:Ae,112:Se,113:Dn}),i(ka,[2,120],{117:160,10:[1,272],14:vn,42:Pe,58:Ee,86:nn,102:sn,103:me,106:Fe,108:Qt,111:Ae,112:Se,113:Dn}),i(ka,[2,107]),{31:[1,273],65:ea,79:208,113:oa,114:va,115:na},{6:11,7:12,8:b,9:E,10:_,11:S,20:17,22:18,23:19,24:20,25:21,26:22,27:I,32:[1,274],33:24,34:B,36:F,38:R,40:28,41:38,42:q,43:39,45:40,58:X,81:rt,82:at,83:ut,84:pt,85:yt,86:mt,99:gt,102:ht,103:bt,106:Z,108:ft,110:41,111:Y,112:Et,113:V,118:Nt,119:Dt,120:jt,121:Ct},{10:_d,58:b0,81:Sd,89:275,102:w0,104:229,105:230,106:ag,107:Yi,108:cn,109:Dr},{10:_d,58:b0,81:Sd,89:276,102:w0,104:229,105:230,106:ag,107:Yi,108:cn,109:Dr},i(Pr,[2,57]),i(_t,[2,33]),i(ka,[2,117],{103:Si}),i(ka,[2,118],{103:Si})],defaultActions:{},parseError:function(ls,Ls){if(Ls.recoverable)this.trace(ls);else{var Za=new Error(ls);throw Za.hash=Ls,Za}},parse:function(ls){var Ls=this,Za=[0],_i=[],gu=[null],Le=[],ry=this.table,$e="",h1=0,rp=0,iy=2,S8=1,f4=Le.slice.call(arguments,1),Ql=Object.create(this.lexer),og={yy:{}};for(var S2 in this.yy)Object.prototype.hasOwnProperty.call(this.yy,S2)&&(og.yy[S2]=this.yy[S2]);Ql.setInput(ls,og.yy),og.yy.lexer=Ql,og.yy.parser=this,typeof Ql.yylloc>"u"&&(Ql.yylloc={});var A8=Ql.yylloc;Le.push(A8);var A2=Ql.options&&Ql.options.ranges;typeof og.yy.parseError=="function"?this.parseError=og.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function d4(){var ip;return ip=_i.pop()||Ql.lex()||S8,typeof ip!="number"&&(ip instanceof Array&&(_i=ip,ip=_i.pop()),ip=Ls.symbols_[ip]||ip),ip}for(var q1,Ld,Md,L8,tm={},Hx,cb,Vx,g4;;){if(Ld=Za[Za.length-1],this.defaultActions[Ld]?Md=this.defaultActions[Ld]:((q1===null||typeof q1>"u")&&(q1=d4()),Md=ry[Ld]&&ry[Ld][q1]),typeof Md>"u"||!Md.length||!Md[0]){var sy="";g4=[];for(Hx in ry[Ld])this.terminals_[Hx]&&Hx>iy&&g4.push("'"+this.terminals_[Hx]+"'");Ql.showPosition?sy="Parse error on line "+(h1+1)+`: +`+Ql.showPosition()+` +Expecting `+g4.join(", ")+", got '"+(this.terminals_[q1]||q1)+"'":sy="Parse error on line "+(h1+1)+": Unexpected "+(q1==S8?"end of input":"'"+(this.terminals_[q1]||q1)+"'"),this.parseError(sy,{text:Ql.match,token:this.terminals_[q1]||q1,line:Ql.yylineno,loc:A8,expected:g4})}if(Md[0]instanceof Array&&Md.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ld+", token: "+q1);switch(Md[0]){case 1:Za.push(q1),gu.push(Ql.yytext),Le.push(Ql.yylloc),Za.push(Md[1]),q1=null,rp=Ql.yyleng,$e=Ql.yytext,h1=Ql.yylineno,A8=Ql.yylloc;break;case 2:if(cb=this.productions_[Md[1]][1],tm.$=gu[gu.length-cb],tm._$={first_line:Le[Le.length-(cb||1)].first_line,last_line:Le[Le.length-1].last_line,first_column:Le[Le.length-(cb||1)].first_column,last_column:Le[Le.length-1].last_column},A2&&(tm._$.range=[Le[Le.length-(cb||1)].range[0],Le[Le.length-1].range[1]]),L8=this.performAction.apply(tm,[$e,rp,h1,og.yy,Md[1],gu,Le].concat(f4)),typeof L8<"u")return L8;cb&&(Za=Za.slice(0,-1*cb*2),gu=gu.slice(0,-1*cb),Le=Le.slice(0,-1*cb)),Za.push(this.productions_[Md[1]][0]),gu.push(tm.$),Le.push(tm._$),Vx=ry[Za[Za.length-2]][Za[Za.length-1]],Za.push(Vx);break;case 3:return!0}}return!0}},Qc=function(){var Ad={EOF:1,parseError:function(Ls,Za){if(this.yy.parser)this.yy.parser.parseError(Ls,Za);else throw new Error(Ls)},setInput:function(ls,Ls){return this.yy=Ls||this.yy||{},this._input=ls,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},input:function(){var ls=this._input[0];this.yytext+=ls,this.yyleng++,this.offset++,this.match+=ls,this.matched+=ls;var Ls=ls.match(/(?:\r\n?|\n).*/g);return Ls?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ls},unput:function(ls){var Ls=ls.length,Za=ls.split(/(?:\r\n?|\n)/g);this._input=ls+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ls),this.offset-=Ls;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),Za.length-1&&(this.yylineno-=Za.length-1);var gu=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:Za?(Za.length===_i.length?this.yylloc.first_column:0)+_i[_i.length-Za.length].length-Za[0].length:this.yylloc.first_column-Ls},this.options.ranges&&(this.yylloc.range=[gu[0],gu[0]+this.yyleng-Ls]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(ls){this.unput(this.match.slice(ls))},pastInput:function(){var ls=this.matched.substr(0,this.matched.length-this.match.length);return(ls.length>20?"...":"")+ls.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ls=this.match;return ls.length<20&&(ls+=this._input.substr(0,20-ls.length)),(ls.substr(0,20)+(ls.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ls=this.pastInput(),Ls=new Array(ls.length+1).join("-");return ls+this.upcomingInput()+` +`+Ls+"^"},test_match:function(ls,Ls){var Za,_i,gu;if(this.options.backtrack_lexer&&(gu={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&&(gu.yylloc.range=this.yylloc.range.slice(0))),_i=ls[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+ls[0].length},this.yytext+=ls[0],this.match+=ls[0],this.matches=ls,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(ls[0].length),this.matched+=ls[0],Za=this.performAction.call(this,this.yy,this,Ls,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Za)return Za;if(this._backtrack){for(var Le in gu)this[Le]=gu[Le];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ls,Ls,Za,_i;this._more||(this.yytext="",this.match="");for(var gu=this._currentRules(),Le=0;LeLs[0].length)){if(Ls=Za,_i=Le,this.options.backtrack_lexer){if(ls=this.test_match(Za,gu[Le]),ls!==!1)return ls;if(this._backtrack){Ls=!1;continue}else return!1}else if(!this.options.flex)break}return Ls?(ls=this.test_match(Ls,gu[_i]),ls!==!1?ls:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Ls=this.next();return Ls||this.lex()},begin:function(Ls){this.conditionStack.push(Ls)},popState:function(){var Ls=this.conditionStack.length-1;return Ls>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Ls){return Ls=this.conditionStack.length-1-Math.abs(Ls||0),Ls>=0?this.conditionStack[Ls]:"INITIAL"},pushState:function(Ls){this.begin(Ls)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(Ls,Za,_i,gu){switch(_i){case 0:return this.begin("acc_title"),34;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),36;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:this.begin("callbackname");break;case 8:this.popState();break;case 9:this.popState(),this.begin("callbackargs");break;case 10:return 92;case 11:this.popState();break;case 12:return 93;case 13:return"MD_STR";case 14:this.popState();break;case 15:this.begin("md_string");break;case 16:return"STR";case 17:this.popState();break;case 18:this.pushState("string");break;case 19:return 81;case 20:return 99;case 21:return 82;case 22:return 101;case 23:return 83;case 24:return 84;case 25:return 94;case 26:this.begin("click");break;case 27:this.popState();break;case 28:return 85;case 29:return Ls.lex.firstGraph()&&this.begin("dir"),12;case 30:return Ls.lex.firstGraph()&&this.begin("dir"),12;case 31:return Ls.lex.firstGraph()&&this.begin("dir"),12;case 32:return 27;case 33:return 32;case 34:return 95;case 35:return 95;case 36:return 95;case 37:return 95;case 38:return this.popState(),13;case 39:return this.popState(),14;case 40:return this.popState(),14;case 41:return this.popState(),14;case 42:return this.popState(),14;case 43:return this.popState(),14;case 44:return this.popState(),14;case 45:return this.popState(),14;case 46:return this.popState(),14;case 47:return this.popState(),14;case 48:return this.popState(),14;case 49:return 118;case 50:return 119;case 51:return 120;case 52:return 121;case 53:return 102;case 54:return 108;case 55:return 44;case 56:return 58;case 57:return 42;case 58:return 8;case 59:return 103;case 60:return 112;case 61:return this.popState(),75;case 62:return this.pushState("edgeText"),73;case 63:return 116;case 64:return this.popState(),75;case 65:return this.pushState("thickEdgeText"),73;case 66:return 116;case 67:return this.popState(),75;case 68:return this.pushState("dottedEdgeText"),73;case 69:return 116;case 70:return 75;case 71:return this.popState(),51;case 72:return"TEXT";case 73:return this.pushState("ellipseText"),50;case 74:return this.popState(),53;case 75:return this.pushState("text"),52;case 76:return this.popState(),55;case 77:return this.pushState("text"),54;case 78:return 56;case 79:return this.pushState("text"),65;case 80:return this.popState(),62;case 81:return this.pushState("text"),61;case 82:return this.popState(),47;case 83:return this.pushState("text"),46;case 84:return this.popState(),67;case 85:return this.popState(),69;case 86:return 114;case 87:return this.pushState("trapText"),66;case 88:return this.pushState("trapText"),68;case 89:return 115;case 90:return 65;case 91:return 87;case 92:return"SEP";case 93:return 86;case 94:return 112;case 95:return 108;case 96:return 42;case 97:return 106;case 98:return 111;case 99:return 113;case 100:return this.popState(),60;case 101:return this.pushState("text"),60;case 102:return this.popState(),49;case 103:return this.pushState("text"),48;case 104:return this.popState(),31;case 105:return this.pushState("text"),29;case 106:return this.popState(),64;case 107:return this.pushState("text"),63;case 108:return"TEXT";case 109:return"QUOTE";case 110:return 9;case 111:return 10;case 112:return 11}},rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[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:{callbackargs:{rules:[11,12,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},callbackname:{rules:[8,9,10,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},href:{rules:[15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},click:{rules:[15,18,27,28,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},dottedEdgeText:{rules:[15,18,67,69,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},thickEdgeText:{rules:[15,18,64,66,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},edgeText:{rules:[15,18,61,63,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},trapText:{rules:[15,18,70,73,75,77,81,83,84,85,86,87,88,101,103,105,107],inclusive:!1},ellipseText:{rules:[15,18,70,71,72,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},text:{rules:[15,18,70,73,74,75,76,77,80,81,82,83,87,88,100,101,102,103,104,105,106,107,108],inclusive:!1},vertex:{rules:[15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},dir:{rules:[15,18,38,39,40,41,42,43,44,45,46,47,48,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_descr_multiline:{rules:[5,6,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_descr:{rules:[3,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_title:{rules:[1,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},md_string:{rules:[13,14,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},string:{rules:[15,16,17,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},INITIAL:{rules:[0,2,4,7,15,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,36,37,49,50,51,52,53,54,55,56,57,58,59,60,61,62,64,65,67,68,70,73,75,77,78,79,81,83,87,88,89,90,91,92,93,94,95,96,97,98,99,101,103,105,107,109,110,111,112],inclusive:!0}}};return Ad}();vh.lexer=Qc;function Wh(){this.yy={}}return Wh.prototype=vh,vh.Parser=Wh,new Wh}();Qgt.parser=Qgt;const Jgt=Qgt,qRe="flowchart-";let QBt=0,cM=Re(),Rl={},Xv=[],uM={},Ix=[],MY={},DY={},IY=0,Zgt=!0,Ww,OY,PY=[];const NY=i=>ei.sanitizeText(i,cM),OF=function(i){const a=Object.keys(Rl);for(const f of a)if(Rl[f].id===i)return Rl[f].domId;return i},JBt=function(i,a,f,g,w,v,b={}){let E,_=i;_!==void 0&&_.trim().length!==0&&(Rl[_]===void 0&&(Rl[_]={id:_,labelType:"text",domId:qRe+_+"-"+QBt,styles:[],classes:[]}),QBt++,a!==void 0?(cM=Re(),E=NY(a.text.trim()),Rl[_].labelType=a.type,E[0]==='"'&&E[E.length-1]==='"'&&(E=E.substring(1,E.length-1)),Rl[_].text=E):Rl[_].text===void 0&&(Rl[_].text=i),f!==void 0&&(Rl[_].type=f),g!=null&&g.forEach(function(S){Rl[_].styles.push(S)}),w!=null&&w.forEach(function(S){Rl[_].classes.push(S)}),v!==void 0&&(Rl[_].dir=v),Rl[_].props===void 0?Rl[_].props=b:b!==void 0&&Object.assign(Rl[_].props,b))},ZBt=function(i,a,f){const v={start:i,end:a,type:void 0,text:"",labelType:"text"};Wt.info("abc78 Got edge...",v);const b=f.text;if(b!==void 0&&(v.text=NY(b.text.trim()),v.text[0]==='"'&&v.text[v.text.length-1]==='"'&&(v.text=v.text.substring(1,v.text.length-1)),v.labelType=b.type),f!==void 0&&(v.type=f.type,v.stroke=f.stroke,v.length=f.length),(v==null?void 0:v.length)>10&&(v.length=10),Xv.length<(cM.maxEdges??500))Wt.info("abc78 pushing edge..."),Xv.push(v);else throw new Error(`Edge limit exceeded. ${Xv.length} edges found, but the limit is ${cM.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.`)},tRt=function(i,a,f){Wt.info("addLink (abc78)",i,a,f);let g,w;for(g=0;g=Xv.length)throw new Error(`The index ${f} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${Xv.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);f==="default"?Xv.defaultStyle=a:(ao.isSubstringInArray("fill",a)===-1&&a.push("fill:none"),Xv[f].style=a)})},rRt=function(i,a){i.split(",").forEach(function(f){uM[f]===void 0&&(uM[f]={id:f,styles:[],textStyles:[]}),a!=null&&a.forEach(function(g){if(g.match("color")){const w=g.replace("fill","bgFill").replace("color","fill");uM[f].textStyles.push(w)}uM[f].styles.push(g)})})},iRt=function(i){Ww=i,Ww.match(/.*/)&&(Ww="LR"),Ww.match(/.*v/)&&(Ww="TB"),Ww==="TD"&&(Ww="TB")},FY=function(i,a){i.split(",").forEach(function(f){let g=f;Rl[g]!==void 0&&Rl[g].classes.push(a),MY[g]!==void 0&&MY[g].classes.push(a)})},HRe=function(i,a){i.split(",").forEach(function(f){a!==void 0&&(DY[OY==="gen-1"?OF(f):f]=NY(a))})},VRe=function(i,a,f){let g=OF(i);if(Re().securityLevel!=="loose"||a===void 0)return;let w=[];if(typeof f=="string"){w=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let v=0;v")),w.classed("hover",!0)}).on("mouseout",function(){a.transition().duration(500).style("opacity",0),xr(this).classed("hover",!1)})};PY.push(dRt);const gRt=function(i="gen-1"){Rl={},uM={},Xv=[],PY=[dRt],Ix=[],MY={},IY=0,DY={},Zgt=!0,OY=i,cM=Re(),Wg()},pRt=i=>{OY=i||"gen-2"},bRt=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},wRt=function(i,a,f){let g=i.text.trim(),w=f.text;i===f&&f.text.match(/\s/)&&(g=void 0);function v(I){const B={boolean:{},number:{},string:{}},F=[];let R;return{nodeList:I.filter(function(X){const rt=typeof X;return X.stmt&&X.stmt==="dir"?(R=X.value,!1):X.trim()===""?!1:rt in B?B[rt].hasOwnProperty(X)?!1:B[rt][X]=!0:F.includes(X)?!1:F.push(X)}),dir:R}}let b=[];const{nodeList:E,dir:_}=v(b.concat.apply(b,a));if(b=E,OY==="gen-1")for(let I=0;I2e3)return;if(mRt[PF]=a,Ix[a].id===i)return{result:!0,count:0};let g=0,w=1;for(;g=0){const b=vRt(i,v);if(b.result)return{result:!0,count:w+b.count};w=w+b.count}g=g+1}return{result:!1,count:w}},yRt=function(i){return mRt[i]},xRt=function(){PF=-1,Ix.length>0&&vRt("none",Ix.length-1)},kRt=function(){return Ix},ERt=()=>Zgt?(Zgt=!1,!0):!1,GRe=i=>{let a=i.trim(),f="arrow_open";switch(a[0]){case"<":f="arrow_point",a=a.slice(1);break;case"x":f="arrow_cross",a=a.slice(1);break;case"o":f="arrow_circle",a=a.slice(1);break}let g="normal";return a.includes("=")&&(g="thick"),a.includes(".")&&(g="dotted"),{type:f,stroke:g}},KRe=(i,a)=>{const f=a.length;let g=0;for(let w=0;w{const a=i.trim();let f=a.slice(0,-1),g="arrow_open";switch(a.slice(-1)){case"x":g="arrow_cross",a[0]==="x"&&(g="double_"+g,f=f.slice(1));break;case">":g="arrow_point",a[0]==="<"&&(g="double_"+g,f=f.slice(1));break;case"o":g="arrow_circle",a[0]==="o"&&(g="double_"+g,f=f.slice(1));break}let w="normal",v=f.length-1;f[0]==="="&&(w="thick"),f[0]==="~"&&(w="invisible");let b=KRe(".",f);return b&&(w="dotted",v=b),{type:g,stroke:w,length:v}},TRt=(i,a)=>{const f=WRe(i);let g;if(a){if(g=GRe(a),g.stroke!==f.stroke)return{type:"INVALID",stroke:"INVALID"};if(g.type==="arrow_open")g.type=f.type;else{if(g.type!==f.type)return{type:"INVALID",stroke:"INVALID"};g.type="double_"+g.type}return g.type==="double_arrow"&&(g.type="double_arrow_point"),g.length=f.length,g}return f},CRt=(i,a)=>{let f=!1;return i.forEach(g=>{g.nodes.indexOf(a)>=0&&(f=!0)}),f},_Rt=(i,a)=>{const f=[];return i.nodes.forEach((g,w)=>{CRt(a,g)||f.push(i.nodes[w])}),{nodes:f}},SRt={firstGraph:ERt},E9={defaultConfig:()=>YFt.flowchart,setAccTitle:ng,getAccTitle:Yg,getAccDescription:Qg,setAccDescription:Xg,addVertex:JBt,lookUpDomId:OF,addLink:tRt,updateLinkInterpolate:eRt,updateLink:nRt,addClass:rRt,setDirection:iRt,setClass:FY,setTooltip:HRe,getTooltip:aRt,setClickEvent:oRt,setLink:sRt,bindFunctions:cRt,getDirection:uRt,getVertices:lRt,getEdges:hRt,getClasses:fRt,clear:gRt,setGen:pRt,defaultStyle:bRt,addSubGraph:wRt,getDepthFirstPos:yRt,indexNodes:xRt,getSubGraphs:kRt,destructLink:TRt,lex:SRt,exists:CRt,makeUniq:_Rt,setDiagramTitle:y2,getDiagramTitle:Jg},YRe=Object.freeze(Object.defineProperty({__proto__:null,addClass:rRt,addLink:tRt,addSingleLink:ZBt,addSubGraph:wRt,addVertex:JBt,bindFunctions:cRt,clear:gRt,default:E9,defaultStyle:bRt,destructLink:TRt,firstGraph:ERt,getClasses:fRt,getDepthFirstPos:yRt,getDirection:uRt,getEdges:hRt,getSubGraphs:kRt,getTooltip:aRt,getVertices:lRt,indexNodes:xRt,lex:SRt,lookUpDomId:OF,setClass:FY,setClickEvent:oRt,setDirection:iRt,setGen:pRt,setLink:sRt,updateLink:nRt,updateLinkInterpolate:eRt},Symbol.toStringTag,{value:"Module"}));var XRe="[object Symbol]";function T9(i){return typeof i=="symbol"||e4(i)&&f9(i)==XRe}function lM(i,a){for(var f=-1,g=i==null?0:i.length,w=Array(g);++f-1}function k2(i){return f8(i)?nFt(i):iBt(i)}var gje=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,pje=/^\w*$/;function tpt(i,a){if(s1(i))return!1;var f=typeof i;return f=="number"||f=="symbol"||f=="boolean"||i==null||T9(i)?!0:pje.test(i)||!gje.test(i)||a!=null&&i in Object(a)}var bje=500;function wje(i){var a=GL(i,function(g){return f.size===bje&&f.clear(),g}),f=a.cache;return a}var mje=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,vje=/\\(\\)?/g,yje=wje(function(i){var a=[];return i.charCodeAt(0)===46&&a.push(""),i.replace(mje,function(f,g,w,v){a.push(w?v.replace(vje,"$1"):g||f)}),a});const xje=yje;function NRt(i){return i==null?"":MRt(i)}function RY(i,a){return s1(i)?i:tpt(i,a)?[i]:xje(NRt(i))}var kje=1/0;function NF(i){if(typeof i=="string"||T9(i))return i;var a=i+"";return a=="0"&&1/i==-kje?"-0":a}function jY(i,a){a=RY(a,i);for(var f=0,g=a.length;i!=null&&f0&&f(E)?a>1?$Y(E,a-1,f,g,w):ept(w,E):g||(w[w.length]=E)}return w}function hM(i){var a=i==null?0:i.length;return a?$Y(i,1):[]}function Cje(i){return aFt(sFt(i,void 0,hM),i+"")}function _je(i,a,f,g){var w=-1,v=i==null?0:i.length;for(g&&v&&(f=i[++w]);++wE))return!1;var S=v.get(i),I=v.get(a);if(S&&I)return S==a&&I==i;var B=-1,F=!0,R=f&tze?new BF:void 0;for(v.set(i,a),v.set(a,i);++B2?a[2]:void 0;for(w&&EF(a[0],a[1],w)&&(g=1);++f-1?w[v?a[b]:b]:void 0}}var Hze=Math.max;function Vze(i,a,f){var g=i==null?0:i.length;if(!g)return-1;var w=f==null?0:cje(f);return w<0&&(w=Hze(g+w,0)),PRt(i,v8(a),w)}var Uze=qze(Vze);const upt=Uze;function ojt(i,a){var f=-1,g=f8(i)?Array(i.length):[];return qY(i,function(w,v,b){g[++f]=a(w,v,b)}),g}function c1(i,a){var f=s1(i)?lM:ojt;return f(i,v8(a))}function Gze(i,a){return i==null?i:ugt(i,cpt(a),b9)}function Kze(i,a){return i&&opt(i,cpt(a))}function Wze(i,a){return i>a}var Yze=Object.prototype,Xze=Yze.hasOwnProperty;function Qze(i,a){return i!=null&&Xze.call(i,a)}function oo(i,a){return i!=null&&rjt(i,a,Qze)}function Jze(i,a){return lM(a,function(f){return i[f]})}function Px(i){return i==null?[]:Jze(i,k2(i))}function xf(i){return i===void 0}function cjt(i,a){return ia||v&&b&&_&&!E&&!S||g&&b&&_||!f&&_||!w)return 1;if(!g&&!v&&!S&&i=E)return _;var S=f[g];return _*(S=="desc"?-1:1)}}return i.index-a.index}function iqe(i,a,f){a.length?a=lM(a,function(v){return s1(v)?function(b){return jY(b,v.length===1?v[0]:v)}:v}):a=[w9];var g=-1;a=lM(a,tY(v8));var w=ojt(i,function(v,b,E){var _=lM(a,function(S){return S(v)});return{criteria:_,index:++g,value:v}});return eqe(w,function(v,b){return rqe(v,b,f)})}function sqe(i,a){return tqe(i,a,function(f,g){return ijt(i,g)})}var aqe=Cje(function(i,a){return i==null?{}:sqe(i,a)});const jF=aqe;var oqe=Math.ceil,cqe=Math.max;function uqe(i,a,f,g){for(var w=-1,v=cqe(oqe((a-i)/(f||1)),0),b=Array(v);v--;)b[g?v:++w]=i,i+=f;return b}function lqe(i){return function(a,f,g){return g&&typeof g!="number"&&EF(a,f,g)&&(f=g=void 0),a=BY(a),f===void 0?(f=a,a=0):f=BY(f),g=g===void 0?a1&&EF(i,a[0],a[1])?a=[]:f>2&&EF(a[0],a[1],a[2])&&(a=[a[0]]),iqe(i,$Y(a,1),[])});const zF=dqe;var gqe=1/0,pqe=nM&&1/ipt(new nM([,-0]))[1]==gqe?function(i){return new nM(i)}:uje;const bqe=pqe;var wqe=200;function mqe(i,a,f){var g=-1,w=dje,v=i.length,b=!0,E=[],_=E;if(f)b=!1,w=$ze;else if(v>=wqe){var S=a?null:bqe(i);if(S)return ipt(S);b=!1,w=YRt,_=new BF}else _=a?[]:E;t:for(;++g1?w.setNode(v,f):w.setNode(v)}),this}setNode(a,f){return oo(this._nodes,a)?(arguments.length>1&&(this._nodes[a]=f),this):(this._nodes[a]=arguments.length>1?f:this._defaultNodeLabelFn(a),this._isCompound&&(this._parent[a]=S9,this._children[a]={},this._children[S9][a]=!0),this._in[a]={},this._preds[a]={},this._out[a]={},this._sucs[a]={},++this._nodeCount,this)}node(a){return this._nodes[a]}hasNode(a){return oo(this._nodes,a)}removeNode(a){var f=this;if(oo(this._nodes,a)){var g=function(w){f.removeEdge(f._edgeObjs[w])};delete this._nodes[a],this._isCompound&&(this._removeFromParentsChildList(a),delete this._parent[a],pr(this.children(a),function(w){f.setParent(w)}),delete this._children[a]),pr(k2(this._in[a]),g),delete this._in[a],delete this._preds[a],pr(k2(this._out[a]),g),delete this._out[a],delete this._sucs[a],--this._nodeCount}return this}setParent(a,f){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(xf(f))f=S9;else{f+="";for(var g=f;!xf(g);g=this.parent(g))if(g===a)throw new Error("Setting "+f+" as parent of "+a+" would create a cycle");this.setNode(f)}return this.setNode(a),this._removeFromParentsChildList(a),this._parent[a]=f,this._children[f][a]=!0,this}_removeFromParentsChildList(a){delete this._children[this._parent[a]][a]}parent(a){if(this._isCompound){var f=this._parent[a];if(f!==S9)return f}}children(a){if(xf(a)&&(a=S9),this._isCompound){var f=this._children[a];if(f)return k2(f)}else{if(a===S9)return this.nodes();if(this.hasNode(a))return[]}}predecessors(a){var f=this._preds[a];if(f)return k2(f)}successors(a){var f=this._sucs[a];if(f)return k2(f)}neighbors(a){var f=this.predecessors(a);if(f)return yqe(f,this.successors(a))}isLeaf(a){var f;return this.isDirected()?f=this.successors(a):f=this.neighbors(a),f.length===0}filterNodes(a){var f=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});f.setGraph(this.graph());var g=this;pr(this._nodes,function(b,E){a(E)&&f.setNode(E,b)}),pr(this._edgeObjs,function(b){f.hasNode(b.v)&&f.hasNode(b.w)&&f.setEdge(b,g.edge(b))});var w={};function v(b){var E=g.parent(b);return E===void 0||f.hasNode(E)?(w[b]=E,E):E in w?w[E]:v(E)}return this._isCompound&&pr(f.nodes(),function(b){f.setParent(b,v(b))}),f}setDefaultEdgeLabel(a){return VL(a)||(a=XL(a)),this._defaultEdgeLabelFn=a,this}edgeCount(){return this._edgeCount}edges(){return Px(this._edgeObjs)}setPath(a,f){var g=this,w=arguments;return $F(a,function(v,b){return w.length>1?g.setEdge(v,b,f):g.setEdge(v,b),b}),this}setEdge(){var a,f,g,w,v=!1,b=arguments[0];typeof b=="object"&&b!==null&&"v"in b?(a=b.v,f=b.w,g=b.name,arguments.length===2&&(w=arguments[1],v=!0)):(a=b,f=arguments[1],g=arguments[3],arguments.length>2&&(w=arguments[2],v=!0)),a=""+a,f=""+f,xf(g)||(g=""+g);var E=qF(this._isDirected,a,f,g);if(oo(this._edgeLabels,E))return v&&(this._edgeLabels[E]=w),this;if(!xf(g)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(a),this.setNode(f),this._edgeLabels[E]=v?w:this._defaultEdgeLabelFn(a,f,g);var _=Cqe(this._isDirected,a,f,g);return a=_.v,f=_.w,Object.freeze(_),this._edgeObjs[E]=_,ljt(this._preds[f],a),ljt(this._sucs[a],f),this._in[f][E]=_,this._out[a][E]=_,this._edgeCount++,this}edge(a,f,g){var w=arguments.length===1?fpt(this._isDirected,arguments[0]):qF(this._isDirected,a,f,g);return this._edgeLabels[w]}hasEdge(a,f,g){var w=arguments.length===1?fpt(this._isDirected,arguments[0]):qF(this._isDirected,a,f,g);return oo(this._edgeLabels,w)}removeEdge(a,f,g){var w=arguments.length===1?fpt(this._isDirected,arguments[0]):qF(this._isDirected,a,f,g),v=this._edgeObjs[w];return v&&(a=v.v,f=v.w,delete this._edgeLabels[w],delete this._edgeObjs[w],hjt(this._preds[f],a),hjt(this._sucs[a],f),delete this._in[f][w],delete this._out[a][w],this._edgeCount--),this}inEdges(a,f){var g=this._in[a];if(g){var w=Px(g);return f?Ox(w,function(v){return v.v===f}):w}}outEdges(a,f){var g=this._out[a];if(g){var w=Px(g);return f?Ox(w,function(v){return v.w===f}):w}}nodeEdges(a,f){var g=this.inEdges(a,f);if(g)return g.concat(this.outEdges(a,f))}}R1.prototype._nodeCount=0,R1.prototype._edgeCount=0;function ljt(i,a){i[a]?i[a]++:i[a]=1}function hjt(i,a){--i[a]||delete i[a]}function qF(i,a,f,g){var w=""+a,v=""+f;if(!i&&w>v){var b=w;w=v,v=b}return w+ujt+v+ujt+(xf(g)?Tqe:g)}function Cqe(i,a,f,g){var w=""+a,v=""+f;if(!i&&w>v){var b=w;w=v,v=b}var E={v:w,w:v};return g&&(E.name=g),E}function fpt(i,a){return qF(i,a.v,a.w,a.name)}class _qe{constructor(){var a={};a._next=a._prev=a,this._sentinel=a}dequeue(){var a=this._sentinel,f=a._prev;if(f!==a)return fjt(f),f}enqueue(a){var f=this._sentinel;a._prev&&a._next&&fjt(a),a._next=f._next,f._next._prev=a,f._next=a,a._prev=f}toString(){for(var a=[],f=this._sentinel,g=f._prev;g!==f;)a.push(JSON.stringify(g,Sqe)),g=g._prev;return"["+a.join(", ")+"]"}}function fjt(i){i._prev._next=i._next,i._next._prev=i._prev,delete i._next,delete i._prev}function Sqe(i,a){if(i!=="_next"&&i!=="_prev")return a}var Aqe=XL(1);function Lqe(i,a){if(i.nodeCount()<=1)return[];var f=Dqe(i,a||Aqe),g=Mqe(f.graph,f.buckets,f.zeroIdx);return hM(c1(g,function(w){return i.outEdges(w.v,w.w)}))}function Mqe(i,a,f){for(var g=[],w=a[a.length-1],v=a[0],b;i.nodeCount();){for(;b=v.dequeue();)dpt(i,a,f,b);for(;b=w.dequeue();)dpt(i,a,f,b);if(i.nodeCount()){for(var E=a.length-2;E>0;--E)if(b=a[E].dequeue(),b){g=g.concat(dpt(i,a,f,b,!0));break}}}return g}function dpt(i,a,f,g,w){var v=w?[]:void 0;return pr(i.inEdges(g.v),function(b){var E=i.edge(b),_=i.node(b.v);w&&v.push({v:b.v,w:b.w}),_.out-=E,gpt(a,f,_)}),pr(i.outEdges(g.v),function(b){var E=i.edge(b),_=b.w,S=i.node(_);S.in-=E,gpt(a,f,S)}),i.removeNode(g.v),v}function Dqe(i,a){var f=new R1,g=0,w=0;pr(i.nodes(),function(E){f.setNode(E,{v:E,in:0,out:0})}),pr(i.edges(),function(E){var _=f.edge(E.v,E.w)||0,S=a(E),I=_+S;f.setEdge(E.v,E.w,I),w=Math.max(w,f.node(E.v).out+=S),g=Math.max(g,f.node(E.w).in+=S)});var v=_9(w+g+3).map(function(){return new _qe}),b=g+1;return pr(f.nodes(),function(E){gpt(v,b,f.node(E))}),{graph:f,buckets:v,zeroIdx:b}}function gpt(i,a,f){f.out?f.in?i[f.out-f.in+a].enqueue(f):i[i.length-1].enqueue(f):i[0].enqueue(f)}function Iqe(i){var a=i.graph().acyclicer==="greedy"?Lqe(i,f(i)):Oqe(i);pr(a,function(g){var w=i.edge(g);i.removeEdge(g),w.forwardName=g.name,w.reversed=!0,i.setEdge(g.w,g.v,w,UY("rev"))});function f(g){return function(w){return g.edge(w).weight}}}function Oqe(i){var a=[],f={},g={};function w(v){oo(g,v)||(g[v]=!0,f[v]=!0,pr(i.outEdges(v),function(b){oo(f,b.w)?a.push(b):w(b.w)}),delete f[v])}return pr(i.nodes(),w),a}function Pqe(i){pr(i.edges(),function(a){var f=i.edge(a);if(f.reversed){i.removeEdge(a);var g=f.forwardName;delete f.reversed,delete f.forwardName,i.setEdge(a.w,a.v,f,g)}})}function dM(i,a,f,g){var w;do w=UY(g);while(i.hasNode(w));return f.dummy=a,i.setNode(w,f),w}function Nqe(i){var a=new R1().setGraph(i.graph());return pr(i.nodes(),function(f){a.setNode(f,i.node(f))}),pr(i.edges(),function(f){var g=a.edge(f.v,f.w)||{weight:0,minlen:1},w=i.edge(f);a.setEdge(f.v,f.w,{weight:g.weight+w.weight,minlen:Math.max(g.minlen,w.minlen)})}),a}function djt(i){var a=new R1({multigraph:i.isMultigraph()}).setGraph(i.graph());return pr(i.nodes(),function(f){i.children(f).length||a.setNode(f,i.node(f))}),pr(i.edges(),function(f){a.setEdge(f,i.edge(f))}),a}function gjt(i,a){var f=i.x,g=i.y,w=a.x-f,v=a.y-g,b=i.width/2,E=i.height/2;if(!w&&!v)throw new Error("Not possible to find intersection inside of the rectangle");var _,S;return Math.abs(v)*b>Math.abs(w)*E?(v<0&&(E=-E),_=E*w/v,S=E):(w<0&&(b=-b),_=b,S=b*v/w),{x:f+_,y:g+S}}function GY(i){var a=c1(_9(bjt(i)+1),function(){return[]});return pr(i.nodes(),function(f){var g=i.node(f),w=g.rank;xf(w)||(a[w][g.order]=f)}),a}function Fqe(i){var a=RF(c1(i.nodes(),function(f){return i.node(f).rank}));pr(i.nodes(),function(f){var g=i.node(f);oo(g,"rank")&&(g.rank-=a)})}function Bqe(i){var a=RF(c1(i.nodes(),function(v){return i.node(v).rank})),f=[];pr(i.nodes(),function(v){var b=i.node(v).rank-a;f[b]||(f[b]=[]),f[b].push(v)});var g=0,w=i.graph().nodeRankFactor;pr(f,function(v,b){xf(v)&&b%w!==0?--g:g&&pr(v,function(E){i.node(E).rank+=g})})}function pjt(i,a,f,g){var w={width:0,height:0};return arguments.length>=4&&(w.rank=f,w.order=g),dM(i,"border",w,a)}function bjt(i){return C9(c1(i.nodes(),function(a){var f=i.node(a).rank;if(!xf(f))return f}))}function Rqe(i,a){var f={lhs:[],rhs:[]};return pr(i,function(g){a(g)?f.lhs.push(g):f.rhs.push(g)}),f}function jqe(i,a){var f=sjt();try{return a()}finally{console.log(i+" time: "+(sjt()-f)+"ms")}}function $qe(i,a){return a()}function zqe(i){function a(f){var g=i.children(f),w=i.node(f);if(g.length&&pr(g,a),oo(w,"minRank")){w.borderLeft=[],w.borderRight=[];for(var v=w.minRank,b=w.maxRank+1;vb.lim&&(E=b,_=!0);var S=Ox(a.edges(),function(I){return _===Ajt(i,i.node(I.v),E)&&_!==Ajt(i,i.node(I.w),E)});return hpt(S,function(I){return HF(a,I)})}function Sjt(i,a,f,g){var w=f.v,v=f.w;i.removeEdge(w,v),i.setEdge(g.v,g.w,{}),vpt(i),mpt(i,a),nHe(i,a)}function nHe(i,a){var f=upt(i.nodes(),function(w){return!a.node(w).parent}),g=tHe(i,f);g=g.slice(1),pr(g,function(w){var v=i.node(w).parent,b=a.edge(w,v),E=!1;b||(b=a.edge(v,w),E=!0),a.node(w).rank=a.node(v).rank+(E?b.minlen:-b.minlen)})}function rHe(i,a,f){return i.hasEdge(a,f)}function Ajt(i,a,f){return f.low<=a.lim&&a.lim<=f.lim}function iHe(i){switch(i.graph().ranker){case"network-simplex":Ljt(i);break;case"tight-tree":aHe(i);break;case"longest-path":sHe(i);break;default:Ljt(i)}}var sHe=wpt;function aHe(i){wpt(i),yjt(i)}function Ljt(i){A9(i)}function oHe(i){var a=dM(i,"root",{},"_root"),f=cHe(i),g=C9(Px(f))-1,w=2*g+1;i.graph().nestingRoot=a,pr(i.edges(),function(b){i.edge(b).minlen*=w});var v=uHe(i)+1;pr(i.children(),function(b){Mjt(i,a,w,v,g,f,b)}),i.graph().nodeRankFactor=w}function Mjt(i,a,f,g,w,v,b){var E=i.children(b);if(!E.length){b!==a&&i.setEdge(a,b,{weight:0,minlen:f});return}var _=pjt(i,"_bt"),S=pjt(i,"_bb"),I=i.node(b);i.setParent(_,b),I.borderTop=_,i.setParent(S,b),I.borderBottom=S,pr(E,function(B){Mjt(i,a,f,g,w,v,B);var F=i.node(B),R=F.borderTop?F.borderTop:B,q=F.borderBottom?F.borderBottom:B,X=F.borderTop?g:2*g,rt=R!==q?1:w-v[b]+1;i.setEdge(_,R,{weight:X,minlen:rt,nestingEdge:!0}),i.setEdge(q,S,{weight:X,minlen:rt,nestingEdge:!0})}),i.parent(b)||i.setEdge(a,_,{weight:0,minlen:w+v[b]})}function cHe(i){var a={};function f(g,w){var v=i.children(g);v&&v.length&&pr(v,function(b){f(b,w+1)}),a[g]=w}return pr(i.children(),function(g){f(g,1)}),a}function uHe(i){return $F(i.edges(),function(a,f){return a+i.edge(f).weight},0)}function lHe(i){var a=i.graph();i.removeNode(a.nestingRoot),delete a.nestingRoot,pr(i.edges(),function(f){var g=i.edge(f);g.nestingEdge&&i.removeEdge(f)})}function hHe(i,a,f){var g={},w;pr(f,function(v){for(var b=i.parent(v),E,_;b;){if(E=i.parent(b),E?(_=g[E],g[E]=b):(_=w,w=b),_&&_!==b){a.setEdge(_,b);return}b=E}})}function fHe(i,a,f){var g=dHe(i),w=new R1({compound:!0}).setGraph({root:g}).setDefaultNodeLabel(function(v){return i.node(v)});return pr(i.nodes(),function(v){var b=i.node(v),E=i.parent(v);(b.rank===a||b.minRank<=a&&a<=b.maxRank)&&(w.setNode(v),w.setParent(v,E||g),pr(i[f](v),function(_){var S=_.v===v?_.w:_.v,I=w.edge(S,v),B=xf(I)?0:I.weight;w.setEdge(S,v,{weight:i.edge(_).weight+B})}),oo(b,"minRank")&&w.setNode(v,{borderLeft:b.borderLeft[a],borderRight:b.borderRight[a]}))}),w}function dHe(i){for(var a;i.hasNode(a=UY("_root")););return a}function gHe(i,a){for(var f=0,g=1;g0;)I%2&&(B+=E[I+1]),I=I-1>>1,E[I]+=S.weight;_+=S.weight*B})),_}function bHe(i){var a={},f=Ox(i.nodes(),function(E){return!i.children(E).length}),g=C9(c1(f,function(E){return i.node(E).rank})),w=c1(_9(g+1),function(){return[]});function v(E){if(!oo(a,E)){a[E]=!0;var _=i.node(E);w[_.rank].push(E),pr(i.successors(E),v)}}var b=zF(f,function(E){return i.node(E).rank});return pr(b,v),w}function wHe(i,a){return c1(a,function(f){var g=i.inEdges(f);if(g.length){var w=$F(g,function(v,b){var E=i.edge(b),_=i.node(b.v);return{sum:v.sum+E.weight*_.order,weight:v.weight+E.weight}},{sum:0,weight:0});return{v:f,barycenter:w.sum/w.weight,weight:w.weight}}else return{v:f}})}function mHe(i,a){var f={};pr(i,function(w,v){var b=f[w.v]={indegree:0,in:[],out:[],vs:[w.v],i:v};xf(w.barycenter)||(b.barycenter=w.barycenter,b.weight=w.weight)}),pr(a.edges(),function(w){var v=f[w.v],b=f[w.w];!xf(v)&&!xf(b)&&(b.indegree++,v.out.push(f[w.w]))});var g=Ox(f,function(w){return!w.indegree});return vHe(g)}function vHe(i){var a=[];function f(v){return function(b){b.merged||(xf(b.barycenter)||xf(v.barycenter)||b.barycenter>=v.barycenter)&&yHe(v,b)}}function g(v){return function(b){b.in.push(v),--b.indegree===0&&i.push(b)}}for(;i.length;){var w=i.pop();a.push(w),pr(w.in.reverse(),f(w)),pr(w.out,g(w))}return c1(Ox(a,function(v){return!v.merged}),function(v){return jF(v,["vs","i","barycenter","weight"])})}function yHe(i,a){var f=0,g=0;i.weight&&(f+=i.barycenter*i.weight,g+=i.weight),a.weight&&(f+=a.barycenter*a.weight,g+=a.weight),i.vs=a.vs.concat(i.vs),i.barycenter=f/g,i.weight=g,i.i=Math.min(a.i,i.i),a.merged=!0}function xHe(i,a){var f=Rqe(i,function(I){return oo(I,"barycenter")}),g=f.lhs,w=zF(f.rhs,function(I){return-I.i}),v=[],b=0,E=0,_=0;g.sort(kHe(!!a)),_=Djt(v,w,_),pr(g,function(I){_+=I.vs.length,v.push(I.vs),b+=I.barycenter*I.weight,E+=I.weight,_=Djt(v,w,_)});var S={vs:hM(v)};return E&&(S.barycenter=b/E,S.weight=E),S}function Djt(i,a,f){for(var g;a.length&&(g=HY(a)).i<=f;)a.pop(),i.push(g.vs),f++;return f}function kHe(i){return function(a,f){return a.barycenterf.barycenter?1:i?f.i-a.i:a.i-f.i}}function Ijt(i,a,f,g){var w=i.children(a),v=i.node(a),b=v?v.borderLeft:void 0,E=v?v.borderRight:void 0,_={};b&&(w=Ox(w,function(q){return q!==b&&q!==E}));var S=wHe(i,w);pr(S,function(q){if(i.children(q.v).length){var X=Ijt(i,q.v,f,g);_[q.v]=X,oo(X,"barycenter")&&THe(q,X)}});var I=mHe(S,f);EHe(I,_);var B=xHe(I,g);if(b&&(B.vs=hM([b,B.vs,E]),i.predecessors(b).length)){var F=i.node(i.predecessors(b)[0]),R=i.node(i.predecessors(E)[0]);oo(B,"barycenter")||(B.barycenter=0,B.weight=0),B.barycenter=(B.barycenter*B.weight+F.order+R.order)/(B.weight+2),B.weight+=2}return B}function EHe(i,a){pr(i,function(f){f.vs=hM(f.vs.map(function(g){return a[g]?a[g].vs:g}))})}function THe(i,a){xf(i.barycenter)?(i.barycenter=a.barycenter,i.weight=a.weight):(i.barycenter=(i.barycenter*i.weight+a.barycenter*a.weight)/(i.weight+a.weight),i.weight+=a.weight)}function CHe(i){var a=bjt(i),f=Ojt(i,_9(1,a+1),"inEdges"),g=Ojt(i,_9(a-1,-1,-1),"outEdges"),w=bHe(i);Pjt(i,w);for(var v=Number.POSITIVE_INFINITY,b,E=0,_=0;_<4;++E,++_){_He(E%2?f:g,E%4>=2),w=GY(i);var S=gHe(i,w);Sb||E>a[_].lim));for(S=_,_=g;(_=i.parent(_))!==S;)v.push(_);return{path:w.concat(v.reverse()),lca:S}}function LHe(i){var a={},f=0;function g(w){var v=f;pr(i.children(w),g),a[w]={low:v,lim:f++}}return pr(i.children(),g),a}function MHe(i,a){var f={};function g(w,v){var b=0,E=0,_=w.length,S=HY(v);return pr(v,function(I,B){var F=IHe(i,I),R=F?i.node(F).order:_;(F||I===S)&&(pr(v.slice(E,B+1),function(q){pr(i.predecessors(q),function(X){var rt=i.node(X),at=rt.order;(atS)&&Njt(f,F,I)})})}function w(v,b){var E=-1,_,S=0;return pr(b,function(I,B){if(i.node(I).dummy==="border"){var F=i.predecessors(I);F.length&&(_=i.node(F[0]).order,g(b,S,B,E,_),S=B,E=_)}g(b,S,b.length,_,v.length)}),b}return $F(a,w),f}function IHe(i,a){if(i.node(a).dummy)return upt(i.predecessors(a),function(f){return i.node(f).dummy})}function Njt(i,a,f){if(a>f){var g=a;a=f,f=g}var w=i[a];w||(i[a]=w={}),w[f]=!0}function OHe(i,a,f){if(a>f){var g=a;a=f,f=g}return oo(i[a],f)}function PHe(i,a,f,g){var w={},v={},b={};return pr(a,function(E){pr(E,function(_,S){w[_]=_,v[_]=_,b[_]=S})}),pr(a,function(E){var _=-1;pr(E,function(S){var I=g(S);if(I.length){I=zF(I,function(X){return b[X]});for(var B=(I.length-1)/2,F=Math.floor(B),R=Math.ceil(B);F<=R;++F){var q=I[F];v[S]===S&&_0}function o4(i,a,f){var g=i.x,w=i.y,v=[],b=Number.POSITIVE_INFINITY,E=Number.POSITIVE_INFINITY;a.forEach(function(q){b=Math.min(b,q.x),E=Math.min(E,q.y)});for(var _=g-i.width/2-b,S=w-i.height/2-E,I=0;I1&&v.sort(function(q,X){var rt=q.x-f.x,at=q.y-f.y,ut=Math.sqrt(rt*rt+at*at),pt=X.x-f.x,yt=X.y-f.y,mt=Math.sqrt(pt*pt+yt*yt);return utMath.abs(w)*E?(v<0&&(E=-E),_=v===0?0:E*w/v,S=E):(w<0&&(b=-b),_=b,S=w===0?0:b*v/w),{x:f+_,y:g+S}}var Dpt={rect:BVe,ellipse:RVe,circle:jVe,diamond:$Ve};function FVe(i){Dpt=i}function BVe(i,a,f){var g=i.insert("rect",":first-child").attr("rx",f.rx).attr("ry",f.ry).attr("x",-a.width/2).attr("y",-a.height/2).attr("width",a.width).attr("height",a.height);return f.intersect=function(w){return Mpt(f,w)},g}function RVe(i,a,f){var g=a.width/2,w=a.height/2,v=i.insert("ellipse",":first-child").attr("x",-a.width/2).attr("y",-a.height/2).attr("rx",g).attr("ry",w);return f.intersect=function(b){return zjt(f,g,w,b)},v}function jVe(i,a,f){var g=Math.max(a.width,a.height)/2,w=i.insert("circle",":first-child").attr("x",-a.width/2).attr("y",-a.height/2).attr("r",g);return f.intersect=function(v){return PVe(f,g,v)},w}function $Ve(i,a,f){var g=a.width*Math.SQRT2/2,w=a.height*Math.SQRT2/2,v=[{x:0,y:-w},{x:-g,y:0},{x:0,y:w},{x:g,y:0}],b=i.insert("polygon",":first-child").attr("points",v.map(function(E){return E.x+","+E.y}).join(" "));return f.intersect=function(E){return o4(f,v,E)},b}function zVe(){var i=function(a,f){VVe(f);var g=VF(a,"output"),w=VF(g,"clusters"),v=VF(g,"edgePaths"),b=Spt(VF(g,"edgeLabels"),f),E=Lpt(VF(g,"nodes"),f,Dpt);gM(f),OVe(E,f),IVe(b,f),Apt(v,f,Ept);var _=_pt(w,f);DVe(_,f),UVe(f)};return i.createNodes=function(a){return arguments.length?(MVe(a),i):Lpt},i.createClusters=function(a){return arguments.length?(kVe(a),i):_pt},i.createEdgeLabels=function(a){return arguments.length?(EVe(a),i):Spt},i.createEdgePaths=function(a){return arguments.length?(TVe(a),i):Apt},i.shapes=function(a){return arguments.length?(FVe(a),i):Dpt},i.arrows=function(a){return arguments.length?(pVe(a),i):Ept},i}var qVe={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},HVe={arrowhead:"normal",curve:Vg};function VVe(i){i.nodes().forEach(function(a){var f=i.node(a);!oo(f,"label")&&!i.children(a).length&&(f.label=a),oo(f,"paddingX")&&fM(f,{paddingLeft:f.paddingX,paddingRight:f.paddingX}),oo(f,"paddingY")&&fM(f,{paddingTop:f.paddingY,paddingBottom:f.paddingY}),oo(f,"padding")&&fM(f,{paddingLeft:f.padding,paddingRight:f.padding,paddingTop:f.padding,paddingBottom:f.padding}),fM(f,qVe),pr(["paddingLeft","paddingRight","paddingTop","paddingBottom"],function(g){f[g]=Number(f[g])}),oo(f,"width")&&(f._prevWidth=f.width),oo(f,"height")&&(f._prevHeight=f.height)}),i.edges().forEach(function(a){var f=i.edge(a);oo(f,"label")||(f.label=""),fM(f,HVe)})}function UVe(i){pr(i.nodes(),function(a){var f=i.node(a);oo(f,"_prevWidth")?f.width=f._prevWidth:delete f.width,oo(f,"_prevHeight")?f.height=f._prevHeight:delete f.height,delete f._prevWidth,delete f._prevHeight})}function VF(i,a){var f=i.select("g."+a);return f.empty()&&(f=i.append("g").attr("class",a)),f}function Hjt(i,a,f){const g=a.width,w=a.height,v=(g+w)*.9,b=[{x:v/2,y:0},{x:v,y:-v/2},{x:v/2,y:-v},{x:0,y:-v/2}],E=Nx(i,v,v,b);return f.intersect=function(_){return o4(f,b,_)},E}function Vjt(i,a,f){const w=a.height,v=w/4,b=a.width+2*v,E=[{x:v,y:0},{x:b-v,y:0},{x:b,y:-w/2},{x:b-v,y:-w},{x:v,y:-w},{x:0,y:-w/2}],_=Nx(i,b,w,E);return f.intersect=function(S){return o4(f,E,S)},_}function Ujt(i,a,f){const g=a.width,w=a.height,v=[{x:-w/2,y:0},{x:g,y:0},{x:g,y:-w},{x:-w/2,y:-w},{x:0,y:-w/2}],b=Nx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function Gjt(i,a,f){const g=a.width,w=a.height,v=[{x:-2*w/6,y:0},{x:g-w/6,y:0},{x:g+2*w/6,y:-w},{x:w/6,y:-w}],b=Nx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function Kjt(i,a,f){const g=a.width,w=a.height,v=[{x:2*w/6,y:0},{x:g+w/6,y:0},{x:g-2*w/6,y:-w},{x:-w/6,y:-w}],b=Nx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function Wjt(i,a,f){const g=a.width,w=a.height,v=[{x:-2*w/6,y:0},{x:g+2*w/6,y:0},{x:g-w/6,y:-w},{x:w/6,y:-w}],b=Nx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function Yjt(i,a,f){const g=a.width,w=a.height,v=[{x:w/6,y:0},{x:g-w/6,y:0},{x:g+2*w/6,y:-w},{x:-2*w/6,y:-w}],b=Nx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function Xjt(i,a,f){const g=a.width,w=a.height,v=[{x:0,y:0},{x:g+w/2,y:0},{x:g,y:-w/2},{x:g+w/2,y:-w},{x:0,y:-w}],b=Nx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function Qjt(i,a,f){const g=a.height,w=a.width+g/4,v=i.insert("rect",":first-child").attr("rx",g/2).attr("ry",g/2).attr("x",-w/2).attr("y",-g/2).attr("width",w).attr("height",g);return f.intersect=function(b){return Mpt(f,b)},v}function Jjt(i,a,f){const g=a.width,w=a.height,v=[{x:0,y:0},{x:g,y:0},{x:g,y:-w},{x:0,y:-w},{x:0,y:0},{x:-8,y:0},{x:g+8,y:0},{x:g+8,y:-w},{x:-8,y:-w},{x:-8,y:0}],b=Nx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function Zjt(i,a,f){const g=a.width,w=g/2,v=w/(2.5+g/50),b=a.height+v,E="M 0,"+v+" a "+w+","+v+" 0,0,0 "+g+" 0 a "+w+","+v+" 0,0,0 "+-g+" 0 l 0,"+b+" a "+w+","+v+" 0,0,0 "+g+" 0 l 0,"+-b,_=i.attr("label-offset-y",v).insert("path",":first-child").attr("d",E).attr("transform","translate("+-g/2+","+-(b/2+v)+")");return f.intersect=function(S){const I=Mpt(f,S),B=I.x-f.x;if(w!=0&&(Math.abs(B)f.height/2-v)){let F=v*v*(1-B*B/(w*w));F!=0&&(F=Math.sqrt(F)),F=v-F,S.y-f.y>0&&(F=-F),I.y+=F}return I},_}function GVe(i){i.shapes().question=Hjt,i.shapes().hexagon=Vjt,i.shapes().stadium=Qjt,i.shapes().subroutine=Jjt,i.shapes().cylinder=Zjt,i.shapes().rect_left_inv_arrow=Ujt,i.shapes().lean_right=Gjt,i.shapes().lean_left=Kjt,i.shapes().trapezoid=Wjt,i.shapes().inv_trapezoid=Yjt,i.shapes().rect_right_inv_arrow=Xjt}function KVe(i){i({question:Hjt}),i({hexagon:Vjt}),i({stadium:Qjt}),i({subroutine:Jjt}),i({cylinder:Zjt}),i({rect_left_inv_arrow:Ujt}),i({lean_right:Gjt}),i({lean_left:Kjt}),i({trapezoid:Wjt}),i({inv_trapezoid:Yjt}),i({rect_right_inv_arrow:Xjt})}function Nx(i,a,f,g){return i.insert("polygon",":first-child").attr("points",g.map(function(w){return w.x+","+w.y}).join(" ")).attr("transform","translate("+-a/2+","+f/2+")")}const WVe={addToRender:GVe,addToRenderV2:KVe},t$t={},YVe=function(i){const a=Object.keys(i);for(const f of a)t$t[f]=i[f]},e$t=function(i,a,f,g,w,v){const b=g?g.select(`[id="${f}"]`):xr(`[id="${f}"]`),E=w||document;Object.keys(i).forEach(function(S){const I=i[S];let B="default";I.classes.length>0&&(B=I.classes.join(" "));const F=Uw(I.styles);let R=I.text!==void 0?I.text:I.id,q;if(B1(Re().flowchart.htmlLabels)){const at={label:R.replace(/fa[blrs]?:fa-[\w-]+/g,ut=>``)};q=Tpt(b,at).node(),q.parentNode.removeChild(q)}else{const at=E.createElementNS("http://www.w3.org/2000/svg","text");at.setAttribute("style",F.labelStyle.replace("color:","fill:"));const ut=R.split(ei.lineBreakRegex);for(const pt of ut){const yt=E.createElementNS("http://www.w3.org/2000/svg","tspan");yt.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),yt.setAttribute("dy","1em"),yt.setAttribute("x","1"),yt.textContent=pt,at.appendChild(yt)}q=at}let X=0,rt="";switch(I.type){case"round":X=5,rt="rect";break;case"square":rt="rect";break;case"diamond":rt="question";break;case"hexagon":rt="hexagon";break;case"odd":rt="rect_left_inv_arrow";break;case"lean_right":rt="lean_right";break;case"lean_left":rt="lean_left";break;case"trapezoid":rt="trapezoid";break;case"inv_trapezoid":rt="inv_trapezoid";break;case"odd_right":rt="rect_left_inv_arrow";break;case"circle":rt="circle";break;case"ellipse":rt="ellipse";break;case"stadium":rt="stadium";break;case"subroutine":rt="subroutine";break;case"cylinder":rt="cylinder";break;case"group":rt="rect";break;default:rt="rect"}Wt.warn("Adding node",I.id,I.domId),a.setNode(v.db.lookUpDomId(I.id),{labelType:"svg",labelStyle:F.labelStyle,shape:rt,label:q,rx:X,ry:X,class:B,style:F.style,id:v.db.lookUpDomId(I.id)})})},n$t=function(i,a,f){let g=0,w,v;if(i.defaultStyle!==void 0){const b=Uw(i.defaultStyle);w=b.style,v=b.labelStyle}i.forEach(function(b){g++;const E="L-"+b.start+"-"+b.end,_="LS-"+b.start,S="LE-"+b.end,I={};b.type==="arrow_open"?I.arrowhead="none":I.arrowhead="normal";let B="",F="";if(b.style!==void 0){const R=Uw(b.style);B=R.style,F=R.labelStyle}else switch(b.stroke){case"normal":B="fill:none",w!==void 0&&(B=w),v!==void 0&&(F=v);break;case"dotted":B="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":B=" stroke-width: 3.5px;fill:none";break}I.style=B,I.labelStyle=F,b.interpolate!==void 0?I.curve=Vw(b.interpolate,Vg):i.defaultInterpolate!==void 0?I.curve=Vw(i.defaultInterpolate,Vg):I.curve=Vw(t$t.curve,Vg),b.text===void 0?b.style!==void 0&&(I.arrowheadStyle="fill: #333"):(I.arrowheadStyle="fill: #333",I.labelpos="c",B1(Re().flowchart.htmlLabels)?(I.labelType="html",I.label=`${b.text.replace(/fa[blrs]?:fa-[\w-]+/g,R=>``)}`):(I.labelType="text",I.label=b.text.replace(ei.lineBreakRegex,` +`),b.style===void 0&&(I.style=I.style||"stroke: #333; stroke-width: 1.5px;fill:none"),I.labelStyle=I.labelStyle.replace("color:","fill:"))),I.id=E,I.class=_+" "+S,I.minlen=b.length||1,a.setEdge(f.db.lookUpDomId(b.start),f.db.lookUpDomId(b.end),I,g)})},XVe={setConf:YVe,addVertices:e$t,addEdges:n$t,getClasses:function(i,a){return Wt.info("Extracting classes"),a.db.getClasses()},draw:function(i,a,f,g){Wt.info("Drawing flowchart");const{securityLevel:w,flowchart:v}=Re();let b;w==="sandbox"&&(b=xr("#i"+a));const E=xr(w==="sandbox"?b.nodes()[0].contentDocument.body:"body"),_=w==="sandbox"?b.nodes()[0].contentDocument:document;let S=g.db.getDirection();S===void 0&&(S="TD");const I=v.nodeSpacing||50,B=v.rankSpacing||50,F=new R1({multigraph:!0,compound:!0}).setGraph({rankdir:S,nodesep:I,ranksep:B,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});let R;const q=g.db.getSubGraphs();for(let gt=q.length-1;gt>=0;gt--)R=q[gt],g.db.addVertex(R.id,R.title,"group",void 0,R.classes);const X=g.db.getVertices();Wt.warn("Get vertices",X);const rt=g.db.getEdges();let at=0;for(at=q.length-1;at>=0;at--){R=q[at],SOt("cluster").append("text");for(let gt=0;gt{a.forEach(w=>{tUe[w](i,f,g)})},tUe={extension:(i,a,f)=>{Wt.trace("Making markers for ",f),i.append("defs").append("marker").attr("id",f+"_"+a+"-extensionStart").attr("class","marker extension "+a).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"),i.append("defs").append("marker").attr("id",f+"_"+a+"-extensionEnd").attr("class","marker extension "+a).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")},composition:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-compositionStart").attr("class","marker composition "+a).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"),i.append("defs").append("marker").attr("id",f+"_"+a+"-compositionEnd").attr("class","marker composition "+a).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:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-aggregationStart").attr("class","marker aggregation "+a).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"),i.append("defs").append("marker").attr("id",f+"_"+a+"-aggregationEnd").attr("class","marker aggregation "+a).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")},dependency:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-dependencyStart").attr("class","marker dependency "+a).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"),i.append("defs").append("marker").attr("id",f+"_"+a+"-dependencyEnd").attr("class","marker dependency "+a).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")},lollipop:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-lollipopStart").attr("class","marker lollipop "+a).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),i.append("defs").append("marker").attr("id",f+"_"+a+"-lollipopEnd").attr("class","marker lollipop "+a).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)},point:(i,a,f)=>{i.append("marker").attr("id",f+"_"+a+"-pointEnd").attr("class","marker "+a).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"),i.append("marker").attr("id",f+"_"+a+"-pointStart").attr("class","marker "+a).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")},circle:(i,a,f)=>{i.append("marker").attr("id",f+"_"+a+"-circleEnd").attr("class","marker "+a).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"),i.append("marker").attr("id",f+"_"+a+"-circleStart").attr("class","marker "+a).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")},cross:(i,a,f)=>{i.append("marker").attr("id",f+"_"+a+"-crossEnd").attr("class","marker cross "+a).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"),i.append("marker").attr("id",f+"_"+a+"-crossStart").attr("class","marker cross "+a).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")},barb:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-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")}},r$t=ZVe;function eUe(i,a){a&&i.attr("style",a)}function nUe(i){const a=xr(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),f=a.append("xhtml:div"),g=i.label,w=i.isNode?"nodeLabel":"edgeLabel";return f.html('"+g+""),eUe(f,i.labelStyle),f.style("display","inline-block"),f.style("white-space","nowrap"),f.attr("xmlns","http://www.w3.org/1999/xhtml"),a.node()}const ib=(i,a,f,g)=>{let w=i||"";if(typeof w=="object"&&(w=w[0]),B1(Re().flowchart.htmlLabels)){w=w.replace(/\\n|\n/g,"
"),Wt.info("vertexText"+w);const v={isNode:g,label:CF(w).replace(/fa[blrs]?:fa-[\w-]+/g,E=>``),labelStyle:a.replace("fill:","color:")};return nUe(v)}else{const v=document.createElementNS("http://www.w3.org/2000/svg","text");v.setAttribute("style",a.replace("color:","fill:"));let b=[];typeof w=="string"?b=w.split(/\\n|\n|/gi):Array.isArray(w)?b=w:b=[];for(const E of b){const _=document.createElementNS("http://www.w3.org/2000/svg","tspan");_.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),_.setAttribute("dy","1em"),_.setAttribute("x","0"),f?_.setAttribute("class","title-row"):_.setAttribute("class","row"),_.textContent=E.trim(),v.appendChild(_)}return v}},rUe={};function iUe(i,a){const f=a||rUe,g=typeof f.includeImageAlt=="boolean"?f.includeImageAlt:!0,w=typeof f.includeHtml=="boolean"?f.includeHtml:!0;return i$t(i,g,w)}function i$t(i,a,f){if(sUe(i)){if("value"in i)return i.type==="html"&&!f?"":i.value;if(a&&"alt"in i&&i.alt)return i.alt;if("children"in i)return s$t(i.children,a,f)}return Array.isArray(i)?s$t(i,a,f):""}function s$t(i,a,f){const g=[];let w=-1;for(;++ww?0:w+a:a=a>w?w:a,f=f>0?f:0,g.length<1e4)b=Array.from(g),b.unshift(a,f),i.splice(...b);else for(f&&i.splice(a,f);v0?(c4(i,i.length,0,a),i):a}const a$t={}.hasOwnProperty;function aUe(i){const a={};let f=-1;for(;++fb))return;const ht=a.events.length;let bt=ht,Z,ft;for(;bt--;)if(a.events[bt][0]==="exit"&&a.events[bt][1].type==="chunkFlow"){if(Z){ft=a.events[bt][1].end;break}Z=!0}for(at(g),gt=ht;gtpt;){const mt=f[yt];a.containerState=mt[1],mt[0].exit.call(a,i)}f.length=pt}function ut(){w.write([null]),v=void 0,w=void 0,a.containerState._closeFlow=void 0}}function vUe(i,a,f){return Cl(i,i.attempt(this.parser.constructs.document,a,f),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function c$t(i){if(i===null||sb(i)||gUe(i))return 1;if(dUe(i))return 2}function Ppt(i,a,f){const g=[];let w=-1;for(;++w1&&i[f][1].end.offset-i[f][1].start.offset>1?2:1;const B=Object.assign({},i[g][1].end),F=Object.assign({},i[f][1].start);u$t(B,-_),u$t(F,_),b={type:_>1?"strongSequence":"emphasisSequence",start:B,end:Object.assign({},i[g][1].end)},E={type:_>1?"strongSequence":"emphasisSequence",start:Object.assign({},i[f][1].start),end:F},v={type:_>1?"strongText":"emphasisText",start:Object.assign({},i[g][1].end),end:Object.assign({},i[f][1].start)},w={type:_>1?"strong":"emphasis",start:Object.assign({},b.start),end:Object.assign({},E.end)},i[g][1].end=Object.assign({},b.start),i[f][1].start=Object.assign({},E.end),S=[],i[g][1].end.offset-i[g][1].start.offset&&(S=Yw(S,[["enter",i[g][1],a],["exit",i[g][1],a]])),S=Yw(S,[["enter",w,a],["enter",b,a],["exit",b,a],["enter",v,a]]),S=Yw(S,Ppt(a.parser.constructs.insideSpan.null,i.slice(g+1,f),a)),S=Yw(S,[["exit",v,a],["enter",E,a],["exit",E,a],["exit",w,a]]),i[f][1].end.offset-i[f][1].start.offset?(I=2,S=Yw(S,[["enter",i[f][1],a],["exit",i[f][1],a]])):I=0,c4(i,g-1,f-g+3,S),f=g+S.length-I-2;break}}for(f=-1;++f0&&fu(gt)?Cl(i,ut,"linePrefix",v+1)(gt):ut(gt)}function ut(gt){return gt===null||Ba(gt)?i.check(g$t,X,yt)(gt):(i.enter("codeFlowValue"),pt(gt))}function pt(gt){return gt===null||Ba(gt)?(i.exit("codeFlowValue"),ut(gt)):(i.consume(gt),pt)}function yt(gt){return i.exit("codeFenced"),a(gt)}function mt(gt,ht,bt){let Z=0;return ft;function ft(Dt){return gt.enter("lineEnding"),gt.consume(Dt),gt.exit("lineEnding"),Y}function Y(Dt){return gt.enter("codeFencedFence"),fu(Dt)?Cl(gt,Et,"linePrefix",g.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(Dt):Et(Dt)}function Et(Dt){return Dt===E?(gt.enter("codeFencedFenceSequence"),V(Dt)):bt(Dt)}function V(Dt){return Dt===E?(Z++,gt.consume(Dt),V):Z>=b?(gt.exit("codeFencedFenceSequence"),fu(Dt)?Cl(gt,Nt,"whitespace")(Dt):Nt(Dt)):bt(Dt)}function Nt(Dt){return Dt===null||Ba(Dt)?(gt.exit("codeFencedFence"),ht(Dt)):bt(Dt)}}}function DUe(i,a,f){const g=this;return w;function w(b){return b===null?f(b):(i.enter("lineEnding"),i.consume(b),i.exit("lineEnding"),v)}function v(b){return g.parser.lazy[g.now().line]?f(b):a(b)}}const Bpt={name:"codeIndented",tokenize:OUe},IUe={tokenize:PUe,partial:!0};function OUe(i,a,f){const g=this;return w;function w(S){return i.enter("codeIndented"),Cl(i,v,"linePrefix",4+1)(S)}function v(S){const I=g.events[g.events.length-1];return I&&I[1].type==="linePrefix"&&I[2].sliceSerialize(I[1],!0).length>=4?b(S):f(S)}function b(S){return S===null?_(S):Ba(S)?i.attempt(IUe,b,_)(S):(i.enter("codeFlowValue"),E(S))}function E(S){return S===null||Ba(S)?(i.exit("codeFlowValue"),b(S)):(i.consume(S),E)}function _(S){return i.exit("codeIndented"),a(S)}}function PUe(i,a,f){const g=this;return w;function w(b){return g.parser.lazy[g.now().line]?f(b):Ba(b)?(i.enter("lineEnding"),i.consume(b),i.exit("lineEnding"),w):Cl(i,v,"linePrefix",4+1)(b)}function v(b){const E=g.events[g.events.length-1];return E&&E[1].type==="linePrefix"&&E[2].sliceSerialize(E[1],!0).length>=4?a(b):Ba(b)?w(b):f(b)}}const NUe={name:"codeText",tokenize:RUe,resolve:FUe,previous:BUe};function FUe(i){let a=i.length-4,f=3,g,w;if((i[f][1].type==="lineEnding"||i[f][1].type==="space")&&(i[a][1].type==="lineEnding"||i[a][1].type==="space")){for(g=f;++g=4?a(b):i.interrupt(g.parser.constructs.flow,f,a)(b)}}function w$t(i,a,f,g,w,v,b,E,_){const S=_||Number.POSITIVE_INFINITY;let I=0;return B;function B(at){return at===60?(i.enter(g),i.enter(w),i.enter(v),i.consume(at),i.exit(v),F):at===null||at===32||at===41||Ipt(at)?f(at):(i.enter(g),i.enter(b),i.enter(E),i.enter("chunkString",{contentType:"string"}),X(at))}function F(at){return at===62?(i.enter(v),i.consume(at),i.exit(v),i.exit(w),i.exit(g),a):(i.enter(E),i.enter("chunkString",{contentType:"string"}),R(at))}function R(at){return at===62?(i.exit("chunkString"),i.exit(E),F(at)):at===null||at===60||Ba(at)?f(at):(i.consume(at),at===92?q:R)}function q(at){return at===60||at===62||at===92?(i.consume(at),R):R(at)}function X(at){return!I&&(at===null||at===41||sb(at))?(i.exit("chunkString"),i.exit(E),i.exit(b),i.exit(g),a(at)):I999||R===null||R===91||R===93&&!_||R===94&&!E&&"_hiddenFootnoteSupport"in b.parser.constructs?f(R):R===93?(i.exit(v),i.enter(w),i.consume(R),i.exit(w),i.exit(g),a):Ba(R)?(i.enter("lineEnding"),i.consume(R),i.exit("lineEnding"),I):(i.enter("chunkString",{contentType:"string"}),B(R))}function B(R){return R===null||R===91||R===93||Ba(R)||E++>999?(i.exit("chunkString"),I(R)):(i.consume(R),_||(_=!fu(R)),R===92?F:B)}function F(R){return R===91||R===92||R===93?(i.consume(R),E++,B):B(R)}}function v$t(i,a,f,g,w,v){let b;return E;function E(F){return F===34||F===39||F===40?(i.enter(g),i.enter(w),i.consume(F),i.exit(w),b=F===40?41:F,_):f(F)}function _(F){return F===b?(i.enter(w),i.consume(F),i.exit(w),i.exit(g),a):(i.enter(v),S(F))}function S(F){return F===b?(i.exit(v),_(b)):F===null?f(F):Ba(F)?(i.enter("lineEnding"),i.consume(F),i.exit("lineEnding"),Cl(i,S,"linePrefix")):(i.enter("chunkString",{contentType:"string"}),I(F))}function I(F){return F===b||F===null||Ba(F)?(i.exit("chunkString"),S(F)):(i.consume(F),F===92?B:I)}function B(F){return F===b||F===92?(i.consume(F),I):I(F)}}function UF(i,a){let f;return g;function g(w){return Ba(w)?(i.enter("lineEnding"),i.consume(w),i.exit("lineEnding"),f=!0,g):fu(w)?Cl(i,g,f?"linePrefix":"lineSuffix")(w):a(w)}}function pM(i){return i.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const UUe={name:"definition",tokenize:KUe},GUe={tokenize:WUe,partial:!0};function KUe(i,a,f){const g=this;let w;return v;function v(R){return i.enter("definition"),b(R)}function b(R){return m$t.call(g,i,E,f,"definitionLabel","definitionLabelMarker","definitionLabelString")(R)}function E(R){return w=pM(g.sliceSerialize(g.events[g.events.length-1][1]).slice(1,-1)),R===58?(i.enter("definitionMarker"),i.consume(R),i.exit("definitionMarker"),_):f(R)}function _(R){return sb(R)?UF(i,S)(R):S(R)}function S(R){return w$t(i,I,f,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(R)}function I(R){return i.attempt(GUe,B,B)(R)}function B(R){return fu(R)?Cl(i,F,"whitespace")(R):F(R)}function F(R){return R===null||Ba(R)?(i.exit("definition"),g.parser.defined.push(w),a(R)):f(R)}}function WUe(i,a,f){return g;function g(E){return sb(E)?UF(i,w)(E):f(E)}function w(E){return v$t(i,v,f,"definitionTitle","definitionTitleMarker","definitionTitleString")(E)}function v(E){return fu(E)?Cl(i,b,"whitespace")(E):b(E)}function b(E){return E===null||Ba(E)?a(E):f(E)}}const YUe={name:"hardBreakEscape",tokenize:XUe};function XUe(i,a,f){return g;function g(v){return i.enter("hardBreakEscape"),i.consume(v),w}function w(v){return Ba(v)?(i.exit("hardBreakEscape"),a(v)):f(v)}}const QUe={name:"headingAtx",tokenize:ZUe,resolve:JUe};function JUe(i,a){let f=i.length-2,g=3,w,v;return i[g][1].type==="whitespace"&&(g+=2),f-2>g&&i[f][1].type==="whitespace"&&(f-=2),i[f][1].type==="atxHeadingSequence"&&(g===f-1||f-4>g&&i[f-2][1].type==="whitespace")&&(f-=g+1===f?2:4),f>g&&(w={type:"atxHeadingText",start:i[g][1].start,end:i[f][1].end},v={type:"chunkText",start:i[g][1].start,end:i[f][1].end,contentType:"text"},c4(i,g,f-g+1,[["enter",w,a],["enter",v,a],["exit",v,a],["exit",w,a]])),i}function ZUe(i,a,f){let g=0;return w;function w(I){return i.enter("atxHeading"),v(I)}function v(I){return i.enter("atxHeadingSequence"),b(I)}function b(I){return I===35&&g++<6?(i.consume(I),b):I===null||sb(I)?(i.exit("atxHeadingSequence"),E(I)):f(I)}function E(I){return I===35?(i.enter("atxHeadingSequence"),_(I)):I===null||Ba(I)?(i.exit("atxHeading"),a(I)):fu(I)?Cl(i,E,"whitespace")(I):(i.enter("atxHeadingText"),S(I))}function _(I){return I===35?(i.consume(I),_):(i.exit("atxHeadingSequence"),E(I))}function S(I){return I===null||I===35||sb(I)?(i.exit("atxHeadingText"),E(I)):(i.consume(I),S)}}const tGe=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],y$t=["pre","script","style","textarea"],eGe={name:"htmlFlow",tokenize:sGe,resolveTo:iGe,concrete:!0},nGe={tokenize:oGe,partial:!0},rGe={tokenize:aGe,partial:!0};function iGe(i){let a=i.length;for(;a--&&!(i[a][0]==="enter"&&i[a][1].type==="htmlFlow"););return a>1&&i[a-2][1].type==="linePrefix"&&(i[a][1].start=i[a-2][1].start,i[a+1][1].start=i[a-2][1].start,i.splice(a-2,2)),i}function sGe(i,a,f){const g=this;let w,v,b,E,_;return S;function S(Ot){return I(Ot)}function I(Ot){return i.enter("htmlFlow"),i.enter("htmlFlowData"),i.consume(Ot),B}function B(Ot){return Ot===33?(i.consume(Ot),F):Ot===47?(i.consume(Ot),v=!0,X):Ot===63?(i.consume(Ot),w=3,g.interrupt?a:xt):u4(Ot)?(i.consume(Ot),b=String.fromCharCode(Ot),rt):f(Ot)}function F(Ot){return Ot===45?(i.consume(Ot),w=2,R):Ot===91?(i.consume(Ot),w=5,E=0,q):u4(Ot)?(i.consume(Ot),w=4,g.interrupt?a:xt):f(Ot)}function R(Ot){return Ot===45?(i.consume(Ot),g.interrupt?a:xt):f(Ot)}function q(Ot){const vn="CDATA[";return Ot===vn.charCodeAt(E++)?(i.consume(Ot),E===vn.length?g.interrupt?a:Et:q):f(Ot)}function X(Ot){return u4(Ot)?(i.consume(Ot),b=String.fromCharCode(Ot),rt):f(Ot)}function rt(Ot){if(Ot===null||Ot===47||Ot===62||sb(Ot)){const vn=Ot===47,Pe=b.toLowerCase();return!vn&&!v&&y$t.includes(Pe)?(w=1,g.interrupt?a(Ot):Et(Ot)):tGe.includes(b.toLowerCase())?(w=6,vn?(i.consume(Ot),at):g.interrupt?a(Ot):Et(Ot)):(w=7,g.interrupt&&!g.parser.lazy[g.now().line]?f(Ot):v?ut(Ot):pt(Ot))}return Ot===45||Jv(Ot)?(i.consume(Ot),b+=String.fromCharCode(Ot),rt):f(Ot)}function at(Ot){return Ot===62?(i.consume(Ot),g.interrupt?a:Et):f(Ot)}function ut(Ot){return fu(Ot)?(i.consume(Ot),ut):ft(Ot)}function pt(Ot){return Ot===47?(i.consume(Ot),ft):Ot===58||Ot===95||u4(Ot)?(i.consume(Ot),yt):fu(Ot)?(i.consume(Ot),pt):ft(Ot)}function yt(Ot){return Ot===45||Ot===46||Ot===58||Ot===95||Jv(Ot)?(i.consume(Ot),yt):mt(Ot)}function mt(Ot){return Ot===61?(i.consume(Ot),gt):fu(Ot)?(i.consume(Ot),mt):pt(Ot)}function gt(Ot){return Ot===null||Ot===60||Ot===61||Ot===62||Ot===96?f(Ot):Ot===34||Ot===39?(i.consume(Ot),_=Ot,ht):fu(Ot)?(i.consume(Ot),gt):bt(Ot)}function ht(Ot){return Ot===_?(i.consume(Ot),_=null,Z):Ot===null||Ba(Ot)?f(Ot):(i.consume(Ot),ht)}function bt(Ot){return Ot===null||Ot===34||Ot===39||Ot===47||Ot===60||Ot===61||Ot===62||Ot===96||sb(Ot)?mt(Ot):(i.consume(Ot),bt)}function Z(Ot){return Ot===47||Ot===62||fu(Ot)?pt(Ot):f(Ot)}function ft(Ot){return Ot===62?(i.consume(Ot),Y):f(Ot)}function Y(Ot){return Ot===null||Ba(Ot)?Et(Ot):fu(Ot)?(i.consume(Ot),Y):f(Ot)}function Et(Ot){return Ot===45&&w===2?(i.consume(Ot),jt):Ot===60&&w===1?(i.consume(Ot),Ct):Ot===62&&w===4?(i.consume(Ot),Gt):Ot===63&&w===3?(i.consume(Ot),xt):Ot===93&&w===5?(i.consume(Ot),_t):Ba(Ot)&&(w===6||w===7)?(i.exit("htmlFlowData"),i.check(nGe,Be,V)(Ot)):Ot===null||Ba(Ot)?(i.exit("htmlFlowData"),V(Ot)):(i.consume(Ot),Et)}function V(Ot){return i.check(rGe,Nt,Be)(Ot)}function Nt(Ot){return i.enter("lineEnding"),i.consume(Ot),i.exit("lineEnding"),Dt}function Dt(Ot){return Ot===null||Ba(Ot)?V(Ot):(i.enter("htmlFlowData"),Et(Ot))}function jt(Ot){return Ot===45?(i.consume(Ot),xt):Et(Ot)}function Ct(Ot){return Ot===47?(i.consume(Ot),b="",Ft):Et(Ot)}function Ft(Ot){if(Ot===62){const vn=b.toLowerCase();return y$t.includes(vn)?(i.consume(Ot),Gt):Et(Ot)}return u4(Ot)&&b.length<8?(i.consume(Ot),b+=String.fromCharCode(Ot),Ft):Et(Ot)}function _t(Ot){return Ot===93?(i.consume(Ot),xt):Et(Ot)}function xt(Ot){return Ot===62?(i.consume(Ot),Gt):Ot===45&&w===2?(i.consume(Ot),xt):Et(Ot)}function Gt(Ot){return Ot===null||Ba(Ot)?(i.exit("htmlFlowData"),Be(Ot)):(i.consume(Ot),Gt)}function Be(Ot){return i.exit("htmlFlow"),a(Ot)}}function aGe(i,a,f){const g=this;return w;function w(b){return Ba(b)?(i.enter("lineEnding"),i.consume(b),i.exit("lineEnding"),v):f(b)}function v(b){return g.parser.lazy[g.now().line]?f(b):a(b)}}function oGe(i,a,f){return g;function g(w){return i.enter("lineEnding"),i.consume(w),i.exit("lineEnding"),i.attempt(KY,a,f)}}const cGe={name:"htmlText",tokenize:uGe};function uGe(i,a,f){const g=this;let w,v,b;return E;function E(xt){return i.enter("htmlText"),i.enter("htmlTextData"),i.consume(xt),_}function _(xt){return xt===33?(i.consume(xt),S):xt===47?(i.consume(xt),mt):xt===63?(i.consume(xt),pt):u4(xt)?(i.consume(xt),bt):f(xt)}function S(xt){return xt===45?(i.consume(xt),I):xt===91?(i.consume(xt),v=0,q):u4(xt)?(i.consume(xt),ut):f(xt)}function I(xt){return xt===45?(i.consume(xt),R):f(xt)}function B(xt){return xt===null?f(xt):xt===45?(i.consume(xt),F):Ba(xt)?(b=B,Ct(xt)):(i.consume(xt),B)}function F(xt){return xt===45?(i.consume(xt),R):B(xt)}function R(xt){return xt===62?jt(xt):xt===45?F(xt):B(xt)}function q(xt){const Gt="CDATA[";return xt===Gt.charCodeAt(v++)?(i.consume(xt),v===Gt.length?X:q):f(xt)}function X(xt){return xt===null?f(xt):xt===93?(i.consume(xt),rt):Ba(xt)?(b=X,Ct(xt)):(i.consume(xt),X)}function rt(xt){return xt===93?(i.consume(xt),at):X(xt)}function at(xt){return xt===62?jt(xt):xt===93?(i.consume(xt),at):X(xt)}function ut(xt){return xt===null||xt===62?jt(xt):Ba(xt)?(b=ut,Ct(xt)):(i.consume(xt),ut)}function pt(xt){return xt===null?f(xt):xt===63?(i.consume(xt),yt):Ba(xt)?(b=pt,Ct(xt)):(i.consume(xt),pt)}function yt(xt){return xt===62?jt(xt):pt(xt)}function mt(xt){return u4(xt)?(i.consume(xt),gt):f(xt)}function gt(xt){return xt===45||Jv(xt)?(i.consume(xt),gt):ht(xt)}function ht(xt){return Ba(xt)?(b=ht,Ct(xt)):fu(xt)?(i.consume(xt),ht):jt(xt)}function bt(xt){return xt===45||Jv(xt)?(i.consume(xt),bt):xt===47||xt===62||sb(xt)?Z(xt):f(xt)}function Z(xt){return xt===47?(i.consume(xt),jt):xt===58||xt===95||u4(xt)?(i.consume(xt),ft):Ba(xt)?(b=Z,Ct(xt)):fu(xt)?(i.consume(xt),Z):jt(xt)}function ft(xt){return xt===45||xt===46||xt===58||xt===95||Jv(xt)?(i.consume(xt),ft):Y(xt)}function Y(xt){return xt===61?(i.consume(xt),Et):Ba(xt)?(b=Y,Ct(xt)):fu(xt)?(i.consume(xt),Y):Z(xt)}function Et(xt){return xt===null||xt===60||xt===61||xt===62||xt===96?f(xt):xt===34||xt===39?(i.consume(xt),w=xt,V):Ba(xt)?(b=Et,Ct(xt)):fu(xt)?(i.consume(xt),Et):(i.consume(xt),Nt)}function V(xt){return xt===w?(i.consume(xt),w=void 0,Dt):xt===null?f(xt):Ba(xt)?(b=V,Ct(xt)):(i.consume(xt),V)}function Nt(xt){return xt===null||xt===34||xt===39||xt===60||xt===61||xt===96?f(xt):xt===47||xt===62||sb(xt)?Z(xt):(i.consume(xt),Nt)}function Dt(xt){return xt===47||xt===62||sb(xt)?Z(xt):f(xt)}function jt(xt){return xt===62?(i.consume(xt),i.exit("htmlTextData"),i.exit("htmlText"),a):f(xt)}function Ct(xt){return i.exit("htmlTextData"),i.enter("lineEnding"),i.consume(xt),i.exit("lineEnding"),Ft}function Ft(xt){return fu(xt)?Cl(i,_t,"linePrefix",g.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(xt):_t(xt)}function _t(xt){return i.enter("htmlTextData"),b(xt)}}const Rpt={name:"labelEnd",tokenize:pGe,resolveTo:gGe,resolveAll:dGe},lGe={tokenize:bGe},hGe={tokenize:wGe},fGe={tokenize:mGe};function dGe(i){let a=-1;for(;++a=3&&(S===null||Ba(S))?(i.exit("thematicBreak"),a(S)):f(S)}function _(S){return S===w?(i.consume(S),g++,_):(i.exit("thematicBreakSequence"),fu(S)?Cl(i,E,"whitespace")(S):E(S))}}const ab={name:"list",tokenize:SGe,continuation:{tokenize:AGe},exit:MGe},CGe={tokenize:DGe,partial:!0},_Ge={tokenize:LGe,partial:!0};function SGe(i,a,f){const g=this,w=g.events[g.events.length-1];let v=w&&w[1].type==="linePrefix"?w[2].sliceSerialize(w[1],!0).length:0,b=0;return E;function E(R){const q=g.containerState.type||(R===42||R===43||R===45?"listUnordered":"listOrdered");if(q==="listUnordered"?!g.containerState.marker||R===g.containerState.marker:Opt(R)){if(g.containerState.type||(g.containerState.type=q,i.enter(q,{_container:!0})),q==="listUnordered")return i.enter("listItemPrefix"),R===42||R===45?i.check(WY,f,S)(R):S(R);if(!g.interrupt||R===49)return i.enter("listItemPrefix"),i.enter("listItemValue"),_(R)}return f(R)}function _(R){return Opt(R)&&++b<10?(i.consume(R),_):(!g.interrupt||b<2)&&(g.containerState.marker?R===g.containerState.marker:R===41||R===46)?(i.exit("listItemValue"),S(R)):f(R)}function S(R){return i.enter("listItemMarker"),i.consume(R),i.exit("listItemMarker"),g.containerState.marker=g.containerState.marker||R,i.check(KY,g.interrupt?f:I,i.attempt(CGe,F,B))}function I(R){return g.containerState.initialBlankLine=!0,v++,F(R)}function B(R){return fu(R)?(i.enter("listItemPrefixWhitespace"),i.consume(R),i.exit("listItemPrefixWhitespace"),F):f(R)}function F(R){return g.containerState.size=v+g.sliceSerialize(i.exit("listItemPrefix"),!0).length,a(R)}}function AGe(i,a,f){const g=this;return g.containerState._closeFlow=void 0,i.check(KY,w,v);function w(E){return g.containerState.furtherBlankLines=g.containerState.furtherBlankLines||g.containerState.initialBlankLine,Cl(i,a,"listItemIndent",g.containerState.size+1)(E)}function v(E){return g.containerState.furtherBlankLines||!fu(E)?(g.containerState.furtherBlankLines=void 0,g.containerState.initialBlankLine=void 0,b(E)):(g.containerState.furtherBlankLines=void 0,g.containerState.initialBlankLine=void 0,i.attempt(_Ge,a,b)(E))}function b(E){return g.containerState._closeFlow=!0,g.interrupt=void 0,Cl(i,i.attempt(ab,a,f),"linePrefix",g.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(E)}}function LGe(i,a,f){const g=this;return Cl(i,w,"listItemIndent",g.containerState.size+1);function w(v){const b=g.events[g.events.length-1];return b&&b[1].type==="listItemIndent"&&b[2].sliceSerialize(b[1],!0).length===g.containerState.size?a(v):f(v)}}function MGe(i){i.exit(this.containerState.type)}function DGe(i,a,f){const g=this;return Cl(i,w,"listItemPrefixWhitespace",g.parser.constructs.disable.null.includes("codeIndented")?void 0:4+1);function w(v){const b=g.events[g.events.length-1];return!fu(v)&&b&&b[1].type==="listItemPrefixWhitespace"?a(v):f(v)}}const x$t={name:"setextUnderline",tokenize:OGe,resolveTo:IGe};function IGe(i,a){let f=i.length,g,w,v;for(;f--;)if(i[f][0]==="enter"){if(i[f][1].type==="content"){g=f;break}i[f][1].type==="paragraph"&&(w=f)}else i[f][1].type==="content"&&i.splice(f,1),!v&&i[f][1].type==="definition"&&(v=f);const b={type:"setextHeading",start:Object.assign({},i[w][1].start),end:Object.assign({},i[i.length-1][1].end)};return i[w][1].type="setextHeadingText",v?(i.splice(w,0,["enter",b,a]),i.splice(v+1,0,["exit",i[g][1],a]),i[g][1].end=Object.assign({},i[v][1].end)):i[g][1]=b,i.push(["exit",b,a]),i}function OGe(i,a,f){const g=this;let w;return v;function v(S){let I=g.events.length,B;for(;I--;)if(g.events[I][1].type!=="lineEnding"&&g.events[I][1].type!=="linePrefix"&&g.events[I][1].type!=="content"){B=g.events[I][1].type==="paragraph";break}return!g.parser.lazy[g.now().line]&&(g.interrupt||B)?(i.enter("setextHeadingLine"),w=S,b(S)):f(S)}function b(S){return i.enter("setextHeadingLineSequence"),E(S)}function E(S){return S===w?(i.consume(S),E):(i.exit("setextHeadingLineSequence"),fu(S)?Cl(i,_,"lineSuffix")(S):_(S))}function _(S){return S===null||Ba(S)?(i.exit("setextHeadingLine"),a(S)):f(S)}}const PGe={tokenize:NGe};function NGe(i){const a=this,f=i.attempt(KY,g,i.attempt(this.parser.constructs.flowInitial,w,Cl(i,i.attempt(this.parser.constructs.flow,w,i.attempt($Ue,w)),"linePrefix")));return f;function g(v){if(v===null){i.consume(v);return}return i.enter("lineEndingBlank"),i.consume(v),i.exit("lineEndingBlank"),a.currentConstruct=void 0,f}function w(v){if(v===null){i.consume(v);return}return i.enter("lineEnding"),i.consume(v),i.exit("lineEnding"),a.currentConstruct=void 0,f}}const FGe={resolveAll:E$t()},BGe=k$t("string"),RGe=k$t("text");function k$t(i){return{tokenize:a,resolveAll:E$t(i==="text"?jGe:void 0)};function a(f){const g=this,w=this.parser.constructs[i],v=f.attempt(w,b,E);return b;function b(I){return S(I)?v(I):E(I)}function E(I){if(I===null){f.consume(I);return}return f.enter("data"),f.consume(I),_}function _(I){return S(I)?(f.exit("data"),v(I)):(f.consume(I),_)}function S(I){if(I===null)return!0;const B=w[I];let F=-1;if(B)for(;++F-1){const E=b[0];typeof E=="string"?b[0]=E.slice(g):b.shift()}v>0&&b.push(i[w].slice(0,v))}return b}function qGe(i,a){let f=-1;const g=[];let w;for(;++f13&&f<32||f>126&&f<160||f>55295&&f<57344||f>64975&&f<65008||(f&65535)===65535||(f&65535)===65534||f>1114111?"�":String.fromCharCode(f)}const KGe=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function WGe(i){return i.replace(KGe,YGe)}function YGe(i,a,f){if(a)return a;if(f.charCodeAt(0)===35){const w=f.charCodeAt(1),v=w===120||w===88;return C$t(f.slice(v?2:1),v?16:10)}return Fpt(f)||i}function YY(i){return!i||typeof i!="object"?"":"position"in i||"type"in i?_$t(i.position):"start"in i||"end"in i?_$t(i):"line"in i||"column"in i?$pt(i):""}function $pt(i){return S$t(i&&i.line)+":"+S$t(i&&i.column)}function _$t(i){return $pt(i&&i.start)+"-"+$pt(i&&i.end)}function S$t(i){return i&&typeof i=="number"?i:1}const A$t={}.hasOwnProperty,L$t=function(i,a,f){return typeof a!="string"&&(f=a,a=void 0),XGe(f)(GGe(VGe(f).document().write(UGe()(i,a,!0))))};function XGe(i){const a={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:E(da),autolinkProtocol:Y,autolinkEmail:Y,atxHeading:E(Pr),blockQuote:E(Qt),characterEscape:Y,characterReference:Y,codeFenced:E(Ae),codeFencedFenceInfo:_,codeFencedFenceMeta:_,codeIndented:E(Ae,_),codeText:E(Se,_),codeTextData:Y,data:Y,codeFlowValue:Y,definition:E(Dn),definitionDestinationString:_,definitionLabelString:_,definitionTitleString:_,emphasis:E(oe),hardBreakEscape:E(we),hardBreakTrailing:E(we),htmlFlow:E(Ri,_),htmlFlowData:Y,htmlText:E(Ri,_),htmlTextData:Y,image:E(yi),label:_,link:E(da),listItem:E(Ra),listItemValue:q,listOrdered:E(Ss,R),listUnordered:E(Ss),paragraph:E(fr),reference:Pe,referenceString:_,resourceDestinationString:_,resourceTitleString:_,setextHeading:E(Pr),strong:E(An),thematicBreak:E(Bn)},exit:{atxHeading:I(),atxHeadingSequence:ht,autolink:I(),autolinkEmail:Fe,autolinkProtocol:me,blockQuote:I(),characterEscapeValue:Et,characterReferenceMarkerHexadecimal:nn,characterReferenceMarkerNumeric:nn,characterReferenceValue:sn,codeFenced:I(ut),codeFencedFence:at,codeFencedFenceInfo:X,codeFencedFenceMeta:rt,codeFlowValue:Et,codeIndented:I(pt),codeText:I(Ct),codeTextData:Et,data:Et,definition:I(),definitionDestinationString:gt,definitionLabelString:yt,definitionTitleString:mt,emphasis:I(),hardBreakEscape:I(Nt),hardBreakTrailing:I(Nt),htmlFlow:I(Dt),htmlFlowData:Et,htmlText:I(jt),htmlTextData:Et,image:I(_t),label:Gt,labelText:xt,lineEnding:V,link:I(Ft),listItem:I(),listOrdered:I(),listUnordered:I(),paragraph:I(),referenceString:Ee,resourceDestinationString:Be,resourceTitleString:Ot,resource:vn,setextHeading:I(ft),setextHeadingLineSequence:Z,setextHeadingText:bt,strong:I(),thematicBreak:I()}};M$t(a,(i||{}).mdastExtensions||[]);const f={};return g;function g(Te){let be={type:"root",children:[]};const Qe={stack:[be],tokenStack:[],config:a,enter:S,exit:B,buffer:_,resume:F,setData:v,getData:b},rn=[];let yn=-1;for(;++yn0){const ja=Qe.tokenStack[Qe.tokenStack.length-1];(ja[1]||D$t).call(Qe,void 0,ja[0])}for(be.position={start:x8(Te.length>0?Te[0][1].start:{line:1,column:1,offset:0}),end:x8(Te.length>0?Te[Te.length-2][1].end:{line:1,column:1,offset:0})},yn=-1;++yn{I!==0&&(w++,g.push([])),S.split(" ").forEach(B=>{B&&g[w].push({content:B,type:E})})}):(b.type==="strong"||b.type==="emphasis")&&b.children.forEach(_=>{v(_,b.type)})}return f.forEach(b=>{b.type==="paragraph"&&b.children.forEach(E=>{v(E)})}),g}function tKe(i){const{children:a}=L$t(i);function f(g){return g.type==="text"?g.value.replace(/\n/g,"
"):g.type==="strong"?`${g.children.map(f).join("")}`:g.type==="emphasis"?`${g.children.map(f).join("")}`:g.type==="paragraph"?`

${g.children.map(f).join("")}

`:`Unsupported markdown: ${g.type}`}return a.map(f).join("")}function eKe(i){return Intl.Segmenter?[...new Intl.Segmenter().segment(i)].map(a=>a.segment):[...i]}function nKe(i,a){const f=eKe(a.content);return I$t(i,[],f,a.type)}function I$t(i,a,f,g){if(f.length===0)return[{content:a.join(""),type:g},{content:"",type:g}];const[w,...v]=f,b=[...a,w];return i([{content:b.join(""),type:g}])?I$t(i,b,v,g):(a.length===0&&w&&(a.push(w),f.shift()),[{content:a.join(""),type:g},{content:f.join(""),type:g}])}function rKe(i,a){if(i.some(({content:f})=>f.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return zpt(i,a)}function zpt(i,a,f=[],g=[]){if(i.length===0)return g.length>0&&f.push(g),f.length>0?f:[];let w="";i[0].content===" "&&(w=" ",i.shift());const v=i.shift()??{content:" ",type:"normal"},b=[...g];if(w!==""&&b.push({content:w,type:"normal"}),b.push(v),a(b))return zpt(i,a,f,b);if(g.length>0)f.push(g),i.unshift(v);else if(v.content){const[E,_]=nKe(a,v);f.push([E]),_.content&&i.unshift(_)}return zpt(i,a,f)}function iKe(i,a){a&&i.attr("style",a)}function sKe(i,a,f,g,w=!1){const v=i.append("foreignObject"),b=v.append("xhtml:div"),E=a.label,_=a.isNode?"nodeLabel":"edgeLabel";b.html(` + "+E+""),iKe(b,a.labelStyle),b.style("display","table-cell"),b.style("white-space","nowrap"),b.style("max-width",f+"px"),b.attr("xmlns","http://www.w3.org/1999/xhtml"),w&&b.attr("class","labelBkg");let S=b.node().getBoundingClientRect();return S.width===f&&(b.style("display","table"),b.style("white-space","break-spaces"),b.style("width",f+"px"),S=b.node().getBoundingClientRect()),v.style("width",S.width),v.style("height",S.height),v.node()}function qpt(i,a,f){return i.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",a*f-.1+"em").attr("dy",f+"em")}function aKe(i,a,f){const g=i.append("text"),w=qpt(g,1,a);Hpt(w,f);const v=w.node().getComputedTextLength();return g.remove(),v}function oKe(i,a,f){var b;const g=i.append("text"),w=qpt(g,1,a);Hpt(w,[{content:f,type:"normal"}]);const v=(b=w.node())==null?void 0:b.getBoundingClientRect();return v&&g.remove(),v}function cKe(i,a,f,g=!1){const v=a.append("g"),b=v.insert("rect").attr("class","background"),E=v.append("text").attr("y","-10.1");let _=0;for(const S of f){const I=F=>aKe(v,1.1,F)<=i,B=I(S)?[S]:rKe(S,I);for(const F of B){const R=qpt(E,_,1.1);Hpt(R,F),_++}}if(g){const S=E.node().getBBox(),I=2;return b.attr("x",-I).attr("y",-I).attr("width",S.width+2*I).attr("height",S.height+2*I),v.node()}else return E.node()}function Hpt(i,a){i.text(""),a.forEach((f,g)=>{const w=i.append("tspan").attr("font-style",f.type==="emphasis"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",f.type==="strong"?"bold":"normal");g===0?w.text(f.content):w.text(" "+f.content)})}const XY=(i,a="",{style:f="",isTitle:g=!1,classes:w="",useHtmlLabels:v=!0,isNode:b=!0,width:E=200,addSvgBackground:_=!1}={})=>{if(Wt.info("createText",a,f,g,w,v,b,_),v){const S=tKe(a),I={isNode:b,label:CF(S).replace(/fa[blrs]?:fa-[\w-]+/g,F=>``),labelStyle:f.replace("fill:","color:")};return sKe(i,I,E,w,_)}else{const S=ZGe(a);return cKe(E,i,S,_)}},f0=async(i,a,f,g)=>{let w;const v=a.useHtmlLabels||B1(Re().flowchart.htmlLabels);f?w=f:w="node default";const b=i.insert("g").attr("class",w).attr("id",a.domId||a.id),E=b.insert("g").attr("class","label").attr("style",a.labelStyle);let _;a.labelText===void 0?_="":_=typeof a.labelText=="string"?a.labelText:a.labelText[0];const S=E.node();let I;a.labelType==="markdown"?I=XY(E,Ed(CF(_),Re()),{useHtmlLabels:v,width:a.width||Re().flowchart.wrappingWidth,classes:"markdown-node-label"}):I=S.appendChild(ib(Ed(CF(_),Re()),a.labelStyle,!1,g));let B=I.getBBox();const F=a.padding/2;if(B1(Re().flowchart.htmlLabels)){const R=I.children[0],q=xr(I),X=R.getElementsByTagName("img");if(X){const rt=_.replace(/]*>/g,"").trim()==="";await Promise.all([...X].map(at=>new Promise(ut=>{function pt(){if(at.style.display="flex",at.style.flexDirection="column",rt){const yt=Re().fontSize?Re().fontSize:window.getComputedStyle(document.body).fontSize,mt=5,gt=parseInt(yt,10)*mt+"px";at.style.minWidth=gt,at.style.maxWidth=gt}else at.style.width="100%";ut(at)}setTimeout(()=>{at.complete&&pt()}),at.addEventListener("error",pt),at.addEventListener("load",pt)})))}B=R.getBoundingClientRect(),q.attr("width",B.width),q.attr("height",B.height)}return v?E.attr("transform","translate("+-B.width/2+", "+-B.height/2+")"):E.attr("transform","translate(0, "+-B.height/2+")"),a.centerLabel&&E.attr("transform","translate("+-B.width/2+", "+-B.height/2+")"),E.insert("rect",":first-child"),{shapeSvg:b,bbox:B,halfPadding:F,label:E}},kf=(i,a)=>{const f=a.node().getBBox();i.width=f.width,i.height=f.height};function Bx(i,a,f,g){return i.insert("polygon",":first-child").attr("points",g.map(function(w){return w.x+","+w.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-a/2+","+f/2+")")}let sc={},Zv={},O$t={};const uKe=()=>{Zv={},O$t={},sc={}},QY=(i,a)=>(Wt.trace("In isDecendant",a," ",i," = ",Zv[a].includes(i)),!!Zv[a].includes(i)),lKe=(i,a)=>(Wt.info("Decendants of ",a," is ",Zv[a]),Wt.info("Edge is ",i),i.v===a||i.w===a?!1:Zv[a]?Zv[a].includes(i.v)||QY(i.v,a)||QY(i.w,a)||Zv[a].includes(i.w):(Wt.debug("Tilt, ",a,",not in decendants"),!1)),P$t=(i,a,f,g)=>{Wt.warn("Copying children of ",i,"root",g,"data",a.node(i),g);const w=a.children(i)||[];i!==g&&w.push(i),Wt.warn("Copying (nodes) clusterId",i,"nodes",w),w.forEach(v=>{if(a.children(v).length>0)P$t(v,a,f,g);else{const b=a.node(v);Wt.info("cp ",v," to ",g," with parent ",i),f.setNode(v,b),g!==a.parent(v)&&(Wt.warn("Setting parent",v,a.parent(v)),f.setParent(v,a.parent(v))),i!==g&&v!==i?(Wt.debug("Setting parent",v,i),f.setParent(v,i)):(Wt.info("In copy ",i,"root",g,"data",a.node(i),g),Wt.debug("Not Setting parent for node=",v,"cluster!==rootId",i!==g,"node!==clusterId",v!==i));const E=a.edges(v);Wt.debug("Copying Edges",E),E.forEach(_=>{Wt.info("Edge",_);const S=a.edge(_.v,_.w,_.name);Wt.info("Edge data",S,g);try{lKe(_,g)?(Wt.info("Copying as ",_.v,_.w,S,_.name),f.setEdge(_.v,_.w,S,_.name),Wt.info("newGraph edges ",f.edges(),f.edge(f.edges()[0]))):Wt.info("Skipping copy of edge ",_.v,"-->",_.w," rootId: ",g," clusterId:",i)}catch(I){Wt.error(I)}})}Wt.debug("Removing node",v),a.removeNode(v)})},N$t=(i,a)=>{const f=a.children(i);let g=[...f];for(const w of f)O$t[w]=i,g=[...g,...N$t(w,a)];return g},GF=(i,a)=>{Wt.trace("Searching",i);const f=a.children(i);if(Wt.trace("Searching children of id ",i,f),f.length<1)return Wt.trace("This is a valid node",i),i;for(const g of f){const w=GF(g,a);if(w)return Wt.trace("Found replacement for",i," => ",w),w}},JY=i=>!sc[i]||!sc[i].externalConnections?i:sc[i]?sc[i].id:i,hKe=(i,a)=>{if(!i||a>10){Wt.debug("Opting out, no graph ");return}else Wt.debug("Opting in, graph ");i.nodes().forEach(function(f){i.children(f).length>0&&(Wt.warn("Cluster identified",f," Replacement id in edges: ",GF(f,i)),Zv[f]=N$t(f,i),sc[f]={id:GF(f,i),clusterData:i.node(f)})}),i.nodes().forEach(function(f){const g=i.children(f),w=i.edges();g.length>0?(Wt.debug("Cluster identified",f,Zv),w.forEach(v=>{if(v.v!==f&&v.w!==f){const b=QY(v.v,f),E=QY(v.w,f);b^E&&(Wt.warn("Edge: ",v," leaves cluster ",f),Wt.warn("Decendants of XXX ",f,": ",Zv[f]),sc[f].externalConnections=!0)}})):Wt.debug("Not a cluster ",f,Zv)}),i.edges().forEach(function(f){const g=i.edge(f);Wt.warn("Edge "+f.v+" -> "+f.w+": "+JSON.stringify(f)),Wt.warn("Edge "+f.v+" -> "+f.w+": "+JSON.stringify(i.edge(f)));let w=f.v,v=f.w;if(Wt.warn("Fix XXX",sc,"ids:",f.v,f.w,"Translating: ",sc[f.v]," --- ",sc[f.w]),sc[f.v]&&sc[f.w]&&sc[f.v]===sc[f.w]){Wt.warn("Fixing and trixing link to self - removing XXX",f.v,f.w,f.name),Wt.warn("Fixing and trixing - removing XXX",f.v,f.w,f.name),w=JY(f.v),v=JY(f.w),i.removeEdge(f.v,f.w,f.name);const b=f.w+"---"+f.v;i.setNode(b,{domId:b,id:b,labelStyle:"",labelText:g.label,padding:0,shape:"labelRect",style:""});const E=structuredClone(g),_=structuredClone(g);E.label="",E.arrowTypeEnd="none",_.label="",E.fromCluster=f.v,_.toCluster=f.v,i.setEdge(w,b,E,f.name+"-cyclic-special"),i.setEdge(b,v,_,f.name+"-cyclic-special")}else(sc[f.v]||sc[f.w])&&(Wt.warn("Fixing and trixing - removing XXX",f.v,f.w,f.name),w=JY(f.v),v=JY(f.w),i.removeEdge(f.v,f.w,f.name),w!==f.v&&(g.fromCluster=f.v),v!==f.w&&(g.toCluster=f.w),Wt.warn("Fix Replacing with XXX",w,v,f.name),i.setEdge(w,v,g,f.name))}),Wt.warn("Adjusted Graph",Fx(i)),F$t(i,0),Wt.trace(sc)},F$t=(i,a)=>{if(Wt.warn("extractor - ",a,Fx(i),i.children("D")),a>10){Wt.error("Bailing out");return}let f=i.nodes(),g=!1;for(const w of f){const v=i.children(w);g=g||v.length>0}if(!g){Wt.debug("Done, no node has children",i.nodes());return}Wt.debug("Nodes = ",f,a);for(const w of f)if(Wt.debug("Extracting node",w,sc,sc[w]&&!sc[w].externalConnections,!i.parent(w),i.node(w),i.children("D")," Depth ",a),!sc[w])Wt.debug("Not a cluster",w,a);else if(!sc[w].externalConnections&&i.children(w)&&i.children(w).length>0){Wt.warn("Cluster without external connections, without a parent and with children",w,a);let b=i.graph().rankdir==="TB"?"LR":"TB";sc[w]&&sc[w].clusterData&&sc[w].clusterData.dir&&(b=sc[w].clusterData.dir,Wt.warn("Fixing dir",sc[w].clusterData.dir,b));const E=new R1({multigraph:!0,compound:!0}).setGraph({rankdir:b,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});Wt.warn("Old graph before copy",Fx(i)),P$t(w,i,E,w),i.setNode(w,{clusterNode:!0,id:w,clusterData:sc[w].clusterData,labelText:sc[w].labelText,graph:E}),Wt.warn("New graph after copy node: (",w,")",Fx(E)),Wt.debug("Old graph after copy",Fx(i))}else Wt.warn("Cluster ** ",w," **not meeting the criteria !externalConnections:",!sc[w].externalConnections," no parent: ",!i.parent(w)," children ",i.children(w)&&i.children(w).length>0,i.children("D"),a),Wt.debug(sc);f=i.nodes(),Wt.warn("New list of nodes",f);for(const w of f){const v=i.node(w);Wt.warn(" Now next level",w,v),v.clusterNode&&F$t(v.graph,a+1)}},B$t=(i,a)=>{if(a.length===0)return[];let f=Object.assign(a);return a.forEach(g=>{const w=i.children(g),v=B$t(i,w);f=[...f,...v]}),f},fKe=i=>B$t(i,i.children());function dKe(i,a){return i.intersect(a)}function R$t(i,a,f,g){var w=i.x,v=i.y,b=w-g.x,E=v-g.y,_=Math.sqrt(a*a*E*E+f*f*b*b),S=Math.abs(a*f*b/_);g.x0}function bKe(i,a,f){var g=i.x,w=i.y,v=[],b=Number.POSITIVE_INFINITY,E=Number.POSITIVE_INFINITY;typeof a.forEach=="function"?a.forEach(function(q){b=Math.min(b,q.x),E=Math.min(E,q.y)}):(b=Math.min(b,a.x),E=Math.min(E,a.y));for(var _=g-i.width/2-b,S=w-i.height/2-E,I=0;I1&&v.sort(function(q,X){var rt=q.x-f.x,at=q.y-f.y,ut=Math.sqrt(rt*rt+at*at),pt=X.x-f.x,yt=X.y-f.y,mt=Math.sqrt(pt*pt+yt*yt);return ut{var f=i.x,g=i.y,w=a.x-f,v=a.y-g,b=i.width/2,E=i.height/2,_,S;return Math.abs(v)*b>Math.abs(w)*E?(v<0&&(E=-E),_=v===0?0:E*w/v,S=E):(w<0&&(b=-b),_=b,S=w===0?0:b*v/w),{x:f+_,y:g+S}},Gh={node:dKe,circle:gKe,ellipse:R$t,polygon:bKe,rect:KF},wKe=async(i,a)=>{a.useHtmlLabels||Re().flowchart.htmlLabels||(a.centerLabel=!0);const{shapeSvg:g,bbox:w,halfPadding:v}=await f0(i,a,"node "+a.classes,!0);Wt.info("Classes = ",a.classes);const b=g.insert("rect",":first-child");return b.attr("rx",a.rx).attr("ry",a.ry).attr("x",-w.width/2-v).attr("y",-w.height/2-v).attr("width",w.width+a.padding).attr("height",w.height+a.padding),kf(a,b),a.intersect=function(E){return Gh.rect(a,E)},g},$$t=i=>i?" "+i:"",E2=(i,a)=>`${a||"node default"}${$$t(i.classes)} ${$$t(i.class)}`,z$t=async(i,a)=>{const{shapeSvg:f,bbox:g}=await f0(i,a,E2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=w+v,E=[{x:b/2,y:0},{x:b,y:-b/2},{x:b/2,y:-b},{x:0,y:-b/2}];Wt.info("Question main (Circle)");const _=Bx(f,b,b,E);return _.attr("style",a.style),kf(a,_),a.intersect=function(S){return Wt.warn("Intersect called"),Gh.polygon(a,E,S)},f},mKe=(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),g=28,w=[{x:0,y:g/2},{x:g/2,y:0},{x:0,y:-g/2},{x:-g/2,y:0}];return f.insert("polygon",":first-child").attr("points",w.map(function(b){return b.x+","+b.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),a.width=28,a.height=28,a.intersect=function(b){return Gh.circle(a,14,b)},f},vKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await f0(i,a,E2(a,void 0),!0),w=4,v=g.height+a.padding,b=v/w,E=g.width+2*b+a.padding,_=[{x:b,y:0},{x:E-b,y:0},{x:E,y:-v/2},{x:E-b,y:-v},{x:b,y:-v},{x:0,y:-v/2}],S=Bx(f,E,v,_);return S.attr("style",a.style),kf(a,S),a.intersect=function(I){return Gh.polygon(a,_,I)},f},yKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await f0(i,a,E2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:-v/2,y:0},{x:w,y:0},{x:w,y:-v},{x:-v/2,y:-v},{x:0,y:-v/2}];return Bx(f,w,v,b).attr("style",a.style),a.width=w+v,a.height=v,a.intersect=function(_){return Gh.polygon(a,b,_)},f},xKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await f0(i,a,E2(a),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:-2*v/6,y:0},{x:w-v/6,y:0},{x:w+2*v/6,y:-v},{x:v/6,y:-v}],E=Bx(f,w,v,b);return E.attr("style",a.style),kf(a,E),a.intersect=function(_){return Gh.polygon(a,b,_)},f},kKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await f0(i,a,E2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:2*v/6,y:0},{x:w+v/6,y:0},{x:w-2*v/6,y:-v},{x:-v/6,y:-v}],E=Bx(f,w,v,b);return E.attr("style",a.style),kf(a,E),a.intersect=function(_){return Gh.polygon(a,b,_)},f},EKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await f0(i,a,E2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:-2*v/6,y:0},{x:w+2*v/6,y:0},{x:w-v/6,y:-v},{x:v/6,y:-v}],E=Bx(f,w,v,b);return E.attr("style",a.style),kf(a,E),a.intersect=function(_){return Gh.polygon(a,b,_)},f},TKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await f0(i,a,E2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:v/6,y:0},{x:w-v/6,y:0},{x:w+2*v/6,y:-v},{x:-2*v/6,y:-v}],E=Bx(f,w,v,b);return E.attr("style",a.style),kf(a,E),a.intersect=function(_){return Gh.polygon(a,b,_)},f},CKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await f0(i,a,E2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:0,y:0},{x:w+v/2,y:0},{x:w,y:-v/2},{x:w+v/2,y:-v},{x:0,y:-v}],E=Bx(f,w,v,b);return E.attr("style",a.style),kf(a,E),a.intersect=function(_){return Gh.polygon(a,b,_)},f},_Ke=async(i,a)=>{const{shapeSvg:f,bbox:g}=await f0(i,a,E2(a,void 0),!0),w=g.width+a.padding,v=w/2,b=v/(2.5+w/50),E=g.height+b+a.padding,_="M 0,"+b+" a "+v+","+b+" 0,0,0 "+w+" 0 a "+v+","+b+" 0,0,0 "+-w+" 0 l 0,"+E+" a "+v+","+b+" 0,0,0 "+w+" 0 l 0,"+-E,S=f.attr("label-offset-y",b).insert("path",":first-child").attr("style",a.style).attr("d",_).attr("transform","translate("+-w/2+","+-(E/2+b)+")");return kf(a,S),a.intersect=function(I){const B=Gh.rect(a,I),F=B.x-a.x;if(v!=0&&(Math.abs(F)a.height/2-b)){let R=b*b*(1-F*F/(v*v));R!=0&&(R=Math.sqrt(R)),R=b-R,I.y-a.y>0&&(R=-R),B.y+=R}return B},f},SKe=async(i,a)=>{const{shapeSvg:f,bbox:g,halfPadding:w}=await f0(i,a,"node "+a.classes+" "+a.class,!0),v=f.insert("rect",":first-child"),b=g.width+a.padding,E=g.height+a.padding;if(v.attr("class","basic label-container").attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("x",-g.width/2-w).attr("y",-g.height/2-w).attr("width",b).attr("height",E),a.props){const _=new Set(Object.keys(a.props));a.props.borders&&(q$t(v,a.props.borders,b,E),_.delete("borders")),_.forEach(S=>{Wt.warn(`Unknown node property ${S}`)})}return kf(a,v),a.intersect=function(_){return Gh.rect(a,_)},f},AKe=async(i,a)=>{const{shapeSvg:f}=await f0(i,a,"label",!0);Wt.trace("Classes = ",a.class);const g=f.insert("rect",":first-child"),w=0,v=0;if(g.attr("width",w).attr("height",v),f.attr("class","label edgeLabel"),a.props){const b=new Set(Object.keys(a.props));a.props.borders&&(q$t(g,a.props.borders,w,v),b.delete("borders")),b.forEach(E=>{Wt.warn(`Unknown node property ${E}`)})}return kf(a,g),a.intersect=function(b){return Gh.rect(a,b)},f};function q$t(i,a,f,g){const w=[],v=E=>{w.push(E,0)},b=E=>{w.push(0,E)};a.includes("t")?(Wt.debug("add top border"),v(f)):b(f),a.includes("r")?(Wt.debug("add right border"),v(g)):b(g),a.includes("b")?(Wt.debug("add bottom border"),v(f)):b(f),a.includes("l")?(Wt.debug("add left border"),v(g)):b(g),i.attr("stroke-dasharray",w.join(" "))}const LKe=(i,a)=>{let f;a.classes?f="node "+a.classes:f="node default";const g=i.insert("g").attr("class",f).attr("id",a.domId||a.id),w=g.insert("rect",":first-child"),v=g.insert("line"),b=g.insert("g").attr("class","label"),E=a.labelText.flat?a.labelText.flat():a.labelText;let _="";typeof E=="object"?_=E[0]:_=E,Wt.info("Label text abc79",_,E,typeof E=="object");const S=b.node().appendChild(ib(_,a.labelStyle,!0,!0));let I={width:0,height:0};if(B1(Re().flowchart.htmlLabels)){const X=S.children[0],rt=xr(S);I=X.getBoundingClientRect(),rt.attr("width",I.width),rt.attr("height",I.height)}Wt.info("Text 2",E);const B=E.slice(1,E.length);let F=S.getBBox();const R=b.node().appendChild(ib(B.join?B.join("
"):B,a.labelStyle,!0,!0));if(B1(Re().flowchart.htmlLabels)){const X=R.children[0],rt=xr(R);I=X.getBoundingClientRect(),rt.attr("width",I.width),rt.attr("height",I.height)}const q=a.padding/2;return xr(R).attr("transform","translate( "+(I.width>F.width?0:(F.width-I.width)/2)+", "+(F.height+q+5)+")"),xr(S).attr("transform","translate( "+(I.width{const{shapeSvg:f,bbox:g}=await f0(i,a,E2(a,void 0),!0),w=g.height+a.padding,v=g.width+w/4+a.padding,b=f.insert("rect",":first-child").attr("style",a.style).attr("rx",w/2).attr("ry",w/2).attr("x",-v/2).attr("y",-w/2).attr("width",v).attr("height",w);return kf(a,b),a.intersect=function(E){return Gh.rect(a,E)},f},DKe=async(i,a)=>{const{shapeSvg:f,bbox:g,halfPadding:w}=await f0(i,a,E2(a,void 0),!0),v=f.insert("circle",":first-child");return v.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",g.width/2+w).attr("width",g.width+a.padding).attr("height",g.height+a.padding),Wt.info("Circle main"),kf(a,v),a.intersect=function(b){return Wt.info("Circle intersect",a,g.width/2+w,b),Gh.circle(a,g.width/2+w,b)},f},IKe=async(i,a)=>{const{shapeSvg:f,bbox:g,halfPadding:w}=await f0(i,a,E2(a,void 0),!0),v=5,b=f.insert("g",":first-child"),E=b.insert("circle"),_=b.insert("circle");return b.attr("class",a.class),E.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",g.width/2+w+v).attr("width",g.width+a.padding+v*2).attr("height",g.height+a.padding+v*2),_.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",g.width/2+w).attr("width",g.width+a.padding).attr("height",g.height+a.padding),Wt.info("DoubleCircle main"),kf(a,E),a.intersect=function(S){return Wt.info("DoubleCircle intersect",a,g.width/2+w+v,S),Gh.circle(a,g.width/2+w+v,S)},f},OKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await f0(i,a,E2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:0,y:0},{x:w,y:0},{x:w,y:-v},{x:0,y:-v},{x:0,y:0},{x:-8,y:0},{x:w+8,y:0},{x:w+8,y:-v},{x:-8,y:-v},{x:-8,y:0}],E=Bx(f,w,v,b);return E.attr("style",a.style),kf(a,E),a.intersect=function(_){return Gh.polygon(a,b,_)},f},PKe=(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),g=f.insert("circle",":first-child");return g.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),kf(a,g),a.intersect=function(w){return Gh.circle(a,7,w)},f},H$t=(i,a,f)=>{const g=i.insert("g").attr("class","node default").attr("id",a.domId||a.id);let w=70,v=10;f==="LR"&&(w=10,v=70);const b=g.append("rect").attr("x",-1*w/2).attr("y",-1*v/2).attr("width",w).attr("height",v).attr("class","fork-join");return kf(a,b),a.height=a.height+a.padding/2,a.width=a.width+a.padding/2,a.intersect=function(E){return Gh.rect(a,E)},g},V$t={rhombus:z$t,question:z$t,rect:SKe,labelRect:AKe,rectWithTitle:LKe,choice:mKe,circle:DKe,doublecircle:IKe,stadium:MKe,hexagon:vKe,rect_left_inv_arrow:yKe,lean_right:xKe,lean_left:kKe,trapezoid:EKe,inv_trapezoid:TKe,rect_right_inv_arrow:CKe,cylinder:_Ke,start:PKe,end:(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),g=f.insert("circle",":first-child"),w=f.insert("circle",":first-child");return w.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),g.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),kf(a,w),a.intersect=function(v){return Gh.circle(a,7,v)},f},note:wKe,subroutine:OKe,fork:H$t,join:H$t,class_box:(i,a)=>{const f=a.padding/2,g=4,w=8;let v;a.classes?v="node "+a.classes:v="node default";const b=i.insert("g").attr("class",v).attr("id",a.domId||a.id),E=b.insert("rect",":first-child"),_=b.insert("line"),S=b.insert("line");let I=0,B=g;const F=b.insert("g").attr("class","label");let R=0;const q=a.classData.annotations&&a.classData.annotations[0],X=a.classData.annotations[0]?"«"+a.classData.annotations[0]+"»":"",rt=F.node().appendChild(ib(X,a.labelStyle,!0,!0));let at=rt.getBBox();if(B1(Re().flowchart.htmlLabels)){const bt=rt.children[0],Z=xr(rt);at=bt.getBoundingClientRect(),Z.attr("width",at.width),Z.attr("height",at.height)}a.classData.annotations[0]&&(B+=at.height+g,I+=at.width);let ut=a.classData.label;a.classData.type!==void 0&&a.classData.type!==""&&(Re().flowchart.htmlLabels?ut+="<"+a.classData.type+">":ut+="<"+a.classData.type+">");const pt=F.node().appendChild(ib(ut,a.labelStyle,!0,!0));xr(pt).attr("class","classTitle");let yt=pt.getBBox();if(B1(Re().flowchart.htmlLabels)){const bt=pt.children[0],Z=xr(pt);yt=bt.getBoundingClientRect(),Z.attr("width",yt.width),Z.attr("height",yt.height)}B+=yt.height+g,yt.width>I&&(I=yt.width);const mt=[];a.classData.members.forEach(bt=>{const Z=bt.getDisplayDetails();let ft=Z.displayText;Re().flowchart.htmlLabels&&(ft=ft.replace(//g,">"));const Y=F.node().appendChild(ib(ft,Z.cssStyle?Z.cssStyle:a.labelStyle,!0,!0));let Et=Y.getBBox();if(B1(Re().flowchart.htmlLabels)){const V=Y.children[0],Nt=xr(Y);Et=V.getBoundingClientRect(),Nt.attr("width",Et.width),Nt.attr("height",Et.height)}Et.width>I&&(I=Et.width),B+=Et.height+g,mt.push(Y)}),B+=w;const gt=[];if(a.classData.methods.forEach(bt=>{const Z=bt.getDisplayDetails();let ft=Z.displayText;Re().flowchart.htmlLabels&&(ft=ft.replace(//g,">"));const Y=F.node().appendChild(ib(ft,Z.cssStyle?Z.cssStyle:a.labelStyle,!0,!0));let Et=Y.getBBox();if(B1(Re().flowchart.htmlLabels)){const V=Y.children[0],Nt=xr(Y);Et=V.getBoundingClientRect(),Nt.attr("width",Et.width),Nt.attr("height",Et.height)}Et.width>I&&(I=Et.width),B+=Et.height+g,gt.push(Y)}),B+=w,q){let bt=(I-at.width)/2;xr(rt).attr("transform","translate( "+(-1*I/2+bt)+", "+-1*B/2+")"),R=at.height+g}let ht=(I-yt.width)/2;return xr(pt).attr("transform","translate( "+(-1*I/2+ht)+", "+(-1*B/2+R)+")"),R+=yt.height+g,_.attr("class","divider").attr("x1",-I/2-f).attr("x2",I/2+f).attr("y1",-B/2-f+w+R).attr("y2",-B/2-f+w+R),R+=w,mt.forEach(bt=>{xr(bt).attr("transform","translate( "+-I/2+", "+(-1*B/2+R+w/2)+")");const Z=bt==null?void 0:bt.getBBox();R+=((Z==null?void 0:Z.height)??0)+g}),R+=w,S.attr("class","divider").attr("x1",-I/2-f).attr("x2",I/2+f).attr("y1",-B/2-f+w+R).attr("y2",-B/2-f+w+R),R+=w,gt.forEach(bt=>{xr(bt).attr("transform","translate( "+-I/2+", "+(-1*B/2+R)+")");const Z=bt==null?void 0:bt.getBBox();R+=((Z==null?void 0:Z.height)??0)+g}),E.attr("style",a.style).attr("class","outer title-state").attr("x",-I/2-f).attr("y",-(B/2)-f).attr("width",I+a.padding).attr("height",B+a.padding),kf(a,E),a.intersect=function(bt){return Gh.rect(a,bt)},b}};let bM={};const U$t=async(i,a,f)=>{let g,w;if(a.link){let v;Re().securityLevel==="sandbox"?v="_top":a.linkTarget&&(v=a.linkTarget||"_blank"),g=i.insert("svg:a").attr("xlink:href",a.link).attr("target",v),w=await V$t[a.shape](g,a,f)}else w=await V$t[a.shape](i,a,f),g=w;return a.tooltip&&w.attr("title",a.tooltip),a.class&&w.attr("class","node default "+a.class),bM[a.id]=g,a.haveCallback&&bM[a.id].attr("class",bM[a.id].attr("class")+" clickable"),g},NKe=(i,a)=>{bM[a.id]=i},FKe=()=>{bM={}},G$t=i=>{const a=bM[i.id];Wt.trace("Transforming node",i.diff,i,"translate("+(i.x-i.width/2-5)+", "+i.width/2+")");const f=8,g=i.diff||0;return i.clusterNode?a.attr("transform","translate("+(i.x+g-i.width/2)+", "+(i.y-i.height/2-f)+")"):a.attr("transform","translate("+i.x+", "+i.y+")"),g},BKe={rect:(i,a)=>{Wt.info("Creating subgraph rect for ",a.id,a);const f=i.insert("g").attr("class","cluster"+(a.class?" "+a.class:"")).attr("id",a.id),g=f.insert("rect",":first-child"),w=B1(Re().flowchart.htmlLabels),v=f.insert("g").attr("class","cluster-label"),b=a.labelType==="markdown"?XY(v,a.labelText,{style:a.labelStyle,useHtmlLabels:w}):v.node().appendChild(ib(a.labelText,a.labelStyle,void 0,!0));let E=b.getBBox();if(B1(Re().flowchart.htmlLabels)){const F=b.children[0],R=xr(b);E=F.getBoundingClientRect(),R.attr("width",E.width),R.attr("height",E.height)}const _=0*a.padding,S=_/2,I=a.width<=E.width+_?E.width+_:a.width;a.width<=E.width+_?a.diff=(E.width-a.width)/2-a.padding/2:a.diff=-a.padding/2,Wt.trace("Data ",a,JSON.stringify(a)),g.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("x",a.x-I/2).attr("y",a.y-a.height/2-S).attr("width",I).attr("height",a.height+_),w?v.attr("transform","translate("+(a.x-E.width/2)+", "+(a.y-a.height/2)+")"):v.attr("transform","translate("+a.x+", "+(a.y-a.height/2)+")");const B=g.node().getBBox();return a.width=B.width,a.height=B.height,a.intersect=function(F){return KF(a,F)},f},roundedWithTitle:(i,a)=>{const f=i.insert("g").attr("class",a.classes).attr("id",a.id),g=f.insert("rect",":first-child"),w=f.insert("g").attr("class","cluster-label"),v=f.append("rect"),b=w.node().appendChild(ib(a.labelText,a.labelStyle,void 0,!0));let E=b.getBBox();if(B1(Re().flowchart.htmlLabels)){const F=b.children[0],R=xr(b);E=F.getBoundingClientRect(),R.attr("width",E.width),R.attr("height",E.height)}E=b.getBBox();const _=0*a.padding,S=_/2,I=a.width<=E.width+a.padding?E.width+a.padding:a.width;a.width<=E.width+a.padding?a.diff=(E.width+a.padding*0-a.width)/2:a.diff=-a.padding/2,g.attr("class","outer").attr("x",a.x-I/2-S).attr("y",a.y-a.height/2-S).attr("width",I+_).attr("height",a.height+_),v.attr("class","inner").attr("x",a.x-I/2-S).attr("y",a.y-a.height/2-S+E.height-1).attr("width",I+_).attr("height",a.height+_-E.height-3),w.attr("transform","translate("+(a.x-E.width/2)+", "+(a.y-a.height/2-a.padding/3+(B1(Re().flowchart.htmlLabels)?5:3))+")");const B=g.node().getBBox();return a.height=B.height,a.intersect=function(F){return KF(a,F)},f},noteGroup:(i,a)=>{const f=i.insert("g").attr("class","note-cluster").attr("id",a.id),g=f.insert("rect",":first-child"),w=0*a.padding,v=w/2;g.attr("rx",a.rx).attr("ry",a.ry).attr("x",a.x-a.width/2-v).attr("y",a.y-a.height/2-v).attr("width",a.width+w).attr("height",a.height+w).attr("fill","none");const b=g.node().getBBox();return a.width=b.width,a.height=b.height,a.intersect=function(E){return KF(a,E)},f},divider:(i,a)=>{const f=i.insert("g").attr("class",a.classes).attr("id",a.id),g=f.insert("rect",":first-child"),w=0*a.padding,v=w/2;g.attr("class","divider").attr("x",a.x-a.width/2-v).attr("y",a.y-a.height/2).attr("width",a.width+w).attr("height",a.height+w);const b=g.node().getBBox();return a.width=b.width,a.height=b.height,a.diff=-a.padding/2,a.intersect=function(E){return KF(a,E)},f}};let K$t={};const RKe=(i,a)=>{Wt.trace("Inserting cluster");const f=a.shape||"rect";K$t[a.id]=BKe[f](i,a)},jKe=()=>{K$t={}},k8={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:5.3};function ZY(i,a){if(i===void 0||a===void 0)return{angle:0,deltaX:0,deltaY:0};i=tX(i),a=tX(a);const[f,g]=[i.x,i.y],[w,v]=[a.x,a.y],b=w-f,E=v-g;return{angle:Math.atan(E/b),deltaX:b,deltaY:E}}const tX=i=>Array.isArray(i)?{x:i[0],y:i[1]}:i,W$t=i=>({x:function(a,f,g){let w=0;if(f===0&&Object.hasOwn(k8,i.arrowTypeStart)){const{angle:v,deltaX:b}=ZY(g[0],g[1]);w=k8[i.arrowTypeStart]*Math.cos(v)*(b>=0?1:-1)}else if(f===g.length-1&&Object.hasOwn(k8,i.arrowTypeEnd)){const{angle:v,deltaX:b}=ZY(g[g.length-1],g[g.length-2]);w=k8[i.arrowTypeEnd]*Math.cos(v)*(b>=0?1:-1)}return tX(a).x+w},y:function(a,f,g){let w=0;if(f===0&&Object.hasOwn(k8,i.arrowTypeStart)){const{angle:v,deltaY:b}=ZY(g[0],g[1]);w=k8[i.arrowTypeStart]*Math.abs(Math.sin(v))*(b>=0?1:-1)}else if(f===g.length-1&&Object.hasOwn(k8,i.arrowTypeEnd)){const{angle:v,deltaY:b}=ZY(g[g.length-1],g[g.length-2]);w=k8[i.arrowTypeEnd]*Math.abs(Math.sin(v))*(b>=0?1:-1)}return tX(a).y+w}}),Y$t=(i,a,f,g,w)=>{a.arrowTypeStart&&X$t(i,"start",a.arrowTypeStart,f,g,w),a.arrowTypeEnd&&X$t(i,"end",a.arrowTypeEnd,f,g,w)},$Ke={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},X$t=(i,a,f,g,w,v)=>{const b=$Ke[f];if(!b){Wt.warn(`Unknown arrow type: ${f}`);return}const E=a==="start"?"Start":"End";i.attr(`marker-${a}`,`url(${g}#${w}_${v}-${b}${E})`)};let eX={},d0={};const zKe=()=>{eX={},d0={}},Q$t=(i,a)=>{const f=B1(Re().flowchart.htmlLabels),g=a.labelType==="markdown"?XY(i,a.label,{style:a.labelStyle,useHtmlLabels:f,addSvgBackground:!0}):ib(a.label,a.labelStyle);Wt.info("abc82",a,a.labelType);const w=i.insert("g").attr("class","edgeLabel"),v=w.insert("g").attr("class","label");v.node().appendChild(g);let b=g.getBBox();if(f){const _=g.children[0],S=xr(g);b=_.getBoundingClientRect(),S.attr("width",b.width),S.attr("height",b.height)}v.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"),eX[a.id]=w,a.width=b.width,a.height=b.height;let E;if(a.startLabelLeft){const _=ib(a.startLabelLeft,a.labelStyle),S=i.insert("g").attr("class","edgeTerminals"),I=S.insert("g").attr("class","inner");E=I.node().appendChild(_);const B=_.getBBox();I.attr("transform","translate("+-B.width/2+", "+-B.height/2+")"),d0[a.id]||(d0[a.id]={}),d0[a.id].startLeft=S,nX(E,a.startLabelLeft)}if(a.startLabelRight){const _=ib(a.startLabelRight,a.labelStyle),S=i.insert("g").attr("class","edgeTerminals"),I=S.insert("g").attr("class","inner");E=S.node().appendChild(_),I.node().appendChild(_);const B=_.getBBox();I.attr("transform","translate("+-B.width/2+", "+-B.height/2+")"),d0[a.id]||(d0[a.id]={}),d0[a.id].startRight=S,nX(E,a.startLabelRight)}if(a.endLabelLeft){const _=ib(a.endLabelLeft,a.labelStyle),S=i.insert("g").attr("class","edgeTerminals"),I=S.insert("g").attr("class","inner");E=I.node().appendChild(_);const B=_.getBBox();I.attr("transform","translate("+-B.width/2+", "+-B.height/2+")"),S.node().appendChild(_),d0[a.id]||(d0[a.id]={}),d0[a.id].endLeft=S,nX(E,a.endLabelLeft)}if(a.endLabelRight){const _=ib(a.endLabelRight,a.labelStyle),S=i.insert("g").attr("class","edgeTerminals"),I=S.insert("g").attr("class","inner");E=I.node().appendChild(_);const B=_.getBBox();I.attr("transform","translate("+-B.width/2+", "+-B.height/2+")"),S.node().appendChild(_),d0[a.id]||(d0[a.id]={}),d0[a.id].endRight=S,nX(E,a.endLabelRight)}return g};function nX(i,a){Re().flowchart.htmlLabels&&i&&(i.style.width=a.length*9+"px",i.style.height="12px")}const qKe=(i,a)=>{Wt.info("Moving label abc78 ",i.id,i.label,eX[i.id]);let f=a.updatedPath?a.updatedPath:a.originalPath;if(i.label){const g=eX[i.id];let w=i.x,v=i.y;if(f){const b=ao.calcLabelPosition(f);Wt.info("Moving label "+i.label+" from (",w,",",v,") to (",b.x,",",b.y,") abc78"),a.updatedPath&&(w=b.x,v=b.y)}g.attr("transform","translate("+w+", "+v+")")}if(i.startLabelLeft){const g=d0[i.id].startLeft;let w=i.x,v=i.y;if(f){const b=ao.calcTerminalLabelPosition(i.arrowTypeStart?10:0,"start_left",f);w=b.x,v=b.y}g.attr("transform","translate("+w+", "+v+")")}if(i.startLabelRight){const g=d0[i.id].startRight;let w=i.x,v=i.y;if(f){const b=ao.calcTerminalLabelPosition(i.arrowTypeStart?10:0,"start_right",f);w=b.x,v=b.y}g.attr("transform","translate("+w+", "+v+")")}if(i.endLabelLeft){const g=d0[i.id].endLeft;let w=i.x,v=i.y;if(f){const b=ao.calcTerminalLabelPosition(i.arrowTypeEnd?10:0,"end_left",f);w=b.x,v=b.y}g.attr("transform","translate("+w+", "+v+")")}if(i.endLabelRight){const g=d0[i.id].endRight;let w=i.x,v=i.y;if(f){const b=ao.calcTerminalLabelPosition(i.arrowTypeEnd?10:0,"end_right",f);w=b.x,v=b.y}g.attr("transform","translate("+w+", "+v+")")}},HKe=(i,a)=>{const f=i.x,g=i.y,w=Math.abs(a.x-f),v=Math.abs(a.y-g),b=i.width/2,E=i.height/2;return w>=b||v>=E},VKe=(i,a,f)=>{Wt.warn(`intersection calc abc89: + outsidePoint: ${JSON.stringify(a)} + insidePoint : ${JSON.stringify(f)} + node : x:${i.x} y:${i.y} w:${i.width} h:${i.height}`);const g=i.x,w=i.y,v=Math.abs(g-f.x),b=i.width/2;let E=f.xMath.abs(g-a.x)*_){let B=f.y{Wt.warn("abc88 cutPathAtIntersect",i,a);let f=[],g=i[0],w=!1;return i.forEach(v=>{if(Wt.info("abc88 checking point",v,a),!HKe(a,v)&&!w){const b=VKe(a,g,v);Wt.warn("abc88 inside",v,g,b),Wt.warn("abc88 intersection",b);let E=!1;f.forEach(_=>{E=E||_.x===b.x&&_.y===b.y}),f.some(_=>_.x===b.x&&_.y===b.y)?Wt.warn("abc88 no intersect",b,f):f.push(b),w=!0}else Wt.warn("abc88 outside",v,g),g=v,w||f.push(v)}),Wt.warn("abc88 returning points",f),f},UKe=function(i,a,f,g,w,v,b){let E=f.points,_=!1;const S=v.node(a.v);var I=v.node(a.w);Wt.info("abc88 InsertEdge: ",f),I.intersect&&S.intersect&&(E=E.slice(1,f.points.length-1),E.unshift(S.intersect(E[0])),Wt.info("Last point",E[E.length-1],I,I.intersect(E[E.length-1])),E.push(I.intersect(E[E.length-1]))),f.toCluster&&(Wt.info("to cluster abc88",g[f.toCluster]),E=J$t(f.points,g[f.toCluster].node),_=!0),f.fromCluster&&(Wt.info("from cluster abc88",g[f.fromCluster]),E=J$t(E.reverse(),g[f.fromCluster].node).reverse(),_=!0);const B=E.filter(yt=>!Number.isNaN(yt.y));let F=lF;f.curve&&(w==="graph"||w==="flowchart")&&(F=f.curve);const{x:R,y:q}=W$t(f),X=Cx().x(R).y(q).curve(F);let rt;switch(f.thickness){case"normal":rt="edge-thickness-normal";break;case"thick":rt="edge-thickness-thick";break;case"invisible":rt="edge-thickness-thick";break;default:rt=""}switch(f.pattern){case"solid":rt+=" edge-pattern-solid";break;case"dotted":rt+=" edge-pattern-dotted";break;case"dashed":rt+=" edge-pattern-dashed";break}const at=i.append("path").attr("d",X(B)).attr("id",f.id).attr("class"," "+rt+(f.classes?" "+f.classes:"")).attr("style",f.style);let ut="";(Re().flowchart.arrowMarkerAbsolute||Re().state.arrowMarkerAbsolute)&&(ut=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,ut=ut.replace(/\(/g,"\\("),ut=ut.replace(/\)/g,"\\)")),Wt.info("arrowTypeStart",f.arrowTypeStart),Wt.info("arrowTypeEnd",f.arrowTypeEnd),Y$t(at,f,ut,b,w);let pt={};return _&&(pt.updatedPath=E),pt.originalPath=f.points,pt},Z$t=async(i,a,f,g,w)=>{Wt.info("Graph in recursive render: XXX",Fx(a),w);const v=a.graph().rankdir;Wt.trace("Dir in recursive render - dir:",v);const b=i.insert("g").attr("class","root");a.nodes()?Wt.info("Recursive render XXX",a.nodes()):Wt.info("No nodes found for",a),a.edges().length>0&&Wt.trace("Recursive edges",a.edge(a.edges()[0]));const E=b.insert("g").attr("class","clusters"),_=b.insert("g").attr("class","edgePaths"),S=b.insert("g").attr("class","edgeLabels"),I=b.insert("g").attr("class","nodes");await Promise.all(a.nodes().map(async function(F){const R=a.node(F);if(w!==void 0){const q=JSON.parse(JSON.stringify(w.clusterData));Wt.info("Setting data for cluster XXX (",F,") ",q,w),a.setNode(w.id,q),a.parent(F)||(Wt.trace("Setting parent",F,w.id),a.setParent(F,w.id,q))}if(Wt.info("(Insert) Node XXX"+F+": "+JSON.stringify(a.node(F))),R&&R.clusterNode){Wt.info("Cluster identified",F,R.width,a.node(F));const q=await Z$t(I,R.graph,f,g,a.node(F)),X=q.elem;kf(R,X),R.diff=q.diff||0,Wt.info("Node bounds (abc123)",F,R,R.width,R.x,R.y),NKe(X,R),Wt.warn("Recursive render complete ",X,R)}else a.children(F).length>0?(Wt.info("Cluster - the non recursive path XXX",F,R.id,R,a),Wt.info(GF(R.id,a)),sc[R.id]={id:GF(R.id,a),node:R}):(Wt.info("Node - the non recursive path",F,R.id,R),await U$t(I,a.node(F),v))})),a.edges().forEach(function(F){const R=a.edge(F.v,F.w,F.name);Wt.info("Edge "+F.v+" -> "+F.w+": "+JSON.stringify(F)),Wt.info("Edge "+F.v+" -> "+F.w+": ",F," ",JSON.stringify(a.edge(F))),Wt.info("Fix",sc,"ids:",F.v,F.w,"Translateing: ",sc[F.v],sc[F.w]),Q$t(S,R)}),a.edges().forEach(function(F){Wt.info("Edge "+F.v+" -> "+F.w+": "+JSON.stringify(F))}),Wt.info("#############################################"),Wt.info("### Layout ###"),Wt.info("#############################################"),Wt.info(a),gM(a),Wt.info("Graph after layout:",Fx(a));let B=0;return fKe(a).forEach(function(F){const R=a.node(F);Wt.info("Position "+F+": "+JSON.stringify(a.node(F))),Wt.info("Position "+F+": ("+R.x,","+R.y,") width: ",R.width," height: ",R.height),R&&R.clusterNode?G$t(R):a.children(F).length>0?(RKe(E,R),sc[R.id].node=R):G$t(R)}),a.edges().forEach(function(F){const R=a.edge(F);Wt.info("Edge "+F.v+" -> "+F.w+": "+JSON.stringify(R),R);const q=UKe(_,F,R,sc,f,a,g);qKe(R,q)}),a.nodes().forEach(function(F){const R=a.node(F);Wt.info(F,R.type,R.diff),R.type==="group"&&(B=R.diff)}),{elem:b,diff:B}},Vpt=async(i,a,f,g,w)=>{r$t(i,f,g,w),FKe(),zKe(),jKe(),uKe(),Wt.warn("Graph at first:",JSON.stringify(Fx(a))),hKe(a),Wt.warn("Graph after:",JSON.stringify(Fx(a))),await Z$t(i,a,g,w)},tzt={},GKe=function(i){const a=Object.keys(i);for(const f of a)tzt[f]=i[f]},ezt=function(i,a,f,g,w,v){const b=g.select(`[id="${f}"]`);Object.keys(i).forEach(function(_){const S=i[_];let I="default";S.classes.length>0&&(I=S.classes.join(" ")),I=I+" flowchart-label";const B=Uw(S.styles);let F=S.text!==void 0?S.text:S.id,R;if(Wt.info("vertex",S,S.labelType),S.labelType==="markdown")Wt.info("vertex",S,S.labelType);else if(B1(Re().flowchart.htmlLabels)){const rt={label:F.replace(/fa[blrs]?:fa-[\w-]+/g,at=>``)};R=Tpt(b,rt).node(),R.parentNode.removeChild(R)}else{const rt=w.createElementNS("http://www.w3.org/2000/svg","text");rt.setAttribute("style",B.labelStyle.replace("color:","fill:"));const at=F.split(ei.lineBreakRegex);for(const ut of at){const pt=w.createElementNS("http://www.w3.org/2000/svg","tspan");pt.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),pt.setAttribute("dy","1em"),pt.setAttribute("x","1"),pt.textContent=ut,rt.appendChild(pt)}R=rt}let q=0,X="";switch(S.type){case"round":q=5,X="rect";break;case"square":X="rect";break;case"diamond":X="question";break;case"hexagon":X="hexagon";break;case"odd":X="rect_left_inv_arrow";break;case"lean_right":X="lean_right";break;case"lean_left":X="lean_left";break;case"trapezoid":X="trapezoid";break;case"inv_trapezoid":X="inv_trapezoid";break;case"odd_right":X="rect_left_inv_arrow";break;case"circle":X="circle";break;case"ellipse":X="ellipse";break;case"stadium":X="stadium";break;case"subroutine":X="subroutine";break;case"cylinder":X="cylinder";break;case"group":X="rect";break;case"doublecircle":X="doublecircle";break;default:X="rect"}a.setNode(S.id,{labelStyle:B.labelStyle,shape:X,labelText:F,labelType:S.labelType,rx:q,ry:q,class:I,style:B.style,id:S.id,link:S.link,linkTarget:S.linkTarget,tooltip:v.db.getTooltip(S.id)||"",domId:v.db.lookUpDomId(S.id),haveCallback:S.haveCallback,width:S.type==="group"?500:void 0,dir:S.dir,type:S.type,props:S.props,padding:Re().flowchart.padding}),Wt.info("setNode",{labelStyle:B.labelStyle,labelType:S.labelType,shape:X,labelText:F,rx:q,ry:q,class:I,style:B.style,id:S.id,domId:v.db.lookUpDomId(S.id),width:S.type==="group"?500:void 0,type:S.type,dir:S.dir,props:S.props,padding:Re().flowchart.padding})})},nzt=function(i,a,f){Wt.info("abc78 edges = ",i);let g=0,w={},v,b;if(i.defaultStyle!==void 0){const E=Uw(i.defaultStyle);v=E.style,b=E.labelStyle}i.forEach(function(E){g++;const _="L-"+E.start+"-"+E.end;w[_]===void 0?(w[_]=0,Wt.info("abc78 new entry",_,w[_])):(w[_]++,Wt.info("abc78 new entry",_,w[_]));let S=_+"-"+w[_];Wt.info("abc78 new link id to be used is",_,S,w[_]);const I="LS-"+E.start,B="LE-"+E.end,F={style:"",labelStyle:""};switch(F.minlen=E.length||1,E.type==="arrow_open"?F.arrowhead="none":F.arrowhead="normal",F.arrowTypeStart="arrow_open",F.arrowTypeEnd="arrow_open",E.type){case"double_arrow_cross":F.arrowTypeStart="arrow_cross";case"arrow_cross":F.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":F.arrowTypeStart="arrow_point";case"arrow_point":F.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":F.arrowTypeStart="arrow_circle";case"arrow_circle":F.arrowTypeEnd="arrow_circle";break}let R="",q="";switch(E.stroke){case"normal":R="fill:none;",v!==void 0&&(R=v),b!==void 0&&(q=b),F.thickness="normal",F.pattern="solid";break;case"dotted":F.thickness="normal",F.pattern="dotted",F.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":F.thickness="thick",F.pattern="solid",F.style="stroke-width: 3.5px;fill:none;";break;case"invisible":F.thickness="invisible",F.pattern="solid",F.style="stroke-width: 0;fill:none;";break}if(E.style!==void 0){const X=Uw(E.style);R=X.style,q=X.labelStyle}F.style=F.style+=R,F.labelStyle=F.labelStyle+=q,E.interpolate!==void 0?F.curve=Vw(E.interpolate,Vg):i.defaultInterpolate!==void 0?F.curve=Vw(i.defaultInterpolate,Vg):F.curve=Vw(tzt.curve,Vg),E.text===void 0?E.style!==void 0&&(F.arrowheadStyle="fill: #333"):(F.arrowheadStyle="fill: #333",F.labelpos="c"),F.labelType=E.labelType,F.label=E.text.replace(ei.lineBreakRegex,` +`),E.style===void 0&&(F.style=F.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),F.labelStyle=F.labelStyle.replace("color:","fill:"),F.id=S,F.classes="flowchart-link "+I+" "+B,a.setEdge(E.start,E.end,F,g)})},Upt={setConf:GKe,addVertices:ezt,addEdges:nzt,getClasses:function(i,a){return a.db.getClasses()},draw:async function(i,a,f,g){Wt.info("Drawing flowchart");let w=g.db.getDirection();w===void 0&&(w="TD");const{securityLevel:v,flowchart:b}=Re(),E=b.nodeSpacing||50,_=b.rankSpacing||50;let S;v==="sandbox"&&(S=xr("#i"+a));const I=xr(v==="sandbox"?S.nodes()[0].contentDocument.body:"body"),B=v==="sandbox"?S.nodes()[0].contentDocument:document,F=new R1({multigraph:!0,compound:!0}).setGraph({rankdir:w,nodesep:E,ranksep:_,marginx:0,marginy:0}).setDefaultEdgeLabel(function(){return{}});let R;const q=g.db.getSubGraphs();Wt.info("Subgraphs - ",q);for(let mt=q.length-1;mt>=0;mt--)R=q[mt],Wt.info("Subgraph - ",R),g.db.addVertex(R.id,{text:R.title,type:R.labelType},"group",void 0,R.classes,R.dir);const X=g.db.getVertices(),rt=g.db.getEdges();Wt.info("Edges",rt);let at=0;for(at=q.length-1;at>=0;at--){R=q[at],SOt("cluster").append("text");for(let mt=0;mt{const f=KMe,g=f(i,"r"),w=f(i,"g"),v=f(i,"b");return qL(g,w,v,a)},rzt=i=>`.label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + .cluster-label text { + fill: ${i.titleColor}; + } + .cluster-label span,p { + color: ${i.titleColor}; + } + + .label text,span,p { + fill: ${i.nodeTextColor||i.textColor}; + color: ${i.nodeTextColor||i.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.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: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${i.edgeLabelBackground}; + fill: ${i.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${KKe(i.edgeLabelBackground,.5)}; + // background-color: + } + + .cluster rect { + fill: ${i.clusterBkg}; + stroke: ${i.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${i.titleColor}; + } + + .cluster span,p { + color: ${i.titleColor}; + } + /* .cluster div { + color: ${i.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${i.fontFamily}; + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`,WKe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Jgt,db:E9,renderer:Upt,styles:rzt,init:i=>{i.flowchart||(i.flowchart={}),i.flowchart.arrowMarkerAbsolute=i.arrowMarkerAbsolute,XVe.setConf(i.flowchart),E9.clear(),E9.setGen("gen-1")}}},Symbol.toStringTag,{value:"Module"})),YKe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Jgt,db:E9,renderer:Upt,styles:rzt,init:i=>{i.flowchart||(i.flowchart={}),i.flowchart.arrowMarkerAbsolute=i.arrowMarkerAbsolute,WPe({flowchart:{arrowMarkerAbsolute:i.arrowMarkerAbsolute}}),Upt.setConf(i.flowchart),E9.clear(),E9.setGen("gen-2")}}},Symbol.toStringTag,{value:"Module"}));var Gpt=function(){var i=function(bt,Z,ft,Y){for(ft=ft||{},Y=bt.length;Y--;ft[bt[Y]]=Z);return ft},a=[6,8,10,20,22,24,26,27,28],f=[1,10],g=[1,11],w=[1,12],v=[1,13],b=[1,14],E=[1,15],_=[1,21],S=[1,22],I=[1,23],B=[1,24],F=[1,25],R=[6,8,10,13,15,18,19,20,22,24,26,27,28,41,42,43,44,45],q=[1,34],X=[27,28,46,47],rt=[41,42,43,44,45],at=[17,34],ut=[1,54],pt=[1,53],yt=[17,34,36,38],mt={trace:function(){},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,":":13,role:14,BLOCK_START:15,attributes:16,BLOCK_STOP:17,SQS:18,SQE:19,title:20,title_value:21,acc_title:22,acc_title_value:23,acc_descr:24,acc_descr_value:25,acc_descr_multiline_value:26,ALPHANUM:27,ENTITY_NAME:28,attribute:29,attributeType:30,attributeName:31,attributeKeyTypeList:32,attributeComment:33,ATTRIBUTE_WORD:34,attributeKeyType:35,COMMA:36,ATTRIBUTE_KEY:37,COMMENT:38,cardinality:39,relType:40,ZERO_OR_ONE:41,ZERO_OR_MORE:42,ONE_OR_MORE:43,ONLY_ONE:44,MD_PARENT:45,NON_IDENTIFYING:46,IDENTIFYING:47,WORD:48,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:":",15:"BLOCK_START",17:"BLOCK_STOP",18:"SQS",19:"SQE",20:"title",21:"title_value",22:"acc_title",23:"acc_title_value",24:"acc_descr",25:"acc_descr_value",26:"acc_descr_multiline_value",27:"ALPHANUM",28:"ENTITY_NAME",34:"ATTRIBUTE_WORD",36:"COMMA",37:"ATTRIBUTE_KEY",38:"COMMENT",41:"ZERO_OR_ONE",42:"ZERO_OR_MORE",43:"ONE_OR_MORE",44:"ONLY_ONE",45:"MD_PARENT",46:"NON_IDENTIFYING",47:"IDENTIFYING",48:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,4],[9,3],[9,1],[9,7],[9,6],[9,4],[9,2],[9,2],[9,2],[9,1],[11,1],[11,1],[16,1],[16,2],[29,2],[29,3],[29,3],[29,4],[30,1],[31,1],[32,1],[32,3],[35,1],[33,1],[12,3],[39,1],[39,1],[39,1],[39,1],[39,1],[40,1],[40,1],[14,1],[14,1],[14,1]],performAction:function(Z,ft,Y,Et,V,Nt,Dt){var jt=Nt.length-1;switch(V){case 1:break;case 2:this.$=[];break;case 3:Nt[jt-1].push(Nt[jt]),this.$=Nt[jt-1];break;case 4:case 5:this.$=Nt[jt];break;case 6:case 7:this.$=[];break;case 8:Et.addEntity(Nt[jt-4]),Et.addEntity(Nt[jt-2]),Et.addRelationship(Nt[jt-4],Nt[jt],Nt[jt-2],Nt[jt-3]);break;case 9:Et.addEntity(Nt[jt-3]),Et.addAttributes(Nt[jt-3],Nt[jt-1]);break;case 10:Et.addEntity(Nt[jt-2]);break;case 11:Et.addEntity(Nt[jt]);break;case 12:Et.addEntity(Nt[jt-6],Nt[jt-4]),Et.addAttributes(Nt[jt-6],Nt[jt-1]);break;case 13:Et.addEntity(Nt[jt-5],Nt[jt-3]);break;case 14:Et.addEntity(Nt[jt-3],Nt[jt-1]);break;case 15:case 16:this.$=Nt[jt].trim(),Et.setAccTitle(this.$);break;case 17:case 18:this.$=Nt[jt].trim(),Et.setAccDescription(this.$);break;case 19:case 43:this.$=Nt[jt];break;case 20:case 41:case 42:this.$=Nt[jt].replace(/"/g,"");break;case 21:case 29:this.$=[Nt[jt]];break;case 22:Nt[jt].push(Nt[jt-1]),this.$=Nt[jt];break;case 23:this.$={attributeType:Nt[jt-1],attributeName:Nt[jt]};break;case 24:this.$={attributeType:Nt[jt-2],attributeName:Nt[jt-1],attributeKeyTypeList:Nt[jt]};break;case 25:this.$={attributeType:Nt[jt-2],attributeName:Nt[jt-1],attributeComment:Nt[jt]};break;case 26:this.$={attributeType:Nt[jt-3],attributeName:Nt[jt-2],attributeKeyTypeList:Nt[jt-1],attributeComment:Nt[jt]};break;case 27:case 28:case 31:this.$=Nt[jt];break;case 30:Nt[jt-2].push(Nt[jt]),this.$=Nt[jt-2];break;case 32:this.$=Nt[jt].replace(/"/g,"");break;case 33:this.$={cardA:Nt[jt],relType:Nt[jt-1],cardB:Nt[jt-2]};break;case 34:this.$=Et.Cardinality.ZERO_OR_ONE;break;case 35:this.$=Et.Cardinality.ZERO_OR_MORE;break;case 36:this.$=Et.Cardinality.ONE_OR_MORE;break;case 37:this.$=Et.Cardinality.ONLY_ONE;break;case 38:this.$=Et.Cardinality.MD_PARENT;break;case 39:this.$=Et.Identification.NON_IDENTIFYING;break;case 40:this.$=Et.Identification.IDENTIFYING;break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,20:f,22:g,24:w,26:v,27:b,28:E},i(a,[2,7],{1:[2,1]}),i(a,[2,3]),{9:16,11:9,20:f,22:g,24:w,26:v,27:b,28:E},i(a,[2,5]),i(a,[2,6]),i(a,[2,11],{12:17,39:20,15:[1,18],18:[1,19],41:_,42:S,43:I,44:B,45:F}),{21:[1,26]},{23:[1,27]},{25:[1,28]},i(a,[2,18]),i(R,[2,19]),i(R,[2,20]),i(a,[2,4]),{11:29,27:b,28:E},{16:30,17:[1,31],29:32,30:33,34:q},{11:35,27:b,28:E},{40:36,46:[1,37],47:[1,38]},i(X,[2,34]),i(X,[2,35]),i(X,[2,36]),i(X,[2,37]),i(X,[2,38]),i(a,[2,15]),i(a,[2,16]),i(a,[2,17]),{13:[1,39]},{17:[1,40]},i(a,[2,10]),{16:41,17:[2,21],29:32,30:33,34:q},{31:42,34:[1,43]},{34:[2,27]},{19:[1,44]},{39:45,41:_,42:S,43:I,44:B,45:F},i(rt,[2,39]),i(rt,[2,40]),{14:46,27:[1,49],28:[1,48],48:[1,47]},i(a,[2,9]),{17:[2,22]},i(at,[2,23],{32:50,33:51,35:52,37:ut,38:pt}),i([17,34,37,38],[2,28]),i(a,[2,14],{15:[1,55]}),i([27,28],[2,33]),i(a,[2,8]),i(a,[2,41]),i(a,[2,42]),i(a,[2,43]),i(at,[2,24],{33:56,36:[1,57],38:pt}),i(at,[2,25]),i(yt,[2,29]),i(at,[2,32]),i(yt,[2,31]),{16:58,17:[1,59],29:32,30:33,34:q},i(at,[2,26]),{35:60,37:ut},{17:[1,61]},i(a,[2,13]),i(yt,[2,30]),i(a,[2,12])],defaultActions:{34:[2,27],41:[2,22]},parseError:function(Z,ft){if(ft.recoverable)this.trace(Z);else{var Y=new Error(Z);throw Y.hash=ft,Y}},parse:function(Z){var ft=this,Y=[0],Et=[],V=[null],Nt=[],Dt=this.table,jt="",Ct=0,Ft=0,_t=2,xt=1,Gt=Nt.slice.call(arguments,1),Be=Object.create(this.lexer),Ot={yy:{}};for(var vn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,vn)&&(Ot.yy[vn]=this.yy[vn]);Be.setInput(Z,Ot.yy),Ot.yy.lexer=Be,Ot.yy.parser=this,typeof Be.yylloc>"u"&&(Be.yylloc={});var Pe=Be.yylloc;Nt.push(Pe);var Ee=Be.options&&Be.options.ranges;typeof Ot.yy.parseError=="function"?this.parseError=Ot.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function nn(){var Ri;return Ri=Et.pop()||Be.lex()||xt,typeof Ri!="number"&&(Ri instanceof Array&&(Et=Ri,Ri=Et.pop()),Ri=ft.symbols_[Ri]||Ri),Ri}for(var sn,me,Fe,Qt,Ae={},Se,Dn,oe,Pr;;){if(me=Y[Y.length-1],this.defaultActions[me]?Fe=this.defaultActions[me]:((sn===null||typeof sn>"u")&&(sn=nn()),Fe=Dt[me]&&Dt[me][sn]),typeof Fe>"u"||!Fe.length||!Fe[0]){var we="";Pr=[];for(Se in Dt[me])this.terminals_[Se]&&Se>_t&&Pr.push("'"+this.terminals_[Se]+"'");Be.showPosition?we="Parse error on line "+(Ct+1)+`: +`+Be.showPosition()+` +Expecting `+Pr.join(", ")+", got '"+(this.terminals_[sn]||sn)+"'":we="Parse error on line "+(Ct+1)+": Unexpected "+(sn==xt?"end of input":"'"+(this.terminals_[sn]||sn)+"'"),this.parseError(we,{text:Be.match,token:this.terminals_[sn]||sn,line:Be.yylineno,loc:Pe,expected:Pr})}if(Fe[0]instanceof Array&&Fe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+me+", token: "+sn);switch(Fe[0]){case 1:Y.push(sn),V.push(Be.yytext),Nt.push(Be.yylloc),Y.push(Fe[1]),sn=null,Ft=Be.yyleng,jt=Be.yytext,Ct=Be.yylineno,Pe=Be.yylloc;break;case 2:if(Dn=this.productions_[Fe[1]][1],Ae.$=V[V.length-Dn],Ae._$={first_line:Nt[Nt.length-(Dn||1)].first_line,last_line:Nt[Nt.length-1].last_line,first_column:Nt[Nt.length-(Dn||1)].first_column,last_column:Nt[Nt.length-1].last_column},Ee&&(Ae._$.range=[Nt[Nt.length-(Dn||1)].range[0],Nt[Nt.length-1].range[1]]),Qt=this.performAction.apply(Ae,[jt,Ft,Ct,Ot.yy,Fe[1],V,Nt].concat(Gt)),typeof Qt<"u")return Qt;Dn&&(Y=Y.slice(0,-1*Dn*2),V=V.slice(0,-1*Dn),Nt=Nt.slice(0,-1*Dn)),Y.push(this.productions_[Fe[1]][0]),V.push(Ae.$),Nt.push(Ae._$),oe=Dt[Y[Y.length-2]][Y[Y.length-1]],Y.push(oe);break;case 3:return!0}}return!0}},gt=function(){var bt={EOF:1,parseError:function(ft,Y){if(this.yy.parser)this.yy.parser.parseError(ft,Y);else throw new Error(ft)},setInput:function(Z,ft){return this.yy=ft||this.yy||{},this._input=Z,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},input:function(){var Z=this._input[0];this.yytext+=Z,this.yyleng++,this.offset++,this.match+=Z,this.matched+=Z;var ft=Z.match(/(?:\r\n?|\n).*/g);return ft?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Z},unput:function(Z){var ft=Z.length,Y=Z.split(/(?:\r\n?|\n)/g);this._input=Z+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ft),this.offset-=ft;var Et=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 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:Y?(Y.length===Et.length?this.yylloc.first_column:0)+Et[Et.length-Y.length].length-Y[0].length:this.yylloc.first_column-ft},this.options.ranges&&(this.yylloc.range=[V[0],V[0]+this.yyleng-ft]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(Z){this.unput(this.match.slice(Z))},pastInput:function(){var Z=this.matched.substr(0,this.matched.length-this.match.length);return(Z.length>20?"...":"")+Z.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Z=this.match;return Z.length<20&&(Z+=this._input.substr(0,20-Z.length)),(Z.substr(0,20)+(Z.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Z=this.pastInput(),ft=new Array(Z.length+1).join("-");return Z+this.upcomingInput()+` +`+ft+"^"},test_match:function(Z,ft){var Y,Et,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))),Et=Z[0].match(/(?:\r\n?|\n).*/g),Et&&(this.yylineno+=Et.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Et?Et[Et.length-1].length-Et[Et.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Z[0].length},this.yytext+=Z[0],this.match+=Z[0],this.matches=Z,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(Z[0].length),this.matched+=Z[0],Y=this.performAction.call(this,this.yy,this,ft,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Y)return Y;if(this._backtrack){for(var Nt in V)this[Nt]=V[Nt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Z,ft,Y,Et;this._more||(this.yytext="",this.match="");for(var V=this._currentRules(),Nt=0;Ntft[0].length)){if(ft=Y,Et=Nt,this.options.backtrack_lexer){if(Z=this.test_match(Y,V[Nt]),Z!==!1)return Z;if(this._backtrack){ft=!1;continue}else return!1}else if(!this.options.flex)break}return ft?(Z=this.test_match(ft,V[Et]),Z!==!1?Z:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var ft=this.next();return ft||this.lex()},begin:function(ft){this.conditionStack.push(ft)},popState:function(){var ft=this.conditionStack.length-1;return ft>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(ft){return ft=this.conditionStack.length-1-Math.abs(ft||0),ft>=0?this.conditionStack[ft]:"INITIAL"},pushState:function(ft){this.begin(ft)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(ft,Y,Et,V){switch(Et){case 0:return this.begin("acc_title"),22;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),24;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 10;case 8:break;case 9:return 8;case 10:return 28;case 11:return 48;case 12:return 4;case 13:return this.begin("block"),15;case 14:return 36;case 15:break;case 16:return 37;case 17:return 34;case 18:return 34;case 19:return 38;case 20:break;case 21:return this.popState(),17;case 22:return Y.yytext[0];case 23:return 18;case 24:return 19;case 25:return 41;case 26:return 43;case 27:return 43;case 28:return 43;case 29:return 41;case 30:return 41;case 31:return 42;case 32:return 42;case 33:return 42;case 34:return 42;case 35:return 42;case 36:return 43;case 37:return 42;case 38:return 43;case 39:return 44;case 40:return 44;case 41:return 44;case 42:return 44;case 43:return 41;case 44:return 42;case 45:return 43;case 46:return 45;case 47:return 46;case 48:return 47;case 49:return 47;case 50:return 46;case 51:return 46;case 52:return 46;case 53:return 27;case 54:return Y.yytext[0];case 55:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/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,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[14,15,16,17,18,19,20,21,22],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,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],inclusive:!0}}};return bt}();mt.lexer=gt;function ht(){this.yy={}}return ht.prototype=mt,mt.Parser=ht,new ht}();Gpt.parser=Gpt;const XKe=Gpt;let E8={},Kpt=[];const QKe={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"},JKe={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},izt=function(i,a=void 0){return E8[i]===void 0?(E8[i]={attributes:[],alias:a},Wt.info("Added new entity :",i)):E8[i]&&!E8[i].alias&&a&&(E8[i].alias=a,Wt.info(`Add alias '${a}' to entity '${i}'`)),E8[i]},ZKe={Cardinality:QKe,Identification:JKe,getConfig:()=>Re().er,addEntity:izt,addAttributes:function(i,a){let f=izt(i),g;for(g=a.length-1;g>=0;g--)f.attributes.push(a[g]),Wt.debug("Added attribute ",a[g].attributeName)},getEntities:()=>E8,addRelationship:function(i,a,f,g){let w={entityA:i,roleA:a,entityB:f,relSpec:g};Kpt.push(w),Wt.debug("Added new relationship :",w)},getRelationships:()=>Kpt,clear:function(){E8={},Kpt=[],Wg()},setAccTitle:ng,getAccTitle:Yg,setAccDescription:Xg,getAccDescription:Qg,setDiagramTitle:y2,getDiagramTitle:Jg},ty={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END",MD_PARENT_END:"MD_PARENT_END",MD_PARENT_START:"MD_PARENT_START"},ey={ERMarkers:ty,insertMarkers:function(i,a){let f;i.append("defs").append("marker").attr("id",ty.MD_PARENT_START).attr("refX",0).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"),i.append("defs").append("marker").attr("id",ty.MD_PARENT_END).attr("refX",19).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"),i.append("defs").append("marker").attr("id",ty.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),i.append("defs").append("marker").attr("id",ty.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),f=i.append("defs").append("marker").attr("id",ty.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M9,0 L9,18"),f=i.append("defs").append("marker").attr("id",ty.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M21,0 L21,18"),i.append("defs").append("marker").attr("id",ty.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),i.append("defs").append("marker").attr("id",ty.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),f=i.append("defs").append("marker").attr("id",ty.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),f=i.append("defs").append("marker").attr("id",ty.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")}},tWe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function eWe(i){return typeof i=="string"&&tWe.test(i)}const g0=[];for(let i=0;i<256;++i)g0.push((i+256).toString(16).slice(1));function nWe(i,a=0){return(g0[i[a+0]]+g0[i[a+1]]+g0[i[a+2]]+g0[i[a+3]]+"-"+g0[i[a+4]]+g0[i[a+5]]+"-"+g0[i[a+6]]+g0[i[a+7]]+"-"+g0[i[a+8]]+g0[i[a+9]]+"-"+g0[i[a+10]]+g0[i[a+11]]+g0[i[a+12]]+g0[i[a+13]]+g0[i[a+14]]+g0[i[a+15]]).toLowerCase()}function rWe(i){if(!eWe(i))throw TypeError("Invalid UUID");let a;const f=new Uint8Array(16);return f[0]=(a=parseInt(i.slice(0,8),16))>>>24,f[1]=a>>>16&255,f[2]=a>>>8&255,f[3]=a&255,f[4]=(a=parseInt(i.slice(9,13),16))>>>8,f[5]=a&255,f[6]=(a=parseInt(i.slice(14,18),16))>>>8,f[7]=a&255,f[8]=(a=parseInt(i.slice(19,23),16))>>>8,f[9]=a&255,f[10]=(a=parseInt(i.slice(24,36),16))/1099511627776&255,f[11]=a/4294967296&255,f[12]=a>>>24&255,f[13]=a>>>16&255,f[14]=a>>>8&255,f[15]=a&255,f}function iWe(i){i=unescape(encodeURIComponent(i));const a=[];for(let f=0;f>>32-a}function uWe(i){const a=[1518500249,1859775393,2400959708,3395469782],f=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof i=="string"){const b=unescape(encodeURIComponent(i));i=[];for(let E=0;E>>0;F=B,B=I,I=Wpt(S,30)>>>0,S=_,_=X}f[0]=f[0]+_>>>0,f[1]=f[1]+S>>>0,f[2]=f[2]+I>>>0,f[3]=f[3]+B>>>0,f[4]=f[4]+F>>>0}return[f[0]>>24&255,f[0]>>16&255,f[0]>>8&255,f[0]&255,f[1]>>24&255,f[1]>>16&255,f[1]>>8&255,f[1]&255,f[2]>>24&255,f[2]>>16&255,f[2]>>8&255,f[2]&255,f[3]>>24&255,f[3]>>16&255,f[3]>>8&255,f[3]&255,f[4]>>24&255,f[4]>>16&255,f[4]>>8&255,f[4]&255]}const lWe=oWe("v5",80,uWe),hWe=/[^\dA-Za-z](\W)*/g;let j1={},WF=new Map;const fWe=function(i){const a=Object.keys(i);for(const f of a)j1[f]=i[f]},dWe=(i,a,f)=>{const g=j1.entityPadding/3,w=j1.entityPadding/3,v=j1.fontSize*.85,b=a.node().getBBox(),E=[];let _=!1,S=!1,I=0,B=0,F=0,R=0,q=b.height+g*2,X=1;f.forEach(pt=>{pt.attributeKeyTypeList!==void 0&&pt.attributeKeyTypeList.length>0&&(_=!0),pt.attributeComment!==void 0&&(S=!0)}),f.forEach(pt=>{const yt=`${a.node().id}-attr-${X}`;let mt=0;const gt=pF(pt.attributeType),ht=i.append("text").classed("er entityLabel",!0).attr("id",`${yt}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Re().fontFamily).style("font-size",v+"px").text(gt),bt=i.append("text").classed("er entityLabel",!0).attr("id",`${yt}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Re().fontFamily).style("font-size",v+"px").text(pt.attributeName),Z={};Z.tn=ht,Z.nn=bt;const ft=ht.node().getBBox(),Y=bt.node().getBBox();if(I=Math.max(I,ft.width),B=Math.max(B,Y.width),mt=Math.max(ft.height,Y.height),_){const Et=pt.attributeKeyTypeList!==void 0?pt.attributeKeyTypeList.join(","):"",V=i.append("text").classed("er entityLabel",!0).attr("id",`${yt}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Re().fontFamily).style("font-size",v+"px").text(Et);Z.kn=V;const Nt=V.node().getBBox();F=Math.max(F,Nt.width),mt=Math.max(mt,Nt.height)}if(S){const Et=i.append("text").classed("er entityLabel",!0).attr("id",`${yt}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Re().fontFamily).style("font-size",v+"px").text(pt.attributeComment||"");Z.cn=Et;const V=Et.node().getBBox();R=Math.max(R,V.width),mt=Math.max(mt,V.height)}Z.height=mt,E.push(Z),q+=mt+g*2,X+=1});let rt=4;_&&(rt+=2),S&&(rt+=2);const at=I+B+F+R,ut={width:Math.max(j1.minEntityWidth,Math.max(b.width+j1.entityPadding*2,at+w*rt)),height:f.length>0?q:Math.max(j1.minEntityHeight,b.height+j1.entityPadding*2)};if(f.length>0){const pt=Math.max(0,(ut.width-at-w*rt)/(rt/2));a.attr("transform","translate("+ut.width/2+","+(g+b.height/2)+")");let yt=b.height+g*2,mt="attributeBoxOdd";E.forEach(gt=>{const ht=yt+g+gt.height/2;gt.tn.attr("transform","translate("+w+","+ht+")");const bt=i.insert("rect","#"+gt.tn.node().id).classed(`er ${mt}`,!0).attr("x",0).attr("y",yt).attr("width",I+w*2+pt).attr("height",gt.height+g*2),Z=parseFloat(bt.attr("x"))+parseFloat(bt.attr("width"));gt.nn.attr("transform","translate("+(Z+w)+","+ht+")");const ft=i.insert("rect","#"+gt.nn.node().id).classed(`er ${mt}`,!0).attr("x",Z).attr("y",yt).attr("width",B+w*2+pt).attr("height",gt.height+g*2);let Y=parseFloat(ft.attr("x"))+parseFloat(ft.attr("width"));if(_){gt.kn.attr("transform","translate("+(Y+w)+","+ht+")");const Et=i.insert("rect","#"+gt.kn.node().id).classed(`er ${mt}`,!0).attr("x",Y).attr("y",yt).attr("width",F+w*2+pt).attr("height",gt.height+g*2);Y=parseFloat(Et.attr("x"))+parseFloat(Et.attr("width"))}S&&(gt.cn.attr("transform","translate("+(Y+w)+","+ht+")"),i.insert("rect","#"+gt.cn.node().id).classed(`er ${mt}`,"true").attr("x",Y).attr("y",yt).attr("width",R+w*2+pt).attr("height",gt.height+g*2)),yt+=gt.height+g*2,mt=mt==="attributeBoxOdd"?"attributeBoxEven":"attributeBoxOdd"})}else ut.height=Math.max(j1.minEntityHeight,q),a.attr("transform","translate("+ut.width/2+","+ut.height/2+")");return ut},gWe=function(i,a,f){const g=Object.keys(a);let w;return g.forEach(function(v){const b=yWe(v,"entity");WF.set(v,b);const E=i.append("g").attr("id",b);w=w===void 0?b:w;const _="text-"+b,S=E.append("text").classed("er entityLabel",!0).attr("id",_).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",Re().fontFamily).style("font-size",j1.fontSize+"px").text(a[v].alias??v),{width:I,height:B}=dWe(E,S,a[v].attributes),R=E.insert("rect","#"+_).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",I).attr("height",B).node().getBBox();f.setNode(b,{width:R.width,height:R.height,shape:"rect",id:b})}),w},pWe=function(i,a){a.nodes().forEach(function(f){f!==void 0&&a.node(f)!==void 0&&i.select("#"+f).attr("transform","translate("+(a.node(f).x-a.node(f).width/2)+","+(a.node(f).y-a.node(f).height/2)+" )")})},szt=function(i){return(i.entityA+i.roleA+i.entityB).replace(/\s/g,"")},bWe=function(i,a){return i.forEach(function(f){a.setEdge(WF.get(f.entityA),WF.get(f.entityB),{relationship:f},szt(f))}),i};let azt=0;const wWe=function(i,a,f,g,w){azt++;const v=f.edge(WF.get(a.entityA),WF.get(a.entityB),szt(a)),b=Cx().x(function(q){return q.x}).y(function(q){return q.y}).curve(lF),E=i.insert("path","#"+g).classed("er relationshipLine",!0).attr("d",b(v.points)).style("stroke",j1.stroke).style("fill","none");a.relSpec.relType===w.db.Identification.NON_IDENTIFYING&&E.attr("stroke-dasharray","8,8");let _="";switch(j1.arrowMarkerAbsolute&&(_=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,_=_.replace(/\(/g,"\\("),_=_.replace(/\)/g,"\\)")),a.relSpec.cardA){case w.db.Cardinality.ZERO_OR_ONE:E.attr("marker-end","url("+_+"#"+ey.ERMarkers.ZERO_OR_ONE_END+")");break;case w.db.Cardinality.ZERO_OR_MORE:E.attr("marker-end","url("+_+"#"+ey.ERMarkers.ZERO_OR_MORE_END+")");break;case w.db.Cardinality.ONE_OR_MORE:E.attr("marker-end","url("+_+"#"+ey.ERMarkers.ONE_OR_MORE_END+")");break;case w.db.Cardinality.ONLY_ONE:E.attr("marker-end","url("+_+"#"+ey.ERMarkers.ONLY_ONE_END+")");break;case w.db.Cardinality.MD_PARENT:E.attr("marker-end","url("+_+"#"+ey.ERMarkers.MD_PARENT_END+")");break}switch(a.relSpec.cardB){case w.db.Cardinality.ZERO_OR_ONE:E.attr("marker-start","url("+_+"#"+ey.ERMarkers.ZERO_OR_ONE_START+")");break;case w.db.Cardinality.ZERO_OR_MORE:E.attr("marker-start","url("+_+"#"+ey.ERMarkers.ZERO_OR_MORE_START+")");break;case w.db.Cardinality.ONE_OR_MORE:E.attr("marker-start","url("+_+"#"+ey.ERMarkers.ONE_OR_MORE_START+")");break;case w.db.Cardinality.ONLY_ONE:E.attr("marker-start","url("+_+"#"+ey.ERMarkers.ONLY_ONE_START+")");break;case w.db.Cardinality.MD_PARENT:E.attr("marker-start","url("+_+"#"+ey.ERMarkers.MD_PARENT_START+")");break}const S=E.node().getTotalLength(),I=E.node().getPointAtLength(S*.5),B="rel"+azt,R=i.append("text").classed("er relationshipLabel",!0).attr("id",B).attr("x",I.x).attr("y",I.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",Re().fontFamily).style("font-size",j1.fontSize+"px").text(a.roleA).node().getBBox();i.insert("rect","#"+B).classed("er relationshipLabelBox",!0).attr("x",I.x-R.width/2).attr("y",I.y-R.height/2).attr("width",R.width).attr("height",R.height)},mWe=function(i,a,f,g){j1=Re().er,Wt.info("Drawing ER diagram");const w=Re().securityLevel;let v;w==="sandbox"&&(v=xr("#i"+a));const E=xr(w==="sandbox"?v.nodes()[0].contentDocument.body:"body").select(`[id='${a}']`);ey.insertMarkers(E,j1);let _;_=new R1({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:j1.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});const S=gWe(E,g.db.getEntities(),_),I=bWe(g.db.getRelationships(),_);gM(_),pWe(E,_),I.forEach(function(X){wWe(E,X,_,S,g)});const B=j1.diagramPadding;ao.insertTitle(E,"entityTitleText",j1.titleTopMargin,g.db.getDiagramTitle());const F=E.node().getBBox(),R=F.width+B*2,q=F.height+B*2;Kg(E,q,R,j1.useMaxWidth),E.attr("viewBox",`${F.x-B} ${F.y-B} ${R} ${q}`)},vWe="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function yWe(i="",a=""){const f=i.replace(hWe,"");return`${ozt(a)}${ozt(f)}${lWe(i,vWe)}`}function ozt(i=""){return i.length>0?`${i}-`:""}const xWe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:XKe,db:ZKe,renderer:{setConf:fWe,draw:mWe},styles:i=>` + .entityBox { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + } + + .attributeBoxOdd { + fill: ${i.attributeBackgroundColorOdd}; + stroke: ${i.nodeBorder}; + } + + .attributeBoxEven { + fill: ${i.attributeBackgroundColorEven}; + stroke: ${i.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${i.tertiaryColor}; + opacity: 0.7; + background-color: ${i.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .relationshipLine { + stroke: ${i.lineColor}; + } + + .entityTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } + #MD_PARENT_START { + fill: #f5f5f5 !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; + } + #MD_PARENT_END { + fill: #f5f5f5 !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; + } + +`}},Symbol.toStringTag,{value:"Module"}));var Ypt=function(){var i=function(mt,gt,ht,bt){for(ht=ht||{},bt=mt.length;bt--;ht[mt[bt]]=gt);return ht},a=[1,3],f=[1,6],g=[1,4],w=[1,5],v=[2,5],b=[1,12],E=[5,7,13,19,21,23,24,26,28,31,37,40,47],_=[7,13,19,21,23,24,26,28,31,37,40],S=[7,12,13,19,21,23,24,26,28,31,37,40],I=[7,13,47],B=[1,42],F=[1,41],R=[7,13,29,32,35,38,47],q=[1,55],X=[1,56],rt=[1,57],at=[7,13,32,35,42,47],ut={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,GG:5,document:6,EOF:7,":":8,DIR:9,options:10,body:11,OPT:12,NL:13,line:14,statement:15,commitStatement:16,mergeStatement:17,cherryPickStatement:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,section:24,branchStatement:25,CHECKOUT:26,ref:27,BRANCH:28,ORDER:29,NUM:30,CHERRY_PICK:31,COMMIT_ID:32,STR:33,PARENT_COMMIT:34,COMMIT_TAG:35,EMPTYSTR:36,MERGE:37,COMMIT_TYPE:38,commitType:39,COMMIT:40,commit_arg:41,COMMIT_MSG:42,NORMAL:43,REVERSE:44,HIGHLIGHT:45,ID:46,";":47,$accept:0,$end:1},terminals_:{2:"error",5:"GG",7:"EOF",8:":",9:"DIR",12:"OPT",13:"NL",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"section",26:"CHECKOUT",28:"BRANCH",29:"ORDER",30:"NUM",31:"CHERRY_PICK",32:"COMMIT_ID",33:"STR",34:"PARENT_COMMIT",35:"COMMIT_TAG",36:"EMPTYSTR",37:"MERGE",38:"COMMIT_TYPE",40:"COMMIT",42:"COMMIT_MSG",43:"NORMAL",44:"REVERSE",45:"HIGHLIGHT",46:"ID",47:";"},productions_:[0,[3,2],[3,3],[3,4],[3,5],[6,0],[6,2],[10,2],[10,1],[11,0],[11,2],[14,2],[14,1],[15,1],[15,1],[15,1],[15,2],[15,2],[15,1],[15,1],[15,1],[15,2],[25,2],[25,4],[18,3],[18,5],[18,5],[18,7],[18,7],[18,5],[18,5],[18,5],[18,7],[18,7],[18,7],[18,7],[17,2],[17,4],[17,4],[17,4],[17,6],[17,6],[17,6],[17,6],[17,6],[17,6],[17,8],[17,8],[17,8],[17,8],[17,8],[17,8],[16,2],[16,3],[16,3],[16,5],[16,5],[16,3],[16,5],[16,5],[16,5],[16,5],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,3],[16,5],[16,5],[16,5],[16,5],[16,5],[16,5],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[41,0],[41,1],[39,1],[39,1],[39,1],[27,1],[27,1],[4,1],[4,1],[4,1]],performAction:function(gt,ht,bt,Z,ft,Y,Et){var V=Y.length-1;switch(ft){case 2:return Y[V];case 3:return Y[V-1];case 4:return Z.setDirection(Y[V-3]),Y[V-1];case 6:Z.setOptions(Y[V-1]),this.$=Y[V];break;case 7:Y[V-1]+=Y[V],this.$=Y[V-1];break;case 9:this.$=[];break;case 10:Y[V-1].push(Y[V]),this.$=Y[V-1];break;case 11:this.$=Y[V-1];break;case 16:this.$=Y[V].trim(),Z.setAccTitle(this.$);break;case 17:case 18:this.$=Y[V].trim(),Z.setAccDescription(this.$);break;case 19:Z.addSection(Y[V].substr(8)),this.$=Y[V].substr(8);break;case 21:Z.checkout(Y[V]);break;case 22:Z.branch(Y[V]);break;case 23:Z.branch(Y[V-2],Y[V]);break;case 24:Z.cherryPick(Y[V],"",void 0);break;case 25:Z.cherryPick(Y[V-2],"",void 0,Y[V]);break;case 26:Z.cherryPick(Y[V-2],"",Y[V]);break;case 27:Z.cherryPick(Y[V-4],"",Y[V],Y[V-2]);break;case 28:Z.cherryPick(Y[V-4],"",Y[V-2],Y[V]);break;case 29:Z.cherryPick(Y[V],"",Y[V-2]);break;case 30:Z.cherryPick(Y[V],"","");break;case 31:Z.cherryPick(Y[V-2],"","");break;case 32:Z.cherryPick(Y[V-4],"","",Y[V-2]);break;case 33:Z.cherryPick(Y[V-4],"","",Y[V]);break;case 34:Z.cherryPick(Y[V-2],"",Y[V-4],Y[V]);break;case 35:Z.cherryPick(Y[V-2],"","",Y[V]);break;case 36:Z.merge(Y[V],"","","");break;case 37:Z.merge(Y[V-2],Y[V],"","");break;case 38:Z.merge(Y[V-2],"",Y[V],"");break;case 39:Z.merge(Y[V-2],"","",Y[V]);break;case 40:Z.merge(Y[V-4],Y[V],"",Y[V-2]);break;case 41:Z.merge(Y[V-4],"",Y[V],Y[V-2]);break;case 42:Z.merge(Y[V-4],"",Y[V-2],Y[V]);break;case 43:Z.merge(Y[V-4],Y[V-2],Y[V],"");break;case 44:Z.merge(Y[V-4],Y[V-2],"",Y[V]);break;case 45:Z.merge(Y[V-4],Y[V],Y[V-2],"");break;case 46:Z.merge(Y[V-6],Y[V-4],Y[V-2],Y[V]);break;case 47:Z.merge(Y[V-6],Y[V],Y[V-4],Y[V-2]);break;case 48:Z.merge(Y[V-6],Y[V-4],Y[V],Y[V-2]);break;case 49:Z.merge(Y[V-6],Y[V-2],Y[V-4],Y[V]);break;case 50:Z.merge(Y[V-6],Y[V],Y[V-2],Y[V-4]);break;case 51:Z.merge(Y[V-6],Y[V-2],Y[V],Y[V-4]);break;case 52:Z.commit(Y[V]);break;case 53:Z.commit("","",Z.commitType.NORMAL,Y[V]);break;case 54:Z.commit("","",Y[V],"");break;case 55:Z.commit("","",Y[V],Y[V-2]);break;case 56:Z.commit("","",Y[V-2],Y[V]);break;case 57:Z.commit("",Y[V],Z.commitType.NORMAL,"");break;case 58:Z.commit("",Y[V-2],Z.commitType.NORMAL,Y[V]);break;case 59:Z.commit("",Y[V],Z.commitType.NORMAL,Y[V-2]);break;case 60:Z.commit("",Y[V-2],Y[V],"");break;case 61:Z.commit("",Y[V],Y[V-2],"");break;case 62:Z.commit("",Y[V-4],Y[V-2],Y[V]);break;case 63:Z.commit("",Y[V-4],Y[V],Y[V-2]);break;case 64:Z.commit("",Y[V-2],Y[V-4],Y[V]);break;case 65:Z.commit("",Y[V],Y[V-4],Y[V-2]);break;case 66:Z.commit("",Y[V],Y[V-2],Y[V-4]);break;case 67:Z.commit("",Y[V-2],Y[V],Y[V-4]);break;case 68:Z.commit(Y[V],"",Z.commitType.NORMAL,"");break;case 69:Z.commit(Y[V],"",Z.commitType.NORMAL,Y[V-2]);break;case 70:Z.commit(Y[V-2],"",Z.commitType.NORMAL,Y[V]);break;case 71:Z.commit(Y[V-2],"",Y[V],"");break;case 72:Z.commit(Y[V],"",Y[V-2],"");break;case 73:Z.commit(Y[V],Y[V-2],Z.commitType.NORMAL,"");break;case 74:Z.commit(Y[V-2],Y[V],Z.commitType.NORMAL,"");break;case 75:Z.commit(Y[V-4],"",Y[V-2],Y[V]);break;case 76:Z.commit(Y[V-4],"",Y[V],Y[V-2]);break;case 77:Z.commit(Y[V-2],"",Y[V-4],Y[V]);break;case 78:Z.commit(Y[V],"",Y[V-4],Y[V-2]);break;case 79:Z.commit(Y[V],"",Y[V-2],Y[V-4]);break;case 80:Z.commit(Y[V-2],"",Y[V],Y[V-4]);break;case 81:Z.commit(Y[V-4],Y[V],Y[V-2],"");break;case 82:Z.commit(Y[V-4],Y[V-2],Y[V],"");break;case 83:Z.commit(Y[V-2],Y[V],Y[V-4],"");break;case 84:Z.commit(Y[V],Y[V-2],Y[V-4],"");break;case 85:Z.commit(Y[V],Y[V-4],Y[V-2],"");break;case 86:Z.commit(Y[V-2],Y[V-4],Y[V],"");break;case 87:Z.commit(Y[V-4],Y[V],Z.commitType.NORMAL,Y[V-2]);break;case 88:Z.commit(Y[V-4],Y[V-2],Z.commitType.NORMAL,Y[V]);break;case 89:Z.commit(Y[V-2],Y[V],Z.commitType.NORMAL,Y[V-4]);break;case 90:Z.commit(Y[V],Y[V-2],Z.commitType.NORMAL,Y[V-4]);break;case 91:Z.commit(Y[V],Y[V-4],Z.commitType.NORMAL,Y[V-2]);break;case 92:Z.commit(Y[V-2],Y[V-4],Z.commitType.NORMAL,Y[V]);break;case 93:Z.commit(Y[V-6],Y[V-4],Y[V-2],Y[V]);break;case 94:Z.commit(Y[V-6],Y[V-4],Y[V],Y[V-2]);break;case 95:Z.commit(Y[V-6],Y[V-2],Y[V-4],Y[V]);break;case 96:Z.commit(Y[V-6],Y[V],Y[V-4],Y[V-2]);break;case 97:Z.commit(Y[V-6],Y[V-2],Y[V],Y[V-4]);break;case 98:Z.commit(Y[V-6],Y[V],Y[V-2],Y[V-4]);break;case 99:Z.commit(Y[V-4],Y[V-6],Y[V-2],Y[V]);break;case 100:Z.commit(Y[V-4],Y[V-6],Y[V],Y[V-2]);break;case 101:Z.commit(Y[V-2],Y[V-6],Y[V-4],Y[V]);break;case 102:Z.commit(Y[V],Y[V-6],Y[V-4],Y[V-2]);break;case 103:Z.commit(Y[V-2],Y[V-6],Y[V],Y[V-4]);break;case 104:Z.commit(Y[V],Y[V-6],Y[V-2],Y[V-4]);break;case 105:Z.commit(Y[V],Y[V-4],Y[V-2],Y[V-6]);break;case 106:Z.commit(Y[V-2],Y[V-4],Y[V],Y[V-6]);break;case 107:Z.commit(Y[V],Y[V-2],Y[V-4],Y[V-6]);break;case 108:Z.commit(Y[V-2],Y[V],Y[V-4],Y[V-6]);break;case 109:Z.commit(Y[V-4],Y[V-2],Y[V],Y[V-6]);break;case 110:Z.commit(Y[V-4],Y[V],Y[V-2],Y[V-6]);break;case 111:Z.commit(Y[V-2],Y[V-4],Y[V-6],Y[V]);break;case 112:Z.commit(Y[V],Y[V-4],Y[V-6],Y[V-2]);break;case 113:Z.commit(Y[V-2],Y[V],Y[V-6],Y[V-4]);break;case 114:Z.commit(Y[V],Y[V-2],Y[V-6],Y[V-4]);break;case 115:Z.commit(Y[V-4],Y[V-2],Y[V-6],Y[V]);break;case 116:Z.commit(Y[V-4],Y[V],Y[V-6],Y[V-2]);break;case 117:this.$="";break;case 118:this.$=Y[V];break;case 119:this.$=Z.commitType.NORMAL;break;case 120:this.$=Z.commitType.REVERSE;break;case 121:this.$=Z.commitType.HIGHLIGHT;break}},table:[{3:1,4:2,5:a,7:f,13:g,47:w},{1:[3]},{3:7,4:2,5:a,7:f,13:g,47:w},{6:8,7:v,8:[1,9],9:[1,10],10:11,13:b},i(E,[2,124]),i(E,[2,125]),i(E,[2,126]),{1:[2,1]},{7:[1,13]},{6:14,7:v,10:11,13:b},{8:[1,15]},i(_,[2,9],{11:16,12:[1,17]}),i(S,[2,8]),{1:[2,2]},{7:[1,18]},{6:19,7:v,10:11,13:b},{7:[2,6],13:[1,22],14:20,15:21,16:23,17:24,18:25,19:[1,26],21:[1,27],23:[1,28],24:[1,29],25:30,26:[1,31],28:[1,35],31:[1,34],37:[1,33],40:[1,32]},i(S,[2,7]),{1:[2,3]},{7:[1,36]},i(_,[2,10]),{4:37,7:f,13:g,47:w},i(_,[2,12]),i(I,[2,13]),i(I,[2,14]),i(I,[2,15]),{20:[1,38]},{22:[1,39]},i(I,[2,18]),i(I,[2,19]),i(I,[2,20]),{27:40,33:B,46:F},i(I,[2,117],{41:43,32:[1,46],33:[1,48],35:[1,44],38:[1,45],42:[1,47]}),{27:49,33:B,46:F},{32:[1,50],35:[1,51]},{27:52,33:B,46:F},{1:[2,4]},i(_,[2,11]),i(I,[2,16]),i(I,[2,17]),i(I,[2,21]),i(R,[2,122]),i(R,[2,123]),i(I,[2,52]),{33:[1,53]},{39:54,43:q,44:X,45:rt},{33:[1,58]},{33:[1,59]},i(I,[2,118]),i(I,[2,36],{32:[1,60],35:[1,62],38:[1,61]}),{33:[1,63]},{33:[1,64],36:[1,65]},i(I,[2,22],{29:[1,66]}),i(I,[2,53],{32:[1,68],38:[1,67],42:[1,69]}),i(I,[2,54],{32:[1,71],35:[1,70],42:[1,72]}),i(at,[2,119]),i(at,[2,120]),i(at,[2,121]),i(I,[2,57],{35:[1,73],38:[1,74],42:[1,75]}),i(I,[2,68],{32:[1,78],35:[1,76],38:[1,77]}),{33:[1,79]},{39:80,43:q,44:X,45:rt},{33:[1,81]},i(I,[2,24],{34:[1,82],35:[1,83]}),{32:[1,84]},{32:[1,85]},{30:[1,86]},{39:87,43:q,44:X,45:rt},{33:[1,88]},{33:[1,89]},{33:[1,90]},{33:[1,91]},{33:[1,92]},{33:[1,93]},{39:94,43:q,44:X,45:rt},{33:[1,95]},{33:[1,96]},{39:97,43:q,44:X,45:rt},{33:[1,98]},i(I,[2,37],{35:[1,100],38:[1,99]}),i(I,[2,38],{32:[1,102],35:[1,101]}),i(I,[2,39],{32:[1,103],38:[1,104]}),{33:[1,105]},{33:[1,106],36:[1,107]},{33:[1,108]},{33:[1,109]},i(I,[2,23]),i(I,[2,55],{32:[1,110],42:[1,111]}),i(I,[2,59],{38:[1,112],42:[1,113]}),i(I,[2,69],{32:[1,115],38:[1,114]}),i(I,[2,56],{32:[1,116],42:[1,117]}),i(I,[2,61],{35:[1,118],42:[1,119]}),i(I,[2,72],{32:[1,121],35:[1,120]}),i(I,[2,58],{38:[1,122],42:[1,123]}),i(I,[2,60],{35:[1,124],42:[1,125]}),i(I,[2,73],{35:[1,127],38:[1,126]}),i(I,[2,70],{32:[1,129],38:[1,128]}),i(I,[2,71],{32:[1,131],35:[1,130]}),i(I,[2,74],{35:[1,133],38:[1,132]}),{39:134,43:q,44:X,45:rt},{33:[1,135]},{33:[1,136]},{33:[1,137]},{33:[1,138]},{39:139,43:q,44:X,45:rt},i(I,[2,25],{35:[1,140]}),i(I,[2,26],{34:[1,141]}),i(I,[2,31],{34:[1,142]}),i(I,[2,29],{34:[1,143]}),i(I,[2,30],{34:[1,144]}),{33:[1,145]},{33:[1,146]},{39:147,43:q,44:X,45:rt},{33:[1,148]},{39:149,43:q,44:X,45:rt},{33:[1,150]},{33:[1,151]},{33:[1,152]},{33:[1,153]},{33:[1,154]},{33:[1,155]},{33:[1,156]},{39:157,43:q,44:X,45:rt},{33:[1,158]},{33:[1,159]},{33:[1,160]},{39:161,43:q,44:X,45:rt},{33:[1,162]},{39:163,43:q,44:X,45:rt},{33:[1,164]},{33:[1,165]},{33:[1,166]},{39:167,43:q,44:X,45:rt},{33:[1,168]},i(I,[2,43],{35:[1,169]}),i(I,[2,44],{38:[1,170]}),i(I,[2,42],{32:[1,171]}),i(I,[2,45],{35:[1,172]}),i(I,[2,40],{38:[1,173]}),i(I,[2,41],{32:[1,174]}),{33:[1,175],36:[1,176]},{33:[1,177]},{33:[1,178]},{33:[1,179]},{33:[1,180]},i(I,[2,66],{42:[1,181]}),i(I,[2,79],{32:[1,182]}),i(I,[2,67],{42:[1,183]}),i(I,[2,90],{38:[1,184]}),i(I,[2,80],{32:[1,185]}),i(I,[2,89],{38:[1,186]}),i(I,[2,65],{42:[1,187]}),i(I,[2,78],{32:[1,188]}),i(I,[2,64],{42:[1,189]}),i(I,[2,84],{35:[1,190]}),i(I,[2,77],{32:[1,191]}),i(I,[2,83],{35:[1,192]}),i(I,[2,63],{42:[1,193]}),i(I,[2,91],{38:[1,194]}),i(I,[2,62],{42:[1,195]}),i(I,[2,85],{35:[1,196]}),i(I,[2,86],{35:[1,197]}),i(I,[2,92],{38:[1,198]}),i(I,[2,76],{32:[1,199]}),i(I,[2,87],{38:[1,200]}),i(I,[2,75],{32:[1,201]}),i(I,[2,81],{35:[1,202]}),i(I,[2,82],{35:[1,203]}),i(I,[2,88],{38:[1,204]}),{33:[1,205]},{39:206,43:q,44:X,45:rt},{33:[1,207]},{33:[1,208]},{39:209,43:q,44:X,45:rt},{33:[1,210]},i(I,[2,27]),i(I,[2,32]),i(I,[2,28]),i(I,[2,33]),i(I,[2,34]),i(I,[2,35]),{33:[1,211]},{33:[1,212]},{33:[1,213]},{39:214,43:q,44:X,45:rt},{33:[1,215]},{39:216,43:q,44:X,45:rt},{33:[1,217]},{33:[1,218]},{33:[1,219]},{33:[1,220]},{33:[1,221]},{33:[1,222]},{33:[1,223]},{39:224,43:q,44:X,45:rt},{33:[1,225]},{33:[1,226]},{33:[1,227]},{39:228,43:q,44:X,45:rt},{33:[1,229]},{39:230,43:q,44:X,45:rt},{33:[1,231]},{33:[1,232]},{33:[1,233]},{39:234,43:q,44:X,45:rt},i(I,[2,46]),i(I,[2,48]),i(I,[2,47]),i(I,[2,49]),i(I,[2,51]),i(I,[2,50]),i(I,[2,107]),i(I,[2,108]),i(I,[2,105]),i(I,[2,106]),i(I,[2,110]),i(I,[2,109]),i(I,[2,114]),i(I,[2,113]),i(I,[2,112]),i(I,[2,111]),i(I,[2,116]),i(I,[2,115]),i(I,[2,104]),i(I,[2,103]),i(I,[2,102]),i(I,[2,101]),i(I,[2,99]),i(I,[2,100]),i(I,[2,98]),i(I,[2,97]),i(I,[2,96]),i(I,[2,95]),i(I,[2,93]),i(I,[2,94])],defaultActions:{7:[2,1],13:[2,2],18:[2,3],36:[2,4]},parseError:function(gt,ht){if(ht.recoverable)this.trace(gt);else{var bt=new Error(gt);throw bt.hash=ht,bt}},parse:function(gt){var ht=this,bt=[0],Z=[],ft=[null],Y=[],Et=this.table,V="",Nt=0,Dt=0,jt=2,Ct=1,Ft=Y.slice.call(arguments,1),_t=Object.create(this.lexer),xt={yy:{}};for(var Gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Gt)&&(xt.yy[Gt]=this.yy[Gt]);_t.setInput(gt,xt.yy),xt.yy.lexer=_t,xt.yy.parser=this,typeof _t.yylloc>"u"&&(_t.yylloc={});var Be=_t.yylloc;Y.push(Be);var Ot=_t.options&&_t.options.ranges;typeof xt.yy.parseError=="function"?this.parseError=xt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function vn(){var oe;return oe=Z.pop()||_t.lex()||Ct,typeof oe!="number"&&(oe instanceof Array&&(Z=oe,oe=Z.pop()),oe=ht.symbols_[oe]||oe),oe}for(var Pe,Ee,nn,sn,me={},Fe,Qt,Ae,Se;;){if(Ee=bt[bt.length-1],this.defaultActions[Ee]?nn=this.defaultActions[Ee]:((Pe===null||typeof Pe>"u")&&(Pe=vn()),nn=Et[Ee]&&Et[Ee][Pe]),typeof nn>"u"||!nn.length||!nn[0]){var Dn="";Se=[];for(Fe in Et[Ee])this.terminals_[Fe]&&Fe>jt&&Se.push("'"+this.terminals_[Fe]+"'");_t.showPosition?Dn="Parse error on line "+(Nt+1)+`: +`+_t.showPosition()+` +Expecting `+Se.join(", ")+", got '"+(this.terminals_[Pe]||Pe)+"'":Dn="Parse error on line "+(Nt+1)+": Unexpected "+(Pe==Ct?"end of input":"'"+(this.terminals_[Pe]||Pe)+"'"),this.parseError(Dn,{text:_t.match,token:this.terminals_[Pe]||Pe,line:_t.yylineno,loc:Be,expected:Se})}if(nn[0]instanceof Array&&nn.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ee+", token: "+Pe);switch(nn[0]){case 1:bt.push(Pe),ft.push(_t.yytext),Y.push(_t.yylloc),bt.push(nn[1]),Pe=null,Dt=_t.yyleng,V=_t.yytext,Nt=_t.yylineno,Be=_t.yylloc;break;case 2:if(Qt=this.productions_[nn[1]][1],me.$=ft[ft.length-Qt],me._$={first_line:Y[Y.length-(Qt||1)].first_line,last_line:Y[Y.length-1].last_line,first_column:Y[Y.length-(Qt||1)].first_column,last_column:Y[Y.length-1].last_column},Ot&&(me._$.range=[Y[Y.length-(Qt||1)].range[0],Y[Y.length-1].range[1]]),sn=this.performAction.apply(me,[V,Dt,Nt,xt.yy,nn[1],ft,Y].concat(Ft)),typeof sn<"u")return sn;Qt&&(bt=bt.slice(0,-1*Qt*2),ft=ft.slice(0,-1*Qt),Y=Y.slice(0,-1*Qt)),bt.push(this.productions_[nn[1]][0]),ft.push(me.$),Y.push(me._$),Ae=Et[bt[bt.length-2]][bt[bt.length-1]],bt.push(Ae);break;case 3:return!0}}return!0}},pt=function(){var mt={EOF:1,parseError:function(ht,bt){if(this.yy.parser)this.yy.parser.parseError(ht,bt);else throw new Error(ht)},setInput:function(gt,ht){return this.yy=ht||this.yy||{},this._input=gt,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},input:function(){var gt=this._input[0];this.yytext+=gt,this.yyleng++,this.offset++,this.match+=gt,this.matched+=gt;var ht=gt.match(/(?:\r\n?|\n).*/g);return ht?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),gt},unput:function(gt){var ht=gt.length,bt=gt.split(/(?:\r\n?|\n)/g);this._input=gt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ht),this.offset-=ht;var Z=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),bt.length-1&&(this.yylineno-=bt.length-1);var ft=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:bt?(bt.length===Z.length?this.yylloc.first_column:0)+Z[Z.length-bt.length].length-bt[0].length:this.yylloc.first_column-ht},this.options.ranges&&(this.yylloc.range=[ft[0],ft[0]+this.yyleng-ht]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(gt){this.unput(this.match.slice(gt))},pastInput:function(){var gt=this.matched.substr(0,this.matched.length-this.match.length);return(gt.length>20?"...":"")+gt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var gt=this.match;return gt.length<20&&(gt+=this._input.substr(0,20-gt.length)),(gt.substr(0,20)+(gt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var gt=this.pastInput(),ht=new Array(gt.length+1).join("-");return gt+this.upcomingInput()+` +`+ht+"^"},test_match:function(gt,ht){var bt,Z,ft;if(this.options.backtrack_lexer&&(ft={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&&(ft.yylloc.range=this.yylloc.range.slice(0))),Z=gt[0].match(/(?:\r\n?|\n).*/g),Z&&(this.yylineno+=Z.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Z?Z[Z.length-1].length-Z[Z.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+gt[0].length},this.yytext+=gt[0],this.match+=gt[0],this.matches=gt,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(gt[0].length),this.matched+=gt[0],bt=this.performAction.call(this,this.yy,this,ht,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),bt)return bt;if(this._backtrack){for(var Y in ft)this[Y]=ft[Y];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var gt,ht,bt,Z;this._more||(this.yytext="",this.match="");for(var ft=this._currentRules(),Y=0;Yht[0].length)){if(ht=bt,Z=Y,this.options.backtrack_lexer){if(gt=this.test_match(bt,ft[Y]),gt!==!1)return gt;if(this._backtrack){ht=!1;continue}else return!1}else if(!this.options.flex)break}return ht?(gt=this.test_match(ht,ft[Z]),gt!==!1?gt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var ht=this.next();return ht||this.lex()},begin:function(ht){this.conditionStack.push(ht)},popState:function(){var ht=this.conditionStack.length-1;return ht>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(ht){return ht=this.conditionStack.length-1-Math.abs(ht||0),ht>=0?this.conditionStack[ht]:"INITIAL"},pushState:function(ht){this.begin(ht)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(ht,bt,Z,ft){switch(Z){case 0:return this.begin("acc_title"),19;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),21;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 13;case 8:break;case 9:break;case 10:return 5;case 11:return 40;case 12:return 32;case 13:return 38;case 14:return 42;case 15:return 43;case 16:return 44;case 17:return 45;case 18:return 35;case 19:return 28;case 20:return 29;case 21:return 37;case 22:return 31;case 23:return 34;case 24:return 26;case 25:return 9;case 26:return 9;case 27:return 8;case 28:return"CARET";case 29:this.begin("options");break;case 30:this.popState();break;case 31:return 12;case 32:return 36;case 33:this.begin("string");break;case 34:this.popState();break;case 35:return 33;case 36:return 30;case 37:return 46;case 38:return 7}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit(?=\s|$))/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\b)/i,/^(?:REVERSE\b)/i,/^(?:HIGHLIGHT\b)/i,/^(?:tag:)/i,/^(?:branch(?=\s|$))/i,/^(?:order:)/i,/^(?:merge(?=\s|$))/i,/^(?:cherry-pick(?=\s|$))/i,/^(?:parent:)/i,/^(?:checkout(?=\s|$))/i,/^(?:LR\b)/i,/^(?:TB\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:[ \r\n\t]+end\b)/i,/^(?:[\s\S]+(?=[ \r\n\t]+end))/i,/^(?:["]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[0-9]+(?=\s|$))/i,/^(?:\w([-\./\w]*[-\w])?)/i,/^(?:$)/i,/^(?:\s+)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},options:{rules:[30,31],inclusive:!1},string:{rules:[34,35],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,36,37,38,39],inclusive:!0}}};return mt}();ut.lexer=pt;function yt(){this.yy={}}return yt.prototype=ut,ut.Parser=yt,new yt}();Ypt.parser=Ypt;const kWe=Ypt;let rX=Re().gitGraph.mainBranchName,EWe=Re().gitGraph.mainBranchOrder,$1={},ep=null,YF={};YF[rX]={name:rX,order:EWe};let u1={};u1[rX]=ep;let Cd=rX,czt="LR",L9=0;function Xpt(){return dFt({length:7})}function TWe(i,a){const f=Object.create(null);return i.reduce((g,w)=>{const v=a(w);return f[v]||(f[v]=!0,g.push(w)),g},[])}const CWe=function(i){czt=i};let uzt={};const _We=function(i){Wt.debug("options str",i),i=i&&i.trim(),i=i||"{}";try{uzt=JSON.parse(i)}catch(a){Wt.error("error while parsing gitGraph options",a.message)}},SWe=function(){return uzt},AWe=function(i,a,f,g){Wt.debug("Entering commit:",i,a,f,g),a=ei.sanitizeText(a,Re()),i=ei.sanitizeText(i,Re()),g=ei.sanitizeText(g,Re());const w={id:a||L9+"-"+Xpt(),message:i,seq:L9++,type:f||wM.NORMAL,tag:g||"",parents:ep==null?[]:[ep.id],branch:Cd};ep=w,$1[w.id]=w,u1[Cd]=w.id,Wt.debug("in pushCommit "+w.id)},LWe=function(i,a){if(i=ei.sanitizeText(i,Re()),u1[i]===void 0)u1[i]=ep!=null?ep.id:null,YF[i]={name:i,order:a?parseInt(a,10):null},lzt(i),Wt.debug("in createBranch");else{let f=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 '+i+'")');throw f.hash={text:"branch "+i,token:"branch "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+i+'"']},f}},MWe=function(i,a,f,g){i=ei.sanitizeText(i,Re()),a=ei.sanitizeText(a,Re());const w=$1[u1[Cd]],v=$1[u1[i]];if(Cd===i){let E=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},E}else if(w===void 0||!w){let E=new Error('Incorrect usage of "merge". Current branch ('+Cd+")has no commits");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["commit"]},E}else if(u1[i]===void 0){let E=new Error('Incorrect usage of "merge". Branch to be merged ('+i+") does not exist");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch "+i]},E}else if(v===void 0||!v){let E=new Error('Incorrect usage of "merge". Branch to be merged ('+i+") has no commits");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"commit"']},E}else if(w===v){let E=new Error('Incorrect usage of "merge". Both branches have same head');throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},E}else if(a&&$1[a]!==void 0){let E=new Error('Incorrect usage of "merge". Commit with id:'+a+" already exists, use different custom Id");throw E.hash={text:"merge "+i+a+f+g,token:"merge "+i+a+f+g,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["merge "+i+" "+a+"_UNIQUE "+f+" "+g]},E}const b={id:a||L9+"-"+Xpt(),message:"merged branch "+i+" into "+Cd,seq:L9++,parents:[ep==null?null:ep.id,u1[i]],branch:Cd,type:wM.MERGE,customType:f,customId:!!a,tag:g||""};ep=b,$1[b.id]=b,u1[Cd]=b.id,Wt.debug(u1),Wt.debug("in mergeBranch")},DWe=function(i,a,f,g){if(Wt.debug("Entering cherryPick:",i,a,f),i=ei.sanitizeText(i,Re()),a=ei.sanitizeText(a,Re()),f=ei.sanitizeText(f,Re()),g=ei.sanitizeText(g,Re()),!i||$1[i]===void 0){let b=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw b.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},b}let w=$1[i],v=w.branch;if(g&&!(Array.isArray(w.parents)&&w.parents.includes(g)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");if(w.type===wM.MERGE&&!g)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!a||$1[a]===void 0){if(v===Cd){let _=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw _.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},_}const b=$1[u1[Cd]];if(b===void 0||!b){let _=new Error('Incorrect usage of "cherry-pick". Current branch ('+Cd+")has no commits");throw _.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},_}const E={id:L9+"-"+Xpt(),message:"cherry-picked "+w+" into "+Cd,seq:L9++,parents:[ep==null?null:ep.id,w.id],branch:Cd,type:wM.CHERRY_PICK,tag:f??`cherry-pick:${w.id}${w.type===wM.MERGE?`|parent:${g}`:""}`};ep=E,$1[E.id]=E,u1[Cd]=E.id,Wt.debug(u1),Wt.debug("in cherryPick")}},lzt=function(i){if(i=ei.sanitizeText(i,Re()),u1[i]===void 0){let a=new Error('Trying to checkout branch which is not yet created. (Help try using "branch '+i+'")');throw a.hash={text:"checkout "+i,token:"checkout "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"branch '+i+'"']},a}else{Cd=i;const a=u1[Cd];ep=$1[a]}};function hzt(i,a,f){const g=i.indexOf(a);g===-1?i.push(f):i.splice(g,1,f)}function fzt(i){const a=i.reduce((w,v)=>w.seq>v.seq?w:v,i[0]);let f="";i.forEach(function(w){w===a?f+=" *":f+=" |"});const g=[f,a.id,a.seq];for(let w in u1)u1[w]===a.id&&g.push(w);if(Wt.debug(g.join(" ")),a.parents&&a.parents.length==2){const w=$1[a.parents[0]];hzt(i,a,w),i.push($1[a.parents[1]])}else{if(a.parents.length==0)return;{const w=$1[a.parents];hzt(i,a,w)}}i=TWe(i,w=>w.id),fzt(i)}const IWe=function(){Wt.debug($1);const i=dzt()[0];fzt([i])},OWe=function(){$1={},ep=null;let i=Re().gitGraph.mainBranchName,a=Re().gitGraph.mainBranchOrder;u1={},u1[i]=null,YF={},YF[i]={name:i,order:a},Cd=i,L9=0,Wg()},PWe=function(){return Object.values(YF).map((a,f)=>a.order!==null?a:{...a,order:parseFloat(`0.${f}`,10)}).sort((a,f)=>a.order-f.order).map(({name:a})=>({name:a}))},NWe=function(){return u1},FWe=function(){return $1},dzt=function(){const i=Object.keys($1).map(function(a){return $1[a]});return i.forEach(function(a){Wt.debug(a.id)}),i.sort((a,f)=>a.seq-f.seq),i},BWe=function(){return Cd},RWe=function(){return czt},jWe=function(){return ep},wM={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},$We={getConfig:()=>Re().gitGraph,setDirection:CWe,setOptions:_We,getOptions:SWe,commit:AWe,branch:LWe,merge:MWe,cherryPick:DWe,checkout:lzt,prettyPrint:IWe,clear:OWe,getBranchesAsObjArray:PWe,getBranches:NWe,getCommits:FWe,getCommitsArray:dzt,getCurrentBranch:BWe,getDirection:RWe,getHead:jWe,setAccTitle:ng,getAccTitle:Yg,getAccDescription:Qg,setAccDescription:Xg,setDiagramTitle:y2,getDiagramTitle:Jg,commitType:wM};let XF={};const T2={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},M9=8;let Ef={},QF={},iX=[],JF=0,p0="LR";const zWe=()=>{Ef={},QF={},XF={},JF=0,iX=[],p0="LR"},gzt=i=>{const a=document.createElementNS("http://www.w3.org/2000/svg","text");let f=[];typeof i=="string"?f=i.split(/\\n|\n|/gi):Array.isArray(i)?f=i:f=[];for(const g of f){const w=document.createElementNS("http://www.w3.org/2000/svg","tspan");w.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),w.setAttribute("dy","1em"),w.setAttribute("x","0"),w.setAttribute("class","row"),w.textContent=g.trim(),a.appendChild(w)}return a},pzt=(i,a,f)=>{const g=Re().gitGraph,w=i.append("g").attr("class","commit-bullets"),v=i.append("g").attr("class","commit-labels");let b=0;p0==="TB"&&(b=30),Object.keys(a).sort((S,I)=>a[S].seq-a[I].seq).forEach(S=>{const I=a[S],B=p0==="TB"?b+10:Ef[I.branch].pos,F=p0==="TB"?Ef[I.branch].pos:b+10;if(f){let R,q=I.customType!==void 0&&I.customType!==""?I.customType:I.type;switch(q){case T2.NORMAL:R="commit-normal";break;case T2.REVERSE:R="commit-reverse";break;case T2.HIGHLIGHT:R="commit-highlight";break;case T2.MERGE:R="commit-merge";break;case T2.CHERRY_PICK:R="commit-cherry-pick";break;default:R="commit-normal"}if(q===T2.HIGHLIGHT){const X=w.append("rect");X.attr("x",F-10),X.attr("y",B-10),X.attr("height",20),X.attr("width",20),X.attr("class",`commit ${I.id} commit-highlight${Ef[I.branch].index%M9} ${R}-outer`),w.append("rect").attr("x",F-6).attr("y",B-6).attr("height",12).attr("width",12).attr("class",`commit ${I.id} commit${Ef[I.branch].index%M9} ${R}-inner`)}else if(q===T2.CHERRY_PICK)w.append("circle").attr("cx",F).attr("cy",B).attr("r",10).attr("class",`commit ${I.id} ${R}`),w.append("circle").attr("cx",F-3).attr("cy",B+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${I.id} ${R}`),w.append("circle").attr("cx",F+3).attr("cy",B+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${I.id} ${R}`),w.append("line").attr("x1",F+3).attr("y1",B+1).attr("x2",F).attr("y2",B-5).attr("stroke","#fff").attr("class",`commit ${I.id} ${R}`),w.append("line").attr("x1",F-3).attr("y1",B+1).attr("x2",F).attr("y2",B-5).attr("stroke","#fff").attr("class",`commit ${I.id} ${R}`);else{const X=w.append("circle");if(X.attr("cx",F),X.attr("cy",B),X.attr("r",I.type===T2.MERGE?9:10),X.attr("class",`commit ${I.id} commit${Ef[I.branch].index%M9}`),q===T2.MERGE){const rt=w.append("circle");rt.attr("cx",F),rt.attr("cy",B),rt.attr("r",6),rt.attr("class",`commit ${R} ${I.id} commit${Ef[I.branch].index%M9}`)}q===T2.REVERSE&&w.append("path").attr("d",`M ${F-5},${B-5}L${F+5},${B+5}M${F-5},${B+5}L${F+5},${B-5}`).attr("class",`commit ${R} ${I.id} commit${Ef[I.branch].index%M9}`)}}if(p0==="TB"?QF[I.id]={x:F,y:b+10}:QF[I.id]={x:b+10,y:B},f){if(I.type!==T2.CHERRY_PICK&&(I.customId&&I.type===T2.MERGE||I.type!==T2.MERGE)&&g.showCommitLabel){const X=v.append("g"),rt=X.insert("rect").attr("class","commit-label-bkg"),at=X.append("text").attr("x",b).attr("y",B+25).attr("class","commit-label").text(I.id);let ut=at.node().getBBox();if(rt.attr("x",b+10-ut.width/2-2).attr("y",B+13.5).attr("width",ut.width+2*2).attr("height",ut.height+2*2),p0==="TB"&&(rt.attr("x",F-(ut.width+4*4+5)).attr("y",B-12),at.attr("x",F-(ut.width+4*4)).attr("y",B+ut.height-12)),p0!=="TB"&&at.attr("x",b+10-ut.width/2),g.rotateCommitLabel)if(p0==="TB")at.attr("transform","rotate(-45, "+F+", "+B+")"),rt.attr("transform","rotate(-45, "+F+", "+B+")");else{let pt=-7.5-(ut.width+10)/25*9.5,yt=10+ut.width/25*8.5;X.attr("transform","translate("+pt+", "+yt+") rotate(-45, "+b+", "+B+")")}}if(I.tag){const X=v.insert("polygon"),rt=v.append("circle"),at=v.append("text").attr("y",B-16).attr("class","tag-label").text(I.tag);let ut=at.node().getBBox();at.attr("x",b+10-ut.width/2);const pt=ut.height/2,yt=B-19.2;X.attr("class","tag-label-bkg").attr("points",` + ${b-ut.width/2-4/2},${yt+2} + ${b-ut.width/2-4/2},${yt-2} + ${b+10-ut.width/2-4},${yt-pt-2} + ${b+10+ut.width/2+4},${yt-pt-2} + ${b+10+ut.width/2+4},${yt+pt+2} + ${b+10-ut.width/2-4},${yt+pt+2}`),rt.attr("cx",b-ut.width/2+4/2).attr("cy",yt).attr("r",1.5).attr("class","tag-hole"),p0==="TB"&&(X.attr("class","tag-label-bkg").attr("points",` + ${F},${b+2} + ${F},${b-2} + ${F+10},${b-pt-2} + ${F+10+ut.width+4},${b-pt-2} + ${F+10+ut.width+4},${b+pt+2} + ${F+10},${b+pt+2}`).attr("transform","translate(12,12) rotate(45, "+F+","+b+")"),rt.attr("cx",F+4/2).attr("cy",b).attr("transform","translate(12,12) rotate(45, "+F+","+b+")"),at.attr("x",F+5).attr("y",b+3).attr("transform","translate(14,14) rotate(45, "+F+","+b+")"))}}b+=50,b>JF&&(JF=b)})},qWe=(i,a,f,g,w)=>{const b=(p0==="TB"?f.xS.branch===b,_=S=>S.seq>i.seq&&S.seq_(S)&&E(S))},ZF=(i,a,f=0)=>{const g=i+Math.abs(i-a)/2;if(f>5)return g;if(iX.every(b=>Math.abs(b-g)>=10))return iX.push(g),g;const v=Math.abs(i-a);return ZF(i,a-v/5,f+1)},HWe=(i,a,f,g)=>{const w=QF[a.id],v=QF[f.id],b=qWe(a,f,w,v,g);let E="",_="",S=0,I=0,B=Ef[f.branch].index,F;if(b){E="A 10 10, 0, 0, 0,",_="A 10 10, 0, 0, 1,",S=10,I=10;const R=w.yv.x&&(E="A 20 20, 0, 0, 0,",_="A 20 20, 0, 0, 1,",S=20,I=20,B=Ef[a.branch].index,F=`M ${w.x} ${w.y} L ${w.x} ${v.y-S} ${_} ${w.x-I} ${v.y} L ${v.x} ${v.y}`),w.x===v.x&&(B=Ef[a.branch].index,F=`M ${w.x} ${w.y} L ${w.x+S} ${w.y} ${E} ${w.x+I} ${v.y+S} L ${v.x} ${v.y}`)):(w.yv.y&&(E="A 20 20, 0, 0, 0,",S=20,I=20,B=Ef[a.branch].index,F=`M ${w.x} ${w.y} L ${v.x-S} ${w.y} ${E} ${v.x} ${w.y-I} L ${v.x} ${v.y}`),w.y===v.y&&(B=Ef[a.branch].index,F=`M ${w.x} ${w.y} L ${w.x} ${v.y-S} ${E} ${w.x+I} ${v.y} L ${v.x} ${v.y}`));i.append("path").attr("d",F).attr("class","arrow arrow"+B%M9)},VWe=(i,a)=>{const f=i.append("g").attr("class","commit-arrows");Object.keys(a).forEach(g=>{const w=a[g];w.parents&&w.parents.length>0&&w.parents.forEach(v=>{HWe(f,a[v],w,a)})})},UWe=(i,a)=>{const f=Re().gitGraph,g=i.append("g");a.forEach((w,v)=>{const b=v%M9,E=Ef[w.name].pos,_=g.append("line");_.attr("x1",0),_.attr("y1",E),_.attr("x2",JF),_.attr("y2",E),_.attr("class","branch branch"+b),p0==="TB"&&(_.attr("y1",30),_.attr("x1",E),_.attr("y2",JF),_.attr("x2",E)),iX.push(E);let S=w.name;const I=gzt(S),B=g.insert("rect"),R=g.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+b);R.node().appendChild(I);let q=I.getBBox();B.attr("class","branchLabelBkg label"+b).attr("rx",4).attr("ry",4).attr("x",-q.width-4-(f.rotateCommitLabel===!0?30:0)).attr("y",-q.height/2+8).attr("width",q.width+18).attr("height",q.height+4),R.attr("transform","translate("+(-q.width-14-(f.rotateCommitLabel===!0?30:0))+", "+(E-q.height/2-1)+")"),p0==="TB"&&(B.attr("x",E-q.width/2-10).attr("y",0),R.attr("transform","translate("+(E-q.width/2-5)+", 0)")),p0!=="TB"&&B.attr("transform","translate(-19, "+(E-q.height/2)+")")})},GWe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:kWe,db:$We,renderer:{draw:function(i,a,f,g){zWe();const w=Re(),v=w.gitGraph;Wt.debug("in gitgraph renderer",i+` +`,"id:",a,f),XF=g.db.getCommits();const b=g.db.getBranchesAsObjArray();p0=g.db.getDirection();const E=xr(`[id="${a}"]`);let _=0;b.forEach((S,I)=>{const B=gzt(S.name),F=E.append("g"),R=F.insert("g").attr("class","branchLabel"),q=R.insert("g").attr("class","label branch-label");q.node().appendChild(B);let X=B.getBBox();Ef[S.name]={pos:_,index:I},_+=50+(v.rotateCommitLabel?40:0)+(p0==="TB"?X.width/2:0),q.remove(),R.remove(),F.remove()}),pzt(E,XF,!1),v.showBranches&&UWe(E,b),VWe(E,XF),pzt(E,XF,!0),ao.insertTitle(E,"gitTitleText",v.titleTopMargin,g.db.getDiagramTitle()),XFt(void 0,E,v.diagramPadding,v.useMaxWidth??w.useMaxWidth)}},styles:i=>` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + ${[0,1,2,3,4,5,6,7].map(a=>` + .branch-label${a} { fill: ${i["gitBranchLabel"+a]}; } + .commit${a} { stroke: ${i["git"+a]}; fill: ${i["git"+a]}; } + .commit-highlight${a} { stroke: ${i["gitInv"+a]}; fill: ${i["gitInv"+a]}; } + .label${a} { fill: ${i["git"+a]}; } + .arrow${a} { stroke: ${i["git"+a]}; } + `).join(` +`)} + + .branch { + stroke-width: 1; + stroke: ${i.lineColor}; + stroke-dasharray: 2; + } + .commit-label { font-size: ${i.commitLabelFontSize}; fill: ${i.commitLabelColor};} + .commit-label-bkg { font-size: ${i.commitLabelFontSize}; fill: ${i.commitLabelBackground}; opacity: 0.5; } + .tag-label { font-size: ${i.tagLabelFontSize}; fill: ${i.tagLabelColor};} + .tag-label-bkg { fill: ${i.tagLabelBackground}; stroke: ${i.tagLabelBorder}; } + .tag-hole { fill: ${i.textColor}; } + + .commit-merge { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + } + .commit-reverse { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + stroke-width: 3; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + } + + .arrow { stroke-width: 8; stroke-linecap: round; fill: none} + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`}},Symbol.toStringTag,{value:"Module"}));var Qpt=function(){var i=function(Y,Et,V,Nt){for(V=V||{},Nt=Y.length;Nt--;V[Y[Nt]]=Et);return V},a=[6,8,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,32,33,35,37],f=[1,25],g=[1,26],w=[1,27],v=[1,28],b=[1,29],E=[1,30],_=[1,31],S=[1,9],I=[1,10],B=[1,11],F=[1,12],R=[1,13],q=[1,14],X=[1,15],rt=[1,16],at=[1,18],ut=[1,19],pt=[1,20],yt=[1,21],mt=[1,22],gt=[1,24],ht=[1,32],bt={trace:function(){},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,dateFormat:19,inclusiveEndDates:20,topAxis:21,axisFormat:22,tickInterval:23,excludes:24,includes:25,todayMarker:26,title:27,acc_title:28,acc_title_value:29,acc_descr:30,acc_descr_value:31,acc_descr_multiline_value:32,section:33,clickStatement:34,taskTxt:35,taskData:36,click:37,callbackname:38,callbackargs:39,href:40,clickStatementDebug:41,$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",19:"dateFormat",20:"inclusiveEndDates",21:"topAxis",22:"axisFormat",23:"tickInterval",24:"excludes",25:"includes",26:"todayMarker",27:"title",28:"acc_title",29:"acc_title_value",30:"acc_descr",31:"acc_descr_value",32:"acc_descr_multiline_value",33:"section",35:"taskTxt",36:"taskData",37:"click",38:"callbackname",39:"callbackargs",40:"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],[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],[34,2],[34,3],[34,3],[34,4],[34,3],[34,4],[34,2],[41,2],[41,3],[41,3],[41,4],[41,3],[41,4],[41,2]],performAction:function(Et,V,Nt,Dt,jt,Ct,Ft){var _t=Ct.length-1;switch(jt){case 1:return Ct[_t-1];case 2:this.$=[];break;case 3:Ct[_t-1].push(Ct[_t]),this.$=Ct[_t-1];break;case 4:case 5:this.$=Ct[_t];break;case 6:case 7:this.$=[];break;case 8:Dt.setWeekday("monday");break;case 9:Dt.setWeekday("tuesday");break;case 10:Dt.setWeekday("wednesday");break;case 11:Dt.setWeekday("thursday");break;case 12:Dt.setWeekday("friday");break;case 13:Dt.setWeekday("saturday");break;case 14:Dt.setWeekday("sunday");break;case 15:Dt.setDateFormat(Ct[_t].substr(11)),this.$=Ct[_t].substr(11);break;case 16:Dt.enableInclusiveEndDates(),this.$=Ct[_t].substr(18);break;case 17:Dt.TopAxis(),this.$=Ct[_t].substr(8);break;case 18:Dt.setAxisFormat(Ct[_t].substr(11)),this.$=Ct[_t].substr(11);break;case 19:Dt.setTickInterval(Ct[_t].substr(13)),this.$=Ct[_t].substr(13);break;case 20:Dt.setExcludes(Ct[_t].substr(9)),this.$=Ct[_t].substr(9);break;case 21:Dt.setIncludes(Ct[_t].substr(9)),this.$=Ct[_t].substr(9);break;case 22:Dt.setTodayMarker(Ct[_t].substr(12)),this.$=Ct[_t].substr(12);break;case 24:Dt.setDiagramTitle(Ct[_t].substr(6)),this.$=Ct[_t].substr(6);break;case 25:this.$=Ct[_t].trim(),Dt.setAccTitle(this.$);break;case 26:case 27:this.$=Ct[_t].trim(),Dt.setAccDescription(this.$);break;case 28:Dt.addSection(Ct[_t].substr(8)),this.$=Ct[_t].substr(8);break;case 30:Dt.addTask(Ct[_t-1],Ct[_t]),this.$="task";break;case 31:this.$=Ct[_t-1],Dt.setClickEvent(Ct[_t-1],Ct[_t],null);break;case 32:this.$=Ct[_t-2],Dt.setClickEvent(Ct[_t-2],Ct[_t-1],Ct[_t]);break;case 33:this.$=Ct[_t-2],Dt.setClickEvent(Ct[_t-2],Ct[_t-1],null),Dt.setLink(Ct[_t-2],Ct[_t]);break;case 34:this.$=Ct[_t-3],Dt.setClickEvent(Ct[_t-3],Ct[_t-2],Ct[_t-1]),Dt.setLink(Ct[_t-3],Ct[_t]);break;case 35:this.$=Ct[_t-2],Dt.setClickEvent(Ct[_t-2],Ct[_t],null),Dt.setLink(Ct[_t-2],Ct[_t-1]);break;case 36:this.$=Ct[_t-3],Dt.setClickEvent(Ct[_t-3],Ct[_t-1],Ct[_t]),Dt.setLink(Ct[_t-3],Ct[_t-2]);break;case 37:this.$=Ct[_t-1],Dt.setLink(Ct[_t-1],Ct[_t]);break;case 38:case 44:this.$=Ct[_t-1]+" "+Ct[_t];break;case 39:case 40:case 42:this.$=Ct[_t-2]+" "+Ct[_t-1]+" "+Ct[_t];break;case 41:case 43:this.$=Ct[_t-3]+" "+Ct[_t-2]+" "+Ct[_t-1]+" "+Ct[_t];break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:f,13:g,14:w,15:v,16:b,17:E,18:_,19:S,20:I,21:B,22:F,23:R,24:q,25:X,26:rt,27:at,28:ut,30:pt,32:yt,33:mt,34:23,35:gt,37:ht},i(a,[2,7],{1:[2,1]}),i(a,[2,3]),{9:33,11:17,12:f,13:g,14:w,15:v,16:b,17:E,18:_,19:S,20:I,21:B,22:F,23:R,24:q,25:X,26:rt,27:at,28:ut,30:pt,32:yt,33:mt,34:23,35:gt,37:ht},i(a,[2,5]),i(a,[2,6]),i(a,[2,15]),i(a,[2,16]),i(a,[2,17]),i(a,[2,18]),i(a,[2,19]),i(a,[2,20]),i(a,[2,21]),i(a,[2,22]),i(a,[2,23]),i(a,[2,24]),{29:[1,34]},{31:[1,35]},i(a,[2,27]),i(a,[2,28]),i(a,[2,29]),{36:[1,36]},i(a,[2,8]),i(a,[2,9]),i(a,[2,10]),i(a,[2,11]),i(a,[2,12]),i(a,[2,13]),i(a,[2,14]),{38:[1,37],40:[1,38]},i(a,[2,4]),i(a,[2,25]),i(a,[2,26]),i(a,[2,30]),i(a,[2,31],{39:[1,39],40:[1,40]}),i(a,[2,37],{38:[1,41]}),i(a,[2,32],{40:[1,42]}),i(a,[2,33]),i(a,[2,35],{39:[1,43]}),i(a,[2,34]),i(a,[2,36])],defaultActions:{},parseError:function(Et,V){if(V.recoverable)this.trace(Et);else{var Nt=new Error(Et);throw Nt.hash=V,Nt}},parse:function(Et){var V=this,Nt=[0],Dt=[],jt=[null],Ct=[],Ft=this.table,_t="",xt=0,Gt=0,Be=2,Ot=1,vn=Ct.slice.call(arguments,1),Pe=Object.create(this.lexer),Ee={yy:{}};for(var nn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,nn)&&(Ee.yy[nn]=this.yy[nn]);Pe.setInput(Et,Ee.yy),Ee.yy.lexer=Pe,Ee.yy.parser=this,typeof Pe.yylloc>"u"&&(Pe.yylloc={});var sn=Pe.yylloc;Ct.push(sn);var me=Pe.options&&Pe.options.ranges;typeof Ee.yy.parseError=="function"?this.parseError=Ee.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Fe(){var Ss;return Ss=Dt.pop()||Pe.lex()||Ot,typeof Ss!="number"&&(Ss instanceof Array&&(Dt=Ss,Ss=Dt.pop()),Ss=V.symbols_[Ss]||Ss),Ss}for(var Qt,Ae,Se,Dn,oe={},Pr,we,Ri,yi;;){if(Ae=Nt[Nt.length-1],this.defaultActions[Ae]?Se=this.defaultActions[Ae]:((Qt===null||typeof Qt>"u")&&(Qt=Fe()),Se=Ft[Ae]&&Ft[Ae][Qt]),typeof Se>"u"||!Se.length||!Se[0]){var da="";yi=[];for(Pr in Ft[Ae])this.terminals_[Pr]&&Pr>Be&&yi.push("'"+this.terminals_[Pr]+"'");Pe.showPosition?da="Parse error on line "+(xt+1)+`: +`+Pe.showPosition()+` +Expecting `+yi.join(", ")+", got '"+(this.terminals_[Qt]||Qt)+"'":da="Parse error on line "+(xt+1)+": Unexpected "+(Qt==Ot?"end of input":"'"+(this.terminals_[Qt]||Qt)+"'"),this.parseError(da,{text:Pe.match,token:this.terminals_[Qt]||Qt,line:Pe.yylineno,loc:sn,expected:yi})}if(Se[0]instanceof Array&&Se.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ae+", token: "+Qt);switch(Se[0]){case 1:Nt.push(Qt),jt.push(Pe.yytext),Ct.push(Pe.yylloc),Nt.push(Se[1]),Qt=null,Gt=Pe.yyleng,_t=Pe.yytext,xt=Pe.yylineno,sn=Pe.yylloc;break;case 2:if(we=this.productions_[Se[1]][1],oe.$=jt[jt.length-we],oe._$={first_line:Ct[Ct.length-(we||1)].first_line,last_line:Ct[Ct.length-1].last_line,first_column:Ct[Ct.length-(we||1)].first_column,last_column:Ct[Ct.length-1].last_column},me&&(oe._$.range=[Ct[Ct.length-(we||1)].range[0],Ct[Ct.length-1].range[1]]),Dn=this.performAction.apply(oe,[_t,Gt,xt,Ee.yy,Se[1],jt,Ct].concat(vn)),typeof Dn<"u")return Dn;we&&(Nt=Nt.slice(0,-1*we*2),jt=jt.slice(0,-1*we),Ct=Ct.slice(0,-1*we)),Nt.push(this.productions_[Se[1]][0]),jt.push(oe.$),Ct.push(oe._$),Ri=Ft[Nt[Nt.length-2]][Nt[Nt.length-1]],Nt.push(Ri);break;case 3:return!0}}return!0}},Z=function(){var Y={EOF:1,parseError:function(V,Nt){if(this.yy.parser)this.yy.parser.parseError(V,Nt);else throw new Error(V)},setInput:function(Et,V){return this.yy=V||this.yy||{},this._input=Et,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},input:function(){var Et=this._input[0];this.yytext+=Et,this.yyleng++,this.offset++,this.match+=Et,this.matched+=Et;var V=Et.match(/(?:\r\n?|\n).*/g);return V?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Et},unput:function(Et){var V=Et.length,Nt=Et.split(/(?:\r\n?|\n)/g);this._input=Et+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-V),this.offset-=V;var Dt=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),Nt.length-1&&(this.yylineno-=Nt.length-1);var jt=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:Nt?(Nt.length===Dt.length?this.yylloc.first_column:0)+Dt[Dt.length-Nt.length].length-Nt[0].length:this.yylloc.first_column-V},this.options.ranges&&(this.yylloc.range=[jt[0],jt[0]+this.yyleng-V]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(Et){this.unput(this.match.slice(Et))},pastInput:function(){var Et=this.matched.substr(0,this.matched.length-this.match.length);return(Et.length>20?"...":"")+Et.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Et=this.match;return Et.length<20&&(Et+=this._input.substr(0,20-Et.length)),(Et.substr(0,20)+(Et.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Et=this.pastInput(),V=new Array(Et.length+1).join("-");return Et+this.upcomingInput()+` +`+V+"^"},test_match:function(Et,V){var Nt,Dt,jt;if(this.options.backtrack_lexer&&(jt={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&&(jt.yylloc.range=this.yylloc.range.slice(0))),Dt=Et[0].match(/(?:\r\n?|\n).*/g),Dt&&(this.yylineno+=Dt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Dt?Dt[Dt.length-1].length-Dt[Dt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Et[0].length},this.yytext+=Et[0],this.match+=Et[0],this.matches=Et,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(Et[0].length),this.matched+=Et[0],Nt=this.performAction.call(this,this.yy,this,V,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Nt)return Nt;if(this._backtrack){for(var Ct in jt)this[Ct]=jt[Ct];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Et,V,Nt,Dt;this._more||(this.yytext="",this.match="");for(var jt=this._currentRules(),Ct=0;CtV[0].length)){if(V=Nt,Dt=Ct,this.options.backtrack_lexer){if(Et=this.test_match(Nt,jt[Ct]),Et!==!1)return Et;if(this._backtrack){V=!1;continue}else return!1}else if(!this.options.flex)break}return V?(Et=this.test_match(V,jt[Dt]),Et!==!1?Et:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var V=this.next();return V||this.lex()},begin:function(V){this.conditionStack.push(V)},popState:function(){var V=this.conditionStack.length-1;return V>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(V){return V=this.conditionStack.length-1-Math.abs(V||0),V>=0?this.conditionStack[V]:"INITIAL"},pushState:function(V){this.begin(V)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(V,Nt,Dt,jt){switch(Dt){case 0:return this.begin("open_directive"),"open_directive";case 1:return this.begin("acc_title"),28;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),30;case 4:return this.popState(),"acc_descr_value";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:break;case 15:this.begin("href");break;case 16:this.popState();break;case 17:return 40;case 18:this.begin("callbackname");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callbackargs");break;case 21:return 38;case 22:this.popState();break;case 23:return 39;case 24:this.begin("click");break;case 25:this.popState();break;case 26:return 37;case 27:return 4;case 28:return 19;case 29:return 20;case 30:return 21;case 31:return 22;case 32:return 23;case 33:return 25;case 34:return 24;case 35:return 26;case 36:return 12;case 37:return 13;case 38:return 14;case 39:return 15;case 40:return 16;case 41:return 17;case 42:return 18;case 43:return"date";case 44:return 27;case 45:return"accDescription";case 46:return 33;case 47:return 35;case 48:return 36;case 49:return":";case 50:return 6;case 51:return"INVALID"}},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,/^(?:%[^\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,/^(?:\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:[22,23],inclusive:!1},callbackname:{rules:[19,20,21],inclusive:!1},href:{rules:[16,17],inclusive:!1},click:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,18,24,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],inclusive:!0}}};return Y}();bt.lexer=Z;function ft(){this.yy={}}return ft.prototype=bt,bt.Parser=ft,new ft}();Qpt.parser=Qpt;const KWe=Qpt;var bzt={exports:{}};(function(i,a){(function(f,g){i.exports=g()})(X0,function(){var f="day";return function(g,w,v){var b=function(S){return S.add(4-S.isoWeekday(),f)},E=w.prototype;E.isoWeekYear=function(){return b(this).year()},E.isoWeek=function(S){if(!this.$utils().u(S))return this.add(7*(S-this.isoWeek()),f);var I,B,F,R,q=b(this),X=(I=this.isoWeekYear(),B=this.$u,F=(B?v.utc:v)().year(I).startOf("year"),R=4-F.isoWeekday(),F.isoWeekday()>4&&(R+=7),F.add(R,f));return q.diff(X,"week")+1},E.isoWeekday=function(S){return this.$utils().u(S)?this.day()||7:this.day(this.day()%7?S:S-7)};var _=E.startOf;E.startOf=function(S,I){var B=this.$utils(),F=!!B.u(I)||I;return B.p(S)==="isoweek"?F?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):_.bind(this)(S,I)}}})})(bzt);var WWe=bzt.exports;const YWe=JT(WWe);var wzt={exports:{}};(function(i,a){(function(f,g){i.exports=g()})(X0,function(){var f={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"},g=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,w=/\d\d/,v=/\d\d?/,b=/\d*[^-_:/,()\s\d]+/,E={},_=function(X){return(X=+X)+(X>68?1900:2e3)},S=function(X){return function(rt){this[X]=+rt}},I=[/[+-]\d\d:?(\d\d)?|Z/,function(X){(this.zone||(this.zone={})).offset=function(rt){if(!rt||rt==="Z")return 0;var at=rt.match(/([+-]|\d\d)/g),ut=60*at[1]+(+at[2]||0);return ut===0?0:at[0]==="+"?-ut:ut}(X)}],B=function(X){var rt=E[X];return rt&&(rt.indexOf?rt:rt.s.concat(rt.f))},F=function(X,rt){var at,ut=E.meridiem;if(ut){for(var pt=1;pt<=24;pt+=1)if(X.indexOf(ut(pt,0,rt))>-1){at=pt>12;break}}else at=X===(rt?"pm":"PM");return at},R={A:[b,function(X){this.afternoon=F(X,!1)}],a:[b,function(X){this.afternoon=F(X,!0)}],S:[/\d/,function(X){this.milliseconds=100*+X}],SS:[w,function(X){this.milliseconds=10*+X}],SSS:[/\d{3}/,function(X){this.milliseconds=+X}],s:[v,S("seconds")],ss:[v,S("seconds")],m:[v,S("minutes")],mm:[v,S("minutes")],H:[v,S("hours")],h:[v,S("hours")],HH:[v,S("hours")],hh:[v,S("hours")],D:[v,S("day")],DD:[w,S("day")],Do:[b,function(X){var rt=E.ordinal,at=X.match(/\d+/);if(this.day=at[0],rt)for(var ut=1;ut<=31;ut+=1)rt(ut).replace(/\[|\]/g,"")===X&&(this.day=ut)}],M:[v,S("month")],MM:[w,S("month")],MMM:[b,function(X){var rt=B("months"),at=(B("monthsShort")||rt.map(function(ut){return ut.slice(0,3)})).indexOf(X)+1;if(at<1)throw new Error;this.month=at%12||at}],MMMM:[b,function(X){var rt=B("months").indexOf(X)+1;if(rt<1)throw new Error;this.month=rt%12||rt}],Y:[/[+-]?\d+/,S("year")],YY:[w,function(X){this.year=_(X)}],YYYY:[/\d{4}/,S("year")],Z:I,ZZ:I};function q(X){var rt,at;rt=X,at=E&&E.formats;for(var ut=(X=rt.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(Z,ft,Y){var Et=Y&&Y.toUpperCase();return ft||at[Y]||f[Y]||at[Et].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(V,Nt,Dt){return Nt||Dt.slice(1)})})).match(g),pt=ut.length,yt=0;yt-1)return new Date((Ct==="X"?1e3:1)*jt);var _t=q(Ct)(jt),xt=_t.year,Gt=_t.month,Be=_t.day,Ot=_t.hours,vn=_t.minutes,Pe=_t.seconds,Ee=_t.milliseconds,nn=_t.zone,sn=new Date,me=Be||(xt||Gt?1:sn.getDate()),Fe=xt||sn.getFullYear(),Qt=0;xt&&!Gt||(Qt=Gt>0?Gt-1:sn.getMonth());var Ae=Ot||0,Se=vn||0,Dn=Pe||0,oe=Ee||0;return nn?new Date(Date.UTC(Fe,Qt,me,Ae,Se,Dn,oe+60*nn.offset*1e3)):Ft?new Date(Date.UTC(Fe,Qt,me,Ae,Se,Dn,oe)):new Date(Fe,Qt,me,Ae,Se,Dn,oe)}catch{return new Date("")}}(mt,bt,gt),this.init(),Et&&Et!==!0&&(this.$L=this.locale(Et).$L),Y&&mt!=this.format(bt)&&(this.$d=new Date("")),E={}}else if(bt instanceof Array)for(var V=bt.length,Nt=1;Nt<=V;Nt+=1){ht[1]=bt[Nt-1];var Dt=at.apply(this,ht);if(Dt.isValid()){this.$d=Dt.$d,this.$L=Dt.$L,this.init();break}Nt===V&&(this.$d=new Date(""))}else pt.call(this,yt)}}})})(wzt);var XWe=wzt.exports;const QWe=JT(XWe);var mzt={exports:{}};(function(i,a){(function(f,g){i.exports=g()})(X0,function(){return function(f,g){var w=g.prototype,v=w.format;w.format=function(b){var E=this,_=this.$locale();if(!this.isValid())return v.bind(this)(b);var S=this.$utils(),I=(b||"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(B){switch(B){case"Q":return Math.ceil((E.$M+1)/3);case"Do":return _.ordinal(E.$D);case"gggg":return E.weekYear();case"GGGG":return E.isoWeekYear();case"wo":return _.ordinal(E.week(),"W");case"w":case"ww":return S.s(E.week(),B==="w"?1:2,"0");case"W":case"WW":return S.s(E.isoWeek(),B==="W"?1:2,"0");case"k":case"kk":return S.s(String(E.$H===0?24:E.$H),B==="k"?1:2,"0");case"X":return Math.floor(E.$d.getTime()/1e3);case"x":return E.$d.getTime();case"z":return"["+E.offsetName()+"]";case"zzz":return"["+E.offsetName("long")+"]";default:return B}});return v.bind(this)(I)}}})})(mzt);var JWe=mzt.exports;const ZWe=JT(JWe);Q0.extend(YWe),Q0.extend(QWe),Q0.extend(ZWe);let l4="",Jpt="",Zpt,tbt="",tB=[],eB=[],ebt={},nbt=[],sX=[],mM="",rbt="";const vzt=["active","done","crit","milestone"];let ibt=[],nB=!1,sbt=!1,abt="sunday",obt=0;const tYe=function(){nbt=[],sX=[],mM="",ibt=[],aX=0,ubt=void 0,oX=void 0,z1=[],l4="",Jpt="",rbt="",Zpt=void 0,tbt="",tB=[],eB=[],nB=!1,sbt=!1,obt=0,ebt={},Wg(),abt="sunday"},eYe=function(i){Jpt=i},nYe=function(){return Jpt},rYe=function(i){Zpt=i},iYe=function(){return Zpt},sYe=function(i){tbt=i},aYe=function(){return tbt},oYe=function(i){l4=i},cYe=function(){nB=!0},uYe=function(){return nB},lYe=function(){sbt=!0},hYe=function(){return sbt},fYe=function(i){rbt=i},dYe=function(){return rbt},gYe=function(){return l4},pYe=function(i){tB=i.toLowerCase().split(/[\s,]+/)},bYe=function(){return tB},wYe=function(i){eB=i.toLowerCase().split(/[\s,]+/)},mYe=function(){return eB},vYe=function(){return ebt},yYe=function(i){mM=i,nbt.push(i)},xYe=function(){return nbt},kYe=function(){let i=Czt();const a=10;let f=0;for(;!i&&f=6&&f.includes("weekends")||f.includes(i.format("dddd").toLowerCase())?!0:f.includes(i.format(a.trim()))},EYe=function(i){abt=i},TYe=function(){return abt},xzt=function(i,a,f,g){if(!f.length||i.manualEndTime)return;let w;i.startTime instanceof Date?w=Q0(i.startTime):w=Q0(i.startTime,a,!0),w=w.add(1,"d");let v;i.endTime instanceof Date?v=Q0(i.endTime):v=Q0(i.endTime,a,!0);const[b,E]=CYe(w,v,a,f,g);i.endTime=b.toDate(),i.renderEndTime=E},CYe=function(i,a,f,g,w){let v=!1,b=null;for(;i<=a;)v||(b=a.toDate()),v=yzt(i,f,g,w),v&&(a=a.add(1,"d")),i=i.add(1,"d");return[a,b]},cbt=function(i,a,f){f=f.trim();const w=/^after\s+([\d\w- ]+)/.exec(f.trim());if(w!==null){let b=null;if(w[1].split(" ").forEach(function(E){let _=yM(E);_!==void 0&&(b?_.endTime>b.endTime&&(b=_):b=_)}),b)return b.endTime;{const E=new Date;return E.setHours(0,0,0,0),E}}let v=Q0(f,a.trim(),!0);if(v.isValid())return v.toDate();{Wt.debug("Invalid date:"+f),Wt.debug("With date format:"+a.trim());const b=new Date(f);if(b===void 0||isNaN(b.getTime())||b.getFullYear()<-1e4||b.getFullYear()>1e4)throw new Error("Invalid date:"+f);return b}},kzt=function(i){const a=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(i.trim());return a!==null?[Number.parseFloat(a[1]),a[2]]:[NaN,"ms"]},Ezt=function(i,a,f,g=!1){f=f.trim();let w=Q0(f,a.trim(),!0);if(w.isValid())return g&&(w=w.add(1,"d")),w.toDate();let v=Q0(i);const[b,E]=kzt(f);if(!Number.isNaN(b)){const _=v.add(b,E);_.isValid()&&(v=_)}return v.toDate()};let aX=0;const vM=function(i){return i===void 0?(aX=aX+1,"task"+aX):i},_Ye=function(i,a){let f;a.substr(0,1)===":"?f=a.substr(1,a.length):f=a;const g=f.split(","),w={};Azt(g,w,vzt);for(let b=0;b{window.open(f,"_self")}),ebt[g]=f)}),_zt(i,"clickable")},_zt=function(i,a){i.split(",").forEach(function(f){let g=yM(f);g!==void 0&&g.classes.push(a)})},DYe=function(i,a,f){if(Re().securityLevel!=="loose"||a===void 0)return;let g=[];if(typeof f=="string"){g=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let v=0;v{ao.runFunc(a,...g)})},Szt=function(i,a){ibt.push(function(){const f=document.querySelector(`[id="${i}"]`);f!==null&&f.addEventListener("click",function(){a()})},function(){const f=document.querySelector(`[id="${i}-text"]`);f!==null&&f.addEventListener("click",function(){a()})})},IYe={getConfig:()=>Re().gantt,clear:tYe,setDateFormat:oYe,getDateFormat:gYe,enableInclusiveEndDates:cYe,endDatesAreInclusive:uYe,enableTopAxis:lYe,topAxisEnabled:hYe,setAxisFormat:eYe,getAxisFormat:nYe,setTickInterval:rYe,getTickInterval:iYe,setTodayMarker:sYe,getTodayMarker:aYe,setAccTitle:ng,getAccTitle:Yg,setDiagramTitle:y2,getDiagramTitle:Jg,setDisplayMode:fYe,getDisplayMode:dYe,setAccDescription:Xg,getAccDescription:Qg,addSection:yYe,getSections:xYe,getTasks:kYe,addTask:AYe,findTaskById:yM,addTaskOrg:LYe,setIncludes:pYe,getIncludes:bYe,setExcludes:wYe,getExcludes:mYe,setClickEvent:function(i,a,f){i.split(",").forEach(function(g){DYe(g,a,f)}),_zt(i,"clickable")},setLink:MYe,getLinks:vYe,bindFunctions:function(i){ibt.forEach(function(a){a(i)})},parseDuration:kzt,isInvalidDate:yzt,setWeekday:EYe,getWeekday:TYe};function Azt(i,a,f){let g=!0;for(;g;)g=!1,f.forEach(function(w){const v="^\\s*"+w+"\\s*$",b=new RegExp(v);i[0].match(b)&&(a[w]=!0,i.shift(1),g=!0)})}const OYe=function(){Wt.debug("Something is calling, setConf, remove the call")},Lzt={monday:iF,tuesday:xPt,wednesday:kPt,thursday:o9,friday:EPt,saturday:TPt,sunday:rF},PYe=(i,a)=>{let f=[...i].map(()=>-1/0),g=[...i].sort((v,b)=>v.startTime-b.startTime||v.order-b.order),w=0;for(const v of g)for(let b=0;b=f[b]){f[b]=v.endTime,v.order=b+a,b>w&&(w=b);break}return w};let Rx;const NYe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:KWe,db:IYe,renderer:{setConf:OYe,draw:function(i,a,f,g){const w=Re().gantt,v=Re().securityLevel;let b;v==="sandbox"&&(b=xr("#i"+a));const E=xr(v==="sandbox"?b.nodes()[0].contentDocument.body:"body"),_=v==="sandbox"?b.nodes()[0].contentDocument:document,S=_.getElementById(a);Rx=S.parentElement.offsetWidth,Rx===void 0&&(Rx=1200),w.useWidth!==void 0&&(Rx=w.useWidth);const I=g.db.getTasks();let B=[];for(const bt of I)B.push(bt.type);B=ht(B);const F={};let R=2*w.topPadding;if(g.db.getDisplayMode()==="compact"||w.displayMode==="compact"){const bt={};for(const ft of I)bt[ft.section]===void 0?bt[ft.section]=[ft]:bt[ft.section].push(ft);let Z=0;for(const ft of Object.keys(bt)){const Y=PYe(bt[ft],Z)+1;Z+=Y,R+=Y*(w.barHeight+w.barGap),F[ft]=Y}}else{R+=I.length*(w.barHeight+w.barGap);for(const bt of B)F[bt]=I.filter(Z=>Z.type===bt).length}S.setAttribute("viewBox","0 0 "+Rx+" "+R);const q=E.select(`[id="${a}"]`),X=OLe().domain([p9e(I,function(bt){return bt.startTime}),g9e(I,function(bt){return bt.endTime})]).rangeRound([0,Rx-w.leftPadding-w.rightPadding]);function rt(bt,Z){const ft=bt.startTime,Y=Z.startTime;let Et=0;return ft>Y?Et=1:ftxt.order))].map(xt=>bt.find(Gt=>Gt.order===xt));q.append("g").selectAll("rect").data(jt).enter().append("rect").attr("x",0).attr("y",function(xt,Gt){return Gt=xt.order,Gt*Z+ft-2}).attr("width",function(){return Nt-w.rightPadding/2}).attr("height",Z).attr("class",function(xt){for(const[Gt,Be]of B.entries())if(xt.type===Be)return"section section"+Gt%w.numberSectionStyles;return"section section0"});const Ct=q.append("g").selectAll("rect").data(bt).enter(),Ft=g.db.getLinks();if(Ct.append("rect").attr("id",function(xt){return xt.id}).attr("rx",3).attr("ry",3).attr("x",function(xt){return xt.milestone?X(xt.startTime)+Y+.5*(X(xt.endTime)-X(xt.startTime))-.5*Et:X(xt.startTime)+Y}).attr("y",function(xt,Gt){return Gt=xt.order,Gt*Z+ft}).attr("width",function(xt){return xt.milestone?Et:X(xt.renderEndTime||xt.endTime)-X(xt.startTime)}).attr("height",Et).attr("transform-origin",function(xt,Gt){return Gt=xt.order,(X(xt.startTime)+Y+.5*(X(xt.endTime)-X(xt.startTime))).toString()+"px "+(Gt*Z+ft+.5*Et).toString()+"px"}).attr("class",function(xt){const Gt="task";let Be="";xt.classes.length>0&&(Be=xt.classes.join(" "));let Ot=0;for(const[Pe,Ee]of B.entries())xt.type===Ee&&(Ot=Pe%w.numberSectionStyles);let vn="";return xt.active?xt.crit?vn+=" activeCrit":vn=" active":xt.done?xt.crit?vn=" doneCrit":vn=" done":xt.crit&&(vn+=" crit"),vn.length===0&&(vn=" task"),xt.milestone&&(vn=" milestone "+vn),vn+=Ot,vn+=" "+Be,Gt+vn}),Ct.append("text").attr("id",function(xt){return xt.id+"-text"}).text(function(xt){return xt.task}).attr("font-size",w.fontSize).attr("x",function(xt){let Gt=X(xt.startTime),Be=X(xt.renderEndTime||xt.endTime);xt.milestone&&(Gt+=.5*(X(xt.endTime)-X(xt.startTime))-.5*Et),xt.milestone&&(Be=Gt+Et);const Ot=this.getBBox().width;return Ot>Be-Gt?Be+Ot+1.5*w.leftPadding>Nt?Gt+Y-5:Be+Y+5:(Be-Gt)/2+Gt+Y}).attr("y",function(xt,Gt){return Gt=xt.order,Gt*Z+w.barHeight/2+(w.fontSize/2-2)+ft}).attr("text-height",Et).attr("class",function(xt){const Gt=X(xt.startTime);let Be=X(xt.endTime);xt.milestone&&(Be=Gt+Et);const Ot=this.getBBox().width;let vn="";xt.classes.length>0&&(vn=xt.classes.join(" "));let Pe=0;for(const[nn,sn]of B.entries())xt.type===sn&&(Pe=nn%w.numberSectionStyles);let Ee="";return xt.active&&(xt.crit?Ee="activeCritText"+Pe:Ee="activeText"+Pe),xt.done?xt.crit?Ee=Ee+" doneCritText"+Pe:Ee=Ee+" doneText"+Pe:xt.crit&&(Ee=Ee+" critText"+Pe),xt.milestone&&(Ee+=" milestoneText"),Ot>Be-Gt?Be+Ot+1.5*w.leftPadding>Nt?vn+" taskTextOutsideLeft taskTextOutside"+Pe+" "+Ee:vn+" taskTextOutsideRight taskTextOutside"+Pe+" "+Ee+" width-"+Ot:vn+" taskText taskText"+Pe+" "+Ee+" width-"+Ot}),Re().securityLevel==="sandbox"){let xt;xt=xr("#i"+a);const Gt=xt.nodes()[0].contentDocument;Ct.filter(function(Be){return Ft[Be.id]!==void 0}).each(function(Be){var Ot=Gt.querySelector("#"+Be.id),vn=Gt.querySelector("#"+Be.id+"-text");const Pe=Ot.parentNode;var Ee=Gt.createElement("a");Ee.setAttribute("xlink:href",Ft[Be.id]),Ee.setAttribute("target","_top"),Pe.appendChild(Ee),Ee.appendChild(Ot),Ee.appendChild(vn)})}}function pt(bt,Z,ft,Y,Et,V,Nt,Dt){if(Nt.length===0&&Dt.length===0)return;let jt,Ct;for(const{startTime:Ot,endTime:vn}of V)(jt===void 0||OtCt)&&(Ct=vn);if(!jt||!Ct)return;if(Q0(Ct).diff(Q0(jt),"year")>5){Wt.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}const Ft=g.db.getDateFormat(),_t=[];let xt=null,Gt=Q0(jt);for(;Gt.valueOf()<=Ct;)g.db.isInvalidDate(Gt,Ft,Nt,Dt)?xt?xt.end=Gt:xt={start:Gt,end:Gt}:xt&&(_t.push(xt),xt=null),Gt=Gt.add(1,"d");q.append("g").selectAll("rect").data(_t).enter().append("rect").attr("id",function(Ot){return"exclude-"+Ot.start.format("YYYY-MM-DD")}).attr("x",function(Ot){return X(Ot.start)+ft}).attr("y",w.gridLineStartPadding).attr("width",function(Ot){const vn=Ot.end.add(1,"day");return X(vn)-X(Ot.start)}).attr("height",Et-Z-w.gridLineStartPadding).attr("transform-origin",function(Ot,vn){return(X(Ot.start)+ft+.5*(X(Ot.end)-X(Ot.start))).toString()+"px "+(vn*bt+.5*Et).toString()+"px"}).attr("class","exclude-range")}function yt(bt,Z,ft,Y){let Et=T9e(X).tickSize(-Y+Z+w.gridLineStartPadding).tickFormat(_W(g.db.getAxisFormat()||w.axisFormat||"%Y-%m-%d"));const Nt=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(g.db.getTickInterval()||w.tickInterval);if(Nt!==null){const Dt=Nt[1],jt=Nt[2],Ct=g.db.getWeekday()||w.weekday;switch(jt){case"millisecond":Et.ticks(NL.every(Dt));break;case"second":Et.ticks(u8.every(Dt));break;case"minute":Et.ticks(eF.every(Dt));break;case"hour":Et.ticks(nF.every(Dt));break;case"day":Et.ticks(s9.every(Dt));break;case"week":Et.ticks(Lzt[Ct].every(Dt));break;case"month":Et.ticks(sF.every(Dt));break}}if(q.append("g").attr("class","grid").attr("transform","translate("+bt+", "+(Y-50)+")").call(Et).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),g.db.topAxisEnabled()||w.topAxis){let Dt=E9e(X).tickSize(-Y+Z+w.gridLineStartPadding).tickFormat(_W(g.db.getAxisFormat()||w.axisFormat||"%Y-%m-%d"));if(Nt!==null){const jt=Nt[1],Ct=Nt[2],Ft=g.db.getWeekday()||w.weekday;switch(Ct){case"millisecond":Dt.ticks(NL.every(jt));break;case"second":Dt.ticks(u8.every(jt));break;case"minute":Dt.ticks(eF.every(jt));break;case"hour":Dt.ticks(nF.every(jt));break;case"day":Dt.ticks(s9.every(jt));break;case"week":Dt.ticks(Lzt[Ft].every(jt));break;case"month":Dt.ticks(sF.every(jt));break}}q.append("g").attr("class","grid").attr("transform","translate("+bt+", "+Z+")").call(Dt).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}function mt(bt,Z){let ft=0;const Y=Object.keys(F).map(Et=>[Et,F[Et]]);q.append("g").selectAll("text").data(Y).enter().append(function(Et){const V=Et[0].split(ei.lineBreakRegex),Nt=-(V.length-1)/2,Dt=_.createElementNS("http://www.w3.org/2000/svg","text");Dt.setAttribute("dy",Nt+"em");for(const[jt,Ct]of V.entries()){const Ft=_.createElementNS("http://www.w3.org/2000/svg","tspan");Ft.setAttribute("alignment-baseline","central"),Ft.setAttribute("x","10"),jt>0&&Ft.setAttribute("dy","1em"),Ft.textContent=Ct,Dt.appendChild(Ft)}return Dt}).attr("x",10).attr("y",function(Et,V){if(V>0)for(let Nt=0;Nt` + .mermaid-main-font { + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .exclude-range { + fill: ${i.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${i.sectionBkgColor}; + } + + .section2 { + fill: ${i.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${i.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${i.titleColor}; + } + + .sectionTitle1 { + fill: ${i.titleColor}; + } + + .sectionTitle2 { + fill: ${i.titleColor}; + } + + .sectionTitle3 { + fill: ${i.titleColor}; + } + + .sectionTitle { + text-anchor: start; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${i.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + } + + .grid .tick text { + font-family: ${i.fontFamily}; + fill: ${i.textColor}; + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${i.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .taskTextOutsideRight { + fill: ${i.taskTextDarkColor}; + text-anchor: start; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .taskTextOutsideLeft { + fill: ${i.taskTextDarkColor}; + text-anchor: end; + } + + + /* Special case clickable */ + + .task.clickable { + cursor: pointer; + } + + .taskText.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${i.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${i.taskBkgColor}; + stroke: ${i.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${i.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${i.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${i.activeTaskBkgColor}; + stroke: ${i.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${i.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${i.doneTaskBorderColor}; + fill: ${i.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${i.taskTextDarkColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${i.critBorderColor}; + fill: ${i.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${i.critBorderColor}; + fill: ${i.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${i.critBorderColor}; + fill: ${i.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: ${i.taskTextDarkColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${i.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.titleColor||i.textColor}; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } +`}},Symbol.toStringTag,{value:"Module"}));var lbt=function(){var i=function(v,b,E,_){for(E=E||{},_=v.length;_--;E[v[_]]=b);return E},a=[6,9,10],f={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(b,E,_,S,I,B,F){switch(B.length-1,I){case 1:return S;case 4:break;case 6:S.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},i(a,[2,3]),i(a,[2,4]),i(a,[2,5]),i(a,[2,6])],defaultActions:{4:[2,1]},parseError:function(b,E){if(E.recoverable)this.trace(b);else{var _=new Error(b);throw _.hash=E,_}},parse:function(b){var E=this,_=[0],S=[],I=[null],B=[],F=this.table,R="",q=0,X=0,rt=2,at=1,ut=B.slice.call(arguments,1),pt=Object.create(this.lexer),yt={yy:{}};for(var mt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,mt)&&(yt.yy[mt]=this.yy[mt]);pt.setInput(b,yt.yy),yt.yy.lexer=pt,yt.yy.parser=this,typeof pt.yylloc>"u"&&(pt.yylloc={});var gt=pt.yylloc;B.push(gt);var ht=pt.options&&pt.options.ranges;typeof yt.yy.parseError=="function"?this.parseError=yt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function bt(){var _t;return _t=S.pop()||pt.lex()||at,typeof _t!="number"&&(_t instanceof Array&&(S=_t,_t=S.pop()),_t=E.symbols_[_t]||_t),_t}for(var Z,ft,Y,Et,V={},Nt,Dt,jt,Ct;;){if(ft=_[_.length-1],this.defaultActions[ft]?Y=this.defaultActions[ft]:((Z===null||typeof Z>"u")&&(Z=bt()),Y=F[ft]&&F[ft][Z]),typeof Y>"u"||!Y.length||!Y[0]){var Ft="";Ct=[];for(Nt in F[ft])this.terminals_[Nt]&&Nt>rt&&Ct.push("'"+this.terminals_[Nt]+"'");pt.showPosition?Ft="Parse error on line "+(q+1)+`: +`+pt.showPosition()+` +Expecting `+Ct.join(", ")+", got '"+(this.terminals_[Z]||Z)+"'":Ft="Parse error on line "+(q+1)+": Unexpected "+(Z==at?"end of input":"'"+(this.terminals_[Z]||Z)+"'"),this.parseError(Ft,{text:pt.match,token:this.terminals_[Z]||Z,line:pt.yylineno,loc:gt,expected:Ct})}if(Y[0]instanceof Array&&Y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ft+", token: "+Z);switch(Y[0]){case 1:_.push(Z),I.push(pt.yytext),B.push(pt.yylloc),_.push(Y[1]),Z=null,X=pt.yyleng,R=pt.yytext,q=pt.yylineno,gt=pt.yylloc;break;case 2:if(Dt=this.productions_[Y[1]][1],V.$=I[I.length-Dt],V._$={first_line:B[B.length-(Dt||1)].first_line,last_line:B[B.length-1].last_line,first_column:B[B.length-(Dt||1)].first_column,last_column:B[B.length-1].last_column},ht&&(V._$.range=[B[B.length-(Dt||1)].range[0],B[B.length-1].range[1]]),Et=this.performAction.apply(V,[R,X,q,yt.yy,Y[1],I,B].concat(ut)),typeof Et<"u")return Et;Dt&&(_=_.slice(0,-1*Dt*2),I=I.slice(0,-1*Dt),B=B.slice(0,-1*Dt)),_.push(this.productions_[Y[1]][0]),I.push(V.$),B.push(V._$),jt=F[_[_.length-2]][_[_.length-1]],_.push(jt);break;case 3:return!0}}return!0}},g=function(){var v={EOF:1,parseError:function(E,_){if(this.yy.parser)this.yy.parser.parseError(E,_);else throw new Error(E)},setInput:function(b,E){return this.yy=E||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},input:function(){var b=this._input[0];this.yytext+=b,this.yyleng++,this.offset++,this.match+=b,this.matched+=b;var E=b.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),b},unput:function(b){var E=b.length,_=b.split(/(?:\r\n?|\n)/g);this._input=b+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-E),this.offset-=E;var S=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),_.length-1&&(this.yylineno-=_.length-1);var I=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:_?(_.length===S.length?this.yylloc.first_column:0)+S[S.length-_.length].length-_[0].length:this.yylloc.first_column-E},this.options.ranges&&(this.yylloc.range=[I[0],I[0]+this.yyleng-E]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(b){this.unput(this.match.slice(b))},pastInput:function(){var b=this.matched.substr(0,this.matched.length-this.match.length);return(b.length>20?"...":"")+b.substr(-20).replace(/\n/g,"")},upcomingInput: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,"")},showPosition:function(){var b=this.pastInput(),E=new Array(b.length+1).join("-");return b+this.upcomingInput()+` +`+E+"^"},test_match:function(b,E){var _,S,I;if(this.options.backtrack_lexer&&(I={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(I.yylloc.range=this.yylloc.range.slice(0))),S=b[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+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,E,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),_)return _;if(this._backtrack){for(var B in I)this[B]=I[B];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var b,E,_,S;this._more||(this.yytext="",this.match="");for(var I=this._currentRules(),B=0;BE[0].length)){if(E=_,S=B,this.options.backtrack_lexer){if(b=this.test_match(_,I[B]),b!==!1)return b;if(this._backtrack){E=!1;continue}else return!1}else if(!this.options.flex)break}return E?(b=this.test_match(E,I[S]),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})},lex:function(){var E=this.next();return E||this.lex()},begin:function(E){this.conditionStack.push(E)},popState:function(){var E=this.conditionStack.length-1;return E>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(E){return E=this.conditionStack.length-1-Math.abs(E||0),E>=0?this.conditionStack[E]:"INITIAL"},pushState:function(E){this.begin(E)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(E,_,S,I){switch(S){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};return v}();f.lexer=g;function w(){this.yy={}}return w.prototype=f,f.Parser=w,new w}();lbt.parser=lbt;const FYe=lbt,Mzt={info:!1};let hbt=Mzt.info;const BYe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:FYe,db:{clear:()=>{hbt=Mzt.info},setInfo:i=>{hbt=i},getInfo:()=>hbt},renderer:{draw:(i,a,f)=>{Wt.debug(`rendering info diagram +`+i);const g=wY(a);Kg(g,100,400,!0),g.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${f}`)}}}},Symbol.toStringTag,{value:"Module"}));var fbt=function(){var i=function(pt,yt,mt,gt){for(mt=mt||{},gt=pt.length;gt--;mt[pt[gt]]=yt);return mt},a=[1,3],f=[1,4],g=[1,5],w=[1,6],v=[1,10,12,14,16,18,19,20,21,22],b=[2,4],E=[1,5,10,12,14,16,18,19,20,21,22],_=[20,21,22],S=[2,7],I=[1,12],B=[1,13],F=[1,14],R=[1,15],q=[1,16],X=[1,17],rt={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,PIE:5,document:6,showData:7,line:8,statement:9,txt:10,value:11,title:12,title_value:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,section:19,NEWLINE:20,";":21,EOF:22,$accept:0,$end:1},terminals_:{2:"error",5:"PIE",7:"showData",10:"txt",11:"value",12:"title",13:"title_value",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"section",20:"NEWLINE",21:";",22:"EOF"},productions_:[0,[3,2],[3,2],[3,3],[6,0],[6,2],[8,2],[9,0],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[4,1],[4,1],[4,1]],performAction:function(yt,mt,gt,ht,bt,Z,ft){var Y=Z.length-1;switch(bt){case 3:ht.setShowData(!0);break;case 6:this.$=Z[Y-1];break;case 8:ht.addSection(Z[Y-1],ht.cleanupValue(Z[Y]));break;case 9:this.$=Z[Y].trim(),ht.setDiagramTitle(this.$);break;case 10:this.$=Z[Y].trim(),ht.setAccTitle(this.$);break;case 11:case 12:this.$=Z[Y].trim(),ht.setAccDescription(this.$);break;case 13:ht.addSection(Z[Y].substr(8)),this.$=Z[Y].substr(8);break}},table:[{3:1,4:2,5:a,20:f,21:g,22:w},{1:[3]},{3:7,4:2,5:a,20:f,21:g,22:w},i(v,b,{6:8,7:[1,9]}),i(E,[2,14]),i(E,[2,15]),i(E,[2,16]),{1:[2,1]},i(_,S,{8:10,9:11,1:[2,2],10:I,12:B,14:F,16:R,18:q,19:X}),i(v,b,{6:18}),i(v,[2,5]),{4:19,20:f,21:g,22:w},{11:[1,20]},{13:[1,21]},{15:[1,22]},{17:[1,23]},i(_,[2,12]),i(_,[2,13]),i(_,S,{8:10,9:11,1:[2,3],10:I,12:B,14:F,16:R,18:q,19:X}),i(v,[2,6]),i(_,[2,8]),i(_,[2,9]),i(_,[2,10]),i(_,[2,11])],defaultActions:{7:[2,1]},parseError:function(yt,mt){if(mt.recoverable)this.trace(yt);else{var gt=new Error(yt);throw gt.hash=mt,gt}},parse:function(yt){var mt=this,gt=[0],ht=[],bt=[null],Z=[],ft=this.table,Y="",Et=0,V=0,Nt=2,Dt=1,jt=Z.slice.call(arguments,1),Ct=Object.create(this.lexer),Ft={yy:{}};for(var _t in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_t)&&(Ft.yy[_t]=this.yy[_t]);Ct.setInput(yt,Ft.yy),Ft.yy.lexer=Ct,Ft.yy.parser=this,typeof Ct.yylloc>"u"&&(Ct.yylloc={});var xt=Ct.yylloc;Z.push(xt);var Gt=Ct.options&&Ct.options.ranges;typeof Ft.yy.parseError=="function"?this.parseError=Ft.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Be(){var Se;return Se=ht.pop()||Ct.lex()||Dt,typeof Se!="number"&&(Se instanceof Array&&(ht=Se,Se=ht.pop()),Se=mt.symbols_[Se]||Se),Se}for(var Ot,vn,Pe,Ee,nn={},sn,me,Fe,Qt;;){if(vn=gt[gt.length-1],this.defaultActions[vn]?Pe=this.defaultActions[vn]:((Ot===null||typeof Ot>"u")&&(Ot=Be()),Pe=ft[vn]&&ft[vn][Ot]),typeof Pe>"u"||!Pe.length||!Pe[0]){var Ae="";Qt=[];for(sn in ft[vn])this.terminals_[sn]&&sn>Nt&&Qt.push("'"+this.terminals_[sn]+"'");Ct.showPosition?Ae="Parse error on line "+(Et+1)+`: +`+Ct.showPosition()+` +Expecting `+Qt.join(", ")+", got '"+(this.terminals_[Ot]||Ot)+"'":Ae="Parse error on line "+(Et+1)+": Unexpected "+(Ot==Dt?"end of input":"'"+(this.terminals_[Ot]||Ot)+"'"),this.parseError(Ae,{text:Ct.match,token:this.terminals_[Ot]||Ot,line:Ct.yylineno,loc:xt,expected:Qt})}if(Pe[0]instanceof Array&&Pe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+vn+", token: "+Ot);switch(Pe[0]){case 1:gt.push(Ot),bt.push(Ct.yytext),Z.push(Ct.yylloc),gt.push(Pe[1]),Ot=null,V=Ct.yyleng,Y=Ct.yytext,Et=Ct.yylineno,xt=Ct.yylloc;break;case 2:if(me=this.productions_[Pe[1]][1],nn.$=bt[bt.length-me],nn._$={first_line:Z[Z.length-(me||1)].first_line,last_line:Z[Z.length-1].last_line,first_column:Z[Z.length-(me||1)].first_column,last_column:Z[Z.length-1].last_column},Gt&&(nn._$.range=[Z[Z.length-(me||1)].range[0],Z[Z.length-1].range[1]]),Ee=this.performAction.apply(nn,[Y,V,Et,Ft.yy,Pe[1],bt,Z].concat(jt)),typeof Ee<"u")return Ee;me&&(gt=gt.slice(0,-1*me*2),bt=bt.slice(0,-1*me),Z=Z.slice(0,-1*me)),gt.push(this.productions_[Pe[1]][0]),bt.push(nn.$),Z.push(nn._$),Fe=ft[gt[gt.length-2]][gt[gt.length-1]],gt.push(Fe);break;case 3:return!0}}return!0}},at=function(){var pt={EOF:1,parseError:function(mt,gt){if(this.yy.parser)this.yy.parser.parseError(mt,gt);else throw new Error(mt)},setInput:function(yt,mt){return this.yy=mt||this.yy||{},this._input=yt,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},input:function(){var yt=this._input[0];this.yytext+=yt,this.yyleng++,this.offset++,this.match+=yt,this.matched+=yt;var mt=yt.match(/(?:\r\n?|\n).*/g);return mt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),yt},unput:function(yt){var mt=yt.length,gt=yt.split(/(?:\r\n?|\n)/g);this._input=yt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-mt),this.offset-=mt;var ht=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),gt.length-1&&(this.yylineno-=gt.length-1);var bt=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:gt?(gt.length===ht.length?this.yylloc.first_column:0)+ht[ht.length-gt.length].length-gt[0].length:this.yylloc.first_column-mt},this.options.ranges&&(this.yylloc.range=[bt[0],bt[0]+this.yyleng-mt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(yt){this.unput(this.match.slice(yt))},pastInput:function(){var yt=this.matched.substr(0,this.matched.length-this.match.length);return(yt.length>20?"...":"")+yt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var yt=this.match;return yt.length<20&&(yt+=this._input.substr(0,20-yt.length)),(yt.substr(0,20)+(yt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var yt=this.pastInput(),mt=new Array(yt.length+1).join("-");return yt+this.upcomingInput()+` +`+mt+"^"},test_match:function(yt,mt){var gt,ht,bt;if(this.options.backtrack_lexer&&(bt={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&&(bt.yylloc.range=this.yylloc.range.slice(0))),ht=yt[0].match(/(?:\r\n?|\n).*/g),ht&&(this.yylineno+=ht.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ht?ht[ht.length-1].length-ht[ht.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+yt[0].length},this.yytext+=yt[0],this.match+=yt[0],this.matches=yt,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(yt[0].length),this.matched+=yt[0],gt=this.performAction.call(this,this.yy,this,mt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),gt)return gt;if(this._backtrack){for(var Z in bt)this[Z]=bt[Z];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var yt,mt,gt,ht;this._more||(this.yytext="",this.match="");for(var bt=this._currentRules(),Z=0;Zmt[0].length)){if(mt=gt,ht=Z,this.options.backtrack_lexer){if(yt=this.test_match(gt,bt[Z]),yt!==!1)return yt;if(this._backtrack){mt=!1;continue}else return!1}else if(!this.options.flex)break}return mt?(yt=this.test_match(mt,bt[ht]),yt!==!1?yt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var mt=this.next();return mt||this.lex()},begin:function(mt){this.conditionStack.push(mt)},popState:function(){var mt=this.conditionStack.length-1;return mt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(mt){return mt=this.conditionStack.length-1-Math.abs(mt||0),mt>=0?this.conditionStack[mt]:"INITIAL"},pushState:function(mt){this.begin(mt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(mt,gt,ht,bt){switch(ht){case 0:break;case 1:break;case 2:return 20;case 3:break;case 4:break;case 5:return this.begin("title"),12;case 6:return this.popState(),"title_value";case 7:return this.begin("acc_title"),14;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),16;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:this.begin("string");break;case 15:this.popState();break;case 16:return"txt";case 17:return 5;case 18:return 7;case 19:return"value";case 20:return 22}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/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,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[6],inclusive:!1},string:{rules:[15,16],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,7,9,11,14,17,18,19,20],inclusive:!0}}};return pt}();rt.lexer=at;function ut(){this.yy={}}return ut.prototype=rt,rt.Parser=ut,new ut}();fbt.parser=fbt;const RYe=fbt,Dzt=yf.pie,cX={sections:{},showData:!1,config:Dzt};let uX=cX.sections,dbt=cX.showData;const jYe=structuredClone(Dzt),$Ye={getConfig:()=>structuredClone(jYe),clear:()=>{uX=structuredClone(cX.sections),dbt=cX.showData,Wg()},setDiagramTitle:y2,getDiagramTitle:Jg,setAccTitle:ng,getAccTitle:Yg,setAccDescription:Xg,getAccDescription:Qg,addSection:(i,a)=>{i=Ed(i,Re()),uX[i]===void 0&&(uX[i]=a,Wt.debug(`added new section: ${i}, with value: ${a}`))},getSections:()=>uX,cleanupValue:i=>(i.substring(0,1)===":"&&(i=i.substring(1).trim()),Number(i.trim())),setShowData:i=>{dbt=i},getShowData:()=>dbt},zYe=i=>` + .pieCircle{ + stroke: ${i.pieStrokeColor}; + stroke-width : ${i.pieStrokeWidth}; + opacity : ${i.pieOpacity}; + } + .pieOuterCircle{ + stroke: ${i.pieOuterStrokeColor}; + stroke-width: ${i.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${i.pieTitleTextSize}; + fill: ${i.pieTitleTextColor}; + font-family: ${i.fontFamily}; + } + .slice { + font-family: ${i.fontFamily}; + fill: ${i.pieSectionTextColor}; + font-size:${i.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${i.pieLegendTextColor}; + font-family: ${i.fontFamily}; + font-size: ${i.pieLegendTextSize}; + } +`,qYe=i=>{const a=Object.entries(i).map(g=>({label:g[0],value:g[1]})).sort((g,w)=>w.value-g.value);return WLe().value(g=>g.value)(a)},HYe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:RYe,db:$Ye,renderer:{draw:(i,a,f,g)=>{Wt.debug(`rendering pie chart +`+i);const w=g.db,v=Re(),b=TF(w.getConfig(),v.pie),E=40,_=18,S=4,I=450,B=I,F=wY(a),R=F.append("g"),q=w.getSections();R.attr("transform","translate("+B/2+","+I/2+")");const{themeVariables:X}=v;let[rt]=QL(X.pieOuterStrokeWidth);rt??(rt=2);const at=b.textPosition,ut=Math.min(B,I)/2-E,pt=jL().innerRadius(0).outerRadius(ut),yt=jL().innerRadius(ut*at).outerRadius(ut*at);R.append("circle").attr("cx",0).attr("cy",0).attr("r",ut+rt/2).attr("class","pieOuterCircle");const mt=qYe(q),gt=[X.pie1,X.pie2,X.pie3,X.pie4,X.pie5,X.pie6,X.pie7,X.pie8,X.pie9,X.pie10,X.pie11,X.pie12],ht=TW(gt);R.selectAll("mySlices").data(mt).enter().append("path").attr("d",pt).attr("fill",Et=>ht(Et.data.label)).attr("class","pieCircle");let bt=0;Object.keys(q).forEach(Et=>{bt+=q[Et]}),R.selectAll("mySlices").data(mt).enter().append("text").text(Et=>(Et.data.value/bt*100).toFixed(0)+"%").attr("transform",Et=>"translate("+yt.centroid(Et)+")").style("text-anchor","middle").attr("class","slice"),R.append("text").text(w.getDiagramTitle()).attr("x",0).attr("y",-(I-50)/2).attr("class","pieTitleText");const Z=R.selectAll(".legend").data(ht.domain()).enter().append("g").attr("class","legend").attr("transform",(Et,V)=>{const Nt=_+S,Dt=Nt*ht.domain().length/2,jt=12*_,Ct=V*Nt-Dt;return"translate("+jt+","+Ct+")"});Z.append("rect").attr("width",_).attr("height",_).style("fill",ht).style("stroke",ht),Z.data(mt).append("text").attr("x",_+S).attr("y",_-S).text(Et=>{const{label:V,value:Nt}=Et.data;return w.getShowData()?`${V} [${Nt}]`:V});const ft=Math.max(...Z.selectAll("text").nodes().map(Et=>(Et==null?void 0:Et.getBoundingClientRect().width)??0)),Y=B+E+_+S+ft;F.attr("viewBox",`0 0 ${Y} ${I}`),Kg(F,I,Y,b.useMaxWidth)}},styles:zYe}},Symbol.toStringTag,{value:"Module"}));var gbt=function(){var i=function(Pe,Ee,nn,sn){for(nn=nn||{},sn=Pe.length;sn--;nn[Pe[sn]]=Ee);return nn},a=[1,3],f=[1,4],g=[1,5],w=[1,6],v=[1,7],b=[1,5,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],E=[1,5,6,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],_=[32,33,34],S=[2,7],I=[1,13],B=[1,17],F=[1,18],R=[1,19],q=[1,20],X=[1,21],rt=[1,22],at=[1,23],ut=[1,24],pt=[1,25],yt=[1,26],mt=[1,27],gt=[1,30],ht=[1,31],bt=[1,32],Z=[1,33],ft=[1,34],Y=[1,35],Et=[1,36],V=[1,37],Nt=[1,38],Dt=[1,39],jt=[1,40],Ct=[1,41],Ft=[1,42],_t=[1,57],xt=[1,58],Gt=[5,22,26,32,33,34,40,41,42,43,44,45,46,47,48,49,50,51],Be={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,SPACE:5,QUADRANT:6,document:7,line:8,statement:9,axisDetails:10,quadrantDetails:11,points:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,text:21,point_start:22,point_x:23,point_y:24,"X-AXIS":25,"AXIS-TEXT-DELIMITER":26,"Y-AXIS":27,QUADRANT_1:28,QUADRANT_2:29,QUADRANT_3:30,QUADRANT_4:31,NEWLINE:32,SEMI:33,EOF:34,alphaNumToken:35,textNoTagsToken:36,STR:37,MD_STR:38,alphaNum:39,PUNCTUATION:40,AMP:41,NUM:42,ALPHA:43,COMMA:44,PLUS:45,EQUALS:46,MULT:47,DOT:48,BRKT:49,UNDERSCORE:50,MINUS:51,$accept:0,$end:1},terminals_:{2:"error",5:"SPACE",6:"QUADRANT",13:"title",14:"title_value",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",22:"point_start",23:"point_x",24:"point_y",25:"X-AXIS",26:"AXIS-TEXT-DELIMITER",27:"Y-AXIS",28:"QUADRANT_1",29:"QUADRANT_2",30:"QUADRANT_3",31:"QUADRANT_4",32:"NEWLINE",33:"SEMI",34:"EOF",37:"STR",38:"MD_STR",40:"PUNCTUATION",41:"AMP",42:"NUM",43:"ALPHA",44:"COMMA",45:"PLUS",46:"EQUALS",47:"MULT",48:"DOT",49:"BRKT",50:"UNDERSCORE",51:"MINUS"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[9,0],[9,2],[9,1],[9,1],[9,1],[9,2],[9,2],[9,2],[9,1],[9,1],[12,4],[10,4],[10,3],[10,2],[10,4],[10,3],[10,2],[11,2],[11,2],[11,2],[11,2],[4,1],[4,1],[4,1],[21,1],[21,2],[21,1],[21,1],[39,1],[39,2],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[36,1],[36,1],[36,1]],performAction:function(Ee,nn,sn,me,Fe,Qt,Ae){var Se=Qt.length-1;switch(Fe){case 12:this.$=Qt[Se].trim(),me.setDiagramTitle(this.$);break;case 13:this.$=Qt[Se].trim(),me.setAccTitle(this.$);break;case 14:case 15:this.$=Qt[Se].trim(),me.setAccDescription(this.$);break;case 16:me.addSection(Qt[Se].substr(8)),this.$=Qt[Se].substr(8);break;case 17:me.addPoint(Qt[Se-3],Qt[Se-1],Qt[Se]);break;case 18:me.setXAxisLeftText(Qt[Se-2]),me.setXAxisRightText(Qt[Se]);break;case 19:Qt[Se-1].text+=" ⟶ ",me.setXAxisLeftText(Qt[Se-1]);break;case 20:me.setXAxisLeftText(Qt[Se]);break;case 21:me.setYAxisBottomText(Qt[Se-2]),me.setYAxisTopText(Qt[Se]);break;case 22:Qt[Se-1].text+=" ⟶ ",me.setYAxisBottomText(Qt[Se-1]);break;case 23:me.setYAxisBottomText(Qt[Se]);break;case 24:me.setQuadrant1Text(Qt[Se]);break;case 25:me.setQuadrant2Text(Qt[Se]);break;case 26:me.setQuadrant3Text(Qt[Se]);break;case 27:me.setQuadrant4Text(Qt[Se]);break;case 31:this.$={text:Qt[Se],type:"text"};break;case 32:this.$={text:Qt[Se-1].text+""+Qt[Se],type:Qt[Se-1].type};break;case 33:this.$={text:Qt[Se],type:"text"};break;case 34:this.$={text:Qt[Se],type:"markdown"};break;case 35:this.$=Qt[Se];break;case 36:this.$=Qt[Se-1]+""+Qt[Se];break}},table:[{3:1,4:2,5:a,6:f,32:g,33:w,34:v},{1:[3]},{3:8,4:2,5:a,6:f,32:g,33:w,34:v},{3:9,4:2,5:a,6:f,32:g,33:w,34:v},i(b,[2,4],{7:10}),i(E,[2,28]),i(E,[2,29]),i(E,[2,30]),{1:[2,1]},{1:[2,2]},i(_,S,{8:11,9:12,10:14,11:15,12:16,21:28,35:29,1:[2,3],5:I,13:B,15:F,17:R,19:q,20:X,25:rt,27:at,28:ut,29:pt,30:yt,31:mt,37:gt,38:ht,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft}),i(b,[2,5]),{4:43,32:g,33:w,34:v},i(_,S,{10:14,11:15,12:16,21:28,35:29,9:44,5:I,13:B,15:F,17:R,19:q,20:X,25:rt,27:at,28:ut,29:pt,30:yt,31:mt,37:gt,38:ht,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft}),i(_,[2,9]),i(_,[2,10]),i(_,[2,11]),{14:[1,45]},{16:[1,46]},{18:[1,47]},i(_,[2,15]),i(_,[2,16]),{21:48,35:29,37:gt,38:ht,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft},{21:49,35:29,37:gt,38:ht,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft},{21:50,35:29,37:gt,38:ht,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft},{21:51,35:29,37:gt,38:ht,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft},{21:52,35:29,37:gt,38:ht,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft},{21:53,35:29,37:gt,38:ht,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft},{5:_t,22:[1,54],35:56,36:55,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft,51:xt},i(Gt,[2,31]),i(Gt,[2,33]),i(Gt,[2,34]),i(Gt,[2,37]),i(Gt,[2,38]),i(Gt,[2,39]),i(Gt,[2,40]),i(Gt,[2,41]),i(Gt,[2,42]),i(Gt,[2,43]),i(Gt,[2,44]),i(Gt,[2,45]),i(Gt,[2,46]),i(Gt,[2,47]),i(b,[2,6]),i(_,[2,8]),i(_,[2,12]),i(_,[2,13]),i(_,[2,14]),i(_,[2,20],{36:55,35:56,5:_t,26:[1,59],40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft,51:xt}),i(_,[2,23],{36:55,35:56,5:_t,26:[1,60],40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft,51:xt}),i(_,[2,24],{36:55,35:56,5:_t,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft,51:xt}),i(_,[2,25],{36:55,35:56,5:_t,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft,51:xt}),i(_,[2,26],{36:55,35:56,5:_t,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft,51:xt}),i(_,[2,27],{36:55,35:56,5:_t,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft,51:xt}),{23:[1,61]},i(Gt,[2,32]),i(Gt,[2,48]),i(Gt,[2,49]),i(Gt,[2,50]),i(_,[2,19],{35:29,21:62,37:gt,38:ht,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft}),i(_,[2,22],{35:29,21:63,37:gt,38:ht,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft}),{24:[1,64]},i(_,[2,18],{36:55,35:56,5:_t,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft,51:xt}),i(_,[2,21],{36:55,35:56,5:_t,40:bt,41:Z,42:ft,43:Y,44:Et,45:V,46:Nt,47:Dt,48:jt,49:Ct,50:Ft,51:xt}),i(_,[2,17])],defaultActions:{8:[2,1],9:[2,2]},parseError:function(Ee,nn){if(nn.recoverable)this.trace(Ee);else{var sn=new Error(Ee);throw sn.hash=nn,sn}},parse:function(Ee){var nn=this,sn=[0],me=[],Fe=[null],Qt=[],Ae=this.table,Se="",Dn=0,oe=0,Pr=2,we=1,Ri=Qt.slice.call(arguments,1),yi=Object.create(this.lexer),da={yy:{}};for(var Ss in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ss)&&(da.yy[Ss]=this.yy[Ss]);yi.setInput(Ee,da.yy),da.yy.lexer=yi,da.yy.parser=this,typeof yi.yylloc>"u"&&(yi.yylloc={});var Ra=yi.yylloc;Qt.push(Ra);var fr=yi.options&&yi.options.ranges;typeof da.yy.parseError=="function"?this.parseError=da.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function An(){var ma;return ma=me.pop()||yi.lex()||we,typeof ma!="number"&&(ma instanceof Array&&(me=ma,ma=me.pop()),ma=nn.symbols_[ma]||ma),ma}for(var Pn,Bn,Te,be,Qe={},rn,yn,ja,mo;;){if(Bn=sn[sn.length-1],this.defaultActions[Bn]?Te=this.defaultActions[Bn]:((Pn===null||typeof Pn>"u")&&(Pn=An()),Te=Ae[Bn]&&Ae[Bn][Pn]),typeof Te>"u"||!Te.length||!Te[0]){var vo="";mo=[];for(rn in Ae[Bn])this.terminals_[rn]&&rn>Pr&&mo.push("'"+this.terminals_[rn]+"'");yi.showPosition?vo="Parse error on line "+(Dn+1)+`: +`+yi.showPosition()+` +Expecting `+mo.join(", ")+", got '"+(this.terminals_[Pn]||Pn)+"'":vo="Parse error on line "+(Dn+1)+": Unexpected "+(Pn==we?"end of input":"'"+(this.terminals_[Pn]||Pn)+"'"),this.parseError(vo,{text:yi.match,token:this.terminals_[Pn]||Pn,line:yi.yylineno,loc:Ra,expected:mo})}if(Te[0]instanceof Array&&Te.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Bn+", token: "+Pn);switch(Te[0]){case 1:sn.push(Pn),Fe.push(yi.yytext),Qt.push(yi.yylloc),sn.push(Te[1]),Pn=null,oe=yi.yyleng,Se=yi.yytext,Dn=yi.yylineno,Ra=yi.yylloc;break;case 2:if(yn=this.productions_[Te[1]][1],Qe.$=Fe[Fe.length-yn],Qe._$={first_line:Qt[Qt.length-(yn||1)].first_line,last_line:Qt[Qt.length-1].last_line,first_column:Qt[Qt.length-(yn||1)].first_column,last_column:Qt[Qt.length-1].last_column},fr&&(Qe._$.range=[Qt[Qt.length-(yn||1)].range[0],Qt[Qt.length-1].range[1]]),be=this.performAction.apply(Qe,[Se,oe,Dn,da.yy,Te[1],Fe,Qt].concat(Ri)),typeof be<"u")return be;yn&&(sn=sn.slice(0,-1*yn*2),Fe=Fe.slice(0,-1*yn),Qt=Qt.slice(0,-1*yn)),sn.push(this.productions_[Te[1]][0]),Fe.push(Qe.$),Qt.push(Qe._$),ja=Ae[sn[sn.length-2]][sn[sn.length-1]],sn.push(ja);break;case 3:return!0}}return!0}},Ot=function(){var Pe={EOF:1,parseError:function(nn,sn){if(this.yy.parser)this.yy.parser.parseError(nn,sn);else throw new Error(nn)},setInput:function(Ee,nn){return this.yy=nn||this.yy||{},this._input=Ee,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},input:function(){var Ee=this._input[0];this.yytext+=Ee,this.yyleng++,this.offset++,this.match+=Ee,this.matched+=Ee;var nn=Ee.match(/(?:\r\n?|\n).*/g);return nn?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ee},unput:function(Ee){var nn=Ee.length,sn=Ee.split(/(?:\r\n?|\n)/g);this._input=Ee+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-nn),this.offset-=nn;var me=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),sn.length-1&&(this.yylineno-=sn.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:sn?(sn.length===me.length?this.yylloc.first_column:0)+me[me.length-sn.length].length-sn[0].length:this.yylloc.first_column-nn},this.options.ranges&&(this.yylloc.range=[Fe[0],Fe[0]+this.yyleng-nn]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(Ee){this.unput(this.match.slice(Ee))},pastInput:function(){var Ee=this.matched.substr(0,this.matched.length-this.match.length);return(Ee.length>20?"...":"")+Ee.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Ee=this.match;return Ee.length<20&&(Ee+=this._input.substr(0,20-Ee.length)),(Ee.substr(0,20)+(Ee.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Ee=this.pastInput(),nn=new Array(Ee.length+1).join("-");return Ee+this.upcomingInput()+` +`+nn+"^"},test_match:function(Ee,nn){var sn,me,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))),me=Ee[0].match(/(?:\r\n?|\n).*/g),me&&(this.yylineno+=me.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:me?me[me.length-1].length-me[me.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ee[0].length},this.yytext+=Ee[0],this.match+=Ee[0],this.matches=Ee,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(Ee[0].length),this.matched+=Ee[0],sn=this.performAction.call(this,this.yy,this,nn,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),sn)return sn;if(this._backtrack){for(var Qt in Fe)this[Qt]=Fe[Qt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ee,nn,sn,me;this._more||(this.yytext="",this.match="");for(var Fe=this._currentRules(),Qt=0;Qtnn[0].length)){if(nn=sn,me=Qt,this.options.backtrack_lexer){if(Ee=this.test_match(sn,Fe[Qt]),Ee!==!1)return Ee;if(this._backtrack){nn=!1;continue}else return!1}else if(!this.options.flex)break}return nn?(Ee=this.test_match(nn,Fe[me]),Ee!==!1?Ee:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var nn=this.next();return nn||this.lex()},begin:function(nn){this.conditionStack.push(nn)},popState:function(){var nn=this.conditionStack.length-1;return nn>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(nn){return nn=this.conditionStack.length-1-Math.abs(nn||0),nn>=0?this.conditionStack[nn]:"INITIAL"},pushState:function(nn){this.begin(nn)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(nn,sn,me,Fe){switch(me){case 0:break;case 1:break;case 2:return 32;case 3:break;case 4:return this.begin("title"),13;case 5:return this.popState(),"title_value";case 6:return this.begin("acc_title"),15;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),17;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 25;case 14:return 27;case 15:return 26;case 16:return 28;case 17:return 29;case 18:return 30;case 19:return 31;case 20:this.begin("md_string");break;case 21:return"MD_STR";case 22:this.popState();break;case 23:this.begin("string");break;case 24:this.popState();break;case 25:return"STR";case 26:return this.begin("point_start"),22;case 27:return this.begin("point_x"),23;case 28:this.popState();break;case 29:this.popState(),this.begin("point_y");break;case 30:return this.popState(),24;case 31:return 6;case 32:return 43;case 33:return"COLON";case 34:return 45;case 35:return 44;case 36:return 46;case 37:return 46;case 38:return 47;case 39:return 49;case 40:return 50;case 41:return 48;case 42:return 41;case 43:return 51;case 44:return 42;case 45:return 5;case 46:return 33;case 47:return 40;case 48:return 34}},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,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{point_y:{rules:[30],inclusive:!1},point_x:{rules:[29],inclusive:!1},point_start:{rules:[27,28],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:[21,22],inclusive:!1},string:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,23,26,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],inclusive:!0}}};return Pe}();Be.lexer=Ot;function vn(){this.yy={}}return vn.prototype=Be,Be.Parser=vn,new vn}();gbt.parser=gbt;const VYe=gbt,np=sgt();class UYe{constructor(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){var a,f,g,w,v,b,E,_,S,I,B,F,R,q,X,rt,at,ut;return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:((a=yf.quadrantChart)==null?void 0:a.chartWidth)||500,chartWidth:((f=yf.quadrantChart)==null?void 0:f.chartHeight)||500,titlePadding:((g=yf.quadrantChart)==null?void 0:g.titlePadding)||10,titleFontSize:((w=yf.quadrantChart)==null?void 0:w.titleFontSize)||20,quadrantPadding:((v=yf.quadrantChart)==null?void 0:v.quadrantPadding)||5,xAxisLabelPadding:((b=yf.quadrantChart)==null?void 0:b.xAxisLabelPadding)||5,yAxisLabelPadding:((E=yf.quadrantChart)==null?void 0:E.yAxisLabelPadding)||5,xAxisLabelFontSize:((_=yf.quadrantChart)==null?void 0:_.xAxisLabelFontSize)||16,yAxisLabelFontSize:((S=yf.quadrantChart)==null?void 0:S.yAxisLabelFontSize)||16,quadrantLabelFontSize:((I=yf.quadrantChart)==null?void 0:I.quadrantLabelFontSize)||16,quadrantTextTopPadding:((B=yf.quadrantChart)==null?void 0:B.quadrantTextTopPadding)||5,pointTextPadding:((F=yf.quadrantChart)==null?void 0:F.pointTextPadding)||5,pointLabelFontSize:((R=yf.quadrantChart)==null?void 0:R.pointLabelFontSize)||12,pointRadius:((q=yf.quadrantChart)==null?void 0:q.pointRadius)||5,xAxisPosition:((X=yf.quadrantChart)==null?void 0:X.xAxisPosition)||"top",yAxisPosition:((rt=yf.quadrantChart)==null?void 0:rt.yAxisPosition)||"left",quadrantInternalBorderStrokeWidth:((at=yf.quadrantChart)==null?void 0:at.quadrantInternalBorderStrokeWidth)||1,quadrantExternalBorderStrokeWidth:((ut=yf.quadrantChart)==null?void 0:ut.quadrantExternalBorderStrokeWidth)||2}}getDefaultThemeConfig(){return{quadrant1Fill:np.quadrant1Fill,quadrant2Fill:np.quadrant2Fill,quadrant3Fill:np.quadrant3Fill,quadrant4Fill:np.quadrant4Fill,quadrant1TextFill:np.quadrant1TextFill,quadrant2TextFill:np.quadrant2TextFill,quadrant3TextFill:np.quadrant3TextFill,quadrant4TextFill:np.quadrant4TextFill,quadrantPointFill:np.quadrantPointFill,quadrantPointTextFill:np.quadrantPointTextFill,quadrantXAxisTextFill:np.quadrantXAxisTextFill,quadrantYAxisTextFill:np.quadrantYAxisTextFill,quadrantTitleFill:np.quadrantTitleFill,quadrantInternalBorderStrokeFill:np.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:np.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),Wt.info("clear called")}setData(a){this.data={...this.data,...a}}addPoints(a){this.data.points=[...a,...this.data.points]}setConfig(a){Wt.trace("setConfig called with: ",a),this.config={...this.config,...a}}setThemeConfig(a){Wt.trace("setThemeConfig called with: ",a),this.themeConfig={...this.themeConfig,...a}}calculateSpace(a,f,g,w){const v=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,b={top:a==="top"&&f?v:0,bottom:a==="bottom"&&f?v:0},E=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,_={left:this.config.yAxisPosition==="left"&&g?E:0,right:this.config.yAxisPosition==="right"&&g?E:0},S=this.config.titleFontSize+this.config.titlePadding*2,I={top:w?S:0},B=this.config.quadrantPadding+_.left,F=this.config.quadrantPadding+b.top+I.top,R=this.config.chartWidth-this.config.quadrantPadding*2-_.left-_.right,q=this.config.chartHeight-this.config.quadrantPadding*2-b.top-b.bottom-I.top,X=R/2,rt=q/2;return{xAxisSpace:b,yAxisSpace:_,titleSpace:I,quadrantSpace:{quadrantLeft:B,quadrantTop:F,quadrantWidth:R,quadrantHalfWidth:X,quadrantHeight:q,quadrantHalfHeight:rt}}}getAxisLabels(a,f,g,w){const{quadrantSpace:v,titleSpace:b}=w,{quadrantHalfHeight:E,quadrantHeight:_,quadrantLeft:S,quadrantHalfWidth:I,quadrantTop:B,quadrantWidth:F}=v,R=!!this.data.xAxisRightText,q=!!this.data.yAxisTopText,X=[];return this.data.xAxisLeftText&&f&&X.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:S+(R?I/2:0),y:a==="top"?this.config.xAxisLabelPadding+b.top:this.config.xAxisLabelPadding+B+_+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:R?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&f&&X.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:S+I+(R?I/2:0),y:a==="top"?this.config.xAxisLabelPadding+b.top:this.config.xAxisLabelPadding+B+_+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:R?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&g&&X.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+S+F+this.config.quadrantPadding,y:B+_-(q?E/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:q?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&g&&X.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+S+F+this.config.quadrantPadding,y:B+E-(q?E/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:q?"center":"left",horizontalPos:"top",rotation:-90}),X}getQuadrants(a){const{quadrantSpace:f}=a,{quadrantHalfHeight:g,quadrantLeft:w,quadrantHalfWidth:v,quadrantTop:b}=f,E=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:w+v,y:b,width:v,height:g,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:w,y:b,width:v,height:g,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:w,y:b+g,width:v,height:g,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:w+v,y:b+g,width:v,height:g,fill:this.themeConfig.quadrant4Fill}];for(const _ of E)_.text.x=_.x+_.width/2,this.data.points.length===0?(_.text.y=_.y+_.height/2,_.text.horizontalPos="middle"):(_.text.y=_.y+this.config.quadrantTextTopPadding,_.text.horizontalPos="top");return E}getQuadrantPoints(a){const{quadrantSpace:f}=a,{quadrantHeight:g,quadrantLeft:w,quadrantTop:v,quadrantWidth:b}=f,E=PL().domain([0,1]).range([w,b+w]),_=PL().domain([0,1]).range([g+v,v]);return this.data.points.map(I=>({x:E(I.x),y:_(I.y),fill:this.themeConfig.quadrantPointFill,radius:this.config.pointRadius,text:{text:I.text,fill:this.themeConfig.quadrantPointTextFill,x:E(I.x),y:_(I.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0}}))}getBorders(a){const f=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:g}=a,{quadrantHalfHeight:w,quadrantHeight:v,quadrantLeft:b,quadrantHalfWidth:E,quadrantTop:_,quadrantWidth:S}=g;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:b-f,y1:_,x2:b+S+f,y2:_},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:b+S,y1:_+f,x2:b+S,y2:_+v-f},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:b-f,y1:_+v,x2:b+S+f,y2:_+v},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:b,y1:_+f,x2:b,y2:_+v-f},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:b+E,y1:_+f,x2:b+E,y2:_+v-f},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:b+f,y1:_+w,x2:b+S-f,y2:_+w}]}getTitle(a){if(a)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const a=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),f=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),g=this.config.showTitle&&!!this.data.titleText,w=this.data.points.length>0?"bottom":this.config.xAxisPosition,v=this.calculateSpace(w,a,f,g);return{points:this.getQuadrantPoints(v),quadrants:this.getQuadrants(v),axisLabels:this.getAxisLabels(w,a,f,v),borderLines:this.getBorders(v),title:this.getTitle(g)}}}const GYe=Re();function jx(i){return Ed(i.trim(),GYe)}const ig=new UYe;function KYe(i){ig.setData({quadrant1Text:jx(i.text)})}function WYe(i){ig.setData({quadrant2Text:jx(i.text)})}function YYe(i){ig.setData({quadrant3Text:jx(i.text)})}function XYe(i){ig.setData({quadrant4Text:jx(i.text)})}function QYe(i){ig.setData({xAxisLeftText:jx(i.text)})}function JYe(i){ig.setData({xAxisRightText:jx(i.text)})}function ZYe(i){ig.setData({yAxisTopText:jx(i.text)})}function tXe(i){ig.setData({yAxisBottomText:jx(i.text)})}function eXe(i,a,f){ig.addPoints([{x:a,y:f,text:jx(i.text)}])}function nXe(i){ig.setConfig({chartWidth:i})}function rXe(i){ig.setConfig({chartHeight:i})}function iXe(){const i=Re(),{themeVariables:a,quadrantChart:f}=i;return f&&ig.setConfig(f),ig.setThemeConfig({quadrant1Fill:a.quadrant1Fill,quadrant2Fill:a.quadrant2Fill,quadrant3Fill:a.quadrant3Fill,quadrant4Fill:a.quadrant4Fill,quadrant1TextFill:a.quadrant1TextFill,quadrant2TextFill:a.quadrant2TextFill,quadrant3TextFill:a.quadrant3TextFill,quadrant4TextFill:a.quadrant4TextFill,quadrantPointFill:a.quadrantPointFill,quadrantPointTextFill:a.quadrantPointTextFill,quadrantXAxisTextFill:a.quadrantXAxisTextFill,quadrantYAxisTextFill:a.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:a.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:a.quadrantInternalBorderStrokeFill,quadrantTitleFill:a.quadrantTitleFill}),ig.setData({titleText:Jg()}),ig.build()}const sXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:VYe,db:{setWidth:nXe,setHeight:rXe,setQuadrant1Text:KYe,setQuadrant2Text:WYe,setQuadrant3Text:YYe,setQuadrant4Text:XYe,setXAxisLeftText:QYe,setXAxisRightText:JYe,setYAxisTopText:ZYe,setYAxisBottomText:tXe,addPoint:eXe,getQuadrantData:iXe,clear:function(){ig.clear(),Wg()},setAccTitle:ng,getAccTitle:Yg,setDiagramTitle:y2,getDiagramTitle:Jg,getAccDescription:Qg,setAccDescription:Xg},renderer:{draw:(i,a,f,g)=>{var bt,Z,ft;function w(Y){return Y==="top"?"hanging":"middle"}function v(Y){return Y==="left"?"start":"middle"}function b(Y){return`translate(${Y.x}, ${Y.y}) rotate(${Y.rotation||0})`}const E=Re();Wt.debug(`Rendering quadrant chart +`+i);const _=E.securityLevel;let S;_==="sandbox"&&(S=xr("#i"+a));const B=xr(_==="sandbox"?S.nodes()[0].contentDocument.body:"body").select(`[id="${a}"]`),F=B.append("g").attr("class","main"),R=((bt=E.quadrantChart)==null?void 0:bt.chartWidth)||500,q=((Z=E.quadrantChart)==null?void 0:Z.chartHeight)||500;Kg(B,q,R,((ft=E.quadrantChart)==null?void 0:ft.useMaxWidth)||!0),B.attr("viewBox","0 0 "+R+" "+q),g.db.setHeight(q),g.db.setWidth(R);const X=g.db.getQuadrantData(),rt=F.append("g").attr("class","quadrants"),at=F.append("g").attr("class","border"),ut=F.append("g").attr("class","data-points"),pt=F.append("g").attr("class","labels"),yt=F.append("g").attr("class","title");X.title&&yt.append("text").attr("x",0).attr("y",0).attr("fill",X.title.fill).attr("font-size",X.title.fontSize).attr("dominant-baseline",w(X.title.horizontalPos)).attr("text-anchor",v(X.title.verticalPos)).attr("transform",b(X.title)).text(X.title.text),X.borderLines&&at.selectAll("line").data(X.borderLines).enter().append("line").attr("x1",Y=>Y.x1).attr("y1",Y=>Y.y1).attr("x2",Y=>Y.x2).attr("y2",Y=>Y.y2).style("stroke",Y=>Y.strokeFill).style("stroke-width",Y=>Y.strokeWidth);const mt=rt.selectAll("g.quadrant").data(X.quadrants).enter().append("g").attr("class","quadrant");mt.append("rect").attr("x",Y=>Y.x).attr("y",Y=>Y.y).attr("width",Y=>Y.width).attr("height",Y=>Y.height).attr("fill",Y=>Y.fill),mt.append("text").attr("x",0).attr("y",0).attr("fill",Y=>Y.text.fill).attr("font-size",Y=>Y.text.fontSize).attr("dominant-baseline",Y=>w(Y.text.horizontalPos)).attr("text-anchor",Y=>v(Y.text.verticalPos)).attr("transform",Y=>b(Y.text)).text(Y=>Y.text.text),pt.selectAll("g.label").data(X.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(Y=>Y.text).attr("fill",Y=>Y.fill).attr("font-size",Y=>Y.fontSize).attr("dominant-baseline",Y=>w(Y.horizontalPos)).attr("text-anchor",Y=>v(Y.verticalPos)).attr("transform",Y=>b(Y));const ht=ut.selectAll("g.data-point").data(X.points).enter().append("g").attr("class","data-point");ht.append("circle").attr("cx",Y=>Y.x).attr("cy",Y=>Y.y).attr("r",Y=>Y.radius).attr("fill",Y=>Y.fill),ht.append("text").attr("x",0).attr("y",0).text(Y=>Y.text.text).attr("fill",Y=>Y.text.fill).attr("font-size",Y=>Y.text.fontSize).attr("dominant-baseline",Y=>w(Y.text.horizontalPos)).attr("text-anchor",Y=>v(Y.text.verticalPos)).attr("transform",Y=>b(Y.text))}},styles:()=>""}},Symbol.toStringTag,{value:"Module"}));var pbt=function(){var i=function(Dt,jt,Ct,Ft){for(Ct=Ct||{},Ft=Dt.length;Ft--;Ct[Dt[Ft]]=jt);return Ct},a=[1,10,12,14,16,18,19,21,23],f=[2,6],g=[1,3],w=[1,5],v=[1,6],b=[1,7],E=[1,5,10,12,14,16,18,19,21,23,34,35,36],_=[1,25],S=[1,26],I=[1,28],B=[1,29],F=[1,30],R=[1,31],q=[1,32],X=[1,33],rt=[1,34],at=[1,35],ut=[1,36],pt=[1,37],yt=[1,43],mt=[1,42],gt=[1,47],ht=[1,50],bt=[1,10,12,14,16,18,19,21,23,34,35,36],Z=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],ft=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],Y=[1,64],Et={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:function(jt,Ct,Ft,_t,xt,Gt,Be){var Ot=Gt.length-1;switch(xt){case 5:_t.setOrientation(Gt[Ot]);break;case 9:_t.setDiagramTitle(Gt[Ot].text.trim());break;case 12:_t.setLineData({text:"",type:"text"},Gt[Ot]);break;case 13:_t.setLineData(Gt[Ot-1],Gt[Ot]);break;case 14:_t.setBarData({text:"",type:"text"},Gt[Ot]);break;case 15:_t.setBarData(Gt[Ot-1],Gt[Ot]);break;case 16:this.$=Gt[Ot].trim(),_t.setAccTitle(this.$);break;case 17:case 18:this.$=Gt[Ot].trim(),_t.setAccDescription(this.$);break;case 19:this.$=Gt[Ot-1];break;case 20:this.$=[Number(Gt[Ot-2]),...Gt[Ot]];break;case 21:this.$=[Number(Gt[Ot])];break;case 22:_t.setXAxisTitle(Gt[Ot]);break;case 23:_t.setXAxisTitle(Gt[Ot-1]);break;case 24:_t.setXAxisTitle({type:"text",text:""});break;case 25:_t.setXAxisBand(Gt[Ot]);break;case 26:_t.setXAxisRangeData(Number(Gt[Ot-2]),Number(Gt[Ot]));break;case 27:this.$=Gt[Ot-1];break;case 28:this.$=[Gt[Ot-2],...Gt[Ot]];break;case 29:this.$=[Gt[Ot]];break;case 30:_t.setYAxisTitle(Gt[Ot]);break;case 31:_t.setYAxisTitle(Gt[Ot-1]);break;case 32:_t.setYAxisTitle({type:"text",text:""});break;case 33:_t.setYAxisRangeData(Number(Gt[Ot-2]),Number(Gt[Ot]));break;case 37:this.$={text:Gt[Ot],type:"text"};break;case 38:this.$={text:Gt[Ot],type:"text"};break;case 39:this.$={text:Gt[Ot],type:"markdown"};break;case 40:this.$=Gt[Ot];break;case 41:this.$=Gt[Ot-1]+""+Gt[Ot];break}},table:[i(a,f,{3:1,4:2,7:4,5:g,34:w,35:v,36:b}),{1:[3]},i(a,f,{4:2,7:4,3:8,5:g,34:w,35:v,36:b}),i(a,f,{4:2,7:4,6:9,3:10,5:g,8:[1,11],34:w,35:v,36:b}),{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]},i(E,[2,34]),i(E,[2,35]),i(E,[2,36]),{1:[2,1]},i(a,f,{4:2,7:4,3:21,5:g,34:w,35:v,36:b}),{1:[2,3]},i(E,[2,5]),i(a,[2,7],{4:22,34:w,35:v,36:b}),{11:23,37:24,38:_,39:S,40:27,41:I,42:B,43:F,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt},{11:39,13:38,24:yt,27:mt,29:40,30:41,37:24,38:_,39:S,40:27,41:I,42:B,43:F,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt},{11:45,15:44,27:gt,33:46,37:24,38:_,39:S,40:27,41:I,42:B,43:F,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt},{11:49,17:48,24:ht,37:24,38:_,39:S,40:27,41:I,42:B,43:F,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt},{11:52,17:51,24:ht,37:24,38:_,39:S,40:27,41:I,42:B,43:F,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt},{20:[1,53]},{22:[1,54]},i(bt,[2,18]),{1:[2,2]},i(bt,[2,8]),i(bt,[2,9]),i(Z,[2,37],{40:55,41:I,42:B,43:F,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt}),i(Z,[2,38]),i(Z,[2,39]),i(ft,[2,40]),i(ft,[2,42]),i(ft,[2,43]),i(ft,[2,44]),i(ft,[2,45]),i(ft,[2,46]),i(ft,[2,47]),i(ft,[2,48]),i(ft,[2,49]),i(ft,[2,50]),i(ft,[2,51]),i(bt,[2,10]),i(bt,[2,22],{30:41,29:56,24:yt,27:mt}),i(bt,[2,24]),i(bt,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:_,39:S,40:27,41:I,42:B,43:F,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt},i(bt,[2,11]),i(bt,[2,30],{33:60,27:gt}),i(bt,[2,32]),{31:[1,61]},i(bt,[2,12]),{17:62,24:ht},{25:63,27:Y},i(bt,[2,14]),{17:65,24:ht},i(bt,[2,16]),i(bt,[2,17]),i(ft,[2,41]),i(bt,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},i(bt,[2,31]),{27:[1,69]},i(bt,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},i(bt,[2,15]),i(bt,[2,26]),i(bt,[2,27]),{11:59,32:72,37:24,38:_,39:S,40:27,41:I,42:B,43:F,44:R,45:q,46:X,47:rt,48:at,49:ut,50:pt},i(bt,[2,33]),i(bt,[2,19]),{25:73,27:Y},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:function(jt,Ct){if(Ct.recoverable)this.trace(jt);else{var Ft=new Error(jt);throw Ft.hash=Ct,Ft}},parse:function(jt){var Ct=this,Ft=[0],_t=[],xt=[null],Gt=[],Be=this.table,Ot="",vn=0,Pe=0,Ee=2,nn=1,sn=Gt.slice.call(arguments,1),me=Object.create(this.lexer),Fe={yy:{}};for(var Qt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Qt)&&(Fe.yy[Qt]=this.yy[Qt]);me.setInput(jt,Fe.yy),Fe.yy.lexer=me,Fe.yy.parser=this,typeof me.yylloc>"u"&&(me.yylloc={});var Ae=me.yylloc;Gt.push(Ae);var Se=me.options&&me.options.ranges;typeof Fe.yy.parseError=="function"?this.parseError=Fe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Dn(){var Pn;return Pn=_t.pop()||me.lex()||nn,typeof Pn!="number"&&(Pn instanceof Array&&(_t=Pn,Pn=_t.pop()),Pn=Ct.symbols_[Pn]||Pn),Pn}for(var oe,Pr,we,Ri,yi={},da,Ss,Ra,fr;;){if(Pr=Ft[Ft.length-1],this.defaultActions[Pr]?we=this.defaultActions[Pr]:((oe===null||typeof oe>"u")&&(oe=Dn()),we=Be[Pr]&&Be[Pr][oe]),typeof we>"u"||!we.length||!we[0]){var An="";fr=[];for(da in Be[Pr])this.terminals_[da]&&da>Ee&&fr.push("'"+this.terminals_[da]+"'");me.showPosition?An="Parse error on line "+(vn+1)+`: +`+me.showPosition()+` +Expecting `+fr.join(", ")+", got '"+(this.terminals_[oe]||oe)+"'":An="Parse error on line "+(vn+1)+": Unexpected "+(oe==nn?"end of input":"'"+(this.terminals_[oe]||oe)+"'"),this.parseError(An,{text:me.match,token:this.terminals_[oe]||oe,line:me.yylineno,loc:Ae,expected:fr})}if(we[0]instanceof Array&&we.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Pr+", token: "+oe);switch(we[0]){case 1:Ft.push(oe),xt.push(me.yytext),Gt.push(me.yylloc),Ft.push(we[1]),oe=null,Pe=me.yyleng,Ot=me.yytext,vn=me.yylineno,Ae=me.yylloc;break;case 2:if(Ss=this.productions_[we[1]][1],yi.$=xt[xt.length-Ss],yi._$={first_line:Gt[Gt.length-(Ss||1)].first_line,last_line:Gt[Gt.length-1].last_line,first_column:Gt[Gt.length-(Ss||1)].first_column,last_column:Gt[Gt.length-1].last_column},Se&&(yi._$.range=[Gt[Gt.length-(Ss||1)].range[0],Gt[Gt.length-1].range[1]]),Ri=this.performAction.apply(yi,[Ot,Pe,vn,Fe.yy,we[1],xt,Gt].concat(sn)),typeof Ri<"u")return Ri;Ss&&(Ft=Ft.slice(0,-1*Ss*2),xt=xt.slice(0,-1*Ss),Gt=Gt.slice(0,-1*Ss)),Ft.push(this.productions_[we[1]][0]),xt.push(yi.$),Gt.push(yi._$),Ra=Be[Ft[Ft.length-2]][Ft[Ft.length-1]],Ft.push(Ra);break;case 3:return!0}}return!0}},V=function(){var Dt={EOF:1,parseError:function(Ct,Ft){if(this.yy.parser)this.yy.parser.parseError(Ct,Ft);else throw new Error(Ct)},setInput:function(jt,Ct){return this.yy=Ct||this.yy||{},this._input=jt,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},input:function(){var jt=this._input[0];this.yytext+=jt,this.yyleng++,this.offset++,this.match+=jt,this.matched+=jt;var Ct=jt.match(/(?:\r\n?|\n).*/g);return Ct?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),jt},unput:function(jt){var Ct=jt.length,Ft=jt.split(/(?:\r\n?|\n)/g);this._input=jt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ct),this.offset-=Ct;var _t=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 xt=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===_t.length?this.yylloc.first_column:0)+_t[_t.length-Ft.length].length-Ft[0].length:this.yylloc.first_column-Ct},this.options.ranges&&(this.yylloc.range=[xt[0],xt[0]+this.yyleng-Ct]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(jt){this.unput(this.match.slice(jt))},pastInput:function(){var jt=this.matched.substr(0,this.matched.length-this.match.length);return(jt.length>20?"...":"")+jt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var jt=this.match;return jt.length<20&&(jt+=this._input.substr(0,20-jt.length)),(jt.substr(0,20)+(jt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var jt=this.pastInput(),Ct=new Array(jt.length+1).join("-");return jt+this.upcomingInput()+` +`+Ct+"^"},test_match:function(jt,Ct){var Ft,_t,xt;if(this.options.backtrack_lexer&&(xt={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&&(xt.yylloc.range=this.yylloc.range.slice(0))),_t=jt[0].match(/(?:\r\n?|\n).*/g),_t&&(this.yylineno+=_t.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:_t?_t[_t.length-1].length-_t[_t.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+jt[0].length},this.yytext+=jt[0],this.match+=jt[0],this.matches=jt,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(jt[0].length),this.matched+=jt[0],Ft=this.performAction.call(this,this.yy,this,Ct,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ft)return Ft;if(this._backtrack){for(var Gt in xt)this[Gt]=xt[Gt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var jt,Ct,Ft,_t;this._more||(this.yytext="",this.match="");for(var xt=this._currentRules(),Gt=0;GtCt[0].length)){if(Ct=Ft,_t=Gt,this.options.backtrack_lexer){if(jt=this.test_match(Ft,xt[Gt]),jt!==!1)return jt;if(this._backtrack){Ct=!1;continue}else return!1}else if(!this.options.flex)break}return Ct?(jt=this.test_match(Ct,xt[_t]),jt!==!1?jt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Ct=this.next();return Ct||this.lex()},begin:function(Ct){this.conditionStack.push(Ct)},popState:function(){var Ct=this.conditionStack.length-1;return Ct>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Ct){return Ct=this.conditionStack.length-1-Math.abs(Ct||0),Ct>=0?this.conditionStack[Ct]:"INITIAL"},pushState:function(Ct){this.begin(Ct)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Ct,Ft,_t,xt){switch(_t){case 0:break;case 1:break;case 2:return this.popState(),34;case 3:return this.popState(),34;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;case 8:return this.popState(),"acc_title_value";case 9:return this.pushState("acc_descr"),21;case 10:return this.popState(),"acc_descr_value";case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 8;case 16:return this.pushState("axis_data"),"X_AXIS";case 17:return this.pushState("axis_data"),"Y_AXIS";case 18:return this.pushState("axis_band_data"),24;case 19:return 31;case 20:return this.pushState("data"),16;case 21:return this.pushState("data"),18;case 22:return this.pushState("data_inner"),24;case 23:return 27;case 24:return this.popState(),26;case 25:this.popState();break;case 26:this.pushState("string");break;case 27:this.popState();break;case 28:return"STR";case 29:return 24;case 30:return 26;case 31:return 43;case 32:return"COLON";case 33:return 44;case 34:return 28;case 35:return 45;case 36:return 46;case 37:return 48;case 38:return 50;case 39:return 47;case 40:return 41;case 41:return 49;case 42:return 42;case 43:break;case 44:return 35;case 45:return 36}},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,/^(?:(?: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,20,21,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,20,21,22,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,23,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],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:[27,28],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0}}};return Dt}();Et.lexer=V;function Nt(){this.yy={}}return Nt.prototype=Et,Et.Parser=Nt,new Nt}();pbt.parser=pbt;const aXe=pbt;function Izt(i){return i.type==="bar"}function Ozt(i){return i.type==="band"}function rB(i){return i.type==="linear"}class Pzt{constructor(a){this.parentGroup=a}getMaxDimension(a,f){if(!this.parentGroup)return{width:a.reduce((v,b)=>Math.max(b.length,v),0)*f,height:f};const g={width:0,height:0},w=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",f);for(const v of a){const b=oKe(w,1,v),E=b?b.width:v.length*f,_=b?b.height:f;g.width=Math.max(g.width,E),g.height=Math.max(g.height,_)}return w.remove(),g}}const Nzt=.7,Fzt=.2;class Bzt{constructor(a,f,g,w){this.axisConfig=a,this.title=f,this.textDimensionCalculator=g,this.axisThemeConfig=w,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}setRange(a){this.range=a,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=a[1]-a[0]:this.boundingRect.width=a[1]-a[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(a){this.axisPosition=a,this.setRange(this.range)}getTickDistance(){const a=this.getRange();return Math.abs(a[0]-a[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(a=>a.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){Nzt*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(Nzt*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(a){let f=a.height;if(this.axisConfig.showAxisLine&&f>this.axisConfig.axisLineWidth&&(f-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const g=this.getLabelDimension(),w=Fzt*a.width;this.outerPadding=Math.min(g.width/2,w);const v=g.height+this.axisConfig.labelPadding*2;this.labelTextHeight=g.height,v<=f&&(f-=v,this.showLabel=!0)}if(this.axisConfig.showTick&&f>=this.axisConfig.tickLength&&(this.showTick=!0,f-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const g=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),w=g.height+this.axisConfig.titlePadding*2;this.titleTextHeight=g.height,w<=f&&(f-=w,this.showTitle=!0)}this.boundingRect.width=a.width,this.boundingRect.height=a.height-f}calculateSpaceIfDrawnVertical(a){let f=a.width;if(this.axisConfig.showAxisLine&&f>this.axisConfig.axisLineWidth&&(f-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const g=this.getLabelDimension(),w=Fzt*a.height;this.outerPadding=Math.min(g.height/2,w);const v=g.width+this.axisConfig.labelPadding*2;v<=f&&(f-=v,this.showLabel=!0)}if(this.axisConfig.showTick&&f>=this.axisConfig.tickLength&&(this.showTick=!0,f-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const g=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),w=g.height+this.axisConfig.titlePadding*2;this.titleTextHeight=g.height,w<=f&&(f-=w,this.showTitle=!0)}this.boundingRect.width=a.width-f,this.boundingRect.height=a.height}calculateSpace(a){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(a):this.calculateSpaceIfDrawnHorizontally(a),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(a){this.boundingRect.x=a.x,this.boundingRect.y=a.y}getDrawableElementsForLeftAxis(){const a=[];if(this.showAxisLine){const f=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;a.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${f},${this.boundingRect.y} L ${f},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&a.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(f=>({text:f.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(f),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){const f=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);a.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(g=>({path:`M ${f},${this.getScaleValue(g)} L ${f-this.axisConfig.tickLength},${this.getScaleValue(g)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&a.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"}]}),a}getDrawableElementsForBottomAxis(){const a=[];if(this.showAxisLine){const f=this.boundingRect.y+this.axisConfig.axisLineWidth/2;a.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${f} L ${this.boundingRect.x+this.boundingRect.width},${f}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&a.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(f=>({text:f.toString(),x:this.getScaleValue(f),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const f=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);a.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(g=>({path:`M ${this.getScaleValue(g)},${f} L ${this.getScaleValue(g)},${f+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&a.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"}]}),a}getDrawableElementsForTopAxis(){const a=[];if(this.showAxisLine){const f=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;a.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${f} L ${this.boundingRect.x+this.boundingRect.width},${f}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&a.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(f=>({text:f.toString(),x:this.getScaleValue(f),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){const f=this.boundingRect.y;a.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(g=>({path:`M ${this.getScaleValue(g)},${f+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(g)},${f+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&a.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"}]}),a}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():[]}}class oXe extends Bzt{constructor(a,f,g,w,v){super(a,w,v,f),this.categories=g,this.scale=F0t().domain(this.categories).range(this.getRange())}setRange(a){super.setRange(a)}recalculateScale(){this.scale=F0t().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),Wt.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(a){return this.scale(a)||this.getRange()[0]}}class cXe extends Bzt{constructor(a,f,g,w,v){super(a,w,v,f),this.domain=g,this.scale=PL().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){const a=[...this.domain];this.axisPosition==="left"&&a.reverse(),this.scale=PL().domain(a).range(this.getRange())}getScaleValue(a){return this.scale(a)}}function Rzt(i,a,f,g){const w=new Pzt(g);return Ozt(i)?new oXe(a,f,i.categories,i.title,w):new cXe(a,f,[i.min,i.max],i.title,w)}class uXe{constructor(a,f,g,w){this.textDimensionCalculator=a,this.chartConfig=f,this.chartData=g,this.chartThemeConfig=w,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}setBoundingBoxXY(a){this.boundingRect.x=a.x,this.boundingRect.y=a.y}calculateSpace(a){const f=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),g=Math.max(f.width,a.width),w=f.height+2*this.chartConfig.titlePadding;return f.width<=g&&f.height<=w&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=g,this.boundingRect.height=w,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){const a=[];return this.showChartTitle&&a.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}]}),a}}function lXe(i,a,f,g){const w=new Pzt(g);return new uXe(w,i,a,f)}class hXe{constructor(a,f,g,w,v){this.plotData=a,this.xAxis=f,this.yAxis=g,this.orientation=w,this.plotIndex=v}getDrawableElement(){const a=this.plotData.data.map(g=>[this.xAxis.getScaleValue(g[0]),this.yAxis.getScaleValue(g[1])]);let f;return this.orientation==="horizontal"?f=Cx().y(g=>g[0]).x(g=>g[1])(a):f=Cx().x(g=>g[0]).y(g=>g[1])(a),f?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:f,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}class fXe{constructor(a,f,g,w,v,b){this.barData=a,this.boundingRect=f,this.xAxis=g,this.yAxis=w,this.orientation=v,this.plotIndex=b}getDrawableElement(){const a=this.barData.data.map(v=>[this.xAxis.getScaleValue(v[0]),this.yAxis.getScaleValue(v[1])]),f=.05,g=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-f),w=g/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:a.map(v=>({x:this.boundingRect.x,y:v[0]-w,height:g,width:v[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:a.map(v=>({x:v[0]-w,y:v[1],width:g,height:this.boundingRect.y+this.boundingRect.height-v[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}class dXe{constructor(a,f,g){this.chartConfig=a,this.chartData=f,this.chartThemeConfig=g,this.boundingRect={x:0,y:0,width:0,height:0}}setAxes(a,f){this.xAxis=a,this.yAxis=f}setBoundingBoxXY(a){this.boundingRect.x=a.x,this.boundingRect.y=a.y}calculateSpace(a){return this.boundingRect.width=a.width,this.boundingRect.height=a.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");const a=[];for(const[f,g]of this.chartData.plots.entries())switch(g.type){case"line":{const w=new hXe(g,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,f);a.push(...w.getDrawableElement())}break;case"bar":{const w=new fXe(g,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,f);a.push(...w.getDrawableElement())}break}return a}}function gXe(i,a,f){return new dXe(i,a,f)}class pXe{constructor(a,f,g,w){this.chartConfig=a,this.chartData=f,this.componentStore={title:lXe(a,f,g,w),plot:gXe(a,f,g),xAxis:Rzt(f.xAxis,a.xAxis,{titleColor:g.xAxisTitleColor,labelColor:g.xAxisLabelColor,tickColor:g.xAxisTickColor,axisLineColor:g.xAxisLineColor},w),yAxis:Rzt(f.yAxis,a.yAxis,{titleColor:g.yAxisTitleColor,labelColor:g.yAxisLabelColor,tickColor:g.yAxisTickColor,axisLineColor:g.yAxisLineColor},w)}}calculateVerticalSpace(){let a=this.chartConfig.width,f=this.chartConfig.height,g=0,w=0,v=Math.floor(a*this.chartConfig.plotReservedSpacePercent/100),b=Math.floor(f*this.chartConfig.plotReservedSpacePercent/100),E=this.componentStore.plot.calculateSpace({width:v,height:b});a-=E.width,f-=E.height,E=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:f}),w=E.height,f-=E.height,this.componentStore.xAxis.setAxisPosition("bottom"),E=this.componentStore.xAxis.calculateSpace({width:a,height:f}),f-=E.height,this.componentStore.yAxis.setAxisPosition("left"),E=this.componentStore.yAxis.calculateSpace({width:a,height:f}),g=E.width,a-=E.width,a>0&&(v+=a,a=0),f>0&&(b+=f,f=0),this.componentStore.plot.calculateSpace({width:v,height:b}),this.componentStore.plot.setBoundingBoxXY({x:g,y:w}),this.componentStore.xAxis.setRange([g,g+v]),this.componentStore.xAxis.setBoundingBoxXY({x:g,y:w+b}),this.componentStore.yAxis.setRange([w,w+b]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:w}),this.chartData.plots.some(_=>Izt(_))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizonatalSpace(){let a=this.chartConfig.width,f=this.chartConfig.height,g=0,w=0,v=0,b=Math.floor(a*this.chartConfig.plotReservedSpacePercent/100),E=Math.floor(f*this.chartConfig.plotReservedSpacePercent/100),_=this.componentStore.plot.calculateSpace({width:b,height:E});a-=_.width,f-=_.height,_=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:f}),g=_.height,f-=_.height,this.componentStore.xAxis.setAxisPosition("left"),_=this.componentStore.xAxis.calculateSpace({width:a,height:f}),a-=_.width,w=_.width,this.componentStore.yAxis.setAxisPosition("top"),_=this.componentStore.yAxis.calculateSpace({width:a,height:f}),f-=_.height,v=g+_.height,a>0&&(b+=a,a=0),f>0&&(E+=f,f=0),this.componentStore.plot.calculateSpace({width:b,height:E}),this.componentStore.plot.setBoundingBoxXY({x:w,y:v}),this.componentStore.yAxis.setRange([w,w+b]),this.componentStore.yAxis.setBoundingBoxXY({x:w,y:g}),this.componentStore.xAxis.setRange([v,v+E]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:v}),this.chartData.plots.some(S=>Izt(S))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizonatalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();const a=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(const f of Object.values(this.componentStore))a.push(...f.getDrawableElements());return a}}class bXe{static build(a,f,g,w){return new pXe(a,f,g,w).getDrawableElement()}}let iB=0,jzt,sB=zzt(),aB=$zt(),Pu=qzt(),bbt=aB.plotColorPalette.split(",").map(i=>i.trim()),lX=!1,wbt=!1;function $zt(){const i=sgt(),a=h0();return TF(i.xyChart,a.themeVariables.xyChart)}function zzt(){const i=h0();return TF(yf.xyChart,i.xyChart)}function qzt(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function mbt(i){const a=h0();return Ed(i.trim(),a)}function wXe(i){jzt=i}function mXe(i){i==="horizontal"?sB.chartOrientation="horizontal":sB.chartOrientation="vertical"}function vXe(i){Pu.xAxis.title=mbt(i.text)}function Hzt(i,a){Pu.xAxis={type:"linear",title:Pu.xAxis.title,min:i,max:a},lX=!0}function yXe(i){Pu.xAxis={type:"band",title:Pu.xAxis.title,categories:i.map(a=>mbt(a.text))},lX=!0}function xXe(i){Pu.yAxis.title=mbt(i.text)}function kXe(i,a){Pu.yAxis={type:"linear",title:Pu.yAxis.title,min:i,max:a},wbt=!0}function EXe(i){const a=Math.min(...i),f=Math.max(...i),g=rB(Pu.yAxis)?Pu.yAxis.min:1/0,w=rB(Pu.yAxis)?Pu.yAxis.max:-1/0;Pu.yAxis={type:"linear",title:Pu.yAxis.title,min:Math.min(g,a),max:Math.max(w,f)}}function Vzt(i){let a=[];if(i.length===0)return a;if(!lX){const f=rB(Pu.xAxis)?Pu.xAxis.min:1/0,g=rB(Pu.xAxis)?Pu.xAxis.max:-1/0;Hzt(Math.min(f,1),Math.max(g,i.length))}if(wbt||EXe(i),Ozt(Pu.xAxis)&&(a=Pu.xAxis.categories.map((f,g)=>[f,i[g]])),rB(Pu.xAxis)){const f=Pu.xAxis.min,g=Pu.xAxis.max,w=(g-f+1)/i.length,v=[];for(let b=f;b<=g;b+=w)v.push(`${b}`);a=v.map((b,E)=>[b,i[E]])}return a}function Uzt(i){return bbt[i===0?0:i%bbt.length]}function TXe(i,a){const f=Vzt(a);Pu.plots.push({type:"line",strokeFill:Uzt(iB),strokeWidth:2,data:f}),iB++}function CXe(i,a){const f=Vzt(a);Pu.plots.push({type:"bar",fill:Uzt(iB),data:f}),iB++}function _Xe(){if(Pu.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return Pu.title=Jg(),bXe.build(sB,Pu,aB,jzt)}function SXe(){return aB}function AXe(){return sB}const LXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:aXe,db:{getDrawableElem:_Xe,clear:function(){Wg(),iB=0,sB=zzt(),Pu=qzt(),aB=$zt(),bbt=aB.plotColorPalette.split(",").map(i=>i.trim()),lX=!1,wbt=!1},setAccTitle:ng,getAccTitle:Yg,setDiagramTitle:y2,getDiagramTitle:Jg,getAccDescription:Qg,setAccDescription:Xg,setOrientation:mXe,setXAxisTitle:vXe,setXAxisRangeData:Hzt,setXAxisBand:yXe,setYAxisTitle:xXe,setYAxisRangeData:kXe,setLineData:TXe,setBarData:CXe,setTmpSVGG:wXe,getChartThemeConfig:SXe,getChartConfig:AXe},renderer:{draw:(i,a,f,g)=>{const w=g.db,v=w.getChartThemeConfig(),b=w.getChartConfig();function E(rt){return rt==="top"?"text-before-edge":"middle"}function _(rt){return rt==="left"?"start":rt==="right"?"end":"middle"}function S(rt){return`translate(${rt.x}, ${rt.y}) rotate(${rt.rotation||0})`}Wt.debug(`Rendering xychart chart +`+i);const I=wY(a),B=I.append("g").attr("class","main"),F=B.append("rect").attr("width",b.width).attr("height",b.height).attr("class","background");Kg(I,b.height,b.width,!0),I.attr("viewBox",`0 0 ${b.width} ${b.height}`),F.attr("fill",v.backgroundColor),w.setTmpSVGG(I.append("g").attr("class","mermaid-tmp-group"));const R=w.getDrawableElem(),q={};function X(rt){let at=B,ut="";for(const[pt]of rt.entries()){let yt=B;pt>0&&q[ut]&&(yt=q[ut]),ut+=rt[pt],at=q[ut],at||(at=q[ut]=yt.append("g").attr("class",rt[pt]))}return at}for(const rt of R){if(rt.data.length===0)continue;const at=X(rt.groupTexts);switch(rt.type){case"rect":at.selectAll("rect").data(rt.data).enter().append("rect").attr("x",ut=>ut.x).attr("y",ut=>ut.y).attr("width",ut=>ut.width).attr("height",ut=>ut.height).attr("fill",ut=>ut.fill).attr("stroke",ut=>ut.strokeFill).attr("stroke-width",ut=>ut.strokeWidth);break;case"text":at.selectAll("text").data(rt.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",ut=>ut.fill).attr("font-size",ut=>ut.fontSize).attr("dominant-baseline",ut=>E(ut.verticalPos)).attr("text-anchor",ut=>_(ut.horizontalPos)).attr("transform",ut=>S(ut)).text(ut=>ut.text);break;case"path":at.selectAll("path").data(rt.data).enter().append("path").attr("d",ut=>ut.path).attr("fill",ut=>ut.fill?ut.fill:"none").attr("stroke",ut=>ut.strokeFill).attr("stroke-width",ut=>ut.strokeWidth);break}}}}}},Symbol.toStringTag,{value:"Module"}));var vbt=function(){var i=function(Pe,Ee,nn,sn){for(nn=nn||{},sn=Pe.length;sn--;nn[Pe[sn]]=Ee);return nn},a=[1,3],f=[1,4],g=[1,5],w=[1,6],v=[5,6,8,9,11,13,31,32,33,34,35,36,44,62,63],b=[1,18],E=[2,7],_=[1,22],S=[1,23],I=[1,24],B=[1,25],F=[1,26],R=[1,27],q=[1,20],X=[1,28],rt=[1,29],at=[62,63],ut=[5,8,9,11,13,31,32,33,34,35,36,44,51,53,62,63],pt=[1,47],yt=[1,48],mt=[1,49],gt=[1,50],ht=[1,51],bt=[1,52],Z=[1,53],ft=[53,54],Y=[1,64],Et=[1,60],V=[1,61],Nt=[1,62],Dt=[1,63],jt=[1,65],Ct=[1,69],Ft=[1,70],_t=[1,67],xt=[1,68],Gt=[5,8,9,11,13,31,32,33,34,35,36,44,62,63],Be={trace:function(){},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,requirementType:17,requirementName:18,STRUCT_START:19,requirementBody:20,ID:21,COLONSEP:22,id:23,TEXT:24,text:25,RISK:26,riskLevel:27,VERIFYMTHD:28,verifyType:29,STRUCT_STOP:30,REQUIREMENT:31,FUNCTIONAL_REQUIREMENT:32,INTERFACE_REQUIREMENT:33,PERFORMANCE_REQUIREMENT:34,PHYSICAL_REQUIREMENT:35,DESIGN_CONSTRAINT:36,LOW_RISK:37,MED_RISK:38,HIGH_RISK:39,VERIFY_ANALYSIS:40,VERIFY_DEMONSTRATION:41,VERIFY_INSPECTION:42,VERIFY_TEST:43,ELEMENT:44,elementName:45,elementBody:46,TYPE:47,type:48,DOCREF:49,ref:50,END_ARROW_L:51,relationship:52,LINE:53,END_ARROW_R:54,CONTAINS:55,COPIES:56,DERIVES:57,SATISFIES:58,VERIFIES:59,REFINES:60,TRACES:61,unqString:62,qString:63,$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",19:"STRUCT_START",21:"ID",22:"COLONSEP",24:"TEXT",26:"RISK",28:"VERIFYMTHD",30:"STRUCT_STOP",31:"REQUIREMENT",32:"FUNCTIONAL_REQUIREMENT",33:"INTERFACE_REQUIREMENT",34:"PERFORMANCE_REQUIREMENT",35:"PHYSICAL_REQUIREMENT",36:"DESIGN_CONSTRAINT",37:"LOW_RISK",38:"MED_RISK",39:"HIGH_RISK",40:"VERIFY_ANALYSIS",41:"VERIFY_DEMONSTRATION",42:"VERIFY_INSPECTION",43:"VERIFY_TEST",44:"ELEMENT",47:"TYPE",49:"DOCREF",51:"END_ARROW_L",53:"LINE",54:"END_ARROW_R",55:"CONTAINS",56:"COPIES",57:"DERIVES",58:"SATISFIES",59:"VERIFIES",60:"REFINES",61:"TRACES",62:"unqString",63:"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],[14,5],[20,5],[20,5],[20,5],[20,5],[20,2],[20,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[27,1],[27,1],[27,1],[29,1],[29,1],[29,1],[29,1],[15,5],[46,5],[46,5],[46,2],[46,1],[16,5],[16,5],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[18,1],[18,1],[23,1],[23,1],[25,1],[25,1],[45,1],[45,1],[48,1],[48,1],[50,1],[50,1]],performAction:function(Ee,nn,sn,me,Fe,Qt,Ae){var Se=Qt.length-1;switch(Fe){case 4:this.$=Qt[Se].trim(),me.setAccTitle(this.$);break;case 5:case 6:this.$=Qt[Se].trim(),me.setAccDescription(this.$);break;case 7:this.$=[];break;case 13:me.addRequirement(Qt[Se-3],Qt[Se-4]);break;case 14:me.setNewReqId(Qt[Se-2]);break;case 15:me.setNewReqText(Qt[Se-2]);break;case 16:me.setNewReqRisk(Qt[Se-2]);break;case 17:me.setNewReqVerifyMethod(Qt[Se-2]);break;case 20:this.$=me.RequirementType.REQUIREMENT;break;case 21:this.$=me.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 22:this.$=me.RequirementType.INTERFACE_REQUIREMENT;break;case 23:this.$=me.RequirementType.PERFORMANCE_REQUIREMENT;break;case 24:this.$=me.RequirementType.PHYSICAL_REQUIREMENT;break;case 25:this.$=me.RequirementType.DESIGN_CONSTRAINT;break;case 26:this.$=me.RiskLevel.LOW_RISK;break;case 27:this.$=me.RiskLevel.MED_RISK;break;case 28:this.$=me.RiskLevel.HIGH_RISK;break;case 29:this.$=me.VerifyType.VERIFY_ANALYSIS;break;case 30:this.$=me.VerifyType.VERIFY_DEMONSTRATION;break;case 31:this.$=me.VerifyType.VERIFY_INSPECTION;break;case 32:this.$=me.VerifyType.VERIFY_TEST;break;case 33:me.addElement(Qt[Se-3]);break;case 34:me.setNewElementType(Qt[Se-2]);break;case 35:me.setNewElementDocRef(Qt[Se-2]);break;case 38:me.addRelationship(Qt[Se-2],Qt[Se],Qt[Se-4]);break;case 39:me.addRelationship(Qt[Se-2],Qt[Se-4],Qt[Se]);break;case 40:this.$=me.Relationships.CONTAINS;break;case 41:this.$=me.Relationships.COPIES;break;case 42:this.$=me.Relationships.DERIVES;break;case 43:this.$=me.Relationships.SATISFIES;break;case 44:this.$=me.Relationships.VERIFIES;break;case 45:this.$=me.Relationships.REFINES;break;case 46:this.$=me.Relationships.TRACES;break}},table:[{3:1,4:2,6:a,9:f,11:g,13:w},{1:[3]},{3:8,4:2,5:[1,7],6:a,9:f,11:g,13:w},{5:[1,9]},{10:[1,10]},{12:[1,11]},i(v,[2,6]),{3:12,4:2,6:a,9:f,11:g,13:w},{1:[2,2]},{4:17,5:b,7:13,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:_,32:S,33:I,34:B,35:F,36:R,44:q,62:X,63:rt},i(v,[2,4]),i(v,[2,5]),{1:[2,1]},{8:[1,30]},{4:17,5:b,7:31,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:_,32:S,33:I,34:B,35:F,36:R,44:q,62:X,63:rt},{4:17,5:b,7:32,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:_,32:S,33:I,34:B,35:F,36:R,44:q,62:X,63:rt},{4:17,5:b,7:33,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:_,32:S,33:I,34:B,35:F,36:R,44:q,62:X,63:rt},{4:17,5:b,7:34,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:_,32:S,33:I,34:B,35:F,36:R,44:q,62:X,63:rt},{4:17,5:b,7:35,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:_,32:S,33:I,34:B,35:F,36:R,44:q,62:X,63:rt},{18:36,62:[1,37],63:[1,38]},{45:39,62:[1,40],63:[1,41]},{51:[1,42],53:[1,43]},i(at,[2,20]),i(at,[2,21]),i(at,[2,22]),i(at,[2,23]),i(at,[2,24]),i(at,[2,25]),i(ut,[2,49]),i(ut,[2,50]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{19:[1,44]},{19:[2,47]},{19:[2,48]},{19:[1,45]},{19:[2,53]},{19:[2,54]},{52:46,55:pt,56:yt,57:mt,58:gt,59:ht,60:bt,61:Z},{52:54,55:pt,56:yt,57:mt,58:gt,59:ht,60:bt,61:Z},{5:[1,55]},{5:[1,56]},{53:[1,57]},i(ft,[2,40]),i(ft,[2,41]),i(ft,[2,42]),i(ft,[2,43]),i(ft,[2,44]),i(ft,[2,45]),i(ft,[2,46]),{54:[1,58]},{5:Y,20:59,21:Et,24:V,26:Nt,28:Dt,30:jt},{5:Ct,30:Ft,46:66,47:_t,49:xt},{23:71,62:X,63:rt},{23:72,62:X,63:rt},i(Gt,[2,13]),{22:[1,73]},{22:[1,74]},{22:[1,75]},{22:[1,76]},{5:Y,20:77,21:Et,24:V,26:Nt,28:Dt,30:jt},i(Gt,[2,19]),i(Gt,[2,33]),{22:[1,78]},{22:[1,79]},{5:Ct,30:Ft,46:80,47:_t,49:xt},i(Gt,[2,37]),i(Gt,[2,38]),i(Gt,[2,39]),{23:81,62:X,63:rt},{25:82,62:[1,83],63:[1,84]},{27:85,37:[1,86],38:[1,87],39:[1,88]},{29:89,40:[1,90],41:[1,91],42:[1,92],43:[1,93]},i(Gt,[2,18]),{48:94,62:[1,95],63:[1,96]},{50:97,62:[1,98],63:[1,99]},i(Gt,[2,36]),{5:[1,100]},{5:[1,101]},{5:[2,51]},{5:[2,52]},{5:[1,102]},{5:[2,26]},{5:[2,27]},{5:[2,28]},{5:[1,103]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[2,32]},{5:[1,104]},{5:[2,55]},{5:[2,56]},{5:[1,105]},{5:[2,57]},{5:[2,58]},{5:Y,20:106,21:Et,24:V,26:Nt,28:Dt,30:jt},{5:Y,20:107,21:Et,24:V,26:Nt,28:Dt,30:jt},{5:Y,20:108,21:Et,24:V,26:Nt,28:Dt,30:jt},{5:Y,20:109,21:Et,24:V,26:Nt,28:Dt,30:jt},{5:Ct,30:Ft,46:110,47:_t,49:xt},{5:Ct,30:Ft,46:111,47:_t,49:xt},i(Gt,[2,14]),i(Gt,[2,15]),i(Gt,[2,16]),i(Gt,[2,17]),i(Gt,[2,34]),i(Gt,[2,35])],defaultActions:{8:[2,2],12:[2,1],30:[2,3],31:[2,8],32:[2,9],33:[2,10],34:[2,11],35:[2,12],37:[2,47],38:[2,48],40:[2,53],41:[2,54],83:[2,51],84:[2,52],86:[2,26],87:[2,27],88:[2,28],90:[2,29],91:[2,30],92:[2,31],93:[2,32],95:[2,55],96:[2,56],98:[2,57],99:[2,58]},parseError:function(Ee,nn){if(nn.recoverable)this.trace(Ee);else{var sn=new Error(Ee);throw sn.hash=nn,sn}},parse:function(Ee){var nn=this,sn=[0],me=[],Fe=[null],Qt=[],Ae=this.table,Se="",Dn=0,oe=0,Pr=2,we=1,Ri=Qt.slice.call(arguments,1),yi=Object.create(this.lexer),da={yy:{}};for(var Ss in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ss)&&(da.yy[Ss]=this.yy[Ss]);yi.setInput(Ee,da.yy),da.yy.lexer=yi,da.yy.parser=this,typeof yi.yylloc>"u"&&(yi.yylloc={});var Ra=yi.yylloc;Qt.push(Ra);var fr=yi.options&&yi.options.ranges;typeof da.yy.parseError=="function"?this.parseError=da.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function An(){var ma;return ma=me.pop()||yi.lex()||we,typeof ma!="number"&&(ma instanceof Array&&(me=ma,ma=me.pop()),ma=nn.symbols_[ma]||ma),ma}for(var Pn,Bn,Te,be,Qe={},rn,yn,ja,mo;;){if(Bn=sn[sn.length-1],this.defaultActions[Bn]?Te=this.defaultActions[Bn]:((Pn===null||typeof Pn>"u")&&(Pn=An()),Te=Ae[Bn]&&Ae[Bn][Pn]),typeof Te>"u"||!Te.length||!Te[0]){var vo="";mo=[];for(rn in Ae[Bn])this.terminals_[rn]&&rn>Pr&&mo.push("'"+this.terminals_[rn]+"'");yi.showPosition?vo="Parse error on line "+(Dn+1)+`: +`+yi.showPosition()+` +Expecting `+mo.join(", ")+", got '"+(this.terminals_[Pn]||Pn)+"'":vo="Parse error on line "+(Dn+1)+": Unexpected "+(Pn==we?"end of input":"'"+(this.terminals_[Pn]||Pn)+"'"),this.parseError(vo,{text:yi.match,token:this.terminals_[Pn]||Pn,line:yi.yylineno,loc:Ra,expected:mo})}if(Te[0]instanceof Array&&Te.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Bn+", token: "+Pn);switch(Te[0]){case 1:sn.push(Pn),Fe.push(yi.yytext),Qt.push(yi.yylloc),sn.push(Te[1]),Pn=null,oe=yi.yyleng,Se=yi.yytext,Dn=yi.yylineno,Ra=yi.yylloc;break;case 2:if(yn=this.productions_[Te[1]][1],Qe.$=Fe[Fe.length-yn],Qe._$={first_line:Qt[Qt.length-(yn||1)].first_line,last_line:Qt[Qt.length-1].last_line,first_column:Qt[Qt.length-(yn||1)].first_column,last_column:Qt[Qt.length-1].last_column},fr&&(Qe._$.range=[Qt[Qt.length-(yn||1)].range[0],Qt[Qt.length-1].range[1]]),be=this.performAction.apply(Qe,[Se,oe,Dn,da.yy,Te[1],Fe,Qt].concat(Ri)),typeof be<"u")return be;yn&&(sn=sn.slice(0,-1*yn*2),Fe=Fe.slice(0,-1*yn),Qt=Qt.slice(0,-1*yn)),sn.push(this.productions_[Te[1]][0]),Fe.push(Qe.$),Qt.push(Qe._$),ja=Ae[sn[sn.length-2]][sn[sn.length-1]],sn.push(ja);break;case 3:return!0}}return!0}},Ot=function(){var Pe={EOF:1,parseError:function(nn,sn){if(this.yy.parser)this.yy.parser.parseError(nn,sn);else throw new Error(nn)},setInput:function(Ee,nn){return this.yy=nn||this.yy||{},this._input=Ee,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},input:function(){var Ee=this._input[0];this.yytext+=Ee,this.yyleng++,this.offset++,this.match+=Ee,this.matched+=Ee;var nn=Ee.match(/(?:\r\n?|\n).*/g);return nn?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ee},unput:function(Ee){var nn=Ee.length,sn=Ee.split(/(?:\r\n?|\n)/g);this._input=Ee+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-nn),this.offset-=nn;var me=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),sn.length-1&&(this.yylineno-=sn.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:sn?(sn.length===me.length?this.yylloc.first_column:0)+me[me.length-sn.length].length-sn[0].length:this.yylloc.first_column-nn},this.options.ranges&&(this.yylloc.range=[Fe[0],Fe[0]+this.yyleng-nn]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(Ee){this.unput(this.match.slice(Ee))},pastInput:function(){var Ee=this.matched.substr(0,this.matched.length-this.match.length);return(Ee.length>20?"...":"")+Ee.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Ee=this.match;return Ee.length<20&&(Ee+=this._input.substr(0,20-Ee.length)),(Ee.substr(0,20)+(Ee.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Ee=this.pastInput(),nn=new Array(Ee.length+1).join("-");return Ee+this.upcomingInput()+` +`+nn+"^"},test_match:function(Ee,nn){var sn,me,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))),me=Ee[0].match(/(?:\r\n?|\n).*/g),me&&(this.yylineno+=me.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:me?me[me.length-1].length-me[me.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ee[0].length},this.yytext+=Ee[0],this.match+=Ee[0],this.matches=Ee,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(Ee[0].length),this.matched+=Ee[0],sn=this.performAction.call(this,this.yy,this,nn,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),sn)return sn;if(this._backtrack){for(var Qt in Fe)this[Qt]=Fe[Qt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ee,nn,sn,me;this._more||(this.yytext="",this.match="");for(var Fe=this._currentRules(),Qt=0;Qtnn[0].length)){if(nn=sn,me=Qt,this.options.backtrack_lexer){if(Ee=this.test_match(sn,Fe[Qt]),Ee!==!1)return Ee;if(this._backtrack){nn=!1;continue}else return!1}else if(!this.options.flex)break}return nn?(Ee=this.test_match(nn,Fe[me]),Ee!==!1?Ee:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var nn=this.next();return nn||this.lex()},begin:function(nn){this.conditionStack.push(nn)},popState:function(){var nn=this.conditionStack.length-1;return nn>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(nn){return nn=this.conditionStack.length-1-Math.abs(nn||0),nn>=0?this.conditionStack[nn]:"INITIAL"},pushState:function(nn){this.begin(nn)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(nn,sn,me,Fe){switch(me){case 0:return"title";case 1:return this.begin("acc_title"),9;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),11;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:return 8;case 13:return 6;case 14:return 19;case 15:return 30;case 16:return 22;case 17:return 21;case 18:return 24;case 19:return 26;case 20:return 28;case 21:return 31;case 22:return 32;case 23:return 33;case 24:return 34;case 25:return 35;case 26:return 36;case 27:return 37;case 28:return 38;case 29:return 39;case 30:return 40;case 31:return 41;case 32:return 42;case 33:return 43;case 34:return 44;case 35:return 55;case 36:return 56;case 37:return 57;case 38:return 58;case 39:return 59;case 40:return 60;case 41:return 61;case 42:return 47;case 43:return 49;case 44:return 51;case 45:return 54;case 46:return 53;case 47:this.begin("string");break;case 48:this.popState();break;case 49:return"qString";case 50:return sn.yytext=sn.yytext.trim(),62}},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,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/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,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[48,49],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,50],inclusive:!0}}};return Pe}();Be.lexer=Ot;function vn(){this.yy={}}return vn.prototype=Be,Be.Parser=vn,new vn}();vbt.parser=vbt;const MXe=vbt;let ybt=[],ob={},oB={},T8={},cB={};const DXe={RequirementType:{REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},RiskLevel:{LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},VerifyType:{VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Relationships:{CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},getConfig:()=>Re().req,addRequirement:(i,a)=>(oB[i]===void 0&&(oB[i]={name:i,type:a,id:ob.id,text:ob.text,risk:ob.risk,verifyMethod:ob.verifyMethod}),ob={},oB[i]),getRequirements:()=>oB,setNewReqId:i=>{ob!==void 0&&(ob.id=i)},setNewReqText:i=>{ob!==void 0&&(ob.text=i)},setNewReqRisk:i=>{ob!==void 0&&(ob.risk=i)},setNewReqVerifyMethod:i=>{ob!==void 0&&(ob.verifyMethod=i)},setAccTitle:ng,getAccTitle:Yg,setAccDescription:Xg,getAccDescription:Qg,addElement:i=>(cB[i]===void 0&&(cB[i]={name:i,type:T8.type,docRef:T8.docRef},Wt.info("Added new requirement: ",i)),T8={},cB[i]),getElements:()=>cB,setNewElementType:i=>{T8!==void 0&&(T8.type=i)},setNewElementDocRef:i=>{T8!==void 0&&(T8.docRef=i)},addRelationship:(i,a,f)=>{ybt.push({type:i,src:a,dst:f})},getRelationships:()=>ybt,clear:()=>{ybt=[],ob={},oB={},T8={},cB={},Wg()}},IXe=i=>` + + marker { + fill: ${i.relationColor}; + stroke: ${i.relationColor}; + } + + marker.cross { + stroke: ${i.lineColor}; + } + + svg { + font-family: ${i.fontFamily}; + font-size: ${i.fontSize}; + } + + .reqBox { + fill: ${i.requirementBackground}; + fill-opacity: 1.0; + stroke: ${i.requirementBorderColor}; + stroke-width: ${i.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${i.requirementTextColor}; + } + .reqLabelBox { + fill: ${i.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${i.requirementBorderColor}; + stroke-width: ${i.requirementBorderSize}; + } + .relationshipLine { + stroke: ${i.relationColor}; + stroke-width: 1; + } + .relationshipLabel { + fill: ${i.relationLabelColor}; + } + +`,xbt={CONTAINS:"contains",ARROW:"arrow"},Gzt={ReqMarkers:xbt,insertLineEndings:(i,a)=>{let f=i.append("defs").append("marker").attr("id",xbt.CONTAINS+"_line_ending").attr("refX",0).attr("refY",a.line_height/2).attr("markerWidth",a.line_height).attr("markerHeight",a.line_height).attr("orient","auto").append("g");f.append("circle").attr("cx",a.line_height/2).attr("cy",a.line_height/2).attr("r",a.line_height/2).attr("fill","none"),f.append("line").attr("x1",0).attr("x2",a.line_height).attr("y1",a.line_height/2).attr("y2",a.line_height/2).attr("stroke-width",1),f.append("line").attr("y1",0).attr("y2",a.line_height).attr("x1",a.line_height/2).attr("x2",a.line_height/2).attr("stroke-width",1),i.append("defs").append("marker").attr("id",xbt.ARROW+"_line_ending").attr("refX",a.line_height).attr("refY",.5*a.line_height).attr("markerWidth",a.line_height).attr("markerHeight",a.line_height).attr("orient","auto").append("path").attr("d",`M0,0 + L${a.line_height},${a.line_height/2} + M${a.line_height},${a.line_height/2} + L0,${a.line_height}`).attr("stroke-width",1)}};let Kh={},Kzt=0;const Wzt=(i,a)=>i.insert("rect","#"+a).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",Kh.rect_min_width+"px").attr("height",Kh.rect_min_height+"px"),Yzt=(i,a,f)=>{let g=Kh.rect_min_width/2,w=i.append("text").attr("class","req reqLabel reqTitle").attr("id",a).attr("x",g).attr("y",Kh.rect_padding).attr("dominant-baseline","hanging"),v=0;f.forEach(S=>{v==0?w.append("tspan").attr("text-anchor","middle").attr("x",Kh.rect_min_width/2).attr("dy",0).text(S):w.append("tspan").attr("text-anchor","middle").attr("x",Kh.rect_min_width/2).attr("dy",Kh.line_height*.75).text(S),v++});let b=1.5*Kh.rect_padding,E=v*Kh.line_height*.75,_=b+E;return i.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",Kh.rect_min_width).attr("y1",_).attr("y2",_),{titleNode:w,y:_}},Xzt=(i,a,f,g)=>{let w=i.append("text").attr("class","req reqLabel").attr("id",a).attr("x",Kh.rect_padding).attr("y",g).attr("dominant-baseline","hanging"),v=0;const b=30;let E=[];return f.forEach(_=>{let S=_.length;for(;S>b&&v<3;){let I=_.substring(0,b);_=_.substring(b,_.length),S=_.length,E[E.length]=I,v++}if(v==3){let I=E[E.length-1];E[E.length-1]=I.substring(0,I.length-4)+"..."}else E[E.length]=_;v=0}),E.forEach(_=>{w.append("tspan").attr("x",Kh.rect_padding).attr("dy",Kh.line_height).text(_)}),w},OXe=(i,a,f,g)=>{const w=a.node().getTotalLength(),v=a.node().getPointAtLength(w*.5),b="rel"+Kzt;Kzt++;const _=i.append("text").attr("class","req relationshipLabel").attr("id",b).attr("x",v.x).attr("y",v.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(g).node().getBBox();i.insert("rect","#"+b).attr("class","req reqLabelBox").attr("x",v.x-_.width/2).attr("y",v.y-_.height/2).attr("width",_.width).attr("height",_.height).attr("fill","white").attr("fill-opacity","85%")},PXe=function(i,a,f,g,w){const v=f.edge(xM(a.src),xM(a.dst)),b=Cx().x(function(_){return _.x}).y(function(_){return _.y}),E=i.insert("path","#"+g).attr("class","er relationshipLine").attr("d",b(v.points)).attr("fill","none");a.type==w.db.Relationships.CONTAINS?E.attr("marker-start","url("+ei.getUrl(Kh.arrowMarkerAbsolute)+"#"+a.type+"_line_ending)"):(E.attr("stroke-dasharray","10,7"),E.attr("marker-end","url("+ei.getUrl(Kh.arrowMarkerAbsolute)+"#"+Gzt.ReqMarkers.ARROW+"_line_ending)")),OXe(i,E,Kh,`<<${a.type}>>`)},NXe=(i,a,f)=>{Object.keys(i).forEach(g=>{let w=i[g];g=xM(g),Wt.info("Added new requirement: ",g);const v=f.append("g").attr("id",g),b="req-"+g,E=Wzt(v,b);let _=Yzt(v,g+"_title",[`<<${w.type}>>`,`${w.name}`]);Xzt(v,g+"_body",[`Id: ${w.id}`,`Text: ${w.text}`,`Risk: ${w.risk}`,`Verification: ${w.verifyMethod}`],_.y);const S=E.node().getBBox();a.setNode(g,{width:S.width,height:S.height,shape:"rect",id:g})})},FXe=(i,a,f)=>{Object.keys(i).forEach(g=>{let w=i[g];const v=xM(g),b=f.append("g").attr("id",v),E="element-"+v,_=Wzt(b,E);let S=Yzt(b,E+"_title",["<>",`${g}`]);Xzt(b,E+"_body",[`Type: ${w.type||"Not Specified"}`,`Doc Ref: ${w.docRef||"None"}`],S.y);const I=_.node().getBBox();a.setNode(v,{width:I.width,height:I.height,shape:"rect",id:v})})},BXe=(i,a)=>(i.forEach(function(f){let g=xM(f.src),w=xM(f.dst);a.setEdge(g,w,{relationship:f})}),i),RXe=function(i,a){a.nodes().forEach(function(f){f!==void 0&&a.node(f)!==void 0&&(i.select("#"+f),i.select("#"+f).attr("transform","translate("+(a.node(f).x-a.node(f).width/2)+","+(a.node(f).y-a.node(f).height/2)+" )"))})},xM=i=>i.replace(/\s/g,"").replace(/\./g,"_"),jXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:MXe,db:DXe,renderer:{draw:(i,a,f,g)=>{Kh=Re().requirement;const w=Kh.securityLevel;let v;w==="sandbox"&&(v=xr("#i"+a));const E=xr(w==="sandbox"?v.nodes()[0].contentDocument.body:"body").select(`[id='${a}']`);Gzt.insertLineEndings(E,Kh);const _=new R1({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:Kh.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});let S=g.db.getRequirements(),I=g.db.getElements(),B=g.db.getRelationships();NXe(S,_,E),FXe(I,_,E),BXe(B,_),gM(_),RXe(E,_),B.forEach(function(rt){PXe(E,rt,_,a,g)});const F=Kh.rect_padding,R=E.node().getBBox(),q=R.width+F*2,X=R.height+F*2;Kg(E,X,q,Kh.useMaxWidth),E.attr("viewBox",`${R.x-F} ${R.y-F} ${q} ${X}`)}},styles:IXe}},Symbol.toStringTag,{value:"Module"}));var kbt=function(){var i=function(me,Fe,Qt,Ae){for(Qt=Qt||{},Ae=me.length;Ae--;Qt[me[Ae]]=Fe);return Qt},a=[1,2],f=[1,3],g=[1,4],w=[2,4],v=[1,9],b=[1,11],E=[1,13],_=[1,14],S=[1,16],I=[1,17],B=[1,18],F=[1,24],R=[1,25],q=[1,26],X=[1,27],rt=[1,28],at=[1,29],ut=[1,30],pt=[1,31],yt=[1,32],mt=[1,33],gt=[1,34],ht=[1,35],bt=[1,36],Z=[1,37],ft=[1,38],Y=[1,39],Et=[1,41],V=[1,42],Nt=[1,43],Dt=[1,44],jt=[1,45],Ct=[1,46],Ft=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,54,59,60,61,62,70],_t=[4,5,16,50,52,53],xt=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],Gt=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,54,59,60,61,62,70],Be=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,54,59,60,61,62,70],Ot=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,54,59,60,61,62,70],vn=[68,69,70],Pe=[1,120],Ee={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,note:54,placement:55,text2:56,over:57,actor_pair:58,links:59,link:60,properties:61,details:62,spaceList:63,",":64,left_of:65,right_of:66,signaltype:67,"+":68,"-":69,ACTOR:70,SOLID_OPEN_ARROW:71,DOTTED_OPEN_ARROW:72,SOLID_ARROW:73,DOTTED_ARROW:74,SOLID_CROSS:75,DOTTED_CROSS:76,SOLID_POINT:77,DOTTED_POINT:78,TXT:79,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",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",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",54:"note",57:"over",59:"links",60:"link",61:"properties",62:"details",64:",",65:"left_of",66:"right_of",68:"+",69:"-",70:"ACTOR",71:"SOLID_OPEN_ARROW",72:"DOTTED_OPEN_ARROW",73:"SOLID_ARROW",74:"DOTTED_ARROW",75:"SOLID_CROSS",76:"DOTTED_CROSS",77:"SOLID_POINT",78:"DOTTED_POINT",79:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,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],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[63,2],[63,1],[58,3],[58,1],[55,1],[55,1],[17,5],[17,5],[17,4],[22,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[56,1]],performAction:function(Fe,Qt,Ae,Se,Dn,oe,Pr){var we=oe.length-1;switch(Dn){case 3:return Se.apply(oe[we]),oe[we];case 4:case 9:this.$=[];break;case 5:case 10:oe[we-1].push(oe[we]),this.$=oe[we-1];break;case 6:case 7:case 11:case 12:this.$=oe[we];break;case 8:case 13:this.$=[];break;case 15:oe[we].type="createParticipant",this.$=oe[we];break;case 16:oe[we-1].unshift({type:"boxStart",boxData:Se.parseBoxData(oe[we-2])}),oe[we-1].push({type:"boxEnd",boxText:oe[we-2]}),this.$=oe[we-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(oe[we-2]),sequenceIndexStep:Number(oe[we-1]),sequenceVisible:!0,signalType:Se.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(oe[we-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:Se.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:Se.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:Se.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:Se.LINETYPE.ACTIVE_START,actor:oe[we-1]};break;case 23:this.$={type:"activeEnd",signalType:Se.LINETYPE.ACTIVE_END,actor:oe[we-1]};break;case 29:Se.setDiagramTitle(oe[we].substring(6)),this.$=oe[we].substring(6);break;case 30:Se.setDiagramTitle(oe[we].substring(7)),this.$=oe[we].substring(7);break;case 31:this.$=oe[we].trim(),Se.setAccTitle(this.$);break;case 32:case 33:this.$=oe[we].trim(),Se.setAccDescription(this.$);break;case 34:oe[we-1].unshift({type:"loopStart",loopText:Se.parseMessage(oe[we-2]),signalType:Se.LINETYPE.LOOP_START}),oe[we-1].push({type:"loopEnd",loopText:oe[we-2],signalType:Se.LINETYPE.LOOP_END}),this.$=oe[we-1];break;case 35:oe[we-1].unshift({type:"rectStart",color:Se.parseMessage(oe[we-2]),signalType:Se.LINETYPE.RECT_START}),oe[we-1].push({type:"rectEnd",color:Se.parseMessage(oe[we-2]),signalType:Se.LINETYPE.RECT_END}),this.$=oe[we-1];break;case 36:oe[we-1].unshift({type:"optStart",optText:Se.parseMessage(oe[we-2]),signalType:Se.LINETYPE.OPT_START}),oe[we-1].push({type:"optEnd",optText:Se.parseMessage(oe[we-2]),signalType:Se.LINETYPE.OPT_END}),this.$=oe[we-1];break;case 37:oe[we-1].unshift({type:"altStart",altText:Se.parseMessage(oe[we-2]),signalType:Se.LINETYPE.ALT_START}),oe[we-1].push({type:"altEnd",signalType:Se.LINETYPE.ALT_END}),this.$=oe[we-1];break;case 38:oe[we-1].unshift({type:"parStart",parText:Se.parseMessage(oe[we-2]),signalType:Se.LINETYPE.PAR_START}),oe[we-1].push({type:"parEnd",signalType:Se.LINETYPE.PAR_END}),this.$=oe[we-1];break;case 39:oe[we-1].unshift({type:"parStart",parText:Se.parseMessage(oe[we-2]),signalType:Se.LINETYPE.PAR_OVER_START}),oe[we-1].push({type:"parEnd",signalType:Se.LINETYPE.PAR_END}),this.$=oe[we-1];break;case 40:oe[we-1].unshift({type:"criticalStart",criticalText:Se.parseMessage(oe[we-2]),signalType:Se.LINETYPE.CRITICAL_START}),oe[we-1].push({type:"criticalEnd",signalType:Se.LINETYPE.CRITICAL_END}),this.$=oe[we-1];break;case 41:oe[we-1].unshift({type:"breakStart",breakText:Se.parseMessage(oe[we-2]),signalType:Se.LINETYPE.BREAK_START}),oe[we-1].push({type:"breakEnd",optText:Se.parseMessage(oe[we-2]),signalType:Se.LINETYPE.BREAK_END}),this.$=oe[we-1];break;case 43:this.$=oe[we-3].concat([{type:"option",optionText:Se.parseMessage(oe[we-1]),signalType:Se.LINETYPE.CRITICAL_OPTION},oe[we]]);break;case 45:this.$=oe[we-3].concat([{type:"and",parText:Se.parseMessage(oe[we-1]),signalType:Se.LINETYPE.PAR_AND},oe[we]]);break;case 47:this.$=oe[we-3].concat([{type:"else",altText:Se.parseMessage(oe[we-1]),signalType:Se.LINETYPE.ALT_ELSE},oe[we]]);break;case 48:oe[we-3].draw="participant",oe[we-3].type="addParticipant",oe[we-3].description=Se.parseMessage(oe[we-1]),this.$=oe[we-3];break;case 49:oe[we-1].draw="participant",oe[we-1].type="addParticipant",this.$=oe[we-1];break;case 50:oe[we-3].draw="actor",oe[we-3].type="addParticipant",oe[we-3].description=Se.parseMessage(oe[we-1]),this.$=oe[we-3];break;case 51:oe[we-1].draw="actor",oe[we-1].type="addParticipant",this.$=oe[we-1];break;case 52:oe[we-1].type="destroyParticipant",this.$=oe[we-1];break;case 53:this.$=[oe[we-1],{type:"addNote",placement:oe[we-2],actor:oe[we-1].actor,text:oe[we]}];break;case 54:oe[we-2]=[].concat(oe[we-1],oe[we-1]).slice(0,2),oe[we-2][0]=oe[we-2][0].actor,oe[we-2][1]=oe[we-2][1].actor,this.$=[oe[we-1],{type:"addNote",placement:Se.PLACEMENT.OVER,actor:oe[we-2].slice(0,2),text:oe[we]}];break;case 55:this.$=[oe[we-1],{type:"addLinks",actor:oe[we-1].actor,text:oe[we]}];break;case 56:this.$=[oe[we-1],{type:"addALink",actor:oe[we-1].actor,text:oe[we]}];break;case 57:this.$=[oe[we-1],{type:"addProperties",actor:oe[we-1].actor,text:oe[we]}];break;case 58:this.$=[oe[we-1],{type:"addDetails",actor:oe[we-1].actor,text:oe[we]}];break;case 61:this.$=[oe[we-2],oe[we]];break;case 62:this.$=oe[we];break;case 63:this.$=Se.PLACEMENT.LEFTOF;break;case 64:this.$=Se.PLACEMENT.RIGHTOF;break;case 65:this.$=[oe[we-4],oe[we-1],{type:"addMessage",from:oe[we-4].actor,to:oe[we-1].actor,signalType:oe[we-3],msg:oe[we],activate:!0},{type:"activeStart",signalType:Se.LINETYPE.ACTIVE_START,actor:oe[we-1]}];break;case 66:this.$=[oe[we-4],oe[we-1],{type:"addMessage",from:oe[we-4].actor,to:oe[we-1].actor,signalType:oe[we-3],msg:oe[we]},{type:"activeEnd",signalType:Se.LINETYPE.ACTIVE_END,actor:oe[we-4]}];break;case 67:this.$=[oe[we-3],oe[we-1],{type:"addMessage",from:oe[we-3].actor,to:oe[we-1].actor,signalType:oe[we-2],msg:oe[we]}];break;case 68:this.$={type:"addParticipant",actor:oe[we]};break;case 69:this.$=Se.LINETYPE.SOLID_OPEN;break;case 70:this.$=Se.LINETYPE.DOTTED_OPEN;break;case 71:this.$=Se.LINETYPE.SOLID;break;case 72:this.$=Se.LINETYPE.DOTTED;break;case 73:this.$=Se.LINETYPE.SOLID_CROSS;break;case 74:this.$=Se.LINETYPE.DOTTED_CROSS;break;case 75:this.$=Se.LINETYPE.SOLID_POINT;break;case 76:this.$=Se.LINETYPE.DOTTED_POINT;break;case 77:this.$=Se.parseMessage(oe[we].trim().substring(1));break}},table:[{3:1,4:a,5:f,6:g},{1:[3]},{3:5,4:a,5:f,6:g},{3:6,4:a,5:f,6:g},i([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],w,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:v,5:b,8:8,9:10,12:12,13:E,14:_,17:15,18:S,21:I,22:40,23:B,24:19,25:20,26:21,27:22,28:23,29:F,30:R,31:q,33:X,35:rt,36:at,37:ut,38:pt,39:yt,41:mt,43:gt,44:ht,46:bt,50:Z,52:ft,53:Y,54:Et,59:V,60:Nt,61:Dt,62:jt,70:Ct},i(Ft,[2,5]),{9:47,12:12,13:E,14:_,17:15,18:S,21:I,22:40,23:B,24:19,25:20,26:21,27:22,28:23,29:F,30:R,31:q,33:X,35:rt,36:at,37:ut,38:pt,39:yt,41:mt,43:gt,44:ht,46:bt,50:Z,52:ft,53:Y,54:Et,59:V,60:Nt,61:Dt,62:jt,70:Ct},i(Ft,[2,7]),i(Ft,[2,8]),i(Ft,[2,14]),{12:48,50:Z,52:ft,53:Y},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,70:Ct},{22:55,70:Ct},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},i(Ft,[2,29]),i(Ft,[2,30]),{32:[1,61]},{34:[1,62]},i(Ft,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,70:Ct},{22:72,70:Ct},{22:73,70:Ct},{67:74,71:[1,75],72:[1,76],73:[1,77],74:[1,78],75:[1,79],76:[1,80],77:[1,81],78:[1,82]},{55:83,57:[1,84],65:[1,85],66:[1,86]},{22:87,70:Ct},{22:88,70:Ct},{22:89,70:Ct},{22:90,70:Ct},i([5,51,64,71,72,73,74,75,76,77,78,79],[2,68]),i(Ft,[2,6]),i(Ft,[2,15]),i(_t,[2,9],{10:91}),i(Ft,[2,17]),{5:[1,93],19:[1,92]},{5:[1,94]},i(Ft,[2,21]),{5:[1,95]},{5:[1,96]},i(Ft,[2,24]),i(Ft,[2,25]),i(Ft,[2,26]),i(Ft,[2,27]),i(Ft,[2,28]),i(Ft,[2,31]),i(Ft,[2,32]),i(xt,w,{7:97}),i(xt,w,{7:98}),i(xt,w,{7:99}),i(Gt,w,{40:100,7:101}),i(Be,w,{42:102,7:103}),i(Be,w,{7:103,42:104}),i(Ot,w,{45:105,7:106}),i(xt,w,{7:107}),{5:[1,109],51:[1,108]},{5:[1,111],51:[1,110]},{5:[1,112]},{22:115,68:[1,113],69:[1,114],70:Ct},i(vn,[2,69]),i(vn,[2,70]),i(vn,[2,71]),i(vn,[2,72]),i(vn,[2,73]),i(vn,[2,74]),i(vn,[2,75]),i(vn,[2,76]),{22:116,70:Ct},{22:118,58:117,70:Ct},{70:[2,63]},{70:[2,64]},{56:119,79:Pe},{56:121,79:Pe},{56:122,79:Pe},{56:123,79:Pe},{4:[1,126],5:[1,128],11:125,12:127,16:[1,124],50:Z,52:ft,53:Y},{5:[1,129]},i(Ft,[2,19]),i(Ft,[2,20]),i(Ft,[2,22]),i(Ft,[2,23]),{4:v,5:b,8:8,9:10,12:12,13:E,14:_,16:[1,130],17:15,18:S,21:I,22:40,23:B,24:19,25:20,26:21,27:22,28:23,29:F,30:R,31:q,33:X,35:rt,36:at,37:ut,38:pt,39:yt,41:mt,43:gt,44:ht,46:bt,50:Z,52:ft,53:Y,54:Et,59:V,60:Nt,61:Dt,62:jt,70:Ct},{4:v,5:b,8:8,9:10,12:12,13:E,14:_,16:[1,131],17:15,18:S,21:I,22:40,23:B,24:19,25:20,26:21,27:22,28:23,29:F,30:R,31:q,33:X,35:rt,36:at,37:ut,38:pt,39:yt,41:mt,43:gt,44:ht,46:bt,50:Z,52:ft,53:Y,54:Et,59:V,60:Nt,61:Dt,62:jt,70:Ct},{4:v,5:b,8:8,9:10,12:12,13:E,14:_,16:[1,132],17:15,18:S,21:I,22:40,23:B,24:19,25:20,26:21,27:22,28:23,29:F,30:R,31:q,33:X,35:rt,36:at,37:ut,38:pt,39:yt,41:mt,43:gt,44:ht,46:bt,50:Z,52:ft,53:Y,54:Et,59:V,60:Nt,61:Dt,62:jt,70:Ct},{16:[1,133]},{4:v,5:b,8:8,9:10,12:12,13:E,14:_,16:[2,46],17:15,18:S,21:I,22:40,23:B,24:19,25:20,26:21,27:22,28:23,29:F,30:R,31:q,33:X,35:rt,36:at,37:ut,38:pt,39:yt,41:mt,43:gt,44:ht,46:bt,49:[1,134],50:Z,52:ft,53:Y,54:Et,59:V,60:Nt,61:Dt,62:jt,70:Ct},{16:[1,135]},{4:v,5:b,8:8,9:10,12:12,13:E,14:_,16:[2,44],17:15,18:S,21:I,22:40,23:B,24:19,25:20,26:21,27:22,28:23,29:F,30:R,31:q,33:X,35:rt,36:at,37:ut,38:pt,39:yt,41:mt,43:gt,44:ht,46:bt,48:[1,136],50:Z,52:ft,53:Y,54:Et,59:V,60:Nt,61:Dt,62:jt,70:Ct},{16:[1,137]},{16:[1,138]},{4:v,5:b,8:8,9:10,12:12,13:E,14:_,16:[2,42],17:15,18:S,21:I,22:40,23:B,24:19,25:20,26:21,27:22,28:23,29:F,30:R,31:q,33:X,35:rt,36:at,37:ut,38:pt,39:yt,41:mt,43:gt,44:ht,46:bt,47:[1,139],50:Z,52:ft,53:Y,54:Et,59:V,60:Nt,61:Dt,62:jt,70:Ct},{4:v,5:b,8:8,9:10,12:12,13:E,14:_,16:[1,140],17:15,18:S,21:I,22:40,23:B,24:19,25:20,26:21,27:22,28:23,29:F,30:R,31:q,33:X,35:rt,36:at,37:ut,38:pt,39:yt,41:mt,43:gt,44:ht,46:bt,50:Z,52:ft,53:Y,54:Et,59:V,60:Nt,61:Dt,62:jt,70:Ct},{15:[1,141]},i(Ft,[2,49]),{15:[1,142]},i(Ft,[2,51]),i(Ft,[2,52]),{22:143,70:Ct},{22:144,70:Ct},{56:145,79:Pe},{56:146,79:Pe},{56:147,79:Pe},{64:[1,148],79:[2,62]},{5:[2,55]},{5:[2,77]},{5:[2,56]},{5:[2,57]},{5:[2,58]},i(Ft,[2,16]),i(_t,[2,10]),{12:149,50:Z,52:ft,53:Y},i(_t,[2,12]),i(_t,[2,13]),i(Ft,[2,18]),i(Ft,[2,34]),i(Ft,[2,35]),i(Ft,[2,36]),i(Ft,[2,37]),{15:[1,150]},i(Ft,[2,38]),{15:[1,151]},i(Ft,[2,39]),i(Ft,[2,40]),{15:[1,152]},i(Ft,[2,41]),{5:[1,153]},{5:[1,154]},{56:155,79:Pe},{56:156,79:Pe},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:157,70:Ct},i(_t,[2,11]),i(Gt,w,{7:101,40:158}),i(Be,w,{7:103,42:159}),i(Ot,w,{7:106,45:160}),i(Ft,[2,48]),i(Ft,[2,50]),{5:[2,65]},{5:[2,66]},{79:[2,61]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],85:[2,63],86:[2,64],119:[2,55],120:[2,77],121:[2,56],122:[2,57],123:[2,58],145:[2,67],146:[2,53],147:[2,54],155:[2,65],156:[2,66],157:[2,61],158:[2,47],159:[2,45],160:[2,43]},parseError:function(Fe,Qt){if(Qt.recoverable)this.trace(Fe);else{var Ae=new Error(Fe);throw Ae.hash=Qt,Ae}},parse:function(Fe){var Qt=this,Ae=[0],Se=[],Dn=[null],oe=[],Pr=this.table,we="",Ri=0,yi=0,da=2,Ss=1,Ra=oe.slice.call(arguments,1),fr=Object.create(this.lexer),An={yy:{}};for(var Pn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Pn)&&(An.yy[Pn]=this.yy[Pn]);fr.setInput(Fe,An.yy),An.yy.lexer=fr,An.yy.parser=this,typeof fr.yylloc>"u"&&(fr.yylloc={});var Bn=fr.yylloc;oe.push(Bn);var Te=fr.options&&fr.options.ranges;typeof An.yy.parseError=="function"?this.parseError=An.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function be(){var ta;return ta=Se.pop()||fr.lex()||Ss,typeof ta!="number"&&(ta instanceof Array&&(Se=ta,ta=Se.pop()),ta=Qt.symbols_[ta]||ta),ta}for(var Qe,rn,yn,ja,mo={},vo,ma,$a,gs;;){if(rn=Ae[Ae.length-1],this.defaultActions[rn]?yn=this.defaultActions[rn]:((Qe===null||typeof Qe>"u")&&(Qe=be()),yn=Pr[rn]&&Pr[rn][Qe]),typeof yn>"u"||!yn.length||!yn[0]){var Nu="";gs=[];for(vo in Pr[rn])this.terminals_[vo]&&vo>da&&gs.push("'"+this.terminals_[vo]+"'");fr.showPosition?Nu="Parse error on line "+(Ri+1)+`: +`+fr.showPosition()+` +Expecting `+gs.join(", ")+", got '"+(this.terminals_[Qe]||Qe)+"'":Nu="Parse error on line "+(Ri+1)+": Unexpected "+(Qe==Ss?"end of input":"'"+(this.terminals_[Qe]||Qe)+"'"),this.parseError(Nu,{text:fr.match,token:this.terminals_[Qe]||Qe,line:fr.yylineno,loc:Bn,expected:gs})}if(yn[0]instanceof Array&&yn.length>1)throw new Error("Parse Error: multiple actions possible at state: "+rn+", token: "+Qe);switch(yn[0]){case 1:Ae.push(Qe),Dn.push(fr.yytext),oe.push(fr.yylloc),Ae.push(yn[1]),Qe=null,yi=fr.yyleng,we=fr.yytext,Ri=fr.yylineno,Bn=fr.yylloc;break;case 2:if(ma=this.productions_[yn[1]][1],mo.$=Dn[Dn.length-ma],mo._$={first_line:oe[oe.length-(ma||1)].first_line,last_line:oe[oe.length-1].last_line,first_column:oe[oe.length-(ma||1)].first_column,last_column:oe[oe.length-1].last_column},Te&&(mo._$.range=[oe[oe.length-(ma||1)].range[0],oe[oe.length-1].range[1]]),ja=this.performAction.apply(mo,[we,yi,Ri,An.yy,yn[1],Dn,oe].concat(Ra)),typeof ja<"u")return ja;ma&&(Ae=Ae.slice(0,-1*ma*2),Dn=Dn.slice(0,-1*ma),oe=oe.slice(0,-1*ma)),Ae.push(this.productions_[yn[1]][0]),Dn.push(mo.$),oe.push(mo._$),$a=Pr[Ae[Ae.length-2]][Ae[Ae.length-1]],Ae.push($a);break;case 3:return!0}}return!0}},nn=function(){var me={EOF:1,parseError:function(Qt,Ae){if(this.yy.parser)this.yy.parser.parseError(Qt,Ae);else throw new Error(Qt)},setInput:function(Fe,Qt){return this.yy=Qt||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},input:function(){var Fe=this._input[0];this.yytext+=Fe,this.yyleng++,this.offset++,this.match+=Fe,this.matched+=Fe;var Qt=Fe.match(/(?:\r\n?|\n).*/g);return Qt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Fe},unput:function(Fe){var Qt=Fe.length,Ae=Fe.split(/(?:\r\n?|\n)/g);this._input=Fe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Qt),this.offset-=Qt;var Se=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),Ae.length-1&&(this.yylineno-=Ae.length-1);var Dn=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:Ae?(Ae.length===Se.length?this.yylloc.first_column:0)+Se[Se.length-Ae.length].length-Ae[0].length:this.yylloc.first_column-Qt},this.options.ranges&&(this.yylloc.range=[Dn[0],Dn[0]+this.yyleng-Qt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(Fe){this.unput(this.match.slice(Fe))},pastInput:function(){var Fe=this.matched.substr(0,this.matched.length-this.match.length);return(Fe.length>20?"...":"")+Fe.substr(-20).replace(/\n/g,"")},upcomingInput: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,"")},showPosition:function(){var Fe=this.pastInput(),Qt=new Array(Fe.length+1).join("-");return Fe+this.upcomingInput()+` +`+Qt+"^"},test_match:function(Fe,Qt){var Ae,Se,Dn;if(this.options.backtrack_lexer&&(Dn={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&&(Dn.yylloc.range=this.yylloc.range.slice(0))),Se=Fe[0].match(/(?:\r\n?|\n).*/g),Se&&(this.yylineno+=Se.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Se?Se[Se.length-1].length-Se[Se.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],Ae=this.performAction.call(this,this.yy,this,Qt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ae)return Ae;if(this._backtrack){for(var oe in Dn)this[oe]=Dn[oe];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Fe,Qt,Ae,Se;this._more||(this.yytext="",this.match="");for(var Dn=this._currentRules(),oe=0;oeQt[0].length)){if(Qt=Ae,Se=oe,this.options.backtrack_lexer){if(Fe=this.test_match(Ae,Dn[oe]),Fe!==!1)return Fe;if(this._backtrack){Qt=!1;continue}else return!1}else if(!this.options.flex)break}return Qt?(Fe=this.test_match(Qt,Dn[Se]),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})},lex:function(){var Qt=this.next();return Qt||this.lex()},begin:function(Qt){this.conditionStack.push(Qt)},popState:function(){var Qt=this.conditionStack.length-1;return Qt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Qt){return Qt=this.conditionStack.length-1-Math.abs(Qt||0),Qt>=0?this.conditionStack[Qt]:"INITIAL"},pushState:function(Qt){this.begin(Qt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Qt,Ae,Se,Dn){switch(Se){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 19;case 7:return this.begin("LINE"),14;case 8:return this.begin("ID"),50;case 9:return this.begin("ID"),52;case 10:return 13;case 11:return this.begin("ID"),53;case 12:return Ae.yytext=Ae.yytext.trim(),this.begin("ALIAS"),70;case 13:return this.popState(),this.popState(),this.begin("LINE"),51;case 14:return this.popState(),this.popState(),5;case 15:return this.begin("LINE"),36;case 16:return this.begin("LINE"),37;case 17:return this.begin("LINE"),38;case 18:return this.begin("LINE"),39;case 19:return this.begin("LINE"),49;case 20:return this.begin("LINE"),41;case 21:return this.begin("LINE"),43;case 22:return this.begin("LINE"),48;case 23:return this.begin("LINE"),44;case 24:return this.begin("LINE"),47;case 25:return this.begin("LINE"),46;case 26:return this.popState(),15;case 27:return 16;case 28:return 65;case 29:return 66;case 30:return 59;case 31:return 60;case 32:return 61;case 33:return 62;case 34:return 57;case 35:return 54;case 36:return this.begin("ID"),21;case 37:return this.begin("ID"),23;case 38:return 29;case 39:return 30;case 40:return this.begin("acc_title"),31;case 41:return this.popState(),"acc_title_value";case 42:return this.begin("acc_descr"),33;case 43:return this.popState(),"acc_descr_value";case 44:this.begin("acc_descr_multiline");break;case 45:this.popState();break;case 46:return"acc_descr_multiline_value";case 47:return 6;case 48:return 18;case 49:return 20;case 50:return 64;case 51:return 5;case 52:return Ae.yytext=Ae.yytext.trim(),70;case 53:return 73;case 54:return 74;case 55:return 71;case 56:return 72;case 57:return 75;case 58:return 76;case 59:return 77;case 60:return 78;case 61:return 79;case 62:return 68;case 63:return 69;case 64:return 5;case 65:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/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,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[45,46],inclusive:!1},acc_descr:{rules:[43],inclusive:!1},acc_title:{rules:[41],inclusive:!1},ID:{rules:[2,3,12],inclusive:!1},ALIAS:{rules:[2,3,13,14],inclusive:!1},LINE:{rules:[2,3,26],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,44,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65],inclusive:!0}}};return me}();Ee.lexer=nn;function sn(){this.yy={}}return sn.prototype=Ee,Ee.Parser=sn,new sn}();kbt.parser=kbt;const $Xe=kbt;class zXe{constructor(a){this.init=a,this.records=this.init()}reset(){this.records=this.init()}}const vs=new zXe(()=>({prevActor:void 0,actors:{},createdActors:{},destroyedActors:{},boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0})),qXe=function(i){vs.records.boxes.push({name:i.text,wrap:i.wrap===void 0&&D9()||!!i.wrap,fill:i.color,actorKeys:[]}),vs.records.currentBox=vs.records.boxes.slice(-1)[0]},Ebt=function(i,a,f,g){let w=vs.records.currentBox;const v=vs.records.actors[i];if(v){if(vs.records.currentBox&&v.box&&vs.records.currentBox!==v.box)throw new Error("A same participant should only be defined in one Box: "+v.name+" can't be in '"+v.box.name+"' and in '"+vs.records.currentBox.name+"' at the same time.");if(w=v.box?v.box:vs.records.currentBox,v.box=w,v&&a===v.name&&f==null)return}(f==null||f.text==null)&&(f={text:a,wrap:null,type:g}),(g==null||f.text==null)&&(f={text:a,wrap:null,type:g}),vs.records.actors[i]={box:w,name:a,description:f.text,wrap:f.wrap===void 0&&D9()||!!f.wrap,prevActor:vs.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:g||"participant"},vs.records.prevActor&&vs.records.actors[vs.records.prevActor]&&(vs.records.actors[vs.records.prevActor].nextActor=i),vs.records.currentBox&&vs.records.currentBox.actorKeys.push(i),vs.records.prevActor=i},HXe=i=>{let a,f=0;for(a=0;a>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},b}return vs.records.messages.push({from:i,to:a,message:f.text,wrap:f.wrap===void 0&&D9()||!!f.wrap,type:g,activate:w}),!0},UXe=function(){return vs.records.boxes.length>0},GXe=function(){return vs.records.boxes.some(i=>i.name)},KXe=function(){return vs.records.messages},WXe=function(){return vs.records.boxes},YXe=function(){return vs.records.actors},XXe=function(){return vs.records.createdActors},QXe=function(){return vs.records.destroyedActors},uB=function(i){return vs.records.actors[i]},JXe=function(){return Object.keys(vs.records.actors)},ZXe=function(){vs.records.sequenceNumbersEnabled=!0},tQe=function(){vs.records.sequenceNumbersEnabled=!1},eQe=()=>vs.records.sequenceNumbersEnabled,nQe=function(i){vs.records.wrapEnabled=i},D9=()=>vs.records.wrapEnabled!==void 0?vs.records.wrapEnabled:Re().sequence.wrap,rQe=function(){vs.reset(),Wg()},iQe=function(i){const a=i.trim(),f={text:a.replace(/^:?(?:no)?wrap:/,"").trim(),wrap:a.match(/^:?wrap:/)!==null?!0:a.match(/^:?nowrap:/)!==null?!1:void 0};return Wt.debug("parseMessage:",f),f},sQe=function(i){const a=i.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);let f=a!=null&&a[1]?a[1].trim():"transparent",g=a!=null&&a[2]?a[2].trim():void 0;if(window&&window.CSS)window.CSS.supports("color",f)||(f="transparent",g=i.trim());else{const w=new Option().style;w.color=f,w.color!==f&&(f="transparent",g=i.trim())}return{color:f,text:g!==void 0?Ed(g.replace(/^:?(?:no)?wrap:/,""),Re()):void 0,wrap:g!==void 0?g.match(/^:?wrap:/)!==null?!0:g.match(/^:?nowrap:/)!==null?!1:void 0:void 0}},lB={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},aQe={FILLED:0,OPEN:1},oQe={LEFTOF:0,RIGHTOF:1,OVER:2},Qzt=function(i,a,f){const g={actor:i,placement:a,message:f.text,wrap:f.wrap===void 0&&D9()||!!f.wrap},w=[].concat(i,i);vs.records.notes.push(g),vs.records.messages.push({from:w[0],to:w[1],message:f.text,wrap:f.wrap===void 0&&D9()||!!f.wrap,type:lB.NOTE,placement:a})},Jzt=function(i,a){const f=uB(i);try{let g=Ed(a.text,Re());g=g.replace(/&/g,"&"),g=g.replace(/=/g,"=");const w=JSON.parse(g);Tbt(f,w)}catch(g){Wt.error("error while parsing actor link text",g)}},cQe=function(i,a){const f=uB(i);try{const b={};let E=Ed(a.text,Re());var g=E.indexOf("@");E=E.replace(/&/g,"&"),E=E.replace(/=/g,"=");var w=E.slice(0,g-1).trim(),v=E.slice(g+1).trim();b[w]=v,Tbt(f,b)}catch(b){Wt.error("error while parsing actor link text",b)}};function Tbt(i,a){if(i.links==null)i.links=a;else for(let f in a)i.links[f]=a[f]}const Zzt=function(i,a){const f=uB(i);try{let g=Ed(a.text,Re());const w=JSON.parse(g);tqt(f,w)}catch(g){Wt.error("error while parsing actor properties text",g)}};function tqt(i,a){if(i.properties==null)i.properties=a;else for(let f in a)i.properties[f]=a[f]}function uQe(){vs.records.currentBox=void 0}const eqt=function(i,a){const f=uB(i),g=document.getElementById(a.text);try{const w=g.innerHTML,v=JSON.parse(w);v.properties&&tqt(f,v.properties),v.links&&Tbt(f,v.links)}catch(w){Wt.error("error while parsing actor details text",w)}},lQe=function(i,a){if(i!==void 0&&i.properties!==void 0)return i.properties[a]},nqt=function(i){if(Array.isArray(i))i.forEach(function(a){nqt(a)});else switch(i.type){case"sequenceIndex":vs.records.messages.push({from:void 0,to:void 0,message:{start:i.sequenceIndex,step:i.sequenceIndexStep,visible:i.sequenceVisible},wrap:!1,type:i.signalType});break;case"addParticipant":Ebt(i.actor,i.actor,i.description,i.draw);break;case"createParticipant":if(vs.records.actors[i.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");vs.records.lastCreated=i.actor,Ebt(i.actor,i.actor,i.description,i.draw),vs.records.createdActors[i.actor]=vs.records.messages.length;break;case"destroyParticipant":vs.records.lastDestroyed=i.actor,vs.records.destroyedActors[i.actor]=vs.records.messages.length;break;case"activeStart":Tf(i.actor,void 0,void 0,i.signalType);break;case"activeEnd":Tf(i.actor,void 0,void 0,i.signalType);break;case"addNote":Qzt(i.actor,i.placement,i.text);break;case"addLinks":Jzt(i.actor,i.text);break;case"addALink":cQe(i.actor,i.text);break;case"addProperties":Zzt(i.actor,i.text);break;case"addDetails":eqt(i.actor,i.text);break;case"addMessage":if(vs.records.lastCreated){if(i.to!==vs.records.lastCreated)throw new Error("The created participant "+vs.records.lastCreated+" does not have an associated creating message after its declaration. Please check the sequence diagram.");vs.records.lastCreated=void 0}else if(vs.records.lastDestroyed){if(i.to!==vs.records.lastDestroyed&&i.from!==vs.records.lastDestroyed)throw new Error("The destroyed participant "+vs.records.lastDestroyed+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");vs.records.lastDestroyed=void 0}Tf(i.from,i.to,i.msg,i.signalType,i.activate);break;case"boxStart":qXe(i.boxData);break;case"boxEnd":uQe();break;case"loopStart":Tf(void 0,void 0,i.loopText,i.signalType);break;case"loopEnd":Tf(void 0,void 0,void 0,i.signalType);break;case"rectStart":Tf(void 0,void 0,i.color,i.signalType);break;case"rectEnd":Tf(void 0,void 0,void 0,i.signalType);break;case"optStart":Tf(void 0,void 0,i.optText,i.signalType);break;case"optEnd":Tf(void 0,void 0,void 0,i.signalType);break;case"altStart":Tf(void 0,void 0,i.altText,i.signalType);break;case"else":Tf(void 0,void 0,i.altText,i.signalType);break;case"altEnd":Tf(void 0,void 0,void 0,i.signalType);break;case"setAccTitle":ng(i.text);break;case"parStart":Tf(void 0,void 0,i.parText,i.signalType);break;case"and":Tf(void 0,void 0,i.parText,i.signalType);break;case"parEnd":Tf(void 0,void 0,void 0,i.signalType);break;case"criticalStart":Tf(void 0,void 0,i.criticalText,i.signalType);break;case"option":Tf(void 0,void 0,i.optionText,i.signalType);break;case"criticalEnd":Tf(void 0,void 0,void 0,i.signalType);break;case"breakStart":Tf(void 0,void 0,i.breakText,i.signalType);break;case"breakEnd":Tf(void 0,void 0,void 0,i.signalType);break}},rqt={addActor:Ebt,addMessage:VXe,addSignal:Tf,addLinks:Jzt,addDetails:eqt,addProperties:Zzt,autoWrap:D9,setWrap:nQe,enableSequenceNumbers:ZXe,disableSequenceNumbers:tQe,showSequenceNumbers:eQe,getMessages:KXe,getActors:YXe,getCreatedActors:XXe,getDestroyedActors:QXe,getActor:uB,getActorKeys:JXe,getActorProperty:lQe,getAccTitle:Yg,getBoxes:WXe,getDiagramTitle:Jg,setDiagramTitle:y2,getConfig:()=>Re().sequence,clear:rQe,parseMessage:iQe,parseBoxData:sQe,LINETYPE:lB,ARROWTYPE:aQe,PLACEMENT:oQe,addNote:Qzt,setAccTitle:ng,apply:nqt,setAccDescription:Xg,getAccDescription:Qg,hasAtLeastOneBox:UXe,hasAtLeastOneBoxWithTitle:GXe},hQe=i=>`.actor { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + } + + text.actor > tspan { + fill: ${i.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${i.actorLineColor}; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${i.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${i.signalColor}; + } + + #arrowhead path { + fill: ${i.signalColor}; + stroke: ${i.signalColor}; + } + + .sequenceNumber { + fill: ${i.sequenceNumberColor}; + } + + #sequencenumber { + fill: ${i.signalColor}; + } + + #crosshead path { + fill: ${i.signalColor}; + stroke: ${i.signalColor}; + } + + .messageText { + fill: ${i.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${i.labelBoxBorderColor}; + fill: ${i.labelBoxBkgColor}; + } + + .labelText, .labelText > tspan { + fill: ${i.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${i.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${i.labelBoxBorderColor}; + fill: ${i.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${i.noteBorderColor}; + fill: ${i.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${i.noteTextColor}; + stroke: none; + } + + .activation0 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .activation1 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .activation2 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${i.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 line { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + } + .actor-man circle, line { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + stroke-width: 2px; + } +`,I9=18*2,Cbt=function(i,a){return _Y(i,a)},iqt=(i,a)=>{sNe(()=>{const f=document.querySelectorAll(i);f.length!==0&&(f[0].addEventListener("mouseover",function(){pQe("actor"+a+"_popup")}),f[0].addEventListener("mouseout",function(){bQe("actor"+a+"_popup")}))})},fQe=function(i,a,f,g,w){if(a.links===void 0||a.links===null||Object.keys(a.links).length===0)return{height:0,width:0};const v=a.links,b=a.actorCnt,E=a.rectData;var _="none";w&&(_="block !important");const S=i.append("g");S.attr("id","actor"+b+"_popup"),S.attr("class","actorPopupMenu"),S.attr("display",_),iqt("#actor"+b+"_popup",b);var I="";E.class!==void 0&&(I=" "+E.class);let B=E.width>f?E.width:f;const F=S.append("rect");if(F.attr("class","actorPopupMenuPanel"+I),F.attr("x",E.x),F.attr("y",E.height),F.attr("fill",E.fill),F.attr("stroke",E.stroke),F.attr("width",B),F.attr("height",E.height),F.attr("rx",E.rx),F.attr("ry",E.ry),v!=null){var R=20;for(let rt in v){var q=S.append("a"),X=c8(v[rt]);q.attr("xlink:href",X),q.attr("target","_blank"),IQe(g)(rt,q,E.x+10,E.height+R,B,20,{class:"actor"},g),R+=30}}return F.attr("height",R),{height:E.height+R,width:B}},dQe=function(i){return"var pu = document.getElementById('"+i+"'); if (pu != null) { pu.style.display = 'block'; }"},gQe=function(i){return"var pu = document.getElementById('"+i+"'); if (pu != null) { pu.style.display = 'none'; }"},pQe=function(i){var a=document.getElementById(i);a!=null&&(a.style.display="block")},bQe=function(i){var a=document.getElementById(i);a!=null&&(a.style.display="none")},kM=function(i,a){let f=0,g=0;const w=a.text.split(ei.lineBreakRegex),[v,b]=QL(a.fontSize);let E=[],_=0,S=()=>a.y;if(a.valign!==void 0&&a.textMargin!==void 0&&a.textMargin>0)switch(a.valign){case"top":case"start":S=()=>Math.round(a.y+a.textMargin);break;case"middle":case"center":S=()=>Math.round(a.y+(f+g+a.textMargin)/2);break;case"bottom":case"end":S=()=>Math.round(a.y+(f+g+2*a.textMargin)-a.textMargin);break}if(a.anchor!==void 0&&a.textMargin!==void 0&&a.width!==void 0)switch(a.anchor){case"left":case"start":a.x=Math.round(a.x+a.textMargin),a.anchor="start",a.dominantBaseline="middle",a.alignmentBaseline="middle";break;case"middle":case"center":a.x=Math.round(a.x+a.width/2),a.anchor="middle",a.dominantBaseline="middle",a.alignmentBaseline="middle";break;case"right":case"end":a.x=Math.round(a.x+a.width-a.textMargin),a.anchor="end",a.dominantBaseline="middle",a.alignmentBaseline="middle";break}for(let[I,B]of w.entries()){a.textMargin!==void 0&&a.textMargin===0&&v!==void 0&&(_=I*v);const F=i.append("text");F.attr("x",a.x),F.attr("y",S()),a.anchor!==void 0&&F.attr("text-anchor",a.anchor).attr("dominant-baseline",a.dominantBaseline).attr("alignment-baseline",a.alignmentBaseline),a.fontFamily!==void 0&&F.style("font-family",a.fontFamily),b!==void 0&&F.style("font-size",b),a.fontWeight!==void 0&&F.style("font-weight",a.fontWeight),a.fill!==void 0&&F.attr("fill",a.fill),a.class!==void 0&&F.attr("class",a.class),a.dy!==void 0?F.attr("dy",a.dy):_!==0&&F.attr("dy",_);const R=B||oFt;if(a.tspan){const q=F.append("tspan");q.attr("x",a.x),a.fill!==void 0&&q.attr("fill",a.fill),q.text(R)}else F.text(R);a.valign!==void 0&&a.textMargin!==void 0&&a.textMargin>0&&(g+=(F._groups||F)[0][0].getBBox().height,f=g),E.push(F)}return E},sqt=function(i,a){function f(w,v,b,E,_){return w+","+v+" "+(w+b)+","+v+" "+(w+b)+","+(v+E-_)+" "+(w+b-_*1.2)+","+(v+E)+" "+w+","+(v+E)}const g=i.append("polygon");return g.attr("points",f(a.x,a.y,a.width,a.height,7)),g.attr("class","labelBox"),a.y=a.y+a.height/2,kM(i,a),g};let ny=-1;const aqt=(i,a,f,g)=>{i.select&&f.forEach(w=>{const v=a[w],b=i.select("#actor"+v.actorCnt);!g.mirrorActors&&v.stopy?b.attr("y2",v.stopy+v.height/2):g.mirrorActors&&b.attr("y2",v.stopy)})},wQe=function(i,a,f,g){const w=g?a.stopy:a.starty,v=a.x+a.width/2,b=w+5,E=i.append("g").lower();var _=E;g||(ny++,_.append("line").attr("id","actor"+ny).attr("x1",v).attr("y1",b).attr("x2",v).attr("y2",2e3).attr("class","actor-line").attr("class","200").attr("stroke-width","0.5px").attr("stroke","#999"),_=E.append("g"),a.actorCnt=ny,a.links!=null&&(_.attr("id","root-"+ny),iqt("#root-"+ny,ny)));const S=k9();var I="actor";a.properties!=null&&a.properties.class?I=a.properties.class:S.fill="#eaeaea",S.x=a.x,S.y=w,S.width=a.width,S.height=a.height,S.class=I,S.rx=3,S.ry=3;const B=Cbt(_,S);if(a.rectData=S,a.properties!=null&&a.properties.icon){const R=a.properties.icon.trim();R.charAt(0)==="@"?CRe(_,S.x+S.width-20,S.y+10,R.substr(1)):TRe(_,S.x+S.width-20,S.y+10,R)}_bt(f)(a.description,_,S.x,S.y,S.width,S.height,{class:"actor"},f);let F=a.height;if(B.node){const R=B.node().getBBox();a.height=R.height,F=R.height}return F},mQe=function(i,a,f,g){const w=g?a.stopy:a.starty,v=a.x+a.width/2,b=w+80;i.lower(),g||(ny++,i.append("line").attr("id","actor"+ny).attr("x1",v).attr("y1",b).attr("x2",v).attr("y2",2e3).attr("class","actor-line").attr("class","200").attr("stroke-width","0.5px").attr("stroke","#999"),a.actorCnt=ny);const E=i.append("g");E.attr("class","actor-man");const _=k9();_.x=a.x,_.y=w,_.fill="#eaeaea",_.width=a.width,_.height=a.height,_.class="actor",_.rx=3,_.ry=3,E.append("line").attr("id","actor-man-torso"+ny).attr("x1",v).attr("y1",w+25).attr("x2",v).attr("y2",w+45),E.append("line").attr("id","actor-man-arms"+ny).attr("x1",v-I9/2).attr("y1",w+33).attr("x2",v+I9/2).attr("y2",w+33),E.append("line").attr("x1",v-I9/2).attr("y1",w+60).attr("x2",v).attr("y2",w+45),E.append("line").attr("x1",v).attr("y1",w+45).attr("x2",v+I9/2-2).attr("y2",w+60);const S=E.append("circle");S.attr("cx",a.x+a.width/2),S.attr("cy",w+10),S.attr("r",15),S.attr("width",a.width),S.attr("height",a.height);const I=E.node().getBBox();return a.height=I.height,_bt(f)(a.description,E,_.x,_.y+35,_.width,_.height,{class:"actor"},f),a.height},vQe=function(i,a,f,g){switch(a.type){case"actor":return mQe(i,a,f,g);case"participant":return wQe(i,a,f,g)}},yQe=function(i,a,f){const w=i.append("g");oqt(w,a),a.name&&_bt(f)(a.name,w,a.x,a.y+(a.textMaxHeight||0)/2,a.width,0,{class:"text"},f),w.lower()},xQe=function(i){return i.append("g")},kQe=function(i,a,f,g,w){const v=k9(),b=a.anchored;v.x=a.startx,v.y=a.starty,v.class="activation"+w%3,v.width=a.stopx-a.startx,v.height=f-a.starty,Cbt(b,v)},EQe=function(i,a,f,g){const{boxMargin:w,boxTextMargin:v,labelBoxHeight:b,labelBoxWidth:E,messageFontFamily:_,messageFontSize:S,messageFontWeight:I}=g,B=i.append("g"),F=function(X,rt,at,ut){return B.append("line").attr("x1",X).attr("y1",rt).attr("x2",at).attr("y2",ut).attr("class","loopLine")};F(a.startx,a.starty,a.stopx,a.starty),F(a.stopx,a.starty,a.stopx,a.stopy),F(a.startx,a.stopy,a.stopx,a.stopy),F(a.startx,a.starty,a.startx,a.stopy),a.sections!==void 0&&a.sections.forEach(function(X){F(a.startx,X.y,a.stopx,X.y).style("stroke-dasharray","3, 3")});let R=Kgt();R.text=f,R.x=a.startx,R.y=a.starty,R.fontFamily=_,R.fontSize=S,R.fontWeight=I,R.anchor="middle",R.valign="middle",R.tspan=!1,R.width=E||50,R.height=b||20,R.textMargin=v,R.class="labelText",sqt(B,R),R=cqt(),R.text=a.title,R.x=a.startx+E/2+(a.stopx-a.startx)/2,R.y=a.starty+w+v,R.anchor="middle",R.valign="middle",R.textMargin=v,R.class="loopText",R.fontFamily=_,R.fontSize=S,R.fontWeight=I,R.wrap=!0;let q=kM(B,R);return a.sectionTitles!==void 0&&a.sectionTitles.forEach(function(X,rt){if(X.message){R.text=X.message,R.x=a.startx+(a.stopx-a.startx)/2,R.y=a.sections[rt].y+w+v,R.class="loopText",R.anchor="middle",R.valign="middle",R.tspan=!1,R.fontFamily=_,R.fontSize=S,R.fontWeight=I,R.wrap=a.wrap,q=kM(B,R);let at=Math.round(q.map(ut=>(ut._groups||ut)[0][0].getBBox().height).reduce((ut,pt)=>ut+pt));a.sections[rt].height+=at-(w+v)}}),a.height=Math.round(a.stopy-a.starty),B},oqt=function(i,a){qBt(i,a)},TQe=function(i){i.append("defs").append("symbol").attr("id","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")},CQe=function(i){i.append("defs").append("symbol").attr("id","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")},_Qe=function(i){i.append("defs").append("symbol").attr("id","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")},SQe=function(i){i.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.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")},AQe=function(i){i.append("defs").append("marker").attr("id","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")},LQe=function(i){i.append("defs").append("marker").attr("id","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)},MQe=function(i){i.append("defs").append("marker").attr("id","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")},cqt=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}},DQe=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},_bt=function(){function i(w,v,b,E,_,S,I){const B=v.append("text").attr("x",b+_/2).attr("y",E+S/2+5).style("text-anchor","middle").text(w);g(B,I)}function a(w,v,b,E,_,S,I,B){const{actorFontSize:F,actorFontFamily:R,actorFontWeight:q}=B,[X,rt]=QL(F),at=w.split(ei.lineBreakRegex);for(let ut=0;uti.height||0))+(this.loops.length===0?0:this.loops.map(i=>i.height||0).reduce((i,a)=>i+a))+(this.messages.length===0?0:this.messages.map(i=>i.height||0).reduce((i,a)=>i+a))+(this.notes.length===0?0:this.notes.map(i=>i.height||0).reduce((i,a)=>i+a))},clear:function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},addBox:function(i){this.boxes.push(i)},addActor:function(i){this.actors.push(i)},addLoop:function(i){this.loops.push(i)},addMessage:function(i){this.messages.push(i)},addNote:function(i){this.notes.push(i)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],boxes:[],loops:[],messages:[],notes:[]},init: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,lqt(Re())},updateVal:function(i,a,f,g){i[a]===void 0?i[a]=f:i[a]=g(f,i[a])},updateBounds:function(i,a,f,g){const w=this;let v=0;function b(E){return function(S){v++;const I=w.sequenceItems.length-v+1;w.updateVal(S,"starty",a-I*pn.boxMargin,Math.min),w.updateVal(S,"stopy",g+I*pn.boxMargin,Math.max),w.updateVal(Wr.data,"startx",i-I*pn.boxMargin,Math.min),w.updateVal(Wr.data,"stopx",f+I*pn.boxMargin,Math.max),E!=="activation"&&(w.updateVal(S,"startx",i-I*pn.boxMargin,Math.min),w.updateVal(S,"stopx",f+I*pn.boxMargin,Math.max),w.updateVal(Wr.data,"starty",a-I*pn.boxMargin,Math.min),w.updateVal(Wr.data,"stopy",g+I*pn.boxMargin,Math.max))}}this.sequenceItems.forEach(b()),this.activations.forEach(b("activation"))},insert:function(i,a,f,g){const w=ei.getMin(i,f),v=ei.getMax(i,f),b=ei.getMin(a,g),E=ei.getMax(a,g);this.updateVal(Wr.data,"startx",w,Math.min),this.updateVal(Wr.data,"starty",b,Math.min),this.updateVal(Wr.data,"stopx",v,Math.max),this.updateVal(Wr.data,"stopy",E,Math.max),this.updateBounds(w,b,v,E)},newActivation:function(i,a,f){const g=f[i.from.actor],w=hX(i.from.actor).length||0,v=g.x+g.width/2+(w-1)*pn.activationWidth/2;this.activations.push({startx:v,starty:this.verticalPos+2,stopx:v+pn.activationWidth,stopy:void 0,actor:i.from.actor,anchored:Cf.anchorElement(a)})},endActivation:function(i){const a=this.activations.map(function(f){return f.actor}).lastIndexOf(i.from.actor);return this.activations.splice(a,1)[0]},createLoop:function(i={message:void 0,wrap:!1,width:void 0},a){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:i.message,wrap:i.wrap,width:i.width,height:0,fill:a}},newLoop:function(i={message:void 0,wrap:!1,width:void 0},a){this.sequenceItems.push(this.createLoop(i,a))},endLoop:function(){return this.sequenceItems.pop()},isLoopOverlap:function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},addSectionToLoop:function(i){const a=this.sequenceItems.pop();a.sections=a.sections||[],a.sectionTitles=a.sectionTitles||[],a.sections.push({y:Wr.getVerticalPos(),height:0}),a.sectionTitles.push(i),this.sequenceItems.push(a)},saveVerticalPos:function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},resetVerticalPos:function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},bumpVerticalPos:function(i){this.verticalPos=this.verticalPos+i,this.data.stopy=ei.getMax(this.data.stopy,this.verticalPos)},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},OQe=function(i,a){Wr.bumpVerticalPos(pn.boxMargin),a.height=pn.boxMargin,a.starty=Wr.getVerticalPos();const f=k9();f.x=a.startx,f.y=a.starty,f.width=a.width||pn.width,f.class="note";const g=i.append("g"),w=Cf.drawRect(g,f),v=Kgt();v.x=a.startx,v.y=a.starty,v.width=f.width,v.dy="1em",v.text=a.message,v.class="noteText",v.fontFamily=pn.noteFontFamily,v.fontSize=pn.noteFontSize,v.fontWeight=pn.noteFontWeight,v.anchor=pn.noteAlign,v.textMargin=pn.noteMargin,v.valign="center";const b=kM(g,v),E=Math.round(b.map(_=>(_._groups||_)[0][0].getBBox().height).reduce((_,S)=>_+S));w.attr("height",E+2*pn.noteMargin),a.height+=E+2*pn.noteMargin,Wr.bumpVerticalPos(E+2*pn.noteMargin),a.stopy=a.starty+E+2*pn.noteMargin,a.stopx=a.startx+f.width,Wr.insert(a.startx,a.starty,a.stopx,a.stopy),Wr.models.addNote(a)},O9=i=>({fontFamily:i.messageFontFamily,fontSize:i.messageFontSize,fontWeight:i.messageFontWeight}),EM=i=>({fontFamily:i.noteFontFamily,fontSize:i.noteFontSize,fontWeight:i.noteFontWeight}),Sbt=i=>({fontFamily:i.actorFontFamily,fontSize:i.actorFontSize,fontWeight:i.actorFontWeight});function PQe(i,a){Wr.bumpVerticalPos(10);const{startx:f,stopx:g,message:w}=a,v=ei.splitBreaks(w).length,b=ao.calculateTextDimensions(w,O9(pn)),E=b.height/v;a.height+=E,Wr.bumpVerticalPos(E);let _,S=b.height-10;const I=b.width;if(f===g){_=Wr.getVerticalPos()+S,pn.rightAngles||(S+=pn.boxMargin,_=Wr.getVerticalPos()+S),S+=30;const B=ei.getMax(I/2,pn.width/2);Wr.insert(f-B,Wr.getVerticalPos()-10+S,g+B,Wr.getVerticalPos()+30+S)}else S+=pn.boxMargin,_=Wr.getVerticalPos()+S,Wr.insert(f,_-10,g,_);return Wr.bumpVerticalPos(S),a.height+=S,a.stopy=a.starty+a.height,Wr.insert(a.fromBounds,a.starty,a.toBounds,a.stopy),_}const NQe=function(i,a,f,g){const{startx:w,stopx:v,starty:b,message:E,type:_,sequenceIndex:S,sequenceVisible:I}=a,B=ao.calculateTextDimensions(E,O9(pn)),F=Kgt();F.x=w,F.y=b+10,F.width=v-w,F.class="messageText",F.dy="1em",F.text=E,F.fontFamily=pn.messageFontFamily,F.fontSize=pn.messageFontSize,F.fontWeight=pn.messageFontWeight,F.anchor=pn.messageAlign,F.valign="center",F.textMargin=pn.wrapPadding,F.tspan=!1,kM(i,F);const R=B.width;let q;w===v?pn.rightAngles?q=i.append("path").attr("d",`M ${w},${f} H ${w+ei.getMax(pn.width/2,R/2)} V ${f+25} H ${w}`):q=i.append("path").attr("d","M "+w+","+f+" C "+(w+60)+","+(f-10)+" "+(w+60)+","+(f+30)+" "+w+","+(f+20)):(q=i.append("line"),q.attr("x1",w),q.attr("y1",f),q.attr("x2",v),q.attr("y2",f)),_===g.db.LINETYPE.DOTTED||_===g.db.LINETYPE.DOTTED_CROSS||_===g.db.LINETYPE.DOTTED_POINT||_===g.db.LINETYPE.DOTTED_OPEN?(q.style("stroke-dasharray","3, 3"),q.attr("class","messageLine1")):q.attr("class","messageLine0");let X="";pn.arrowMarkerAbsolute&&(X=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,X=X.replace(/\(/g,"\\("),X=X.replace(/\)/g,"\\)")),q.attr("stroke-width",2),q.attr("stroke","none"),q.style("fill","none"),(_===g.db.LINETYPE.SOLID||_===g.db.LINETYPE.DOTTED)&&q.attr("marker-end","url("+X+"#arrowhead)"),(_===g.db.LINETYPE.SOLID_POINT||_===g.db.LINETYPE.DOTTED_POINT)&&q.attr("marker-end","url("+X+"#filled-head)"),(_===g.db.LINETYPE.SOLID_CROSS||_===g.db.LINETYPE.DOTTED_CROSS)&&q.attr("marker-end","url("+X+"#crosshead)"),(I||pn.showSequenceNumbers)&&(q.attr("marker-start","url("+X+"#sequencenumber)"),i.append("text").attr("x",w).attr("y",f+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(S))},FQe=function(i,a,f,g,w,v,b){let E=0,_=0,S,I=0;for(const B of g){const F=a[B],R=F.box;S&&S!=R&&(b||Wr.models.addBox(S),_+=pn.boxMargin+S.margin),R&&R!=S&&(b||(R.x=E+_,R.y=w),_+=R.margin),F.width=F.width||pn.width,F.height=ei.getMax(F.height||pn.height,pn.height),F.margin=F.margin||pn.actorMargin,I=ei.getMax(I,F.height),f[F.name]&&(_+=F.width/2),F.x=E+_,F.starty=Wr.getVerticalPos(),Wr.insert(F.x,w,F.x+F.width,F.height),E+=F.width+_,F.box&&(F.box.width=E+R.margin-F.box.x),_=F.margin,S=F.box,Wr.models.addActor(F)}S&&!b&&Wr.models.addBox(S),Wr.bumpVerticalPos(I)},Abt=function(i,a,f,g){if(g){let w=0;Wr.bumpVerticalPos(pn.boxMargin*2);for(const v of f){const b=a[v];b.stopy||(b.stopy=Wr.getVerticalPos());const E=Cf.drawActor(i,b,pn,!0);w=ei.getMax(w,E)}Wr.bumpVerticalPos(w+pn.boxMargin)}else for(const w of f){const v=a[w];Cf.drawActor(i,v,pn,!1)}},uqt=function(i,a,f,g){let w=0,v=0;for(const b of f){const E=a[b],_=$Qe(E),S=Cf.drawPopup(i,E,_,pn,pn.forceMenus,g);S.height>w&&(w=S.height),S.width+E.x>v&&(v=S.width+E.x)}return{maxHeight:w,maxWidth:v}},lqt=function(i){Td(pn,i),i.fontFamily&&(pn.actorFontFamily=pn.noteFontFamily=pn.messageFontFamily=i.fontFamily),i.fontSize&&(pn.actorFontSize=pn.noteFontSize=pn.messageFontSize=i.fontSize),i.fontWeight&&(pn.actorFontWeight=pn.noteFontWeight=pn.messageFontWeight=i.fontWeight)},hX=function(i){return Wr.activations.filter(function(a){return a.actor===i})},hqt=function(i,a){const f=a[i],g=hX(i),w=g.reduce(function(b,E){return ei.getMin(b,E.startx)},f.x+f.width/2-1),v=g.reduce(function(b,E){return ei.getMax(b,E.stopx)},f.x+f.width/2+1);return[w,v]};function h4(i,a,f,g,w){Wr.bumpVerticalPos(f);let v=g;if(a.id&&a.message&&i[a.id]){const b=i[a.id].width,E=O9(pn);a.message=ao.wrapLabel(`[${a.message}]`,b-2*pn.wrapPadding,E),a.width=b,a.wrap=!0;const _=ao.calculateTextDimensions(a.message,E),S=ei.getMax(_.height,pn.labelBoxHeight);v=g+S,Wt.debug(`${S} - ${a.message}`)}w(a),Wr.bumpVerticalPos(v)}function BQe(i,a,f,g,w,v,b){function E(S,I){S.x{Ct.add(Ft.from),Ct.add(Ft.to)}),q=q.filter(Ft=>Ct.has(Ft))}FQe(S,I,B,q,0,X,!1);const yt=VQe(X,I,pt,g);Cf.insertArrowHead(S),Cf.insertArrowCrossHead(S),Cf.insertArrowFilledHead(S),Cf.insertSequenceNumber(S);function mt(Ct,Ft){const _t=Wr.endActivation(Ct);_t.starty+18>Ft&&(_t.starty=Ft-6,Ft+=12),Cf.drawActivation(S,_t,Ft,pn,hX(Ct.from.actor).length),Wr.insert(_t.startx,Ft-10,_t.stopx,Ft)}let gt=1,ht=1;const bt=[],Z=[];X.forEach(function(Ct,Ft){let _t,xt,Gt;switch(Ct.type){case g.db.LINETYPE.NOTE:Wr.resetVerticalPos(),xt=Ct.noteModel,OQe(S,xt);break;case g.db.LINETYPE.ACTIVE_START:Wr.newActivation(Ct,S,I);break;case g.db.LINETYPE.ACTIVE_END:mt(Ct,Wr.getVerticalPos());break;case g.db.LINETYPE.LOOP_START:h4(yt,Ct,pn.boxMargin,pn.boxMargin+pn.boxTextMargin,Be=>Wr.newLoop(Be));break;case g.db.LINETYPE.LOOP_END:_t=Wr.endLoop(),Cf.drawLoop(S,_t,"loop",pn),Wr.bumpVerticalPos(_t.stopy-Wr.getVerticalPos()),Wr.models.addLoop(_t);break;case g.db.LINETYPE.RECT_START:h4(yt,Ct,pn.boxMargin,pn.boxMargin,Be=>Wr.newLoop(void 0,Be.message));break;case g.db.LINETYPE.RECT_END:_t=Wr.endLoop(),Z.push(_t),Wr.models.addLoop(_t),Wr.bumpVerticalPos(_t.stopy-Wr.getVerticalPos());break;case g.db.LINETYPE.OPT_START:h4(yt,Ct,pn.boxMargin,pn.boxMargin+pn.boxTextMargin,Be=>Wr.newLoop(Be));break;case g.db.LINETYPE.OPT_END:_t=Wr.endLoop(),Cf.drawLoop(S,_t,"opt",pn),Wr.bumpVerticalPos(_t.stopy-Wr.getVerticalPos()),Wr.models.addLoop(_t);break;case g.db.LINETYPE.ALT_START:h4(yt,Ct,pn.boxMargin,pn.boxMargin+pn.boxTextMargin,Be=>Wr.newLoop(Be));break;case g.db.LINETYPE.ALT_ELSE:h4(yt,Ct,pn.boxMargin+pn.boxTextMargin,pn.boxMargin,Be=>Wr.addSectionToLoop(Be));break;case g.db.LINETYPE.ALT_END:_t=Wr.endLoop(),Cf.drawLoop(S,_t,"alt",pn),Wr.bumpVerticalPos(_t.stopy-Wr.getVerticalPos()),Wr.models.addLoop(_t);break;case g.db.LINETYPE.PAR_START:case g.db.LINETYPE.PAR_OVER_START:h4(yt,Ct,pn.boxMargin,pn.boxMargin+pn.boxTextMargin,Be=>Wr.newLoop(Be)),Wr.saveVerticalPos();break;case g.db.LINETYPE.PAR_AND:h4(yt,Ct,pn.boxMargin+pn.boxTextMargin,pn.boxMargin,Be=>Wr.addSectionToLoop(Be));break;case g.db.LINETYPE.PAR_END:_t=Wr.endLoop(),Cf.drawLoop(S,_t,"par",pn),Wr.bumpVerticalPos(_t.stopy-Wr.getVerticalPos()),Wr.models.addLoop(_t);break;case g.db.LINETYPE.AUTONUMBER:gt=Ct.message.start||gt,ht=Ct.message.step||ht,Ct.message.visible?g.db.enableSequenceNumbers():g.db.disableSequenceNumbers();break;case g.db.LINETYPE.CRITICAL_START:h4(yt,Ct,pn.boxMargin,pn.boxMargin+pn.boxTextMargin,Be=>Wr.newLoop(Be));break;case g.db.LINETYPE.CRITICAL_OPTION:h4(yt,Ct,pn.boxMargin+pn.boxTextMargin,pn.boxMargin,Be=>Wr.addSectionToLoop(Be));break;case g.db.LINETYPE.CRITICAL_END:_t=Wr.endLoop(),Cf.drawLoop(S,_t,"critical",pn),Wr.bumpVerticalPos(_t.stopy-Wr.getVerticalPos()),Wr.models.addLoop(_t);break;case g.db.LINETYPE.BREAK_START:h4(yt,Ct,pn.boxMargin,pn.boxMargin+pn.boxTextMargin,Be=>Wr.newLoop(Be));break;case g.db.LINETYPE.BREAK_END:_t=Wr.endLoop(),Cf.drawLoop(S,_t,"break",pn),Wr.bumpVerticalPos(_t.stopy-Wr.getVerticalPos()),Wr.models.addLoop(_t);break;default:try{Gt=Ct.msgModel,Gt.starty=Wr.getVerticalPos(),Gt.sequenceIndex=gt,Gt.sequenceVisible=g.db.showSequenceNumbers();const Be=PQe(S,Gt);BQe(Ct,Gt,Be,Ft,I,B,F),bt.push({messageModel:Gt,lineStartY:Be}),Wr.models.addMessage(Gt)}catch(Be){Wt.error("error while drawing message",Be)}}[g.db.LINETYPE.SOLID_OPEN,g.db.LINETYPE.DOTTED_OPEN,g.db.LINETYPE.SOLID,g.db.LINETYPE.DOTTED,g.db.LINETYPE.SOLID_CROSS,g.db.LINETYPE.DOTTED_CROSS,g.db.LINETYPE.SOLID_POINT,g.db.LINETYPE.DOTTED_POINT].includes(Ct.type)&&(gt=gt+ht)}),Wt.debug("createdActors",B),Wt.debug("destroyedActors",F),Abt(S,I,q,!1),bt.forEach(Ct=>NQe(S,Ct.messageModel,Ct.lineStartY,g)),pn.mirrorActors&&Abt(S,I,q,!0),Z.forEach(Ct=>Cf.drawBackgroundRect(S,Ct)),aqt(S,I,q,pn),Wr.models.boxes.forEach(function(Ct){Ct.height=Wr.getVerticalPos()-Ct.y,Wr.insert(Ct.x,Ct.y,Ct.x+Ct.width,Ct.height),Ct.startx=Ct.x,Ct.starty=Ct.y,Ct.stopx=Ct.startx+Ct.width,Ct.stopy=Ct.starty+Ct.height,Ct.stroke="rgb(0,0,0, 0.5)",Cf.drawBox(S,Ct,pn)}),at&&Wr.bumpVerticalPos(pn.boxMargin);const ft=uqt(S,I,q,_),{bounds:Y}=Wr.getBounds();let Et=Y.stopy-Y.starty;Et{const b=i[v];b.wrap&&(b.description=ao.wrapLabel(b.description,pn.width-2*pn.wrapPadding,Sbt(pn)));const E=ao.calculateTextDimensions(b.description,Sbt(pn));b.width=b.wrap?pn.width:ei.getMax(pn.width,E.width+2*pn.wrapPadding),b.height=b.wrap?ei.getMax(E.height,pn.height):pn.height,g=ei.getMax(g,b.height)});for(const v in a){const b=i[v];if(!b)continue;const E=i[b.nextActor];if(!E){const B=a[v]+pn.actorMargin-b.width/2;b.margin=ei.getMax(B,pn.actorMargin);continue}const S=a[v]+pn.actorMargin-b.width/2-E.width/2;b.margin=ei.getMax(S,pn.actorMargin)}let w=0;return f.forEach(v=>{const b=O9(pn);let E=v.actorKeys.reduce((I,B)=>I+=i[B].width+(i[B].margin||0),0);E-=2*pn.boxTextMargin,v.wrap&&(v.name=ao.wrapLabel(v.name,E-2*pn.wrapPadding,b));const _=ao.calculateTextDimensions(v.name,b);w=ei.getMax(_.height,w);const S=ei.getMax(E,_.width+2*pn.wrapPadding);if(v.margin=pn.boxTextMargin,Ev.textMaxHeight=w),ei.getMax(g,pn.height)}const qQe=function(i,a,f){const g=a[i.from].x,w=a[i.to].x,v=i.wrap&&i.message;let b=ao.calculateTextDimensions(v?ao.wrapLabel(i.message,pn.width,EM(pn)):i.message,EM(pn));const E={width:v?pn.width:ei.getMax(pn.width,b.width+2*pn.noteMargin),height:0,startx:a[i.from].x,stopx:0,starty:0,stopy:0,message:i.message};return i.placement===f.db.PLACEMENT.RIGHTOF?(E.width=v?ei.getMax(pn.width,b.width):ei.getMax(a[i.from].width/2+a[i.to].width/2,b.width+2*pn.noteMargin),E.startx=g+(a[i.from].width+pn.actorMargin)/2):i.placement===f.db.PLACEMENT.LEFTOF?(E.width=v?ei.getMax(pn.width,b.width+2*pn.noteMargin):ei.getMax(a[i.from].width/2+a[i.to].width/2,b.width+2*pn.noteMargin),E.startx=g-E.width+(a[i.from].width-pn.actorMargin)/2):i.to===i.from?(b=ao.calculateTextDimensions(v?ao.wrapLabel(i.message,ei.getMax(pn.width,a[i.from].width),EM(pn)):i.message,EM(pn)),E.width=v?ei.getMax(pn.width,a[i.from].width):ei.getMax(a[i.from].width,pn.width,b.width+2*pn.noteMargin),E.startx=g+(a[i.from].width-E.width)/2):(E.width=Math.abs(g+a[i.from].width/2-(w+a[i.to].width/2))+pn.actorMargin,E.startx=g2,B=X=>E?-X:X;i.from===i.to?S=_:(i.activate&&!I&&(S+=B(pn.activationWidth/2-1)),[f.db.LINETYPE.SOLID_OPEN,f.db.LINETYPE.DOTTED_OPEN].includes(i.type)||(S+=B(3)));const F=[g,w,v,b],R=Math.abs(_-S);i.wrap&&i.message&&(i.message=ao.wrapLabel(i.message,ei.getMax(R+2*pn.wrapPadding,pn.width),O9(pn)));const q=ao.calculateTextDimensions(i.message,O9(pn));return{width:ei.getMax(i.wrap?0:q.width+2*pn.wrapPadding,R+2*pn.wrapPadding,pn.width),height:0,startx:_,stopx:S,starty:0,stopy:0,message:i.message,type:i.type,wrap:i.wrap,fromBounds:Math.min.apply(null,F),toBounds:Math.max.apply(null,F)}},VQe=function(i,a,f,g){const w={},v=[];let b,E,_;return i.forEach(function(S){switch(S.id=ao.random({length:10}),S.type){case g.db.LINETYPE.LOOP_START:case g.db.LINETYPE.ALT_START:case g.db.LINETYPE.OPT_START:case g.db.LINETYPE.PAR_START:case g.db.LINETYPE.PAR_OVER_START:case g.db.LINETYPE.CRITICAL_START:case g.db.LINETYPE.BREAK_START:v.push({id:S.id,msg:S.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case g.db.LINETYPE.ALT_ELSE:case g.db.LINETYPE.PAR_AND:case g.db.LINETYPE.CRITICAL_OPTION:S.message&&(b=v.pop(),w[b.id]=b,w[S.id]=b,v.push(b));break;case g.db.LINETYPE.LOOP_END:case g.db.LINETYPE.ALT_END:case g.db.LINETYPE.OPT_END:case g.db.LINETYPE.PAR_END:case g.db.LINETYPE.CRITICAL_END:case g.db.LINETYPE.BREAK_END:b=v.pop(),w[b.id]=b;break;case g.db.LINETYPE.ACTIVE_START:{const B=a[S.from?S.from.actor:S.to.actor],F=hX(S.from?S.from.actor:S.to.actor).length,R=B.x+B.width/2+(F-1)*pn.activationWidth/2,q={startx:R,stopx:R+pn.activationWidth,actor:S.from.actor,enabled:!0};Wr.activations.push(q)}break;case g.db.LINETYPE.ACTIVE_END:{const B=Wr.activations.map(F=>F.actor).lastIndexOf(S.from.actor);delete Wr.activations.splice(B,1)[0]}break}S.placement!==void 0?(E=qQe(S,a,g),S.noteModel=E,v.forEach(B=>{b=B,b.from=ei.getMin(b.from,E.startx),b.to=ei.getMax(b.to,E.startx+E.width),b.width=ei.getMax(b.width,Math.abs(b.from-b.to))-pn.labelBoxWidth})):(_=HQe(S,a,g),S.msgModel=_,_.startx&&_.stopx&&v.length>0&&v.forEach(B=>{if(b=B,_.startx===_.stopx){const F=a[S.from],R=a[S.to];b.from=ei.getMin(F.x-_.width/2,F.x-F.width/2,b.from),b.to=ei.getMax(R.x+_.width/2,R.x+F.width/2,b.to),b.width=ei.getMax(b.width,Math.abs(b.to-b.from))-pn.labelBoxWidth}else b.from=ei.getMin(_.startx,b.from),b.to=ei.getMax(_.stopx,b.to),b.width=ei.getMax(b.width,_.width)-pn.labelBoxWidth}))}),Wr.activations=[],Wt.debug("Loop type widths:",w),w},UQe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:$Xe,db:rqt,renderer:{bounds:Wr,drawActors:Abt,drawActorsPopup:uqt,setConf:lqt,draw:RQe},styles:hQe,init:({wrap:i})=>{rqt.setWrap(i)}}},Symbol.toStringTag,{value:"Module"}));var Lbt=function(){var i=function(Ra,fr,An,Pn){for(An=An||{},Pn=Ra.length;Pn--;An[Ra[Pn]]=fr);return An},a=[1,17],f=[1,18],g=[1,19],w=[1,39],v=[1,40],b=[1,25],E=[1,23],_=[1,24],S=[1,31],I=[1,32],B=[1,33],F=[1,34],R=[1,35],q=[1,36],X=[1,26],rt=[1,27],at=[1,28],ut=[1,29],pt=[1,43],yt=[1,30],mt=[1,42],gt=[1,44],ht=[1,41],bt=[1,45],Z=[1,9],ft=[1,8,9],Y=[1,56],Et=[1,57],V=[1,58],Nt=[1,59],Dt=[1,60],jt=[1,61],Ct=[1,62],Ft=[1,8,9,39],_t=[1,74],xt=[1,8,9,12,13,21,37,39,42,59,60,61,62,63,64,65,70,72],Gt=[1,8,9,12,13,19,21,37,39,42,46,59,60,61,62,63,64,65,70,72,74,80,95,97,98],Be=[13,74,80,95,97,98],Ot=[13,64,65,74,80,95,97,98],vn=[13,59,60,61,62,63,74,80,95,97,98],Pe=[1,93],Ee=[1,110],nn=[1,108],sn=[1,102],me=[1,103],Fe=[1,104],Qt=[1,105],Ae=[1,106],Se=[1,107],Dn=[1,109],oe=[1,8,9,37,39,42],Pr=[1,8,9,21],we=[1,8,9,78],Ri=[1,8,9,21,73,74,78,80,81,82,83,84,85],yi={trace:function(){},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,className:17,classLiteralName:18,GENERICTYPE:19,relationStatement:20,LABEL:21,namespaceStatement:22,classStatement:23,memberStatement:24,annotationStatement:25,clickStatement:26,styleStatement:27,cssClassStatement:28,noteStatement:29,direction:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,namespaceIdentifier:36,STRUCT_START:37,classStatements:38,STRUCT_STOP:39,NAMESPACE:40,classIdentifier:41,STYLE_SEPARATOR:42,members:43,CLASS:44,ANNOTATION_START:45,ANNOTATION_END:46,MEMBER:47,SEPARATOR:48,relation:49,NOTE_FOR:50,noteText:51,NOTE:52,direction_tb:53,direction_bt:54,direction_rl:55,direction_lr:56,relationType:57,lineType:58,AGGREGATION:59,EXTENSION:60,COMPOSITION:61,DEPENDENCY:62,LOLLIPOP:63,LINE:64,DOTTED_LINE:65,CALLBACK:66,LINK:67,LINK_TARGET:68,CLICK:69,CALLBACK_NAME:70,CALLBACK_ARGS:71,HREF:72,STYLE:73,ALPHA:74,stylesOpt:75,CSSCLASS:76,style:77,COMMA:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,commentToken:86,textToken:87,graphCodeTokens:88,textNoTagsToken:89,TAGSTART:90,TAGEND:91,"==":92,"--":93,DEFAULT:94,MINUS:95,keywords:96,UNICODE_TEXT:97,BQUOTE_STR:98,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",19:"GENERICTYPE",21:"LABEL",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",37:"STRUCT_START",39:"STRUCT_STOP",40:"NAMESPACE",42:"STYLE_SEPARATOR",44:"CLASS",45:"ANNOTATION_START",46:"ANNOTATION_END",47:"MEMBER",48:"SEPARATOR",50:"NOTE_FOR",52:"NOTE",53:"direction_tb",54:"direction_bt",55:"direction_rl",56:"direction_lr",59:"AGGREGATION",60:"EXTENSION",61:"COMPOSITION",62:"DEPENDENCY",63:"LOLLIPOP",64:"LINE",65:"DOTTED_LINE",66:"CALLBACK",67:"LINK",68:"LINK_TARGET",69:"CLICK",70:"CALLBACK_NAME",71:"CALLBACK_ARGS",72:"HREF",73:"STYLE",74:"ALPHA",76:"CSSCLASS",78:"COMMA",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",88:"graphCodeTokens",90:"TAGSTART",91:"TAGEND",92:"==",93:"--",94:"DEFAULT",95:"MINUS",96:"keywords",97:"UNICODE_TEXT",98:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,2],[17,1],[17,1],[17,2],[17,2],[17,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[22,4],[22,5],[36,2],[38,1],[38,2],[38,3],[23,1],[23,3],[23,4],[23,6],[41,2],[41,3],[25,4],[43,1],[43,2],[24,1],[24,2],[24,1],[24,1],[20,3],[20,4],[20,4],[20,5],[29,3],[29,2],[30,1],[30,1],[30,1],[30,1],[49,3],[49,2],[49,2],[49,1],[57,1],[57,1],[57,1],[57,1],[57,1],[58,1],[58,1],[26,3],[26,4],[26,3],[26,4],[26,4],[26,5],[26,3],[26,4],[26,4],[26,5],[26,4],[26,5],[26,5],[26,6],[27,3],[28,3],[75,1],[75,3],[77,1],[77,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[86,1],[86,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[89,1],[89,1],[89,1],[89,1],[16,1],[16,1],[16,1],[16,1],[18,1],[51,1]],performAction:function(fr,An,Pn,Bn,Te,be,Qe){var rn=be.length-1;switch(Te){case 8:this.$=be[rn-1];break;case 9:case 11:case 12:this.$=be[rn];break;case 10:case 13:this.$=be[rn-1]+be[rn];break;case 14:case 15:this.$=be[rn-1]+"~"+be[rn]+"~";break;case 16:Bn.addRelation(be[rn]);break;case 17:be[rn-1].title=Bn.cleanupLabel(be[rn]),Bn.addRelation(be[rn-1]);break;case 27:this.$=be[rn].trim(),Bn.setAccTitle(this.$);break;case 28:case 29:this.$=be[rn].trim(),Bn.setAccDescription(this.$);break;case 30:Bn.addClassesToNamespace(be[rn-3],be[rn-1]);break;case 31:Bn.addClassesToNamespace(be[rn-4],be[rn-1]);break;case 32:this.$=be[rn],Bn.addNamespace(be[rn]);break;case 33:this.$=[be[rn]];break;case 34:this.$=[be[rn-1]];break;case 35:be[rn].unshift(be[rn-2]),this.$=be[rn];break;case 37:Bn.setCssClass(be[rn-2],be[rn]);break;case 38:Bn.addMembers(be[rn-3],be[rn-1]);break;case 39:Bn.setCssClass(be[rn-5],be[rn-3]),Bn.addMembers(be[rn-5],be[rn-1]);break;case 40:this.$=be[rn],Bn.addClass(be[rn]);break;case 41:this.$=be[rn-1],Bn.addClass(be[rn-1]),Bn.setClassLabel(be[rn-1],be[rn]);break;case 42:Bn.addAnnotation(be[rn],be[rn-2]);break;case 43:this.$=[be[rn]];break;case 44:be[rn].push(be[rn-1]),this.$=be[rn];break;case 45:break;case 46:Bn.addMember(be[rn-1],Bn.cleanupLabel(be[rn]));break;case 47:break;case 48:break;case 49:this.$={id1:be[rn-2],id2:be[rn],relation:be[rn-1],relationTitle1:"none",relationTitle2:"none"};break;case 50:this.$={id1:be[rn-3],id2:be[rn],relation:be[rn-1],relationTitle1:be[rn-2],relationTitle2:"none"};break;case 51:this.$={id1:be[rn-3],id2:be[rn],relation:be[rn-2],relationTitle1:"none",relationTitle2:be[rn-1]};break;case 52:this.$={id1:be[rn-4],id2:be[rn],relation:be[rn-2],relationTitle1:be[rn-3],relationTitle2:be[rn-1]};break;case 53:Bn.addNote(be[rn],be[rn-1]);break;case 54:Bn.addNote(be[rn]);break;case 55:Bn.setDirection("TB");break;case 56:Bn.setDirection("BT");break;case 57:Bn.setDirection("RL");break;case 58:Bn.setDirection("LR");break;case 59:this.$={type1:be[rn-2],type2:be[rn],lineType:be[rn-1]};break;case 60:this.$={type1:"none",type2:be[rn],lineType:be[rn-1]};break;case 61:this.$={type1:be[rn-1],type2:"none",lineType:be[rn]};break;case 62:this.$={type1:"none",type2:"none",lineType:be[rn]};break;case 63:this.$=Bn.relationType.AGGREGATION;break;case 64:this.$=Bn.relationType.EXTENSION;break;case 65:this.$=Bn.relationType.COMPOSITION;break;case 66:this.$=Bn.relationType.DEPENDENCY;break;case 67:this.$=Bn.relationType.LOLLIPOP;break;case 68:this.$=Bn.lineType.LINE;break;case 69:this.$=Bn.lineType.DOTTED_LINE;break;case 70:case 76:this.$=be[rn-2],Bn.setClickEvent(be[rn-1],be[rn]);break;case 71:case 77:this.$=be[rn-3],Bn.setClickEvent(be[rn-2],be[rn-1]),Bn.setTooltip(be[rn-2],be[rn]);break;case 72:this.$=be[rn-2],Bn.setLink(be[rn-1],be[rn]);break;case 73:this.$=be[rn-3],Bn.setLink(be[rn-2],be[rn-1],be[rn]);break;case 74:this.$=be[rn-3],Bn.setLink(be[rn-2],be[rn-1]),Bn.setTooltip(be[rn-2],be[rn]);break;case 75:this.$=be[rn-4],Bn.setLink(be[rn-3],be[rn-2],be[rn]),Bn.setTooltip(be[rn-3],be[rn-1]);break;case 78:this.$=be[rn-3],Bn.setClickEvent(be[rn-2],be[rn-1],be[rn]);break;case 79:this.$=be[rn-4],Bn.setClickEvent(be[rn-3],be[rn-2],be[rn-1]),Bn.setTooltip(be[rn-3],be[rn]);break;case 80:this.$=be[rn-3],Bn.setLink(be[rn-2],be[rn]);break;case 81:this.$=be[rn-4],Bn.setLink(be[rn-3],be[rn-1],be[rn]);break;case 82:this.$=be[rn-4],Bn.setLink(be[rn-3],be[rn-1]),Bn.setTooltip(be[rn-3],be[rn]);break;case 83:this.$=be[rn-5],Bn.setLink(be[rn-4],be[rn-2],be[rn]),Bn.setTooltip(be[rn-4],be[rn-1]);break;case 84:this.$=be[rn-2],Bn.setCssStyle(be[rn-1],be[rn]);break;case 85:Bn.setCssClass(be[rn-1],be[rn]);break;case 86:this.$=[be[rn]];break;case 87:be[rn-2].push(be[rn]),this.$=be[rn-2];break;case 89:this.$=be[rn-1]+be[rn];break}},table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:37,17:20,18:38,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:16,31:a,33:f,35:g,36:21,40:w,41:22,44:v,45:b,47:E,48:_,50:S,52:I,53:B,54:F,55:R,56:q,66:X,67:rt,69:at,73:ut,74:pt,76:yt,80:mt,95:gt,97:ht,98:bt},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},i(Z,[2,5],{8:[1,46]}),{8:[1,47]},i(ft,[2,16],{21:[1,48]}),i(ft,[2,18]),i(ft,[2,19]),i(ft,[2,20]),i(ft,[2,21]),i(ft,[2,22]),i(ft,[2,23]),i(ft,[2,24]),i(ft,[2,25]),i(ft,[2,26]),{32:[1,49]},{34:[1,50]},i(ft,[2,29]),i(ft,[2,45],{49:51,57:54,58:55,13:[1,52],21:[1,53],59:Y,60:Et,61:V,62:Nt,63:Dt,64:jt,65:Ct}),{37:[1,63]},i(Ft,[2,36],{37:[1,65],42:[1,64]}),i(ft,[2,47]),i(ft,[2,48]),{16:66,74:pt,80:mt,95:gt,97:ht},{16:37,17:67,18:38,74:pt,80:mt,95:gt,97:ht,98:bt},{16:37,17:68,18:38,74:pt,80:mt,95:gt,97:ht,98:bt},{16:37,17:69,18:38,74:pt,80:mt,95:gt,97:ht,98:bt},{74:[1,70]},{13:[1,71]},{16:37,17:72,18:38,74:pt,80:mt,95:gt,97:ht,98:bt},{13:_t,51:73},i(ft,[2,55]),i(ft,[2,56]),i(ft,[2,57]),i(ft,[2,58]),i(xt,[2,11],{16:37,18:38,17:75,19:[1,76],74:pt,80:mt,95:gt,97:ht,98:bt}),i(xt,[2,12],{19:[1,77]}),{15:78,16:79,74:pt,80:mt,95:gt,97:ht},{16:37,17:80,18:38,74:pt,80:mt,95:gt,97:ht,98:bt},i(Gt,[2,112]),i(Gt,[2,113]),i(Gt,[2,114]),i(Gt,[2,115]),i([1,8,9,12,13,19,21,37,39,42,59,60,61,62,63,64,65,70,72],[2,116]),i(Z,[2,6],{10:5,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:16,17:20,36:21,41:22,16:37,18:38,5:81,31:a,33:f,35:g,40:w,44:v,45:b,47:E,48:_,50:S,52:I,53:B,54:F,55:R,56:q,66:X,67:rt,69:at,73:ut,74:pt,76:yt,80:mt,95:gt,97:ht,98:bt}),{5:82,10:5,16:37,17:20,18:38,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:16,31:a,33:f,35:g,36:21,40:w,41:22,44:v,45:b,47:E,48:_,50:S,52:I,53:B,54:F,55:R,56:q,66:X,67:rt,69:at,73:ut,74:pt,76:yt,80:mt,95:gt,97:ht,98:bt},i(ft,[2,17]),i(ft,[2,27]),i(ft,[2,28]),{13:[1,84],16:37,17:83,18:38,74:pt,80:mt,95:gt,97:ht,98:bt},{49:85,57:54,58:55,59:Y,60:Et,61:V,62:Nt,63:Dt,64:jt,65:Ct},i(ft,[2,46]),{58:86,64:jt,65:Ct},i(Be,[2,62],{57:87,59:Y,60:Et,61:V,62:Nt,63:Dt}),i(Ot,[2,63]),i(Ot,[2,64]),i(Ot,[2,65]),i(Ot,[2,66]),i(Ot,[2,67]),i(vn,[2,68]),i(vn,[2,69]),{8:[1,89],23:90,38:88,41:22,44:v},{16:91,74:pt,80:mt,95:gt,97:ht},{43:92,47:Pe},{46:[1,94]},{13:[1,95]},{13:[1,96]},{70:[1,97],72:[1,98]},{21:Ee,73:nn,74:sn,75:99,77:100,79:101,80:me,81:Fe,82:Qt,83:Ae,84:Se,85:Dn},{74:[1,111]},{13:_t,51:112},i(ft,[2,54]),i(ft,[2,117]),i(xt,[2,13]),i(xt,[2,14]),i(xt,[2,15]),{37:[2,32]},{15:113,16:79,37:[2,9],74:pt,80:mt,95:gt,97:ht},i(oe,[2,40],{11:114,12:[1,115]}),i(Z,[2,7]),{9:[1,116]},i(Pr,[2,49]),{16:37,17:117,18:38,74:pt,80:mt,95:gt,97:ht,98:bt},{13:[1,119],16:37,17:118,18:38,74:pt,80:mt,95:gt,97:ht,98:bt},i(Be,[2,61],{57:120,59:Y,60:Et,61:V,62:Nt,63:Dt}),i(Be,[2,60]),{39:[1,121]},{23:90,38:122,41:22,44:v},{8:[1,123],39:[2,33]},i(Ft,[2,37],{37:[1,124]}),{39:[1,125]},{39:[2,43],43:126,47:Pe},{16:37,17:127,18:38,74:pt,80:mt,95:gt,97:ht,98:bt},i(ft,[2,70],{13:[1,128]}),i(ft,[2,72],{13:[1,130],68:[1,129]}),i(ft,[2,76],{13:[1,131],71:[1,132]}),{13:[1,133]},i(ft,[2,84],{78:[1,134]}),i(we,[2,86],{79:135,21:Ee,73:nn,74:sn,80:me,81:Fe,82:Qt,83:Ae,84:Se,85:Dn}),i(Ri,[2,88]),i(Ri,[2,90]),i(Ri,[2,91]),i(Ri,[2,92]),i(Ri,[2,93]),i(Ri,[2,94]),i(Ri,[2,95]),i(Ri,[2,96]),i(Ri,[2,97]),i(Ri,[2,98]),i(ft,[2,85]),i(ft,[2,53]),{37:[2,10]},i(oe,[2,41]),{13:[1,136]},{1:[2,4]},i(Pr,[2,51]),i(Pr,[2,50]),{16:37,17:137,18:38,74:pt,80:mt,95:gt,97:ht,98:bt},i(Be,[2,59]),i(ft,[2,30]),{39:[1,138]},{23:90,38:139,39:[2,34],41:22,44:v},{43:140,47:Pe},i(Ft,[2,38]),{39:[2,44]},i(ft,[2,42]),i(ft,[2,71]),i(ft,[2,73]),i(ft,[2,74],{68:[1,141]}),i(ft,[2,77]),i(ft,[2,78],{13:[1,142]}),i(ft,[2,80],{13:[1,144],68:[1,143]}),{21:Ee,73:nn,74:sn,77:145,79:101,80:me,81:Fe,82:Qt,83:Ae,84:Se,85:Dn},i(Ri,[2,89]),{14:[1,146]},i(Pr,[2,52]),i(ft,[2,31]),{39:[2,35]},{39:[1,147]},i(ft,[2,75]),i(ft,[2,79]),i(ft,[2,81]),i(ft,[2,82],{68:[1,148]}),i(we,[2,87],{79:135,21:Ee,73:nn,74:sn,80:me,81:Fe,82:Qt,83:Ae,84:Se,85:Dn}),i(oe,[2,8]),i(Ft,[2,39]),i(ft,[2,83])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],78:[2,32],113:[2,10],116:[2,4],126:[2,44],139:[2,35]},parseError:function(fr,An){if(An.recoverable)this.trace(fr);else{var Pn=new Error(fr);throw Pn.hash=An,Pn}},parse:function(fr){var An=this,Pn=[0],Bn=[],Te=[null],be=[],Qe=this.table,rn="",yn=0,ja=0,mo=2,vo=1,ma=be.slice.call(arguments,1),$a=Object.create(this.lexer),gs={yy:{}};for(var Nu in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Nu)&&(gs.yy[Nu]=this.yy[Nu]);$a.setInput(fr,gs.yy),gs.yy.lexer=$a,gs.yy.parser=this,typeof $a.yylloc>"u"&&($a.yylloc={});var ta=$a.yylloc;be.push(ta);var l1=$a.options&&$a.options.ranges;typeof gs.yy.parseError=="function"?this.parseError=gs.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function _2(){var na;return na=Bn.pop()||$a.lex()||vo,typeof na!="number"&&(na instanceof Array&&(Bn=na,na=Bn.pop()),na=An.symbols_[na]||na),na}for(var ll,Ac,pc,ka,du={},ea,co,bc,oa;;){if(Ac=Pn[Pn.length-1],this.defaultActions[Ac]?pc=this.defaultActions[Ac]:((ll===null||typeof ll>"u")&&(ll=_2()),pc=Qe[Ac]&&Qe[Ac][ll]),typeof pc>"u"||!pc.length||!pc[0]){var va="";oa=[];for(ea in Qe[Ac])this.terminals_[ea]&&ea>mo&&oa.push("'"+this.terminals_[ea]+"'");$a.showPosition?va="Parse error on line "+(yn+1)+`: +`+$a.showPosition()+` +Expecting `+oa.join(", ")+", got '"+(this.terminals_[ll]||ll)+"'":va="Parse error on line "+(yn+1)+": Unexpected "+(ll==vo?"end of input":"'"+(this.terminals_[ll]||ll)+"'"),this.parseError(va,{text:$a.match,token:this.terminals_[ll]||ll,line:$a.yylineno,loc:ta,expected:oa})}if(pc[0]instanceof Array&&pc.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ac+", token: "+ll);switch(pc[0]){case 1:Pn.push(ll),Te.push($a.yytext),be.push($a.yylloc),Pn.push(pc[1]),ll=null,ja=$a.yyleng,rn=$a.yytext,yn=$a.yylineno,ta=$a.yylloc;break;case 2:if(co=this.productions_[pc[1]][1],du.$=Te[Te.length-co],du._$={first_line:be[be.length-(co||1)].first_line,last_line:be[be.length-1].last_line,first_column:be[be.length-(co||1)].first_column,last_column:be[be.length-1].last_column},l1&&(du._$.range=[be[be.length-(co||1)].range[0],be[be.length-1].range[1]]),ka=this.performAction.apply(du,[rn,ja,yn,gs.yy,pc[1],Te,be].concat(ma)),typeof ka<"u")return ka;co&&(Pn=Pn.slice(0,-1*co*2),Te=Te.slice(0,-1*co),be=be.slice(0,-1*co)),Pn.push(this.productions_[pc[1]][0]),Te.push(du.$),be.push(du._$),bc=Qe[Pn[Pn.length-2]][Pn[Pn.length-1]],Pn.push(bc);break;case 3:return!0}}return!0}},da=function(){var Ra={EOF:1,parseError:function(An,Pn){if(this.yy.parser)this.yy.parser.parseError(An,Pn);else throw new Error(An)},setInput:function(fr,An){return this.yy=An||this.yy||{},this._input=fr,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},input:function(){var fr=this._input[0];this.yytext+=fr,this.yyleng++,this.offset++,this.match+=fr,this.matched+=fr;var An=fr.match(/(?:\r\n?|\n).*/g);return An?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),fr},unput:function(fr){var An=fr.length,Pn=fr.split(/(?:\r\n?|\n)/g);this._input=fr+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-An),this.offset-=An;var Bn=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),Pn.length-1&&(this.yylineno-=Pn.length-1);var Te=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:Pn?(Pn.length===Bn.length?this.yylloc.first_column:0)+Bn[Bn.length-Pn.length].length-Pn[0].length:this.yylloc.first_column-An},this.options.ranges&&(this.yylloc.range=[Te[0],Te[0]+this.yyleng-An]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(fr){this.unput(this.match.slice(fr))},pastInput:function(){var fr=this.matched.substr(0,this.matched.length-this.match.length);return(fr.length>20?"...":"")+fr.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var fr=this.match;return fr.length<20&&(fr+=this._input.substr(0,20-fr.length)),(fr.substr(0,20)+(fr.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var fr=this.pastInput(),An=new Array(fr.length+1).join("-");return fr+this.upcomingInput()+` +`+An+"^"},test_match:function(fr,An){var Pn,Bn,Te;if(this.options.backtrack_lexer&&(Te={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&&(Te.yylloc.range=this.yylloc.range.slice(0))),Bn=fr[0].match(/(?:\r\n?|\n).*/g),Bn&&(this.yylineno+=Bn.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Bn?Bn[Bn.length-1].length-Bn[Bn.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+fr[0].length},this.yytext+=fr[0],this.match+=fr[0],this.matches=fr,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(fr[0].length),this.matched+=fr[0],Pn=this.performAction.call(this,this.yy,this,An,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Pn)return Pn;if(this._backtrack){for(var be in Te)this[be]=Te[be];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var fr,An,Pn,Bn;this._more||(this.yytext="",this.match="");for(var Te=this._currentRules(),be=0;beAn[0].length)){if(An=Pn,Bn=be,this.options.backtrack_lexer){if(fr=this.test_match(Pn,Te[be]),fr!==!1)return fr;if(this._backtrack){An=!1;continue}else return!1}else if(!this.options.flex)break}return An?(fr=this.test_match(An,Te[Bn]),fr!==!1?fr:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var An=this.next();return An||this.lex()},begin:function(An){this.conditionStack.push(An)},popState:function(){var An=this.conditionStack.length-1;return An>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(An){return An=this.conditionStack.length-1-Math.abs(An||0),An>=0?this.conditionStack[An]:"INITIAL"},pushState:function(An){this.begin(An)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(An,Pn,Bn,Te){switch(Bn){case 0:return 53;case 1:return 54;case 2:return 55;case 3:return 56;case 4:break;case 5:break;case 6:return this.begin("acc_title"),31;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),33;case 9:return this.popState(),"acc_descr_value";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 70;case 22:this.popState();break;case 23:return 71;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 73;case 28:return this.begin("namespace"),40;case 29:return this.popState(),8;case 30:break;case 31:return this.begin("namespace-body"),37;case 32:return this.popState(),39;case 33:return"EOF_IN_STRUCT";case 34:return 8;case 35:break;case 36:return"EDGE_STATE";case 37:return this.begin("class"),44;case 38:return this.popState(),8;case 39:break;case 40:return this.popState(),this.popState(),39;case 41:return this.begin("class-body"),37;case 42:return this.popState(),39;case 43:return"EOF_IN_STRUCT";case 44:return"EDGE_STATE";case 45:return"OPEN_IN_STRUCT";case 46:break;case 47:return"MEMBER";case 48:return 76;case 49:return 66;case 50:return 67;case 51:return 69;case 52:return 50;case 53:return 52;case 54:return 45;case 55:return 46;case 56:return 72;case 57:this.popState();break;case 58:return"GENERICTYPE";case 59:this.begin("generic");break;case 60:this.popState();break;case 61:return"BQUOTE_STR";case 62:this.begin("bqstring");break;case 63:return 68;case 64:return 68;case 65:return 68;case 66:return 68;case 67:return 60;case 68:return 60;case 69:return 62;case 70:return 62;case 71:return 61;case 72:return 59;case 73:return 63;case 74:return 64;case 75:return 65;case 76:return 21;case 77:return 42;case 78:return 95;case 79:return"DOT";case 80:return"PLUS";case 81:return 81;case 82:return 78;case 83:return 84;case 84:return 84;case 85:return 85;case 86:return"EQUALS";case 87:return"EQUALS";case 88:return 74;case 89:return 12;case 90:return 14;case 91:return"PUNCTUATION";case 92:return 80;case 93:return 97;case 94:return 83;case 95:return 83;case 96:return 9}},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)/,/^(?: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,32,33,34,35,36,37,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},namespace:{rules:[26,28,29,30,31,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},"class-body":{rules:[26,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},class:{rules:[26,38,39,40,41,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},acc_descr:{rules:[9,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},acc_title:{rules:[7,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},callback_args:{rules:[22,23,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},callback_name:{rules:[19,20,21,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},href:{rules:[26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},struct:{rules:[26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},generic:{rules:[26,48,49,50,51,52,53,54,55,56,57,58,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},bqstring:{rules:[26,48,49,50,51,52,53,54,55,56,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},string:{rules:[24,25,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,37,48,49,50,51,52,53,54,55,56,59,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,94,95,96],inclusive:!0}}};return Ra}();yi.lexer=da;function Ss(){this.yy={}}return Ss.prototype=yi,yi.Parser=Ss,new Ss}();Lbt.parser=Lbt;const fqt=Lbt,dqt=["#","+","~","-",""];class gqt{constructor(a,f){this.memberType=f,this.visibility="",this.classifier="";const g=Ed(a,Re());this.parseMember(g)}getDisplayDetails(){let a=this.visibility+pF(this.id);this.memberType==="method"&&(a+=`(${pF(this.parameters.trim())})`,this.returnType&&(a+=" : "+pF(this.returnType))),a=a.trim();const f=this.parseClassifier();return{displayText:a,cssStyle:f}}parseMember(a){let f="";if(this.memberType==="method"){const g=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/,w=a.match(g);if(w){const v=w[1]?w[1].trim():"";if(dqt.includes(v)&&(this.visibility=v),this.id=w[2].trim(),this.parameters=w[3]?w[3].trim():"",f=w[4]?w[4].trim():"",this.returnType=w[5]?w[5].trim():"",f===""){const b=this.returnType.substring(this.returnType.length-1);b.match(/[$*]/)&&(f=b,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{const g=a.length,w=a.substring(0,1),v=a.substring(g-1);dqt.includes(w)&&(this.visibility=w),v.match(/[$*]/)&&(f=v),this.id=a.substring(this.visibility===""?0:1,f===""?g:g-1)}this.classifier=f}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}const fX="classId-";let Mbt=[],Yl={},dX=[],pqt=0,C8={},Dbt=0,hB=[];const P9=i=>ei.sanitizeText(i,Re()),N9=function(i){const a=ei.sanitizeText(i,Re());let f="",g=a;if(a.indexOf("~")>0){const w=a.split("~");g=P9(w[0]),f=P9(w[1])}return{className:g,type:f}},GQe=function(i,a){const f=ei.sanitizeText(i,Re());a&&(a=P9(a));const{className:g}=N9(f);Yl[g].label=a},gX=function(i){const a=ei.sanitizeText(i,Re()),{className:f,type:g}=N9(a);if(Object.hasOwn(Yl,f))return;const w=ei.sanitizeText(f,Re());Yl[w]={id:w,type:g,label:w,cssClasses:[],methods:[],members:[],annotations:[],styles:[],domId:fX+w+"-"+pqt},pqt++},bqt=function(i){const a=ei.sanitizeText(i,Re());if(a in Yl)return Yl[a].domId;throw new Error("Class not found: "+a)},KQe=function(){Mbt=[],Yl={},dX=[],hB=[],hB.push(mqt),C8={},Dbt=0,Wg()},WQe=function(i){return Yl[i]},YQe=function(){return Yl},XQe=function(){return Mbt},QQe=function(){return dX},JQe=function(i){Wt.debug("Adding relation: "+JSON.stringify(i)),gX(i.id1),gX(i.id2),i.id1=N9(i.id1).className,i.id2=N9(i.id2).className,i.relationTitle1=ei.sanitizeText(i.relationTitle1.trim(),Re()),i.relationTitle2=ei.sanitizeText(i.relationTitle2.trim(),Re()),Mbt.push(i)},ZQe=function(i,a){const f=N9(i).className;Yl[f].annotations.push(a)},wqt=function(i,a){gX(i);const f=N9(i).className,g=Yl[f];if(typeof a=="string"){const w=a.trim();w.startsWith("<<")&&w.endsWith(">>")?g.annotations.push(P9(w.substring(2,w.length-2))):w.indexOf(")")>0?g.methods.push(new gqt(w,"method")):w&&g.members.push(new gqt(w,"attribute"))}},tJe=function(i,a){Array.isArray(a)&&(a.reverse(),a.forEach(f=>wqt(i,f)))},eJe=function(i,a){const f={id:`note${dX.length}`,class:a,text:i};dX.push(f)},nJe=function(i){return i.startsWith(":")&&(i=i.substring(1)),P9(i.trim())},Ibt=function(i,a){i.split(",").forEach(function(f){let g=f;f[0].match(/\d/)&&(g=fX+g),Yl[g]!==void 0&&Yl[g].cssClasses.push(a)})},rJe=function(i,a){i.split(",").forEach(function(f){a!==void 0&&(Yl[f].tooltip=P9(a))})},iJe=function(i,a){return a?C8[a].classes[i].tooltip:Yl[i].tooltip},sJe=function(i,a,f){const g=Re();i.split(",").forEach(function(w){let v=w;w[0].match(/\d/)&&(v=fX+v),Yl[v]!==void 0&&(Yl[v].link=ao.formatUrl(a,g),g.securityLevel==="sandbox"?Yl[v].linkTarget="_top":typeof f=="string"?Yl[v].linkTarget=P9(f):Yl[v].linkTarget="_blank")}),Ibt(i,"clickable")},aJe=function(i,a,f){i.split(",").forEach(function(g){oJe(g,a,f),Yl[g].haveCallback=!0}),Ibt(i,"clickable")},oJe=function(i,a,f){const g=ei.sanitizeText(i,Re());if(Re().securityLevel!=="loose"||a===void 0)return;const v=g;if(Yl[v]!==void 0){const b=bqt(v);let E=[];if(typeof f=="string"){E=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let _=0;_")),w.classed("hover",!0)}).on("mouseout",function(){a.transition().duration(500).style("opacity",0),xr(this).classed("hover",!1)})};hB.push(mqt);let vqt="TB";const pX={setAccTitle:ng,getAccTitle:Yg,getAccDescription:Qg,setAccDescription:Xg,getConfig:()=>Re().class,addClass:gX,bindFunctions:cJe,clear:KQe,getClass:WQe,getClasses:YQe,getNotes:QQe,addAnnotation:ZQe,addNote:eJe,getRelations:XQe,addRelation:JQe,getDirection:()=>vqt,setDirection:i=>{vqt=i},addMember:wqt,addMembers:tJe,cleanupLabel:nJe,lineType:uJe,relationType:lJe,setClickEvent:aJe,setCssClass:Ibt,setLink:sJe,getTooltip:iJe,setTooltip:rJe,lookUpDomId:bqt,setDiagramTitle:y2,getDiagramTitle:Jg,setClassLabel:GQe,addNamespace:function(i){C8[i]===void 0&&(C8[i]={id:i,classes:{},children:{},domId:fX+i+"-"+Dbt},Dbt++)},addClassesToNamespace:function(i,a){if(C8[i]!==void 0)for(const f of a){const{className:g}=N9(f);Yl[g].parent=i,C8[i].classes[g]=Yl[g]}},getNamespace:function(i){return C8[i]},getNamespaces:function(){return C8},setCssStyle:function(i,a){const f=Yl[i];if(!(!a||!f))for(const g of a)g.includes(",")?f.styles.push(...g.split(",")):f.styles.push(g)}},yqt=i=>`g.classGroup text { + fill: ${i.nodeBorder||i.classText}; + stroke: none; + font-family: ${i.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + +.nodeLabel, .edgeLabel { + color: ${i.classText}; +} +.edgeLabel .label rect { + fill: ${i.mainBkg}; +} +.label text { + fill: ${i.classText}; +} +.edgeLabel .label span { + background: ${i.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + +.divider { + stroke: ${i.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; +} + +g.classGroup line { + stroke: ${i.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${i.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${i.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${i.lineColor}; + stroke-width: 1; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +#compositionStart, .composition { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#compositionEnd, .composition { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#extensionStart, .extension { + fill: transparent !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#extensionEnd, .extension { + fill: transparent !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#aggregationStart, .aggregation { + fill: transparent !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#aggregationEnd, .aggregation { + fill: transparent !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#lollipopStart, .lollipop { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#lollipopEnd, .lollipop { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; + line-height: initial; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; +} +`;let xqt=0;const hJe=function(i,a,f,g,w){const v=function(ut){switch(ut){case w.db.relationType.AGGREGATION:return"aggregation";case w.db.relationType.EXTENSION:return"extension";case w.db.relationType.COMPOSITION:return"composition";case w.db.relationType.DEPENDENCY:return"dependency";case w.db.relationType.LOLLIPOP:return"lollipop"}};a.points=a.points.filter(ut=>!Number.isNaN(ut.y));const b=a.points,E=Cx().x(function(ut){return ut.x}).y(function(ut){return ut.y}).curve(lF),_=i.append("path").attr("d",E(b)).attr("id","edge"+xqt).attr("class","relation");let S="";g.arrowMarkerAbsolute&&(S=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,S=S.replace(/\(/g,"\\("),S=S.replace(/\)/g,"\\)")),f.relation.lineType==1&&_.attr("class","relation dashed-line"),f.relation.lineType==10&&_.attr("class","relation dotted-line"),f.relation.type1!=="none"&&_.attr("marker-start","url("+S+"#"+v(f.relation.type1)+"Start)"),f.relation.type2!=="none"&&_.attr("marker-end","url("+S+"#"+v(f.relation.type2)+"End)");let I,B;const F=a.points.length;let R=ao.calcLabelPosition(a.points);I=R.x,B=R.y;let q,X,rt,at;if(F%2!==0&&F>1){let ut=ao.calcCardinalityPosition(f.relation.type1!=="none",a.points,a.points[0]),pt=ao.calcCardinalityPosition(f.relation.type2!=="none",a.points,a.points[F-1]);Wt.debug("cardinality_1_point "+JSON.stringify(ut)),Wt.debug("cardinality_2_point "+JSON.stringify(pt)),q=ut.x,X=ut.y,rt=pt.x,at=pt.y}if(f.title!==void 0){const ut=i.append("g").attr("class","classLabel"),pt=ut.append("text").attr("class","label").attr("x",I).attr("y",B).attr("fill","red").attr("text-anchor","middle").text(f.title);window.label=pt;const yt=pt.node().getBBox();ut.insert("rect",":first-child").attr("class","box").attr("x",yt.x-g.padding/2).attr("y",yt.y-g.padding/2).attr("width",yt.width+g.padding).attr("height",yt.height+g.padding)}Wt.info("Rendering relation "+JSON.stringify(f)),f.relationTitle1!==void 0&&f.relationTitle1!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",q).attr("y",X).attr("fill","black").attr("font-size","6").text(f.relationTitle1),f.relationTitle2!==void 0&&f.relationTitle2!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",rt).attr("y",at).attr("fill","black").attr("font-size","6").text(f.relationTitle2),xqt++},fJe=function(i,a,f,g){Wt.debug("Rendering class ",a,f);const w=a.id,v={id:w,label:a.id,width:0,height:0},b=i.append("g").attr("id",g.db.lookUpDomId(w)).attr("class","classGroup");let E;a.link?E=b.append("svg:a").attr("xlink:href",a.link).attr("target",a.linkTarget).append("text").attr("y",f.textHeight+f.padding).attr("x",0):E=b.append("text").attr("y",f.textHeight+f.padding).attr("x",0);let _=!0;a.annotations.forEach(function(pt){const yt=E.append("tspan").text("«"+pt+"»");_||yt.attr("dy",f.textHeight),_=!1});let S=kqt(a);const I=E.append("tspan").text(S).attr("class","title");_||I.attr("dy",f.textHeight);const B=E.node().getBBox().height;let F,R,q;if(a.members.length>0){F=b.append("line").attr("x1",0).attr("y1",f.padding+B+f.dividerMargin/2).attr("y2",f.padding+B+f.dividerMargin/2);const pt=b.append("text").attr("x",f.padding).attr("y",B+f.dividerMargin+f.textHeight).attr("fill","white").attr("class","classText");_=!0,a.members.forEach(function(yt){Eqt(pt,yt,_,f),_=!1}),R=pt.node().getBBox()}if(a.methods.length>0){q=b.append("line").attr("x1",0).attr("y1",f.padding+B+f.dividerMargin+R.height).attr("y2",f.padding+B+f.dividerMargin+R.height);const pt=b.append("text").attr("x",f.padding).attr("y",B+2*f.dividerMargin+R.height+f.textHeight).attr("fill","white").attr("class","classText");_=!0,a.methods.forEach(function(yt){Eqt(pt,yt,_,f),_=!1})}const X=b.node().getBBox();var rt=" ";a.cssClasses.length>0&&(rt=rt+a.cssClasses.join(" "));const ut=b.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",X.width+2*f.padding).attr("height",X.height+f.padding+.5*f.dividerMargin).attr("class",rt).node().getBBox().width;return E.node().childNodes.forEach(function(pt){pt.setAttribute("x",(ut-pt.getBBox().width)/2)}),a.tooltip&&E.insert("title").text(a.tooltip),F&&F.attr("x2",ut),q&&q.attr("x2",ut),v.width=ut,v.height=X.height+f.padding+.5*f.dividerMargin,v},kqt=function(i){let a=i.id;return i.type&&(a+="<"+pF(i.type)+">"),a},dJe=function(i,a,f,g){Wt.debug("Rendering note ",a,f);const w=a.id,v={id:w,text:a.text,width:0,height:0},b=i.append("g").attr("id",w).attr("class","classGroup");let E=b.append("text").attr("y",f.textHeight+f.padding).attr("x",0);const _=JSON.parse(`"${a.text}"`).split(` +`);_.forEach(function(F){Wt.debug(`Adding line: ${F}`),E.append("tspan").text(F).attr("class","title").attr("dy",f.textHeight)});const S=b.node().getBBox(),B=b.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",S.width+2*f.padding).attr("height",S.height+_.length*f.textHeight+f.padding+.5*f.dividerMargin).node().getBBox().width;return E.node().childNodes.forEach(function(F){F.setAttribute("x",(B-F.getBBox().width)/2)}),v.width=B,v.height=S.height+_.length*f.textHeight+f.padding+.5*f.dividerMargin,v},Eqt=function(i,a,f,g){const{displayText:w,cssStyle:v}=a.getDisplayDetails(),b=i.append("tspan").attr("x",g.padding).text(w);v!==""&&b.attr("style",a.cssStyle),f||b.attr("dy",g.textHeight)},Obt={getClassTitleString:kqt,drawClass:fJe,drawEdge:hJe,drawNote:dJe};let bX={};const wX=20,fB=function(i){const a=Object.entries(bX).find(f=>f[1].label===i);if(a)return a[0]},gJe=function(i){i.append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),i.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).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"),i.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).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"),i.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).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"),i.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).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"),i.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).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"),i.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 18,7 L9,13 L14,7 L9,1 Z")},pJe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:fqt,db:pX,renderer:{draw:function(i,a,f,g){const w=Re().class;bX={},Wt.info("Rendering diagram "+i);const v=Re().securityLevel;let b;v==="sandbox"&&(b=xr("#i"+a));const E=xr(v==="sandbox"?b.nodes()[0].contentDocument.body:"body"),_=E.select(`[id='${a}']`);gJe(_);const S=new R1({multigraph:!0});S.setGraph({isMultiGraph:!0}),S.setDefaultEdgeLabel(function(){return{}});const I=g.db.getClasses(),B=Object.keys(I);for(const ut of B){const pt=I[ut],yt=Obt.drawClass(_,pt,w,g);bX[yt.id]=yt,S.setNode(yt.id,yt),Wt.info("Org height: "+yt.height)}g.db.getRelations().forEach(function(ut){Wt.info("tjoho"+fB(ut.id1)+fB(ut.id2)+JSON.stringify(ut)),S.setEdge(fB(ut.id1),fB(ut.id2),{relation:ut},ut.title||"DEFAULT")}),g.db.getNotes().forEach(function(ut){Wt.debug(`Adding note: ${JSON.stringify(ut)}`);const pt=Obt.drawNote(_,ut,w,g);bX[pt.id]=pt,S.setNode(pt.id,pt),ut.class&&ut.class in I&&S.setEdge(ut.id,fB(ut.class),{relation:{id1:ut.id,id2:ut.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")}),gM(S),S.nodes().forEach(function(ut){ut!==void 0&&S.node(ut)!==void 0&&(Wt.debug("Node "+ut+": "+JSON.stringify(S.node(ut))),E.select("#"+(g.db.lookUpDomId(ut)||ut)).attr("transform","translate("+(S.node(ut).x-S.node(ut).width/2)+","+(S.node(ut).y-S.node(ut).height/2)+" )"))}),S.edges().forEach(function(ut){ut!==void 0&&S.edge(ut)!==void 0&&(Wt.debug("Edge "+ut.v+" -> "+ut.w+": "+JSON.stringify(S.edge(ut))),Obt.drawEdge(_,S.edge(ut),S.edge(ut).relation,w,g))});const q=_.node().getBBox(),X=q.width+wX*2,rt=q.height+wX*2;Kg(_,rt,X,w.useMaxWidth);const at=`${q.x-wX} ${q.y-wX} ${X} ${rt}`;Wt.debug(`viewBox ${at}`),_.attr("viewBox",at)}},styles:yqt,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,pX.clear()}}},Symbol.toStringTag,{value:"Module"})),Pbt=i=>ei.sanitizeText(i,Re());let Nbt={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const bJe=function(i,a,f,g){const w=Object.keys(i);Wt.info("keys:",w),Wt.info(i),w.forEach(function(v){var S,I;const b=i[v],_={shape:"rect",id:b.id,domId:b.domId,labelText:Pbt(b.id),labelStyle:"",style:"fill: none; stroke: black",padding:((S=Re().flowchart)==null?void 0:S.padding)??((I=Re().class)==null?void 0:I.padding)};a.setNode(b.id,_),Tqt(b.classes,a,f,g,b.id),Wt.info("setNode",_)})},Tqt=function(i,a,f,g,w){const v=Object.keys(i);Wt.info("keys:",v),Wt.info(i),v.filter(b=>i[b].parent==w).forEach(function(b){var q,X;const E=i[b],_=E.cssClasses.join(" "),S=Uw(E.styles),I=E.label??E.id,B=0,F="class_box",R={labelStyle:S.labelStyle,shape:F,labelText:Pbt(I),classData:E,rx:B,ry:B,class:_,style:S.style,id:E.id,domId:E.domId,tooltip:g.db.getTooltip(E.id,w)||"",haveCallback:E.haveCallback,link:E.link,width:E.type==="group"?500:void 0,type:E.type,padding:((q=Re().flowchart)==null?void 0:q.padding)??((X=Re().class)==null?void 0:X.padding)};a.setNode(E.id,R),w&&a.setParent(E.id,w),Wt.info("setNode",R)})},wJe=function(i,a,f,g){Wt.info(i),i.forEach(function(w,v){var X,rt;const b=w,E="",_={labelStyle:"",style:""},S=b.text,I=0,B="note",F={labelStyle:_.labelStyle,shape:B,labelText:Pbt(S),noteData:b,rx:I,ry:I,class:E,style:_.style,id:b.id,domId:b.id,tooltip:"",type:"note",padding:((X=Re().flowchart)==null?void 0:X.padding)??((rt=Re().class)==null?void 0:rt.padding)};if(a.setNode(b.id,F),Wt.info("setNode",F),!b.class||!(b.class in g))return;const R=f+v,q={id:`edgeNote${R}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:Vw(Nbt.curve,Vg)};a.setEdge(b.id,b.class,q,R)})},mJe=function(i,a){const f=Re().flowchart;let g=0;i.forEach(function(w){var b;g++;const v={classes:"relation",pattern:w.relation.lineType==1?"dashed":"solid",id:`id_${w.id1}_${w.id2}_${g}`,arrowhead:w.type==="arrow_open"?"none":"normal",startLabelRight:w.relationTitle1==="none"?"":w.relationTitle1,endLabelLeft:w.relationTitle2==="none"?"":w.relationTitle2,arrowTypeStart:Cqt(w.relation.type1),arrowTypeEnd:Cqt(w.relation.type2),style:"fill:none",labelStyle:"",curve:Vw(f==null?void 0:f.curve,Vg)};if(Wt.info(v,w),w.style!==void 0){const E=Uw(w.style);v.style=E.style,v.labelStyle=E.labelStyle}w.text=w.title,w.text===void 0?w.style!==void 0&&(v.arrowheadStyle="fill: #333"):(v.arrowheadStyle="fill: #333",v.labelpos="c",((b=Re().flowchart)==null?void 0:b.htmlLabels)??Re().htmlLabels?(v.labelType="html",v.label=''+w.text+""):(v.labelType="text",v.label=w.text.replace(ei.lineBreakRegex,` +`),w.style===void 0&&(v.style=v.style||"stroke: #333; stroke-width: 1.5px;fill:none"),v.labelStyle=v.labelStyle.replace("color:","fill:"))),a.setEdge(w.id1,w.id2,v,g)})},vJe=function(i){Nbt={...Nbt,...i}},yJe=async function(i,a,f,g){Wt.info("Drawing class - ",a);const w=Re().flowchart??Re().class,v=Re().securityLevel;Wt.info("config:",w);const b=(w==null?void 0:w.nodeSpacing)??50,E=(w==null?void 0:w.rankSpacing)??50,_=new R1({multigraph:!0,compound:!0}).setGraph({rankdir:g.db.getDirection(),nodesep:b,ranksep:E,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),S=g.db.getNamespaces(),I=g.db.getClasses(),B=g.db.getRelations(),F=g.db.getNotes();Wt.info(B),bJe(S,_,a,g),Tqt(I,_,a,g),mJe(B,_),wJe(F,_,B.length+1,I);let R;v==="sandbox"&&(R=xr("#i"+a));const q=xr(v==="sandbox"?R.nodes()[0].contentDocument.body:"body"),X=q.select(`[id="${a}"]`),rt=q.select("#"+a+" g");if(await Vpt(rt,_,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",a),ao.insertTitle(X,"classTitleText",(w==null?void 0:w.titleTopMargin)??5,g.db.getDiagramTitle()),g8(_,X,w==null?void 0:w.diagramPadding,w==null?void 0:w.useMaxWidth),!(w!=null&&w.htmlLabels)){const at=v==="sandbox"?R.nodes()[0].contentDocument:document,ut=at.querySelectorAll('[id="'+a+'"] .edgeLabel .label');for(const pt of ut){const yt=pt.getBBox(),mt=at.createElementNS("http://www.w3.org/2000/svg","rect");mt.setAttribute("rx",0),mt.setAttribute("ry",0),mt.setAttribute("width",yt.width),mt.setAttribute("height",yt.height),pt.insertBefore(mt,pt.firstChild)}}};function Cqt(i){let a;switch(i){case 0:a="aggregation";break;case 1:a="extension";break;case 2:a="composition";break;case 3:a="dependency";break;case 4:a="lollipop";break;default:a="none"}return a}const xJe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:fqt,db:pX,renderer:{setConf:vJe,draw:yJe},styles:yqt,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,pX.clear()}}},Symbol.toStringTag,{value:"Module"}));var Fbt=function(){var i=function(Ct,Ft,_t,xt){for(_t=_t||{},xt=Ct.length;xt--;_t[Ct[xt]]=Ft);return _t},a=[1,2],f=[1,3],g=[1,4],w=[2,4],v=[1,9],b=[1,11],E=[1,15],_=[1,16],S=[1,17],I=[1,18],B=[1,30],F=[1,19],R=[1,20],q=[1,21],X=[1,22],rt=[1,23],at=[1,25],ut=[1,26],pt=[1,27],yt=[1,28],mt=[1,29],gt=[1,32],ht=[1,33],bt=[1,34],Z=[1,35],ft=[1,31],Y=[1,4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],Et=[1,4,5,13,14,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],V=[4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],Nt={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,cssClassStatement:11,idStatement:12,DESCR:13,"-->":14,HIDE_EMPTY:15,scale:16,WIDTH:17,COMPOSIT_STATE:18,STRUCT_START:19,STRUCT_STOP:20,STATE_DESCR:21,AS:22,ID:23,FORK:24,JOIN:25,CHOICE:26,CONCURRENT:27,note:28,notePosition:29,NOTE_TEXT:30,direction:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,classDef:37,CLASSDEF_ID:38,CLASSDEF_STYLEOPTS:39,DEFAULT:40,class:41,CLASSENTITY_IDS:42,STYLECLASS:43,direction_tb:44,direction_bt:45,direction_rl:46,direction_lr:47,eol:48,";":49,EDGE_STATE:50,STYLE_SEPARATOR:51,left_of:52,right_of:53,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",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",30:"NOTE_TEXT",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"classDef",38:"CLASSDEF_ID",39:"CLASSDEF_STYLEOPTS",40:"DEFAULT",41:"class",42:"CLASSENTITY_IDS",43:"STYLECLASS",44:"direction_tb",45:"direction_bt",46:"direction_rl",47:"direction_lr",49:";",50:"EDGE_STATE",51:"STYLE_SEPARATOR",52:"left_of",53:"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,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],[10,3],[10,3],[11,3],[31,1],[31,1],[31,1],[31,1],[48,1],[48,1],[12,1],[12,1],[12,3],[12,3],[29,1],[29,1]],performAction:function(Ft,_t,xt,Gt,Be,Ot,vn){var Pe=Ot.length-1;switch(Be){case 3:return Gt.setRootDoc(Ot[Pe]),Ot[Pe];case 4:this.$=[];break;case 5:Ot[Pe]!="nl"&&(Ot[Pe-1].push(Ot[Pe]),this.$=Ot[Pe-1]);break;case 6:case 7:this.$=Ot[Pe];break;case 8:this.$="nl";break;case 11:this.$=Ot[Pe];break;case 12:const me=Ot[Pe-1];me.description=Gt.trimColon(Ot[Pe]),this.$=me;break;case 13:this.$={stmt:"relation",state1:Ot[Pe-2],state2:Ot[Pe]};break;case 14:const Fe=Gt.trimColon(Ot[Pe]);this.$={stmt:"relation",state1:Ot[Pe-3],state2:Ot[Pe-1],description:Fe};break;case 18:this.$={stmt:"state",id:Ot[Pe-3],type:"default",description:"",doc:Ot[Pe-1]};break;case 19:var Ee=Ot[Pe],nn=Ot[Pe-2].trim();if(Ot[Pe].match(":")){var sn=Ot[Pe].split(":");Ee=sn[0],nn=[nn,sn[1]]}this.$={stmt:"state",id:Ee,type:"default",description:nn};break;case 20:this.$={stmt:"state",id:Ot[Pe-3],type:"default",description:Ot[Pe-5],doc:Ot[Pe-1]};break;case 21:this.$={stmt:"state",id:Ot[Pe],type:"fork"};break;case 22:this.$={stmt:"state",id:Ot[Pe],type:"join"};break;case 23:this.$={stmt:"state",id:Ot[Pe],type:"choice"};break;case 24:this.$={stmt:"state",id:Gt.getDividerId(),type:"divider"};break;case 25:this.$={stmt:"state",id:Ot[Pe-1].trim(),note:{position:Ot[Pe-2].trim(),text:Ot[Pe].trim()}};break;case 28:this.$=Ot[Pe].trim(),Gt.setAccTitle(this.$);break;case 29:case 30:this.$=Ot[Pe].trim(),Gt.setAccDescription(this.$);break;case 31:case 32:this.$={stmt:"classDef",id:Ot[Pe-1].trim(),classes:Ot[Pe].trim()};break;case 33:this.$={stmt:"applyClass",id:Ot[Pe-1].trim(),styleClass:Ot[Pe].trim()};break;case 34:Gt.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 35:Gt.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 36:Gt.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 37:Gt.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 40:case 41:this.$={stmt:"state",id:Ot[Pe].trim(),type:"default",description:""};break;case 42:this.$={stmt:"state",id:Ot[Pe-2].trim(),classes:[Ot[Pe].trim()],type:"default",description:""};break;case 43:this.$={stmt:"state",id:Ot[Pe-2].trim(),classes:[Ot[Pe].trim()],type:"default",description:""};break}},table:[{3:1,4:a,5:f,6:g},{1:[3]},{3:5,4:a,5:f,6:g},{3:6,4:a,5:f,6:g},i([1,4,5,15,16,18,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],w,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:v,5:b,8:8,9:10,10:12,11:13,12:14,15:E,16:_,18:S,21:I,23:B,24:F,25:R,26:q,27:X,28:rt,31:24,32:at,34:ut,36:pt,37:yt,41:mt,44:gt,45:ht,46:bt,47:Z,50:ft},i(Y,[2,5]),{9:36,10:12,11:13,12:14,15:E,16:_,18:S,21:I,23:B,24:F,25:R,26:q,27:X,28:rt,31:24,32:at,34:ut,36:pt,37:yt,41:mt,44:gt,45:ht,46:bt,47:Z,50:ft},i(Y,[2,7]),i(Y,[2,8]),i(Y,[2,9]),i(Y,[2,10]),i(Y,[2,11],{13:[1,37],14:[1,38]}),i(Y,[2,15]),{17:[1,39]},i(Y,[2,17],{19:[1,40]}),{22:[1,41]},i(Y,[2,21]),i(Y,[2,22]),i(Y,[2,23]),i(Y,[2,24]),{29:42,30:[1,43],52:[1,44],53:[1,45]},i(Y,[2,27]),{33:[1,46]},{35:[1,47]},i(Y,[2,30]),{38:[1,48],40:[1,49]},{42:[1,50]},i(Et,[2,40],{51:[1,51]}),i(Et,[2,41],{51:[1,52]}),i(Y,[2,34]),i(Y,[2,35]),i(Y,[2,36]),i(Y,[2,37]),i(Y,[2,6]),i(Y,[2,12]),{12:53,23:B,50:ft},i(Y,[2,16]),i(V,w,{7:54}),{23:[1,55]},{23:[1,56]},{22:[1,57]},{23:[2,44]},{23:[2,45]},i(Y,[2,28]),i(Y,[2,29]),{39:[1,58]},{39:[1,59]},{43:[1,60]},{23:[1,61]},{23:[1,62]},i(Y,[2,13],{13:[1,63]}),{4:v,5:b,8:8,9:10,10:12,11:13,12:14,15:E,16:_,18:S,20:[1,64],21:I,23:B,24:F,25:R,26:q,27:X,28:rt,31:24,32:at,34:ut,36:pt,37:yt,41:mt,44:gt,45:ht,46:bt,47:Z,50:ft},i(Y,[2,19],{19:[1,65]}),{30:[1,66]},{23:[1,67]},i(Y,[2,31]),i(Y,[2,32]),i(Y,[2,33]),i(Et,[2,42]),i(Et,[2,43]),i(Y,[2,14]),i(Y,[2,18]),i(V,w,{7:68}),i(Y,[2,25]),i(Y,[2,26]),{4:v,5:b,8:8,9:10,10:12,11:13,12:14,15:E,16:_,18:S,20:[1,69],21:I,23:B,24:F,25:R,26:q,27:X,28:rt,31:24,32:at,34:ut,36:pt,37:yt,41:mt,44:gt,45:ht,46:bt,47:Z,50:ft},i(Y,[2,20])],defaultActions:{5:[2,1],6:[2,2],44:[2,44],45:[2,45]},parseError:function(Ft,_t){if(_t.recoverable)this.trace(Ft);else{var xt=new Error(Ft);throw xt.hash=_t,xt}},parse:function(Ft){var _t=this,xt=[0],Gt=[],Be=[null],Ot=[],vn=this.table,Pe="",Ee=0,nn=0,sn=2,me=1,Fe=Ot.slice.call(arguments,1),Qt=Object.create(this.lexer),Ae={yy:{}};for(var Se in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Se)&&(Ae.yy[Se]=this.yy[Se]);Qt.setInput(Ft,Ae.yy),Ae.yy.lexer=Qt,Ae.yy.parser=this,typeof Qt.yylloc>"u"&&(Qt.yylloc={});var Dn=Qt.yylloc;Ot.push(Dn);var oe=Qt.options&&Qt.options.ranges;typeof Ae.yy.parseError=="function"?this.parseError=Ae.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Pr(){var Te;return Te=Gt.pop()||Qt.lex()||me,typeof Te!="number"&&(Te instanceof Array&&(Gt=Te,Te=Gt.pop()),Te=_t.symbols_[Te]||Te),Te}for(var we,Ri,yi,da,Ss={},Ra,fr,An,Pn;;){if(Ri=xt[xt.length-1],this.defaultActions[Ri]?yi=this.defaultActions[Ri]:((we===null||typeof we>"u")&&(we=Pr()),yi=vn[Ri]&&vn[Ri][we]),typeof yi>"u"||!yi.length||!yi[0]){var Bn="";Pn=[];for(Ra in vn[Ri])this.terminals_[Ra]&&Ra>sn&&Pn.push("'"+this.terminals_[Ra]+"'");Qt.showPosition?Bn="Parse error on line "+(Ee+1)+`: +`+Qt.showPosition()+` +Expecting `+Pn.join(", ")+", got '"+(this.terminals_[we]||we)+"'":Bn="Parse error on line "+(Ee+1)+": Unexpected "+(we==me?"end of input":"'"+(this.terminals_[we]||we)+"'"),this.parseError(Bn,{text:Qt.match,token:this.terminals_[we]||we,line:Qt.yylineno,loc:Dn,expected:Pn})}if(yi[0]instanceof Array&&yi.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ri+", token: "+we);switch(yi[0]){case 1:xt.push(we),Be.push(Qt.yytext),Ot.push(Qt.yylloc),xt.push(yi[1]),we=null,nn=Qt.yyleng,Pe=Qt.yytext,Ee=Qt.yylineno,Dn=Qt.yylloc;break;case 2:if(fr=this.productions_[yi[1]][1],Ss.$=Be[Be.length-fr],Ss._$={first_line:Ot[Ot.length-(fr||1)].first_line,last_line:Ot[Ot.length-1].last_line,first_column:Ot[Ot.length-(fr||1)].first_column,last_column:Ot[Ot.length-1].last_column},oe&&(Ss._$.range=[Ot[Ot.length-(fr||1)].range[0],Ot[Ot.length-1].range[1]]),da=this.performAction.apply(Ss,[Pe,nn,Ee,Ae.yy,yi[1],Be,Ot].concat(Fe)),typeof da<"u")return da;fr&&(xt=xt.slice(0,-1*fr*2),Be=Be.slice(0,-1*fr),Ot=Ot.slice(0,-1*fr)),xt.push(this.productions_[yi[1]][0]),Be.push(Ss.$),Ot.push(Ss._$),An=vn[xt[xt.length-2]][xt[xt.length-1]],xt.push(An);break;case 3:return!0}}return!0}},Dt=function(){var Ct={EOF:1,parseError:function(_t,xt){if(this.yy.parser)this.yy.parser.parseError(_t,xt);else throw new Error(_t)},setInput:function(Ft,_t){return this.yy=_t||this.yy||{},this._input=Ft,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},input:function(){var Ft=this._input[0];this.yytext+=Ft,this.yyleng++,this.offset++,this.match+=Ft,this.matched+=Ft;var _t=Ft.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),Ft},unput:function(Ft){var _t=Ft.length,xt=Ft.split(/(?:\r\n?|\n)/g);this._input=Ft+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-_t),this.offset-=_t;var Gt=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),xt.length-1&&(this.yylineno-=xt.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:xt?(xt.length===Gt.length?this.yylloc.first_column:0)+Gt[Gt.length-xt.length].length-xt[0].length:this.yylloc.first_column-_t},this.options.ranges&&(this.yylloc.range=[Be[0],Be[0]+this.yyleng-_t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(Ft){this.unput(this.match.slice(Ft))},pastInput:function(){var Ft=this.matched.substr(0,this.matched.length-this.match.length);return(Ft.length>20?"...":"")+Ft.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Ft=this.match;return Ft.length<20&&(Ft+=this._input.substr(0,20-Ft.length)),(Ft.substr(0,20)+(Ft.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Ft=this.pastInput(),_t=new Array(Ft.length+1).join("-");return Ft+this.upcomingInput()+` +`+_t+"^"},test_match:function(Ft,_t){var xt,Gt,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))),Gt=Ft[0].match(/(?:\r\n?|\n).*/g),Gt&&(this.yylineno+=Gt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Gt?Gt[Gt.length-1].length-Gt[Gt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ft[0].length},this.yytext+=Ft[0],this.match+=Ft[0],this.matches=Ft,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(Ft[0].length),this.matched+=Ft[0],xt=this.performAction.call(this,this.yy,this,_t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),xt)return xt;if(this._backtrack){for(var Ot in Be)this[Ot]=Be[Ot];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ft,_t,xt,Gt;this._more||(this.yytext="",this.match="");for(var Be=this._currentRules(),Ot=0;Ot_t[0].length)){if(_t=xt,Gt=Ot,this.options.backtrack_lexer){if(Ft=this.test_match(xt,Be[Ot]),Ft!==!1)return Ft;if(this._backtrack){_t=!1;continue}else return!1}else if(!this.options.flex)break}return _t?(Ft=this.test_match(_t,Be[Gt]),Ft!==!1?Ft:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var _t=this.next();return _t||this.lex()},begin:function(_t){this.conditionStack.push(_t)},popState:function(){var _t=this.conditionStack.length-1;return _t>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(_t){return _t=this.conditionStack.length-1-Math.abs(_t||0),_t>=0?this.conditionStack[_t]:"INITIAL"},pushState:function(_t){this.begin(_t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(_t,xt,Gt,Be){switch(Gt){case 0:return 40;case 1:return 44;case 2:return 45;case 3:return 46;case 4:return 47;case 5:break;case 6:break;case 7:return 5;case 8:break;case 9:break;case 10:break;case 11:break;case 12:return this.pushState("SCALE"),16;case 13:return 17;case 14:this.popState();break;case 15:return this.begin("acc_title"),32;case 16:return this.popState(),"acc_title_value";case 17:return this.begin("acc_descr"),34;case 18:return this.popState(),"acc_descr_value";case 19:this.begin("acc_descr_multiline");break;case 20:this.popState();break;case 21:return"acc_descr_multiline_value";case 22:return this.pushState("CLASSDEF"),37;case 23:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 24:return this.popState(),this.pushState("CLASSDEFID"),38;case 25:return this.popState(),39;case 26:return this.pushState("CLASS"),41;case 27:return this.popState(),this.pushState("CLASS_STYLE"),42;case 28:return this.popState(),43;case 29:return this.pushState("SCALE"),16;case 30:return 17;case 31:this.popState();break;case 32:this.pushState("STATE");break;case 33:return this.popState(),xt.yytext=xt.yytext.slice(0,-8).trim(),24;case 34:return this.popState(),xt.yytext=xt.yytext.slice(0,-8).trim(),25;case 35:return this.popState(),xt.yytext=xt.yytext.slice(0,-10).trim(),26;case 36:return this.popState(),xt.yytext=xt.yytext.slice(0,-8).trim(),24;case 37:return this.popState(),xt.yytext=xt.yytext.slice(0,-8).trim(),25;case 38:return this.popState(),xt.yytext=xt.yytext.slice(0,-10).trim(),26;case 39:return 44;case 40:return 45;case 41:return 46;case 42:return 47;case 43:this.pushState("STATE_STRING");break;case 44:return this.pushState("STATE_ID"),"AS";case 45:return this.popState(),"ID";case 46:this.popState();break;case 47:return"STATE_DESCR";case 48:return 18;case 49:this.popState();break;case 50:return this.popState(),this.pushState("struct"),19;case 51:break;case 52:return this.popState(),20;case 53:break;case 54:return this.begin("NOTE"),28;case 55:return this.popState(),this.pushState("NOTE_ID"),52;case 56:return this.popState(),this.pushState("NOTE_ID"),53;case 57:this.popState(),this.pushState("FLOATING_NOTE");break;case 58:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 59:break;case 60:return"NOTE_TEXT";case 61:return this.popState(),"ID";case 62:return this.popState(),this.pushState("NOTE_TEXT"),23;case 63:return this.popState(),xt.yytext=xt.yytext.substr(2).trim(),30;case 64:return this.popState(),xt.yytext=xt.yytext.slice(0,-8).trim(),30;case 65:return 6;case 66:return 6;case 67:return 15;case 68:return 50;case 69:return 23;case 70:return xt.yytext=xt.yytext.trim(),13;case 71:return 14;case 72:return 27;case 73:return 51;case 74:return 5;case 75:return"INVALID"}},rules:[/^(?: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,/^(?:[^\}]%%[^\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,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/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]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},struct:{rules:[9,10,22,26,32,39,40,41,42,51,52,53,54,68,69,70,71,72],inclusive:!1},FLOATING_NOTE_ID:{rules:[61],inclusive:!1},FLOATING_NOTE:{rules:[58,59,60],inclusive:!1},NOTE_TEXT:{rules:[63,64],inclusive:!1},NOTE_ID:{rules:[62],inclusive:!1},NOTE:{rules:[55,56,57],inclusive:!1},CLASS_STYLE:{rules:[28],inclusive:!1},CLASS:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[25],inclusive:!1},CLASSDEF:{rules:[23,24],inclusive:!1},acc_descr_multiline:{rules:[20,21],inclusive:!1},acc_descr:{rules:[18],inclusive:!1},acc_title:{rules:[16],inclusive:!1},SCALE:{rules:[13,14,30,31],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[45],inclusive:!1},STATE_STRING:{rules:[46,47],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,33,34,35,36,37,38,43,44,48,49,50],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,19,22,26,29,32,50,54,65,66,67,68,69,70,71,73,74,75],inclusive:!0}}};return Ct}();Nt.lexer=Dt;function jt(){this.yy={}}return jt.prototype=Nt,Nt.Parser=jt,new jt}();Fbt.parser=Fbt;const _qt=Fbt,kJe="LR",EJe="TB",mX="state",Bbt="relation",TJe="classDef",CJe="applyClass",dB="default",Sqt="divider",Rbt="[*]",Aqt="start",Lqt=Rbt,Mqt="end",Dqt="color",Iqt="fill",_Je="bgFill",SJe=",";function Oqt(){return{}}let Pqt=kJe,vX=[],gB=Oqt();const Nqt=()=>({relations:[],states:{},documents:{}});let yX={root:Nqt()},sg=yX.root,pB=0,Fqt=0;const AJe={LINE:0,DOTTED_LINE:1},LJe={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},xX=i=>JSON.parse(JSON.stringify(i)),MJe=i=>{Wt.info("Setting root doc",i),vX=i},DJe=()=>vX,kX=(i,a,f)=>{if(a.stmt===Bbt)kX(i,a.state1,!0),kX(i,a.state2,!1);else if(a.stmt===mX&&(a.id==="[*]"?(a.id=f?i.id+"_start":i.id+"_end",a.start=f):a.id=a.id.trim()),a.doc){const g=[];let w=[],v;for(v=0;v0&&w.length>0){const b={stmt:mX,id:fFt(),type:"divider",doc:xX(w)};g.push(xX(b)),a.doc=g}a.doc.forEach(b=>kX(a,b,!0))}},IJe=()=>(kX({id:"root"},{id:"root",doc:vX},!0),{id:"root",doc:vX}),OJe=i=>{let a;i.doc?a=i.doc:a=i,Wt.info(a),Bqt(!0),Wt.info("Extract",a),a.forEach(f=>{switch(f.stmt){case mX:F9(f.id.trim(),f.type,f.doc,f.description,f.note,f.classes,f.styles,f.textStyles);break;case Bbt:Rqt(f.state1,f.state2,f.description);break;case TJe:jqt(f.id.trim(),f.classes);break;case CJe:qbt(f.id.trim(),f.styleClass);break}})},F9=function(i,a=dB,f=null,g=null,w=null,v=null,b=null,E=null){const _=i==null?void 0:i.trim();sg.states[_]===void 0?(Wt.info("Adding state ",_,g),sg.states[_]={id:_,descriptions:[],type:a,doc:f,note:w,classes:[],styles:[],textStyles:[]}):(sg.states[_].doc||(sg.states[_].doc=f),sg.states[_].type||(sg.states[_].type=a)),g&&(Wt.info("Setting state description",_,g),typeof g=="string"&&zbt(_,g.trim()),typeof g=="object"&&g.forEach(S=>zbt(_,S.trim()))),w&&(sg.states[_].note=w,sg.states[_].note.text=ei.sanitizeText(sg.states[_].note.text,Re())),v&&(Wt.info("Setting state classes",_,v),(typeof v=="string"?[v]:v).forEach(I=>qbt(_,I.trim()))),b&&(Wt.info("Setting state styles",_,b),(typeof b=="string"?[b]:b).forEach(I=>HJe(_,I.trim()))),E&&(Wt.info("Setting state styles",_,b),(typeof E=="string"?[E]:E).forEach(I=>VJe(_,I.trim())))},Bqt=function(i){yX={root:Nqt()},sg=yX.root,pB=0,gB=Oqt(),i||Wg()},bB=function(i){return sg.states[i]},PJe=function(){return sg.states},NJe=function(){Wt.info("Documents = ",yX)},FJe=function(){return sg.relations};function jbt(i=""){let a=i;return i===Rbt&&(pB++,a=`${Aqt}${pB}`),a}function $bt(i="",a=dB){return i===Rbt?Aqt:a}function BJe(i=""){let a=i;return i===Lqt&&(pB++,a=`${Mqt}${pB}`),a}function RJe(i="",a=dB){return i===Lqt?Mqt:a}function jJe(i,a,f){let g=jbt(i.id.trim()),w=$bt(i.id.trim(),i.type),v=jbt(a.id.trim()),b=$bt(a.id.trim(),a.type);F9(g,w,i.doc,i.description,i.note,i.classes,i.styles,i.textStyles),F9(v,b,a.doc,a.description,a.note,a.classes,a.styles,a.textStyles),sg.relations.push({id1:g,id2:v,relationTitle:ei.sanitizeText(f,Re())})}const Rqt=function(i,a,f){if(typeof i=="object")jJe(i,a,f);else{const g=jbt(i.trim()),w=$bt(i),v=BJe(a.trim()),b=RJe(a);F9(g,w),F9(v,b),sg.relations.push({id1:g,id2:v,title:ei.sanitizeText(f,Re())})}},zbt=function(i,a){const f=sg.states[i],g=a.startsWith(":")?a.replace(":","").trim():a;f.descriptions.push(ei.sanitizeText(g,Re()))},$Je=function(i){return i.substring(0,1)===":"?i.substr(2).trim():i.trim()},zJe=()=>(Fqt++,"divider-id-"+Fqt),jqt=function(i,a=""){gB[i]===void 0&&(gB[i]={id:i,styles:[],textStyles:[]});const f=gB[i];a!=null&&a.split(SJe).forEach(g=>{const w=g.replace(/([^;]*);/,"$1").trim();if(g.match(Dqt)){const b=w.replace(Iqt,_Je).replace(Dqt,Iqt);f.textStyles.push(b)}f.styles.push(w)})},qJe=function(){return gB},qbt=function(i,a){i.split(",").forEach(function(f){let g=bB(f);if(g===void 0){const w=f.trim();F9(w),g=bB(w)}g.classes.push(a)})},HJe=function(i,a){const f=bB(i);f!==void 0&&f.textStyles.push(a)},VJe=function(i,a){const f=bB(i);f!==void 0&&f.textStyles.push(a)},$x={getConfig:()=>Re().state,addState:F9,clear:Bqt,getState:bB,getStates:PJe,getRelations:FJe,getClasses:qJe,getDirection:()=>Pqt,addRelation:Rqt,getDividerId:zJe,setDirection:i=>{Pqt=i},cleanupLabel:$Je,lineType:AJe,relationType:LJe,logDocuments:NJe,getRootDoc:DJe,setRootDoc:MJe,getRootDocV2:IJe,extract:OJe,trimColon:i=>i&&i[0]===":"?i.substr(1).trim():i.trim(),getAccTitle:Yg,setAccTitle:ng,getAccDescription:Qg,setAccDescription:Xg,addStyleClass:jqt,setCssClass:qbt,addDescription:zbt,setDiagramTitle:y2,getDiagramTitle:Jg},$qt=i=>` +defs #statediagram-barbEnd { + fill: ${i.transitionColor}; + stroke: ${i.transitionColor}; + } +g.stateGroup text { + fill: ${i.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${i.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${i.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; +} + +g.stateGroup line { + stroke: ${i.lineColor}; + stroke-width: 1; +} + +.transition { + stroke: ${i.transitionColor}; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: ${i.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${i.noteBorderColor}; + fill: ${i.noteBkgColor}; + + text { + fill: ${i.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${i.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${i.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel .label text { + fill: ${i.transitionLabelColor||i.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${i.transitionLabelColor||i.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${i.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${i.specialStateColor}; + stroke: ${i.specialStateColor}; +} + +.node .fork-join { + fill: ${i.specialStateColor}; + stroke: ${i.specialStateColor}; +} + +.node circle.state-end { + fill: ${i.innerEndBackground}; + stroke: ${i.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${i.compositeBackground||i.background}; + // stroke: ${i.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${i.stateBkg||i.mainBkg}; + stroke: ${i.stateBorder||i.nodeBorder}; + stroke-width: 1px; +} +.node polygon { + fill: ${i.mainBkg}; + stroke: ${i.stateBorder||i.nodeBorder};; + stroke-width: 1px; +} +#statediagram-barbEnd { + fill: ${i.lineColor}; +} + +.statediagram-cluster rect { + fill: ${i.compositeTitleBackground}; + stroke: ${i.stateBorder||i.nodeBorder}; + stroke-width: 1px; +} + +.cluster-label, .nodeLabel { + color: ${i.stateLabelColor}; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${i.stateBorder||i.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${i.compositeBackground||i.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${i.altBackground?i.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: ${i.altBackground?i.altBackground:"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${i.noteBkgColor}; + stroke: ${i.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${i.noteBkgColor}; + stroke: ${i.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${i.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${i.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${i.noteTextColor}; +} + +#dependencyStart, #dependencyEnd { + fill: ${i.lineColor}; + stroke: ${i.lineColor}; + stroke-width: 1; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; +} +`,Hbt={},UJe=(i,a)=>{Hbt[i]=a},GJe=i=>Hbt[i],zqt=()=>Object.keys(Hbt),KJe={get:GJe,set:UJe,keys:zqt,size:()=>zqt().length},WJe=i=>i.append("circle").attr("class","start-state").attr("r",Re().state.sizeUnit).attr("cx",Re().state.padding+Re().state.sizeUnit).attr("cy",Re().state.padding+Re().state.sizeUnit),YJe=i=>i.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",Re().state.textHeight).attr("class","divider").attr("x2",Re().state.textHeight*2).attr("y1",0).attr("y2",0),XJe=(i,a)=>{const f=i.append("text").attr("x",2*Re().state.padding).attr("y",Re().state.textHeight+2*Re().state.padding).attr("font-size",Re().state.fontSize).attr("class","state-title").text(a.id),g=f.node().getBBox();return i.insert("rect",":first-child").attr("x",Re().state.padding).attr("y",Re().state.padding).attr("width",g.width+2*Re().state.padding).attr("height",g.height+2*Re().state.padding).attr("rx",Re().state.radius),f},QJe=(i,a)=>{const f=function(F,R,q){const X=F.append("tspan").attr("x",2*Re().state.padding).text(R);q||X.attr("dy",Re().state.textHeight)},w=i.append("text").attr("x",2*Re().state.padding).attr("y",Re().state.textHeight+1.3*Re().state.padding).attr("font-size",Re().state.fontSize).attr("class","state-title").text(a.descriptions[0]).node().getBBox(),v=w.height,b=i.append("text").attr("x",Re().state.padding).attr("y",v+Re().state.padding*.4+Re().state.dividerMargin+Re().state.textHeight).attr("class","state-description");let E=!0,_=!0;a.descriptions.forEach(function(F){E||(f(b,F,_),_=!1),E=!1});const S=i.append("line").attr("x1",Re().state.padding).attr("y1",Re().state.padding+v+Re().state.dividerMargin/2).attr("y2",Re().state.padding+v+Re().state.dividerMargin/2).attr("class","descr-divider"),I=b.node().getBBox(),B=Math.max(I.width,w.width);return S.attr("x2",B+3*Re().state.padding),i.insert("rect",":first-child").attr("x",Re().state.padding).attr("y",Re().state.padding).attr("width",B+2*Re().state.padding).attr("height",I.height+v+2*Re().state.padding).attr("rx",Re().state.radius),i},JJe=(i,a,f)=>{const g=Re().state.padding,w=2*Re().state.padding,v=i.node().getBBox(),b=v.width,E=v.x,_=i.append("text").attr("x",0).attr("y",Re().state.titleShift).attr("font-size",Re().state.fontSize).attr("class","state-title").text(a.id),I=_.node().getBBox().width+w;let B=Math.max(I,b);B===b&&(B=B+w);let F;const R=i.node().getBBox();a.doc,F=E-g,I>b&&(F=(b-B)/2+g),Math.abs(E-R.x)b&&(F=E-(I-b)/2);const q=1-Re().state.textHeight;return i.insert("rect",":first-child").attr("x",F).attr("y",q).attr("class",f?"alt-composit":"composit").attr("width",B).attr("height",R.height+Re().state.textHeight+Re().state.titleShift+1).attr("rx","0"),_.attr("x",F+g),I<=b&&_.attr("x",E+(B-w)/2-I/2+g),i.insert("rect",":first-child").attr("x",F).attr("y",Re().state.titleShift-Re().state.textHeight-Re().state.padding).attr("width",B).attr("height",Re().state.textHeight*3).attr("rx",Re().state.radius),i.insert("rect",":first-child").attr("x",F).attr("y",Re().state.titleShift-Re().state.textHeight-Re().state.padding).attr("width",B).attr("height",R.height+3+2*Re().state.textHeight).attr("rx",Re().state.radius),i},ZJe=i=>(i.append("circle").attr("class","end-state-outer").attr("r",Re().state.sizeUnit+Re().state.miniPadding).attr("cx",Re().state.padding+Re().state.sizeUnit+Re().state.miniPadding).attr("cy",Re().state.padding+Re().state.sizeUnit+Re().state.miniPadding),i.append("circle").attr("class","end-state-inner").attr("r",Re().state.sizeUnit).attr("cx",Re().state.padding+Re().state.sizeUnit+2).attr("cy",Re().state.padding+Re().state.sizeUnit+2)),tZe=(i,a)=>{let f=Re().state.forkWidth,g=Re().state.forkHeight;if(a.parentId){let w=f;f=g,g=w}return i.append("rect").style("stroke","black").style("fill","black").attr("width",f).attr("height",g).attr("x",Re().state.padding).attr("y",Re().state.padding)},eZe=(i,a,f,g)=>{let w=0;const v=g.append("text");v.style("text-anchor","start"),v.attr("class","noteText");let b=i.replace(/\r\n/g,"
");b=b.replace(/\n/g,"
");const E=b.split(ei.lineBreakRegex);let _=1.25*Re().state.noteMargin;for(const S of E){const I=S.trim();if(I.length>0){const B=v.append("tspan");if(B.text(I),_===0){const F=B.node().getBBox();_+=F.height}w+=_,B.attr("x",a+Re().state.noteMargin),B.attr("y",f+w+1.25*Re().state.noteMargin)}}return{textWidth:v.node().getBBox().width,textHeight:w}},nZe=(i,a)=>{a.attr("class","state-note");const f=a.append("rect").attr("x",0).attr("y",Re().state.padding),g=a.append("g"),{textWidth:w,textHeight:v}=eZe(i,0,0,g);return f.attr("height",v+2*Re().state.noteMargin),f.attr("width",w+Re().state.noteMargin*2),f},qqt=function(i,a){const f=a.id,g={id:f,label:a.id,width:0,height:0},w=i.append("g").attr("id",f).attr("class","stateGroup");a.type==="start"&&WJe(w),a.type==="end"&&ZJe(w),(a.type==="fork"||a.type==="join")&&tZe(w,a),a.type==="note"&&nZe(a.note.text,w),a.type==="divider"&&YJe(w),a.type==="default"&&a.descriptions.length===0&&XJe(w,a),a.type==="default"&&a.descriptions.length>0&&QJe(w,a);const v=w.node().getBBox();return g.width=v.width+2*Re().state.padding,g.height=v.height+2*Re().state.padding,KJe.set(f,g),g};let Hqt=0;const rZe=function(i,a,f){const g=function(_){switch(_){case $x.relationType.AGGREGATION:return"aggregation";case $x.relationType.EXTENSION:return"extension";case $x.relationType.COMPOSITION:return"composition";case $x.relationType.DEPENDENCY:return"dependency"}};a.points=a.points.filter(_=>!Number.isNaN(_.y));const w=a.points,v=Cx().x(function(_){return _.x}).y(function(_){return _.y}).curve(lF),b=i.append("path").attr("d",v(w)).attr("id","edge"+Hqt).attr("class","transition");let E="";if(Re().state.arrowMarkerAbsolute&&(E=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,E=E.replace(/\(/g,"\\("),E=E.replace(/\)/g,"\\)")),b.attr("marker-end","url("+E+"#"+g($x.relationType.DEPENDENCY)+"End)"),f.title!==void 0){const _=i.append("g").attr("class","stateLabel"),{x:S,y:I}=ao.calcLabelPosition(a.points),B=ei.getRows(f.title);let F=0;const R=[];let q=0,X=0;for(let ut=0;ut<=B.length;ut++){const pt=_.append("text").attr("text-anchor","middle").text(B[ut]).attr("x",S).attr("y",I+F),yt=pt.node().getBBox();q=Math.max(q,yt.width),X=Math.min(X,yt.x),Wt.info(yt.x,S,I+F),F===0&&(F=pt.node().getBBox().height,Wt.info("Title height",F,I)),R.push(pt)}let rt=F*B.length;if(B.length>1){const ut=(B.length-1)*F*.5;R.forEach((pt,yt)=>pt.attr("y",I+yt*F-ut)),rt=F*B.length}const at=_.node().getBBox();_.insert("rect",":first-child").attr("class","box").attr("x",S-q/2-Re().state.padding/2).attr("y",I-rt/2-Re().state.padding/2-3.5).attr("width",q+Re().state.padding).attr("height",rt+Re().state.padding),Wt.info(at)}Hqt++};let C2;const Vbt={},iZe=function(){},sZe=function(i){i.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")},aZe=function(i,a,f,g){C2=Re().state;const w=Re().securityLevel;let v;w==="sandbox"&&(v=xr("#i"+a));const b=xr(w==="sandbox"?v.nodes()[0].contentDocument.body:"body"),E=w==="sandbox"?v.nodes()[0].contentDocument:document;Wt.debug("Rendering diagram "+i);const _=b.select(`[id='${a}']`);sZe(_);const S=g.db.getRootDoc();Vqt(S,_,void 0,!1,b,E,g);const I=C2.padding,B=_.node().getBBox(),F=B.width+I*2,R=B.height+I*2,q=F*1.75;Kg(_,R,q,C2.useMaxWidth),_.attr("viewBox",`${B.x-C2.padding} ${B.y-C2.padding} `+F+" "+R)},oZe=i=>i?i.length*C2.fontSizeFactor:1,Vqt=(i,a,f,g,w,v,b)=>{const E=new R1({compound:!0,multigraph:!0});let _,S=!0;for(_=0;_{const yt=pt.parentElement;let mt=0,gt=0;yt&&(yt.parentElement&&(mt=yt.parentElement.getBBox().width),gt=parseInt(yt.getAttribute("data-x-shift"),10),Number.isNaN(gt)&&(gt=0)),pt.setAttribute("x1",0-gt+8),pt.setAttribute("x2",mt-gt-8)})):Wt.debug("No Node "+at+": "+JSON.stringify(E.node(at)))});let X=q.getBBox();E.edges().forEach(function(at){at!==void 0&&E.edge(at)!==void 0&&(Wt.debug("Edge "+at.v+" -> "+at.w+": "+JSON.stringify(E.edge(at))),rZe(a,E.edge(at),E.edge(at).relation))}),X=q.getBBox();const rt={id:f||"root",label:f||"root",width:0,height:0};return rt.width=X.width+2*C2.padding,rt.height=X.height+2*C2.padding,Wt.debug("Doc rendered",rt,E),rt},cZe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:_qt,db:$x,renderer:{setConf:iZe,draw:aZe},styles:$qt,init:i=>{i.state||(i.state={}),i.state.arrowMarkerAbsolute=i.arrowMarkerAbsolute,$x.clear()}}},Symbol.toStringTag,{value:"Module"})),EX="rect",Ubt="rectWithTitle",uZe="start",lZe="end",hZe="divider",fZe="roundedWithTitle",dZe="note",gZe="noteGroup",TM="statediagram",pZe=`${TM}-state`,Uqt="transition",bZe="note",wZe=`${Uqt} note-edge`,mZe=`${TM}-${bZe}`,vZe=`${TM}-cluster`,yZe=`${TM}-cluster-alt`,Gqt="parent",Kqt="note",xZe="state",Gbt="----",kZe=`${Gbt}${Kqt}`,Wqt=`${Gbt}${Gqt}`,Yqt="fill:none",Xqt="fill: #333",Qqt="c",Jqt="text",Zqt="normal";let TX={},_8=0;const EZe=function(i){const a=Object.keys(i);for(const f of a)i[f]},TZe=function(i,a){return a.db.extract(a.db.getRootDocV2()),a.db.getClasses()};function CZe(i){return i==null?"":i.classes?i.classes.join(" "):""}function Kbt(i="",a=0,f="",g=Gbt){const w=f!==null&&f.length>0?`${g}${f}`:"";return`${xZe}-${i}${w}-${a}`}const wB=(i,a,f,g,w,v)=>{const b=f.id,E=CZe(g[b]);if(b!=="root"){let _=EX;f.start===!0&&(_=uZe),f.start===!1&&(_=lZe),f.type!==dB&&(_=f.type),TX[b]||(TX[b]={id:b,shape:_,description:ei.sanitizeText(b,Re()),classes:`${E} ${pZe}`});const S=TX[b];f.description&&(Array.isArray(S.description)?(S.shape=Ubt,S.description.push(f.description)):S.description.length>0?(S.shape=Ubt,S.description===b?S.description=[f.description]:S.description=[S.description,f.description]):(S.shape=EX,S.description=f.description),S.description=ei.sanitizeTextOrArray(S.description,Re())),S.description.length===1&&S.shape===Ubt&&(S.shape=EX),!S.type&&f.doc&&(Wt.info("Setting cluster for ",b,Wbt(f)),S.type="group",S.dir=Wbt(f),S.shape=f.type===Sqt?hZe:fZe,S.classes=S.classes+" "+vZe+" "+(v?yZe:""));const I={labelStyle:"",shape:S.shape,labelText:S.description,classes:S.classes,style:"",id:b,dir:S.dir,domId:Kbt(b,_8),type:S.type,padding:15};if(I.centerLabel=!0,f.note){const B={labelStyle:"",shape:dZe,labelText:f.note.text,classes:mZe,style:"",id:b+kZe+"-"+_8,domId:Kbt(b,_8,Kqt),type:S.type,padding:15},F={labelStyle:"",shape:gZe,labelText:f.note.text,classes:S.classes,style:"",id:b+Wqt,domId:Kbt(b,_8,Gqt),type:"group",padding:0};_8++;const R=b+Wqt;i.setNode(R,F),i.setNode(B.id,B),i.setNode(b,I),i.setParent(b,R),i.setParent(B.id,R);let q=b,X=B.id;f.note.position==="left of"&&(q=B.id,X=b),i.setEdge(q,X,{arrowhead:"none",arrowType:"",style:Yqt,labelStyle:"",classes:wZe,arrowheadStyle:Xqt,labelpos:Qqt,labelType:Jqt,thickness:Zqt})}else i.setNode(b,I)}a&&a.id!=="root"&&(Wt.trace("Setting node ",b," to be child of its parent ",a.id),i.setParent(b,a.id)),f.doc&&(Wt.trace("Adding nodes children "),_Ze(i,f,f.doc,g,w,!v))},_Ze=(i,a,f,g,w,v)=>{Wt.trace("items",f),f.forEach(b=>{switch(b.stmt){case mX:wB(i,a,b,g,w,v);break;case dB:wB(i,a,b,g,w,v);break;case Bbt:{wB(i,a,b.state1,g,w,v),wB(i,a,b.state2,g,w,v);const E={id:"edge"+_8,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:Yqt,labelStyle:"",label:ei.sanitizeText(b.description,Re()),arrowheadStyle:Xqt,labelpos:Qqt,labelType:Jqt,thickness:Zqt,classes:Uqt};i.setEdge(b.state1.id,b.state2.id,E,_8),_8++}break}})},Wbt=(i,a=EJe)=>{let f=a;if(i.doc)for(let g=0;g{i.state||(i.state={}),i.state.arrowMarkerAbsolute=i.arrowMarkerAbsolute,$x.clear()}}},Symbol.toStringTag,{value:"Module"}));var Ybt=function(){var i=function(B,F,R,q){for(R=R||{},q=B.length;q--;R[B[q]]=F);return R},a=[6,8,10,11,12,14,16,17,18],f=[1,9],g=[1,10],w=[1,11],v=[1,12],b=[1,13],E=[1,14],_={trace:function(){},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:function(F,R,q,X,rt,at,ut){var pt=at.length-1;switch(rt){case 1:return at[pt-1];case 2:this.$=[];break;case 3:at[pt-1].push(at[pt]),this.$=at[pt-1];break;case 4:case 5:this.$=at[pt];break;case 6:case 7:this.$=[];break;case 8:X.setDiagramTitle(at[pt].substr(6)),this.$=at[pt].substr(6);break;case 9:this.$=at[pt].trim(),X.setAccTitle(this.$);break;case 10:case 11:this.$=at[pt].trim(),X.setAccDescription(this.$);break;case 12:X.addSection(at[pt].substr(8)),this.$=at[pt].substr(8);break;case 13:X.addTask(at[pt-1],at[pt]),this.$="task";break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:f,12:g,14:w,16:v,17:b,18:E},i(a,[2,7],{1:[2,1]}),i(a,[2,3]),{9:15,11:f,12:g,14:w,16:v,17:b,18:E},i(a,[2,5]),i(a,[2,6]),i(a,[2,8]),{13:[1,16]},{15:[1,17]},i(a,[2,11]),i(a,[2,12]),{19:[1,18]},i(a,[2,4]),i(a,[2,9]),i(a,[2,10]),i(a,[2,13])],defaultActions:{},parseError:function(F,R){if(R.recoverable)this.trace(F);else{var q=new Error(F);throw q.hash=R,q}},parse:function(F){var R=this,q=[0],X=[],rt=[null],at=[],ut=this.table,pt="",yt=0,mt=0,gt=2,ht=1,bt=at.slice.call(arguments,1),Z=Object.create(this.lexer),ft={yy:{}};for(var Y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Y)&&(ft.yy[Y]=this.yy[Y]);Z.setInput(F,ft.yy),ft.yy.lexer=Z,ft.yy.parser=this,typeof Z.yylloc>"u"&&(Z.yylloc={});var Et=Z.yylloc;at.push(Et);var V=Z.options&&Z.options.ranges;typeof ft.yy.parseError=="function"?this.parseError=ft.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Nt(){var Pe;return Pe=X.pop()||Z.lex()||ht,typeof Pe!="number"&&(Pe instanceof Array&&(X=Pe,Pe=X.pop()),Pe=R.symbols_[Pe]||Pe),Pe}for(var Dt,jt,Ct,Ft,_t={},xt,Gt,Be,Ot;;){if(jt=q[q.length-1],this.defaultActions[jt]?Ct=this.defaultActions[jt]:((Dt===null||typeof Dt>"u")&&(Dt=Nt()),Ct=ut[jt]&&ut[jt][Dt]),typeof Ct>"u"||!Ct.length||!Ct[0]){var vn="";Ot=[];for(xt in ut[jt])this.terminals_[xt]&&xt>gt&&Ot.push("'"+this.terminals_[xt]+"'");Z.showPosition?vn="Parse error on line "+(yt+1)+`: +`+Z.showPosition()+` +Expecting `+Ot.join(", ")+", got '"+(this.terminals_[Dt]||Dt)+"'":vn="Parse error on line "+(yt+1)+": Unexpected "+(Dt==ht?"end of input":"'"+(this.terminals_[Dt]||Dt)+"'"),this.parseError(vn,{text:Z.match,token:this.terminals_[Dt]||Dt,line:Z.yylineno,loc:Et,expected:Ot})}if(Ct[0]instanceof Array&&Ct.length>1)throw new Error("Parse Error: multiple actions possible at state: "+jt+", token: "+Dt);switch(Ct[0]){case 1:q.push(Dt),rt.push(Z.yytext),at.push(Z.yylloc),q.push(Ct[1]),Dt=null,mt=Z.yyleng,pt=Z.yytext,yt=Z.yylineno,Et=Z.yylloc;break;case 2:if(Gt=this.productions_[Ct[1]][1],_t.$=rt[rt.length-Gt],_t._$={first_line:at[at.length-(Gt||1)].first_line,last_line:at[at.length-1].last_line,first_column:at[at.length-(Gt||1)].first_column,last_column:at[at.length-1].last_column},V&&(_t._$.range=[at[at.length-(Gt||1)].range[0],at[at.length-1].range[1]]),Ft=this.performAction.apply(_t,[pt,mt,yt,ft.yy,Ct[1],rt,at].concat(bt)),typeof Ft<"u")return Ft;Gt&&(q=q.slice(0,-1*Gt*2),rt=rt.slice(0,-1*Gt),at=at.slice(0,-1*Gt)),q.push(this.productions_[Ct[1]][0]),rt.push(_t.$),at.push(_t._$),Be=ut[q[q.length-2]][q[q.length-1]],q.push(Be);break;case 3:return!0}}return!0}},S=function(){var B={EOF:1,parseError:function(R,q){if(this.yy.parser)this.yy.parser.parseError(R,q);else throw new Error(R)},setInput:function(F,R){return this.yy=R||this.yy||{},this._input=F,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},input:function(){var F=this._input[0];this.yytext+=F,this.yyleng++,this.offset++,this.match+=F,this.matched+=F;var R=F.match(/(?:\r\n?|\n).*/g);return R?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),F},unput:function(F){var R=F.length,q=F.split(/(?:\r\n?|\n)/g);this._input=F+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-R),this.offset-=R;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),q.length-1&&(this.yylineno-=q.length-1);var rt=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:q?(q.length===X.length?this.yylloc.first_column:0)+X[X.length-q.length].length-q[0].length:this.yylloc.first_column-R},this.options.ranges&&(this.yylloc.range=[rt[0],rt[0]+this.yyleng-R]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(F){this.unput(this.match.slice(F))},pastInput:function(){var F=this.matched.substr(0,this.matched.length-this.match.length);return(F.length>20?"...":"")+F.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var F=this.match;return F.length<20&&(F+=this._input.substr(0,20-F.length)),(F.substr(0,20)+(F.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var F=this.pastInput(),R=new Array(F.length+1).join("-");return F+this.upcomingInput()+` +`+R+"^"},test_match:function(F,R){var q,X,rt;if(this.options.backtrack_lexer&&(rt={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&&(rt.yylloc.range=this.yylloc.range.slice(0))),X=F[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+F[0].length},this.yytext+=F[0],this.match+=F[0],this.matches=F,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(F[0].length),this.matched+=F[0],q=this.performAction.call(this,this.yy,this,R,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),q)return q;if(this._backtrack){for(var at in rt)this[at]=rt[at];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var F,R,q,X;this._more||(this.yytext="",this.match="");for(var rt=this._currentRules(),at=0;atR[0].length)){if(R=q,X=at,this.options.backtrack_lexer){if(F=this.test_match(q,rt[at]),F!==!1)return F;if(this._backtrack){R=!1;continue}else return!1}else if(!this.options.flex)break}return R?(F=this.test_match(R,rt[X]),F!==!1?F:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var R=this.next();return R||this.lex()},begin:function(R){this.conditionStack.push(R)},popState:function(){var R=this.conditionStack.length-1;return R>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(R){return R=this.conditionStack.length-1-Math.abs(R||0),R>=0?this.conditionStack[R]:"INITIAL"},pushState:function(R){this.begin(R)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(R,q,X,rt){switch(X){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;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},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 B}();_.lexer=S;function I(){this.yy={}}return I.prototype=_,_.Parser=I,new I}();Ybt.parser=Ybt;const AZe=Ybt;let CM="";const Xbt=[],mB=[],vB=[],LZe=function(){Xbt.length=0,mB.length=0,CM="",vB.length=0,Wg()},MZe=function(i){CM=i,Xbt.push(i)},DZe=function(){return Xbt},IZe=function(){let i=tHt();const a=100;let f=0;for(;!i&&f{f.people&&i.push(...f.people)}),[...new Set(i)].sort()},PZe=function(i,a){const f=a.substr(1).split(":");let g=0,w=[];f.length===1?(g=Number(f[0]),w=[]):(g=Number(f[0]),w=f[1].split(","));const v=w.map(E=>E.trim()),b={section:CM,type:CM,people:v,task:i,score:g};vB.push(b)},NZe=function(i){const a={section:CM,type:CM,description:i,task:i,classes:[]};mB.push(a)},tHt=function(){const i=function(f){return vB[f].processed};let a=!0;for(const[f,g]of vB.entries())i(f),a=a&&g.processed;return a},eHt={getConfig:()=>Re().journey,clear:LZe,setDiagramTitle:y2,getDiagramTitle:Jg,setAccTitle:ng,getAccTitle:Yg,setAccDescription:Xg,getAccDescription:Qg,addSection:MZe,getSections:DZe,getTasks:IZe,addTask:PZe,addTaskOrg:NZe,getActors:function(){return OZe()}},FZe=i=>`.label { + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + color: ${i.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${i.textColor} + } + + .legend { + fill: ${i.textColor}; + } + + .label text { + fill: #333; + } + .label { + color: ${i.textColor} + } + + .face { + ${i.faceColor?`fill: ${i.faceColor}`:"fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${i.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${i.fillType0?`fill: ${i.fillType0}`:""}; + } + .task-type-1, .section-type-1 { + ${i.fillType0?`fill: ${i.fillType1}`:""}; + } + .task-type-2, .section-type-2 { + ${i.fillType0?`fill: ${i.fillType2}`:""}; + } + .task-type-3, .section-type-3 { + ${i.fillType0?`fill: ${i.fillType3}`:""}; + } + .task-type-4, .section-type-4 { + ${i.fillType0?`fill: ${i.fillType4}`:""}; + } + .task-type-5, .section-type-5 { + ${i.fillType0?`fill: ${i.fillType5}`:""}; + } + .task-type-6, .section-type-6 { + ${i.fillType0?`fill: ${i.fillType6}`:""}; + } + .task-type-7, .section-type-7 { + ${i.fillType0?`fill: ${i.fillType7}`:""}; + } + + .actor-0 { + ${i.actor0?`fill: ${i.actor0}`:""}; + } + .actor-1 { + ${i.actor1?`fill: ${i.actor1}`:""}; + } + .actor-2 { + ${i.actor2?`fill: ${i.actor2}`:""}; + } + .actor-3 { + ${i.actor3?`fill: ${i.actor3}`:""}; + } + .actor-4 { + ${i.actor4?`fill: ${i.actor4}`:""}; + } + .actor-5 { + ${i.actor5?`fill: ${i.actor5}`:""}; + } +`,Qbt=function(i,a){return _Y(i,a)},BZe=function(i,a){const g=i.append("circle").attr("cx",a.cx).attr("cy",a.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),w=i.append("g");w.append("circle").attr("cx",a.cx-15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),w.append("circle").attr("cx",a.cx+15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function v(_){const S=jL().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);_.append("path").attr("class","mouth").attr("d",S).attr("transform","translate("+a.cx+","+(a.cy+2)+")")}function b(_){const S=jL().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);_.append("path").attr("class","mouth").attr("d",S).attr("transform","translate("+a.cx+","+(a.cy+7)+")")}function E(_){_.append("line").attr("class","mouth").attr("stroke",2).attr("x1",a.cx-5).attr("y1",a.cy+7).attr("x2",a.cx+5).attr("y2",a.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.score>3?v(w):a.score<3?b(w):E(w),g},nHt=function(i,a){const f=i.append("circle");return f.attr("cx",a.cx),f.attr("cy",a.cy),f.attr("class","actor-"+a.pos),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("r",a.r),f.class!==void 0&&f.attr("class",f.class),a.title!==void 0&&f.append("title").text(a.title),f},rHt=function(i,a){return ERe(i,a)},RZe=function(i,a){function f(w,v,b,E,_){return w+","+v+" "+(w+b)+","+v+" "+(w+b)+","+(v+E-_)+" "+(w+b-_*1.2)+","+(v+E)+" "+w+","+(v+E)}const g=i.append("polygon");g.attr("points",f(a.x,a.y,50,20,7)),g.attr("class","labelBox"),a.y=a.y+a.labelMargin,a.x=a.x+.5*a.labelMargin,rHt(i,a)},jZe=function(i,a,f){const g=i.append("g"),w=k9();w.x=a.x,w.y=a.y,w.fill=a.fill,w.width=f.width*a.taskCount+f.diagramMarginX*(a.taskCount-1),w.height=f.height,w.class="journey-section section-type-"+a.num,w.rx=3,w.ry=3,Qbt(g,w),sHt(f)(a.text,g,w.x,w.y,w.width,w.height,{class:"journey-section section-type-"+a.num},f,a.colour)};let iHt=-1;const $Ze=function(i,a,f){const g=a.x+f.width/2,w=i.append("g");iHt++;const v=300+5*30;w.append("line").attr("id","task"+iHt).attr("x1",g).attr("y1",a.y).attr("x2",g).attr("y2",v).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),BZe(w,{cx:g,cy:300+(5-a.score)*30,score:a.score});const b=k9();b.x=a.x,b.y=a.y,b.fill=a.fill,b.width=f.width,b.height=f.height,b.class="task task-type-"+a.num,b.rx=3,b.ry=3,Qbt(w,b);let E=a.x+14;a.people.forEach(_=>{const S=a.actors[_].color,I={cx:E,cy:a.y,r:7,fill:S,stroke:"#000",title:_,pos:a.actors[_].position};nHt(w,I),E+=10}),sHt(f)(a.task,w,b.x,b.y,b.width,b.height,{class:"task"},f,a.colour)},zZe=function(i,a){qBt(i,a)},sHt=function(){function i(w,v,b,E,_,S,I,B){const F=v.append("text").attr("x",b+_/2).attr("y",E+S/2+5).style("font-color",B).style("text-anchor","middle").text(w);g(F,I)}function a(w,v,b,E,_,S,I,B,F){const{taskFontSize:R,taskFontFamily:q}=B,X=w.split(//gi);for(let rt=0;rt{const w=zx[g].color,v={cx:20,cy:f,r:7,fill:w,stroke:"#000",pos:zx[g].position};yB.drawCircle(i,v);const b={x:40,y:f+7,fill:"#666",text:g,textMargin:a.boxTextMargin|5};yB.drawText(i,b),f+=20})}const CX=Re().journey,B9=CX.leftMargin,VZe=function(i,a,f,g){const w=Re().journey,v=Re().securityLevel;let b;v==="sandbox"&&(b=xr("#i"+a));const E=xr(v==="sandbox"?b.nodes()[0].contentDocument.body:"body");Xw.init();const _=E.select("#"+a);yB.initGraphics(_);const S=g.db.getTasks(),I=g.db.getDiagramTitle(),B=g.db.getActors();for(const at in zx)delete zx[at];let F=0;B.forEach(at=>{zx[at]={color:w.actorColours[F%w.actorColours.length],position:F},F++}),HZe(_),Xw.insert(0,0,B9,Object.keys(zx).length*50),UZe(_,S,0);const R=Xw.getBounds();I&&_.append("text").text(I).attr("x",B9).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);const q=R.stopy-R.starty+2*w.diagramMarginY,X=B9+R.stopx+2*w.diagramMarginX;Kg(_,q,X,w.useMaxWidth),_.append("line").attr("x1",B9).attr("y1",w.height*4).attr("x2",X-B9-4).attr("y2",w.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const rt=I?70:0;_.attr("viewBox",`${R.startx} -25 ${X} ${q+rt}`),_.attr("preserveAspectRatio","xMinYMin meet"),_.attr("height",q+rt+25)},Xw={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(i,a,f,g){i[a]===void 0?i[a]=f:i[a]=g(f,i[a])},updateBounds:function(i,a,f,g){const w=Re().journey,v=this;let b=0;function E(_){return function(I){b++;const B=v.sequenceItems.length-b+1;v.updateVal(I,"starty",a-B*w.boxMargin,Math.min),v.updateVal(I,"stopy",g+B*w.boxMargin,Math.max),v.updateVal(Xw.data,"startx",i-B*w.boxMargin,Math.min),v.updateVal(Xw.data,"stopx",f+B*w.boxMargin,Math.max),_!=="activation"&&(v.updateVal(I,"startx",i-B*w.boxMargin,Math.min),v.updateVal(I,"stopx",f+B*w.boxMargin,Math.max),v.updateVal(Xw.data,"starty",a-B*w.boxMargin,Math.min),v.updateVal(Xw.data,"stopy",g+B*w.boxMargin,Math.max))}}this.sequenceItems.forEach(E())},insert:function(i,a,f,g){const w=Math.min(i,f),v=Math.max(i,f),b=Math.min(a,g),E=Math.max(a,g);this.updateVal(Xw.data,"startx",w,Math.min),this.updateVal(Xw.data,"starty",b,Math.min),this.updateVal(Xw.data,"stopx",v,Math.max),this.updateVal(Xw.data,"stopy",E,Math.max),this.updateBounds(w,b,v,E)},bumpVerticalPos:function(i){this.verticalPos=this.verticalPos+i,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},Jbt=CX.sectionFills,aHt=CX.sectionColours,UZe=function(i,a,f){const g=Re().journey;let w="";const v=g.height*2+g.diagramMarginY,b=f+v;let E=0,_="#CCC",S="black",I=0;for(const[B,F]of a.entries()){if(w!==F.section){_=Jbt[E%Jbt.length],I=E%Jbt.length,S=aHt[E%aHt.length];let q=0;const X=F.section;for(let at=B;at(zx[X]&&(q[X]=zx[X]),q),{});F.x=B*g.taskMargin+B*g.width+B9,F.y=b,F.width=g.diagramMarginX,F.height=g.diagramMarginY,F.colour=S,F.fill=_,F.num=I,F.actors=R,yB.drawTask(i,F,g),Xw.insert(F.x,F.y,F.x+F.width+g.taskMargin,300+5*30)}},oHt={setConf:qZe,draw:VZe},GZe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:AZe,db:eHt,renderer:oHt,styles:FZe,init:i=>{oHt.setConf(i.journey),eHt.clear()}}},Symbol.toStringTag,{value:"Module"})),KZe=(i,a,f)=>{const{parentById:g}=f,w=new Set;let v=i;for(;v;){if(w.add(v),v===a)return v;v=g[v]}for(v=a;v;){if(w.has(v))return v;v=g[v]}return"root"};function _X(i){throw new Error('Could not dynamically require "'+i+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var cHt={exports:{}};(function(i,a){(function(f){i.exports=f()})(function(){return function(){function f(g,w,v){function b(S,I){if(!w[S]){if(!g[S]){var B=typeof _X=="function"&&_X;if(!I&&B)return B(S,!0);if(E)return E(S,!0);var F=new Error("Cannot find module '"+S+"'");throw F.code="MODULE_NOT_FOUND",F}var R=w[S]={exports:{}};g[S][0].call(R.exports,function(q){var X=g[S][1][q];return b(X||q)},R,R.exports,f,g,w,v)}return w[S].exports}for(var E=typeof _X=="function"&&_X,_=0;_0&&arguments[0]!==void 0?arguments[0]:{},F=B.defaultLayoutOptions,R=F===void 0?{}:F,q=B.algorithms,X=q===void 0?["layered","stress","mrtree","radial","force","disco","sporeOverlap","sporeCompaction","rectpacking"]:q,rt=B.workerFactory,at=B.workerUrl;if(b(this,S),this.defaultLayoutOptions=R,this.initialized=!1,typeof at>"u"&&typeof rt>"u")throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.");var ut=rt;typeof at<"u"&&typeof rt>"u"&&(ut=function(mt){return new Worker(mt)});var pt=ut(at);if(typeof pt.postMessage!="function")throw new TypeError("Created worker does not provide the required 'postMessage' function.");this.worker=new _(pt),this.worker.postMessage({cmd:"register",algorithms:X}).then(function(yt){return I.initialized=!0}).catch(console.err)}return v(S,[{key:"layout",value:function(B){var F=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},R=F.layoutOptions,q=R===void 0?this.defaultLayoutOptions:R,X=F.logging,rt=X===void 0?!1:X,at=F.measureExecutionTime,ut=at===void 0?!1:at;return B?this.worker.postMessage({cmd:"layout",graph:B,layoutOptions:q,options:{logging:rt,measureExecutionTime:ut}}):Promise.reject(new Error("Missing mandatory parameter 'graph'."))}},{key:"knownLayoutAlgorithms",value:function(){return this.worker.postMessage({cmd:"algorithms"})}},{key:"knownLayoutOptions",value:function(){return this.worker.postMessage({cmd:"options"})}},{key:"knownLayoutCategories",value:function(){return this.worker.postMessage({cmd:"categories"})}},{key:"terminateWorker",value:function(){this.worker.terminate()}}]),S}();w.default=E;var _=function(){function S(I){var B=this;if(b(this,S),I===void 0)throw new Error("Missing mandatory parameter 'worker'.");this.resolvers={},this.worker=I,this.worker.onmessage=function(F){setTimeout(function(){B.receive(B,F)},0)}}return v(S,[{key:"postMessage",value:function(B){var F=this.id||0;this.id=F+1,B.id=F;var R=this;return new Promise(function(q,X){R.resolvers[F]=function(rt,at){rt?(R.convertGwtStyleError(rt),X(rt)):q(at)},R.worker.postMessage(B)})}},{key:"receive",value:function(B,F){var R=F.data,q=B.resolvers[R.id];q&&(delete B.resolvers[R.id],R.error?q(R.error):q(null,R.data))}},{key:"terminate",value:function(){this.worker.terminate&&this.worker.terminate()}},{key:"convertGwtStyleError",value:function(B){if(B){var F=B.__java$exception;F&&(F.cause&&F.cause.backingJsObject&&(B.cause=F.cause.backingJsObject,this.convertGwtStyleError(B.cause)),delete B.__java$exception)}}}]),S}()},{}],2:[function(f,g,w){(function(v){(function(){var b;typeof window<"u"?b=window:typeof v<"u"?b=v:typeof self<"u"&&(b=self);var E;function _(){}function S(){}function I(){}function B(){}function F(){}function R(){}function q(){}function X(){}function rt(){}function at(){}function ut(){}function pt(){}function yt(){}function mt(){}function gt(){}function ht(){}function bt(){}function Z(){}function ft(){}function Y(){}function Et(){}function V(){}function Nt(){}function Dt(){}function jt(){}function Ct(){}function Ft(){}function _t(){}function xt(){}function Gt(){}function Be(){}function Ot(){}function vn(){}function Pe(){}function Ee(){}function nn(){}function sn(){}function me(){}function Fe(){}function Qt(){}function Ae(){}function Se(){}function Dn(){}function oe(){}function Pr(){}function we(){}function Ri(){}function yi(){}function da(){}function Ss(){}function Ra(){}function fr(){}function An(){}function Pn(){}function Bn(){}function Te(){}function be(){}function Qe(){}function rn(){}function yn(){}function ja(){}function mo(){}function vo(){}function ma(){}function $a(){}function gs(){}function Nu(){}function ta(){}function l1(){}function _2(){}function ll(){}function Ac(){}function pc(){}function ka(){}function du(){}function ea(){}function co(){}function bc(){}function oa(){}function va(){}function na(){}function Xl(){}function Hc(){}function Zw(){}function mh(){}function _d(){}function b0(){}function Sd(){}function w0(){}function ag(){}function Yi(){}function cn(){}function Dr(){}function Si(){}function wc(){}function Fc(){}function vh(){}function Qc(){}function Wh(){}function Ad(){}function ls(){}function Ls(){}function Za(){}function _i(){}function gu(){}function Le(){}function ry(){}function $e(){}function h1(){}function rp(){}function iy(){}function S8(){}function f4(){}function Ql(){}function og(){}function S2(){}function A8(){}function A2(){}function d4(){}function q1(){}function Ld(){}function Md(){}function L8(){}function tm(){}function Hx(){}function cb(){}function Vx(){}function g4(){}function sy(){}function ip(){}function LM(){}function jl(){}function z9(){}function Vc(){}function PX(){}function L2(){}function NX(){}function kB(){}function FX(){}function EB(){}function f1(){}function ay(){}function q9(){}function TB(){}function ub(){}function oy(){}function BX(){}function M2(){}function RX(){}function jX(){}function Ux(){}function H9(){}function CB(){}function M8(){}function $X(){}function D8(){}function zX(){}function qX(){}function HX(){}function VX(){}function UX(){}function GX(){}function KX(){}function WX(){}function YX(){}function XX(){}function QX(){}function MM(){}function JX(){}function ZX(){}function V9(){}function _B(){}function Gx(){}function tQ(){}function eQ(){}function nQ(){}function rQ(){}function iQ(){}function U9(){}function DM(){}function SB(){}function p4(){}function b4(){}function sQ(){}function _f(){}function Kx(){}function aQ(){}function I8(){}function m0(){}function oQ(){}function cQ(){}function uQ(){}function lQ(){}function G9(){}function IM(){}function AB(){}function OM(){}function Wx(){}function hQ(){}function LB(){}function MB(){}function fQ(){}function dQ(){}function gQ(){}function pQ(){}function bQ(){}function wQ(){}function v0(){}function em(){}function mQ(){}function DB(){}function IB(){}function vQ(){}function w4(){}function O8(){}function PM(){}function cy(){}function P8(){}function yQ(){}function K9(){}function Dd(){}function OB(){}function NM(){}function N8(){}function FM(){}function PB(){}function xQ(){}function BM(){}function kQ(){}function EQ(){}function NB(){}function Yx(){}function FB(){}function Xx(){}function TQ(){}function RM(){}function CQ(){}function _Q(){}function SQ(){}function AQ(){}function BB(){}function LQ(){}function MQ(){}function DQ(){}function RB(){}function IQ(){}function OQ(){}function PQ(){}function jB(){}function NQ(){}function FQ(){}function $B(){}function zB(){}function qB(){}function BQ(){}function RQ(){}function F8(){}function Qx(){}function W9(){}function jQ(){}function jM(){}function Y9(){}function $M(){}function HB(){}function VB(){}function $Q(){}function zQ(){}function qQ(){}function UB(){}function GB(){}function HQ(){}function VQ(){}function UQ(){}function GQ(){}function KQ(){}function KB(){}function WQ(){}function YQ(){}function XQ(){}function QQ(){}function WB(){}function X9(){}function JQ(){}function ZQ(){}function YB(){}function tJ(){}function eJ(){}function nJ(){}function rJ(){}function iJ(){}function sJ(){}function XB(){}function aJ(){}function QB(){}function oJ(){}function cJ(){}function uJ(){}function Q9(){}function lJ(){}function J9(){}function hJ(){}function JB(){}function ZB(){}function tR(){}function eR(){}function nm(){}function nR(){}function rR(){}function iR(){}function sR(){}function fJ(){}function Jx(){}function zM(){}function m4(){}function dJ(){}function gJ(){}function Z9(){}function pJ(){}function aR(){}function bJ(){}function wJ(){}function mJ(){}function vJ(){}function yJ(){}function xJ(){}function kJ(){}function EJ(){}function TJ(){}function qM(){}function HM(){}function CJ(){}function _J(){}function SJ(){}function AJ(){}function LJ(){}function MJ(){}function oR(){}function cR(){}function DJ(){}function uR(){}function lR(){}function IJ(){}function OJ(){}function PJ(){}function NJ(){}function FJ(){}function BJ(){}function RJ(){}function VM(){}function jJ(){}function B8(){}function $J(){}function hR(){}function zJ(){}function qJ(){}function HJ(){}function VJ(){}function UJ(){}function GJ(){}function KJ(){}function WJ(){}function YJ(){}function XJ(){}function QJ(){}function JJ(){}function ZJ(){}function tZ(){}function Zx(){}function fR(){}function eZ(){}function nZ(){}function rZ(){}function dR(){}function iZ(){}function tC(){}function sZ(){}function aZ(){}function oZ(){}function cZ(){}function uZ(){}function lZ(){}function hZ(){}function fZ(){}function dZ(){}function gZ(){}function t6(){}function pZ(){}function bZ(){}function wZ(){}function mZ(){}function vZ(){}function yZ(){}function xZ(){}function kZ(){}function eC(){}function EZ(){}function TZ(){}function CZ(){}function _Z(){}function SZ(){}function AZ(){}function LZ(){}function MZ(){}function e6(){}function gR(){}function DZ(){}function UM(){}function IZ(){}function OZ(){}function PZ(){}function NZ(){}function FZ(){}function BZ(){}function RZ(){}function pR(){}function jZ(){}function bR(){}function $Z(){}function wR(){}function mR(){}function vR(){}function zZ(){}function qZ(){}function yR(){}function HZ(){}function xR(){}function VZ(){}function UZ(){}function GM(){}function GZ(){}function KZ(){}function WZ(){}function YZ(){}function XZ(){}function kR(){}function QZ(){}function JZ(){}function ZZ(){}function ttt(){}function d2t(){}function ett(){}function ntt(){}function rtt(){}function itt(){}function stt(){}function att(){}function ott(){}function ctt(){}function utt(){}function ltt(){}function htt(){}function ftt(){}function dtt(){}function gtt(){}function ptt(){}function Uc(){}function btt(){}function nC(){}function mc(){}function pu(){}function ts(){}function KM(){}function wtt(){}function mtt(){}function vtt(){}function n6(){}function uy(){}function R8(){}function WM(){}function ytt(){}function YM(){}function xtt(){}function ktt(){}function ER(){}function Ett(){}function Ttt(){}function XM(){}function Ctt(){}function $l(){}function Wu(){}function _tt(){}function TR(){}function Stt(){}function ly(){}function hy(){}function v4(){}function sp(){}function r6(){}function QM(){}function CR(){}function _R(){}function Att(){}function j8(){}function cg(){}function Ltt(){}function lb(){}function rC(){}function i6(){}function hb(){}function SR(){}function AR(){}function LR(){}function Mtt(){}function s6(){}function fy(){}function ap(){}function fb(){}function y4(){}function $8(){}function iC(){}function JM(){}function Dtt(){}function MR(){}function DR(){}function IR(){}function z8(){}function je(){}function OR(){}function Itt(){}function q8(){}function H8(){}function PR(){}function Ott(){}function Ptt(){}function Ntt(){}function Ftt(){}function Btt(){}function Rtt(){}function jtt(){}function $tt(){}function ZM(){}function NR(){}function ztt(){}function qtt(){}function sC(){}function FR(){}function x4(){}function k4(){}function BR(){}function RR(){}function jR(){}function $R(){}function Htt(){}function aC(){}function dy(){}function zR(){}function V8(){}function Vtt(){}function Utt(){}function E4(){}function qR(){}function U8(){}function Lc(){}function HR(){}function VR(){}function a6(){}function UR(){}function Gtt(){}function oC(){}function GR(){}function cC(){}function tD(){}function d1(){}function eD(){}function nD(){}function o6(){}function Ktt(){}function Wtt(){}function Ytt(){}function Xtt(){}function gy(){}function KR(){}function op(){}function Sf(){}function WR(){}function YR(){}function XR(){}function QR(){}function JR(){}function ZR(){}function g1(){}function Fu(){}function Qtt(){}function Jtt(){}function Ztt(){}function Bu(){}function uC(){}function tj(){}function ej(){}function c6(){}function tet(){}function G8(){}function eet(){}function nj(){}function net(){}function ret(){}function lC(){}function rj(){}function rD(){}function hC(){}function iet(){}function set(){}function iD(){}function fC(){}function H1(){}function K8(){}function aet(){}function W8(){}function sD(){}function D2(){}function dC(){}function aD(){}function p1(){}function gC(){}function V1(){}function U1(){}function oet(){}function cet(){}function T4(){}function Y8(){}function X8(){}function pC(){}function uet(){}function u6(){}function ij(){}function sj(){}function het(){}function aj(){}function fet(){}function oj(){}function oD(){}function det(){}function bC(){}function get(){}function pet(){}function bet(){}function wet(){}function met(){}function cj(){}function vet(){}function yet(){}function xet(){}function uj(){}function ket(){}function Eet(){}function wC(){}function Tet(){}function Cet(){}function _et(){}function Aet(){}function Let(){}function Met(){}function lj(){}function Det(){}function hj(){}function Iet(){}function cD(){}function Oet(){}function fj(){}function Pet(){}function dj(){}function Net(){}function gj(){}function pj(){}function bj(){}function uD(){}function C4(){}function mC(){}function Id(){}function wj(){}function Q8(){}function lD(){}function Fet(){}function I2(){}function mj(){}function hD(){}function Bet(){}function vj(){}function vC(){NC()}function yj(){OD()}function yC(){OH()}function xC(){Eat()}function xj(){aS()}function kj(){Xxt()}function l6(){Vf()}function rm(){axt()}function J8(){mO()}function Ej(){PD()}function Ret(){cI()}function Tj(){EYt()}function h6(){ik()}function fD(){Qie()}function Cj(){s4t()}function jet(){jne()}function _j(){a4t()}function kC(){Ase()}function EC(){Rne()}function dD(){h7()}function $et(){hoe()}function zet(){loe()}function qet(){Pre()}function Het(){foe()}function Vet(){jb()}function Uet(){v$()}function Get(){Wkt()}function Ket(){Me()}function Wet(){doe()}function Yet(){$oe()}function Xet(){$ne()}function Qet(){hhe()}function Jet(){zne()}function Zet(){_0e()}function f6(){_6t()}function tnt(){Eg()}function Z8(){_ue()}function Yh(){xc()}function ent(){Xne()}function tE(){rk()}function TC(){ckt()}function nnt(){$b()}function rnt(){ukt()}function int(){ad()}function snt(){EO()}function ant(){Yot()}function ont(){iot()}function Xh(){_Zt()}function cnt(){vq()}function Sj(){jH()}function Aj(){si()}function unt(){eH()}function Lj(){F5t()}function Af(){iat()}function gD(){oV()}function lnt(){ykt()}function pD(t){Wn(t)}function Mj(t){this.a=t}function CC(t){this.a=t}function hnt(t){this.a=t}function Dj(t){this.a=t}function fnt(t){this.a=t}function dnt(t){this.a=t}function O2(t){this.a=t}function gnt(t){this.a=t}function Ij(t){this.a=t}function Oj(t){this.a=t}function pnt(t){this.a=t}function bnt(t){this.a=t}function eE(t){this.a=t}function im(t){this.a=t}function Pj(t){this.a=t}function nE(t){this.a=t}function sm(t){this.a=t}function wnt(t){this.a=t}function py(t){this.a=t}function Nj(t){this.a=t}function ug(t){this.a=t}function mnt(t){this.a=t}function am(t){this.b=t}function Fj(t){this.c=t}function Bj(t){this.a=t}function bD(t){this.a=t}function wD(t){this.a=t}function Rj(t){this.a=t}function d6(t){this.a=t}function rE(t){this.a=t}function vnt(t){this.a=t}function jj(t){this.a=t}function $j(t){this.a=t}function zj(t){this.a=t}function ynt(t){this.a=t}function Mc(t){this.a=t}function qj(t){this.a=t}function Hj(t){this.a=t}function Vj(t){this.a=t}function _C(t){this.a=t}function g6(t){this.a=t}function lg(){this.a=[]}function Uj(t,e){t.a=e}function xnt(t,e){t.a=e}function g2t(t,e){t.b=e}function p2t(t,e){t.b=e}function Gj(t,e){t.b=e}function mD(t,e){t.j=e}function p6(t,e){t.g=e}function b2t(t,e){t.i=e}function b6(t,e){t.c=e}function y(t,e){t.c=e}function p(t,e){t.d=e}function x(t,e){t.d=e}function C(t,e){t.k=e}function L(t,e){t.c=e}function O(t,e){t.c=e}function P(t,e){t.a=e}function $(t,e){t.a=e}function H(t,e){t.f=e}function z(t,e){t.a=e}function G(t,e){t.b=e}function Q(t,e){t.d=e}function it(t,e){t.i=e}function lt(t,e){t.o=e}function dt(t,e){t.r=e}function vt(t,e){t.a=e}function Mt(t,e){t.b=e}function kt(t,e){t.e=e}function It(t,e){t.f=e}function Pt(t,e){t.g=e}function qt(t,e){t.e=e}function ce(t,e){t.f=e}function ee(t,e){t.f=e}function Ut(t,e){t.a=e}function ue(t,e){t.b=e}function Yt(t,e){t.n=e}function ye(t,e){t.a=e}function xe(t,e){t.c=e}function de(t,e){t.c=e}function ze(t,e){t.c=e}function ke(t,e){t.a=e}function xn(t,e){t.a=e}function tn(t,e){t.d=e}function an(t,e){t.d=e}function Sn(t,e){t.e=e}function Vn(t,e){t.e=e}function or(t,e){t.g=e}function Rn(t,e){t.f=e}function ar(t,e){t.j=e}function yr(t,e){t.a=e}function kr(t,e){t.a=e}function br(t,e){t.b=e}function dr(t){t.b=t.a}function kn(t){t.c=t.d.d}function wr(t){this.a=t}function Ar(t){this.a=t}function ci(t){this.a=t}function ui(t){this.a=t}function ps(t){this.a=t}function ga(t){this.a=t}function Li(t){this.a=t}function mi(t){this.a=t}function ys(t){this.a=t}function Xi(t){this.a=t}function li(t){this.a=t}function qi(t){this.a=t}function Ao(t){this.a=t}function Ka(t){this.a=t}function Ws(t){this.b=t}function Nr(t){this.b=t}function re(t){this.b=t}function Kn(t){this.a=t}function jr(t){this.a=t}function hr(t){this.c=t}function J(t){this.c=t}function Wa(t){this.c=t}function $r(t){this.d=t}function as(t){this.a=t}function Qn(t){this.a=t}function Jc(t){this.a=t}function uo(t){this.a=t}function Dc(t){this.a=t}function za(t){this.a=t}function lo(t){this.a=t}function _l(t){this.a=t}function Lf(t){this.a=t}function b1(t){this.a=t}function db(t){this.a=t}function w1(t){this.a=t}function Mf(t){this.a=t}function Od(t){this.a=t}function om(t){this.a=t}function by(t){this.a=t}function w6(t){this.a=t}function _4(t){this.a=t}function m6(t){this.a=t}function SC(t){this.a=t}function S4(t){this.a=t}function y0(t){this.a=t}function G1(t){this.a=t}function x0(t){this.a=t}function AC(t){this.a=t}function P2(t){this.a=t}function Kj(t){this.a=t}function knt(t){this.a=t}function iE(t){this.a=t}function Ent(t){this.a=t}function Tnt(t){this.a=t}function Cnt(t){this.a=t}function _nt(t){this.a=t}function LC(t){this.a=t}function sE(t){this.a=t}function vD(t){this.a=t}function N2(t){this.a=t}function yD(t){this.a=t}function Wj(t){this.a=t}function Snt(t){this.a=t}function gb(t){this.a=t}function xD(t){this.a=t}function Yj(t){this.a=t}function aE(t){this.a=t}function cp(t){this.a=t}function Xj(t){this.a=t}function w2t(t){this.a=t}function MC(t){this.a=t}function Qj(t){this.e=t}function oE(t){this.a=t}function JHt(t){this.a=t}function v6(t){this.a=t}function m2t(t){this.a=t}function ZHt(t){this.a=t}function tVt(t){this.a=t}function eVt(t){this.a=t}function nVt(t){this.a=t}function rVt(t){this.a=t}function iVt(t){this.a=t}function sVt(t){this.a=t}function aVt(t){this.a=t}function oVt(t){this.a=t}function cVt(t){this.a=t}function uVt(t){this.a=t}function v2t(t){this.a=t}function lVt(t){this.a=t}function hVt(t){this.a=t}function fVt(t){this.a=t}function dVt(t){this.a=t}function gVt(t){this.a=t}function pVt(t){this.a=t}function bVt(t){this.a=t}function wVt(t){this.a=t}function mVt(t){this.a=t}function vVt(t){this.a=t}function yVt(t){this.a=t}function xVt(t){this.a=t}function kVt(t){this.a=t}function EVt(t){this.a=t}function TVt(t){this.a=t}function CVt(t){this.a=t}function _Vt(t){this.a=t}function SVt(t){this.a=t}function AVt(t){this.a=t}function LVt(t){this.a=t}function MVt(t){this.a=t}function DVt(t){this.a=t}function IVt(t){this.a=t}function OVt(t){this.a=t}function PVt(t){this.a=t}function NVt(t){this.a=t}function FVt(t){this.a=t}function BVt(t){this.a=t}function RVt(t){this.a=t}function jVt(t){this.a=t}function $Vt(t){this.a=t}function zVt(t){this.a=t}function qVt(t){this.a=t}function HVt(t){this.a=t}function VVt(t){this.a=t}function UVt(t){this.a=t}function GVt(t){this.a=t}function KVt(t){this.a=t}function WVt(t){this.c=t}function YVt(t){this.b=t}function XVt(t){this.a=t}function QVt(t){this.a=t}function JVt(t){this.a=t}function ZVt(t){this.a=t}function tUt(t){this.a=t}function eUt(t){this.a=t}function nUt(t){this.a=t}function rUt(t){this.a=t}function iUt(t){this.a=t}function sUt(t){this.a=t}function aUt(t){this.a=t}function oUt(t){this.a=t}function cUt(t){this.a=t}function uUt(t){this.a=t}function lUt(t){this.a=t}function hUt(t){this.a=t}function fUt(t){this.a=t}function dUt(t){this.a=t}function gUt(t){this.a=t}function pUt(t){this.a=t}function bUt(t){this.a=t}function wUt(t){this.a=t}function mUt(t){this.a=t}function vUt(t){this.a=t}function yUt(t){this.a=t}function xUt(t){this.a=t}function kUt(t){this.a=t}function hg(t){this.a=t}function A4(t){this.a=t}function EUt(t){this.a=t}function TUt(t){this.a=t}function CUt(t){this.a=t}function _Ut(t){this.a=t}function SUt(t){this.a=t}function AUt(t){this.a=t}function LUt(t){this.a=t}function MUt(t){this.a=t}function DUt(t){this.a=t}function IUt(t){this.a=t}function OUt(t){this.a=t}function PUt(t){this.a=t}function NUt(t){this.a=t}function FUt(t){this.a=t}function BUt(t){this.a=t}function RUt(t){this.a=t}function jUt(t){this.a=t}function $Ut(t){this.a=t}function zUt(t){this.a=t}function qUt(t){this.a=t}function HUt(t){this.a=t}function VUt(t){this.a=t}function UUt(t){this.a=t}function GUt(t){this.a=t}function KUt(t){this.a=t}function WUt(t){this.a=t}function Jj(t){this.a=t}function YUt(t){this.f=t}function XUt(t){this.a=t}function QUt(t){this.a=t}function JUt(t){this.a=t}function ZUt(t){this.a=t}function tGt(t){this.a=t}function eGt(t){this.a=t}function nGt(t){this.a=t}function rGt(t){this.a=t}function iGt(t){this.a=t}function sGt(t){this.a=t}function aGt(t){this.a=t}function oGt(t){this.a=t}function cGt(t){this.a=t}function uGt(t){this.a=t}function lGt(t){this.a=t}function hGt(t){this.a=t}function fGt(t){this.a=t}function dGt(t){this.a=t}function gGt(t){this.a=t}function pGt(t){this.a=t}function bGt(t){this.a=t}function wGt(t){this.a=t}function mGt(t){this.a=t}function vGt(t){this.a=t}function yGt(t){this.a=t}function xGt(t){this.a=t}function kGt(t){this.a=t}function EGt(t){this.a=t}function Ant(t){this.a=t}function y2t(t){this.a=t}function Ni(t){this.b=t}function TGt(t){this.a=t}function CGt(t){this.a=t}function _Gt(t){this.a=t}function SGt(t){this.a=t}function AGt(t){this.a=t}function LGt(t){this.a=t}function MGt(t){this.a=t}function DGt(t){this.b=t}function IGt(t){this.a=t}function kD(t){this.a=t}function OGt(t){this.a=t}function PGt(t){this.a=t}function x2t(t){this.c=t}function Zj(t){this.e=t}function t$(t){this.a=t}function e$(t){this.a=t}function Lnt(t){this.a=t}function NGt(t){this.d=t}function FGt(t){this.a=t}function k2t(t){this.a=t}function E2t(t){this.a=t}function cm(t){this.e=t}function Pen(){this.a=0}function Er(){dl(this)}function ge(){Hrt(this)}function Mnt(){vee(this)}function BGt(){}function um(){this.c=LIt}function RGt(t,e){t.b+=e}function Nen(t,e){e.Wb(t)}function Fen(t){return t.a}function Ben(t){return t.a}function Ren(t){return t.a}function jen(t){return t.a}function $en(t){return t.a}function nt(t){return t.e}function zen(){return null}function qen(){return null}function Hen(){cwt(),kCn()}function Ven(t){t.b.Of(t.e)}function jGt(t){t.b=new Xnt}function DC(t,e){t.b=e-t.b}function IC(t,e){t.a=e-t.a}function In(t,e){t.push(e)}function $Gt(t,e){t.sort(e)}function zGt(t,e){e.jd(t.a)}function Uen(t,e){Qs(e,t)}function Gen(t,e,n){t.Yd(n,e)}function ED(t,e){t.e=e,e.b=t}function T2t(t){$d(),this.a=t}function qGt(t){$d(),this.a=t}function HGt(t){$d(),this.a=t}function Dnt(t){Lm(),this.a=t}function VGt(t){BE(),yht.le(t)}function C2t(){C2t=V,new Er}function F2(){uJt.call(this)}function _2t(){uJt.call(this)}function S2t(){F2.call(this)}function Int(){F2.call(this)}function UGt(){F2.call(this)}function TD(){F2.call(this)}function Yu(){F2.call(this)}function y6(){F2.call(this)}function Vr(){F2.call(this)}function yh(){F2.call(this)}function GGt(){F2.call(this)}function ac(){F2.call(this)}function KGt(){F2.call(this)}function WGt(){this.a=this}function n$(){this.Bb|=256}function YGt(){this.b=new nQt}function wy(t,e){t.length=e}function r$(t,e){pe(t.a,e)}function Ken(t,e){Jxt(t.c,e)}function Wen(t,e){qs(t.b,e)}function Yen(t,e){SH(t.a,e)}function Xen(t,e){Dat(t.a,e)}function cE(t,e){Ti(t.e,e)}function x6(t){HH(t.c,t.b)}function Qen(t,e){t.kc().Nb(e)}function A2t(t){this.a=Hbn(t)}function Os(){this.a=new Er}function XGt(){this.a=new Er}function L2t(){this.a=new pYt}function i$(){this.a=new ge}function Ont(){this.a=new ge}function M2t(){this.a=new ge}function Qh(){this.a=new _2}function B2(){this.a=new Uie}function D2t(){this.a=new S2}function I2t(){this.a=new Bne}function O2t(){this.a=new YJt}function QGt(){this.a=new ge}function JGt(){this.a=new ge}function ZGt(){this.a=new ge}function P2t(){this.a=new ge}function tKt(){this.d=new ge}function eKt(){this.a=new rre}function nKt(){this.a=new Os}function rKt(){this.a=new Er}function iKt(){this.b=new Er}function sKt(){this.b=new ge}function N2t(){this.e=new ge}function aKt(){this.a=new Vet}function oKt(){this.d=new ge}function cKt(){cne.call(this)}function uKt(){cne.call(this)}function lKt(){ge.call(this)}function F2t(){S2t.call(this)}function B2t(){i$.call(this)}function hKt(){uz.call(this)}function fKt(){P2t.call(this)}function OC(){BGt.call(this)}function Pnt(){OC.call(this)}function k6(){BGt.call(this)}function R2t(){k6.call(this)}function dKt(){q2t.call(this)}function gKt(){q2t.call(this)}function pKt(){q2t.call(this)}function bKt(){H2t.call(this)}function PC(){FR.call(this)}function j2t(){FR.call(this)}function Xu(){Qi.call(this)}function wKt(){IKt.call(this)}function mKt(){IKt.call(this)}function vKt(){Er.call(this)}function yKt(){Er.call(this)}function xKt(){Er.call(this)}function Nnt(){boe.call(this)}function kKt(){Os.call(this)}function EKt(){n$.call(this)}function Fnt(){kmt.call(this)}function $2t(){Er.call(this)}function Bnt(){kmt.call(this)}function Rnt(){Er.call(this)}function TKt(){Er.call(this)}function z2t(){U8.call(this)}function CKt(){z2t.call(this)}function _Kt(){U8.call(this)}function SKt(){hD.call(this)}function q2t(){this.a=new Os}function AKt(){this.a=new Er}function LKt(){this.a=new ge}function H2t(){this.a=new Er}function E6(){this.a=new Qi}function MKt(){this.j=new ge}function DKt(){this.a=new LWt}function IKt(){this.a=new qR}function V2t(){this.a=new KM}function NC(){NC=V,fht=new S}function jnt(){jnt=V,dht=new PKt}function $nt(){$nt=V,ght=new OKt}function OKt(){nE.call(this,"")}function PKt(){nE.call(this,"")}function NKt(t){jae.call(this,t)}function FKt(t){jae.call(this,t)}function U2t(t){Ij.call(this,t)}function G2t(t){iYt.call(this,t)}function Jen(t){iYt.call(this,t)}function Zen(t){G2t.call(this,t)}function tnn(t){G2t.call(this,t)}function enn(t){G2t.call(this,t)}function BKt(t){mst.call(this,t)}function RKt(t){mst.call(this,t)}function jKt(t){wZt.call(this,t)}function $Kt(t){pwt.call(this,t)}function FC(t){p$.call(this,t)}function K2t(t){p$.call(this,t)}function zKt(t){p$.call(this,t)}function W2t(t){E3n.call(this,t)}function Y2t(t){W2t.call(this,t)}function oc(t){Rte.call(this,t)}function qKt(t){oc.call(this,t)}function T6(){g6.call(this,{})}function HKt(){HKt=V,Cve=new Y}function s$(){s$=V,wht=new jQt}function VKt(){VKt=V,VTt=new _}function X2t(){X2t=V,UTt=new mt}function a$(){a$=V,cA=new bt}function znt(t){yE(),this.a=t}function qnt(t){E4t(),this.a=t}function my(t){_it(),this.f=t}function Hnt(t){_it(),this.f=t}function UKt(t){CZt(),this.a=t}function GKt(t){t.b=null,t.c=0}function nnn(t,e){t.e=e,_de(t,e)}function rnn(t,e){t.a=e,l4n(t)}function Vnt(t,e,n){t.a[e.g]=n}function inn(t,e,n){Cvn(n,t,e)}function snn(t,e){tan(e.i,t.n)}function KKt(t,e){Tpn(t).Cd(e)}function ann(t,e){t.a.ec().Mc(e)}function WKt(t,e){return t.g-e.g}function onn(t,e){return t*t/e}function Ie(t){return Wn(t),t}function Rt(t){return Wn(t),t}function CD(t){return Wn(t),t}function cnn(t){return new _C(t)}function unn(t){return new Oy(t)}function Q2t(t){return Wn(t),t}function lnn(t){return Wn(t),t}function o$(t){oc.call(this,t)}function No(t){oc.call(this,t)}function YKt(t){oc.call(this,t)}function Unt(t){Rte.call(this,t)}function uE(t){oc.call(this,t)}function zn(t){oc.call(this,t)}function Fo(t){oc.call(this,t)}function XKt(t){oc.call(this,t)}function C6(t){oc.call(this,t)}function up(t){oc.call(this,t)}function lp(t){oc.call(this,t)}function _6(t){oc.call(this,t)}function Pd(t){oc.call(this,t)}function Gnt(t){oc.call(this,t)}function Yr(t){oc.call(this,t)}function hl(t){Wn(t),this.a=t}function J2t(t){return nw(t),t}function BC(t){lyt(t,t.length)}function RC(t){return t.b==t.c}function vy(t){return!!t&&t.b}function hnn(t){return!!t&&t.k}function fnn(t){return!!t&&t.j}function dnn(t,e,n){t.c.Ef(e,n)}function QKt(t,e){t.be(e),e.ae(t)}function S6(t){$d(),this.a=Hr(t)}function Knt(){this.a=Gr(Hr(ro))}function JKt(){throw nt(new Vr)}function gnn(){throw nt(new Vr)}function Z2t(){throw nt(new Vr)}function ZKt(){throw nt(new Vr)}function pnn(){throw nt(new Vr)}function bnn(){throw nt(new Vr)}function c$(){c$=V,BE()}function hp(){ga.call(this,"")}function jC(){ga.call(this,"")}function pb(){ga.call(this,"")}function L4(){ga.call(this,"")}function twt(t){No.call(this,t)}function ewt(t){No.call(this,t)}function Nd(t){zn.call(this,t)}function lE(t){re.call(this,t)}function tWt(t){lE.call(this,t)}function Wnt(t){iz.call(this,t)}function Ynt(t){Pmt.call(this,t,0)}function Xnt(){Gyt.call(this,12,3)}function st(t,e){return Dne(t,e)}function u$(t,e){return Ost(t,e)}function wnn(t,e){return t.a-e.a}function mnn(t,e){return t.a-e.a}function vnn(t,e){return t.a-e.a}function ynn(t,e){return e in t.a}function eWt(t){return t.a?t.b:0}function xnn(t){return t.a?t.b:0}function knn(t,e,n){e.Cd(t.a[n])}function Enn(t,e,n){e.Pe(t.a[n])}function Tnn(t,e){t.b=new eo(e)}function Cnn(t,e){return t.b=e,t}function nWt(t,e){return t.c=e,t}function rWt(t,e){return t.f=e,t}function _nn(t,e){return t.g=e,t}function nwt(t,e){return t.a=e,t}function rwt(t,e){return t.f=e,t}function Snn(t,e){return t.k=e,t}function iwt(t,e){return t.a=e,t}function Ann(t,e){return t.e=e,t}function swt(t,e){return t.e=e,t}function Lnn(t,e){return t.f=e,t}function Mnn(t,e){t.b=!0,t.d=e}function Dnn(t,e){return t.b-e.b}function Inn(t,e){return t.g-e.g}function Onn(t,e){return t?0:e-1}function iWt(t,e){return t?0:e-1}function Pnn(t,e){return t?e-1:0}function Nnn(t,e){return t.s-e.s}function Fnn(t,e){return e.rg(t)}function lm(t,e){return t.b=e,t}function l$(t,e){return t.a=e,t}function hm(t,e){return t.c=e,t}function fm(t,e){return t.d=e,t}function dm(t,e){return t.e=e,t}function awt(t,e){return t.f=e,t}function $C(t,e){return t.a=e,t}function hE(t,e){return t.b=e,t}function fE(t,e){return t.c=e,t}function He(t,e){return t.c=e,t}function fn(t,e){return t.b=e,t}function Ve(t,e){return t.d=e,t}function Ue(t,e){return t.e=e,t}function Bnn(t,e){return t.f=e,t}function Ge(t,e){return t.g=e,t}function Ke(t,e){return t.a=e,t}function We(t,e){return t.i=e,t}function Ye(t,e){return t.j=e,t}function Rnn(t,e){jb(),uc(e,t)}function jnn(t,e,n){eun(t.a,e,n)}function h$(t){oit.call(this,t)}function sWt(t){i2n.call(this,t)}function aWt(t){jee.call(this,t)}function owt(t){jee.call(this,t)}function bb(t){jm.call(this,t)}function oWt(t){Xit.call(this,t)}function cWt(t){Xit.call(this,t)}function uWt(){bmt.call(this,"")}function Ea(){this.a=0,this.b=0}function lWt(){this.b=0,this.a=0}function hWt(t,e){t.b=0,Hy(t,e)}function fWt(t,e){return t.k=e,t}function $nn(t,e){return t.j=e,t}function znn(t,e){t.c=e,t.b=!0}function dWt(){dWt=V,Rve=Jvn()}function wb(){wb=V,D7e=uvn()}function gWt(){gWt=V,fa=xyn()}function cwt(){cwt=V,h2=JE()}function dE(){dE=V,AIt=lvn()}function pWt(){pWt=V,pTe=hvn()}function uwt(){uwt=V,Nc=o4n()}function m1(t){return t.e&&t.e()}function bWt(t){return t.l|t.m<<22}function wWt(t,e){return t.c._b(e)}function mWt(t,e){return pue(t.b,e)}function Qnt(t){return t?t.d:null}function qnn(t){return t?t.g:null}function Hnn(t){return t?t.i:null}function R2(t){return gg(t),t.o}function M4(t,e){return t.a+=e,t}function Jnt(t,e){return t.a+=e,t}function fp(t,e){return t.a+=e,t}function gm(t,e){return t.a+=e,t}function lwt(t,e){for(;t.Bd(e););}function f$(t){this.a=new A6(t)}function vWt(){throw nt(new Vr)}function yWt(){throw nt(new Vr)}function xWt(){throw nt(new Vr)}function kWt(){throw nt(new Vr)}function EWt(){throw nt(new Vr)}function TWt(){throw nt(new Vr)}function dp(t){this.a=new Lit(t)}function CWt(){this.a=new vS(kLt)}function _Wt(){this.b=new vS(zAt)}function SWt(){this.a=new vS(GLt)}function AWt(){this.b=new vS(cdt)}function LWt(){this.b=new vS(cdt)}function d$(t){this.a=0,this.b=t}function hwt(t){ipe(),NCn(this,t)}function gE(t){return _b(t),t.a}function _D(t){return t.b!=t.d.c}function fwt(t,e){return t.d[e.p]}function MWt(t,e){return J6n(t,e)}function dwt(t,e,n){t.splice(e,n)}function D4(t,e){for(;t.Re(e););}function DWt(t){t.c?Vde(t):Ude(t)}function IWt(){throw nt(new Vr)}function OWt(){throw nt(new Vr)}function PWt(){throw nt(new Vr)}function NWt(){throw nt(new Vr)}function FWt(){throw nt(new Vr)}function BWt(){throw nt(new Vr)}function RWt(){throw nt(new Vr)}function jWt(){throw nt(new Vr)}function $Wt(){throw nt(new Vr)}function zWt(){throw nt(new Vr)}function Vnn(){throw nt(new ac)}function Unn(){throw nt(new ac)}function SD(t){this.a=new qWt(t)}function qWt(t){Y0n(this,t,S3n())}function AD(t){return!t||mee(t)}function LD(t){return xd[t]!=-1}function Gnn(){_U!=0&&(_U=0),SU=-1}function HWt(){hht==null&&(hht=[])}function MD(t,e){U4.call(this,t,e)}function pE(t,e){MD.call(this,t,e)}function VWt(t,e){this.a=t,this.b=e}function UWt(t,e){this.a=t,this.b=e}function GWt(t,e){this.a=t,this.b=e}function KWt(t,e){this.a=t,this.b=e}function WWt(t,e){this.a=t,this.b=e}function YWt(t,e){this.a=t,this.b=e}function XWt(t,e){this.a=t,this.b=e}function bE(t,e){this.e=t,this.d=e}function gwt(t,e){this.b=t,this.c=e}function QWt(t,e){this.b=t,this.a=e}function JWt(t,e){this.b=t,this.a=e}function ZWt(t,e){this.b=t,this.a=e}function tYt(t,e){this.b=t,this.a=e}function eYt(t,e){this.a=t,this.b=e}function Znt(t,e){this.a=t,this.b=e}function nYt(t,e){this.a=t,this.f=e}function pm(t,e){this.g=t,this.i=e}function Fr(t,e){this.f=t,this.g=e}function rYt(t,e){this.b=t,this.c=e}function iYt(t){Tmt(t.dc()),this.c=t}function Knn(t,e){this.a=t,this.b=e}function sYt(t,e){this.a=t,this.b=e}function aYt(t){this.a=u(Hr(t),15)}function pwt(t){this.a=u(Hr(t),15)}function oYt(t){this.a=u(Hr(t),85)}function g$(t){this.b=u(Hr(t),85)}function p$(t){this.b=u(Hr(t),51)}function b$(){this.q=new b.Date}function trt(t,e){this.a=t,this.b=e}function cYt(t,e){return Eu(t.b,e)}function DD(t,e){return t.b.Hc(e)}function uYt(t,e){return t.b.Ic(e)}function lYt(t,e){return t.b.Qc(e)}function hYt(t,e){return t.b.Hc(e)}function fYt(t,e){return t.c.uc(e)}function dYt(t,e){return Ci(t.c,e)}function v1(t,e){return t.a._b(e)}function gYt(t,e){return t>e&&e0}function art(t,e){return Rc(t,e)<0}function MYt(t,e){return kit(t.a,e)}function frn(t,e){Ine.call(this,t,e)}function kwt(t){zit(),wZt.call(this,t)}function Ewt(t,e){Cte(t,t.length,e)}function ND(t,e){Zte(t,t.length,e)}function WC(t,e){return t.a.get(e)}function DYt(t,e){return Eu(t.e,e)}function Twt(t){return Wn(t),!1}function Cwt(t){this.a=u(Hr(t),229)}function C$(t){gn.call(this,t,21)}function _$(t,e){Fr.call(this,t,e)}function ort(t,e){Fr.call(this,t,e)}function IYt(t,e){this.b=t,this.a=e}function S$(t,e){this.d=t,this.e=e}function OYt(t,e){this.a=t,this.b=e}function PYt(t,e){this.a=t,this.b=e}function NYt(t,e){this.a=t,this.b=e}function FYt(t,e){this.a=t,this.b=e}function M6(t,e){this.a=t,this.b=e}function BYt(t,e){this.b=t,this.a=e}function _wt(t,e){this.b=t,this.a=e}function Swt(t,e){Fr.call(this,t,e)}function Awt(t,e){Fr.call(this,t,e)}function I4(t,e){Fr.call(this,t,e)}function crt(t,e){Fr.call(this,t,e)}function urt(t,e){Fr.call(this,t,e)}function lrt(t,e){Fr.call(this,t,e)}function A$(t,e){Fr.call(this,t,e)}function Lwt(t,e){this.b=t,this.a=e}function L$(t,e){Fr.call(this,t,e)}function Mwt(t,e){this.b=t,this.a=e}function M$(t,e){Fr.call(this,t,e)}function RYt(t,e){this.b=t,this.a=e}function Dwt(t,e){Fr.call(this,t,e)}function hrt(t,e){Fr.call(this,t,e)}function FD(t,e){Fr.call(this,t,e)}function YC(t,e,n){t.splice(e,0,n)}function drn(t,e,n){t.Mb(n)&&e.Cd(n)}function grn(t,e,n){e.Pe(t.a.Ye(n))}function prn(t,e,n){e.Dd(t.a.Ze(n))}function brn(t,e,n){e.Cd(t.a.Kb(n))}function wrn(t,e){return Ju(t.c,e)}function mrn(t,e){return Ju(t.e,e)}function D$(t,e){Fr.call(this,t,e)}function I$(t,e){Fr.call(this,t,e)}function XC(t,e){Fr.call(this,t,e)}function Iwt(t,e){Fr.call(this,t,e)}function Ps(t,e){Fr.call(this,t,e)}function O$(t,e){Fr.call(this,t,e)}function jYt(t,e){this.a=t,this.b=e}function $Yt(t,e){this.a=t,this.b=e}function zYt(t,e){this.a=t,this.b=e}function qYt(t,e){this.a=t,this.b=e}function HYt(t,e){this.a=t,this.b=e}function VYt(t,e){this.a=t,this.b=e}function UYt(t,e){this.b=t,this.a=e}function GYt(t,e){this.b=t,this.a=e}function Owt(t,e){this.b=t,this.a=e}function vE(t,e){this.c=t,this.d=e}function KYt(t,e){this.e=t,this.d=e}function WYt(t,e){this.a=t,this.b=e}function YYt(t,e){this.a=t,this.b=e}function XYt(t,e){this.a=t,this.b=e}function QYt(t,e){this.b=t,this.a=e}function JYt(t,e){this.b=e,this.c=t}function P$(t,e){Fr.call(this,t,e)}function BD(t,e){Fr.call(this,t,e)}function frt(t,e){Fr.call(this,t,e)}function Pwt(t,e){Fr.call(this,t,e)}function QC(t,e){Fr.call(this,t,e)}function drt(t,e){Fr.call(this,t,e)}function grt(t,e){Fr.call(this,t,e)}function RD(t,e){Fr.call(this,t,e)}function Nwt(t,e){Fr.call(this,t,e)}function prt(t,e){Fr.call(this,t,e)}function JC(t,e){Fr.call(this,t,e)}function Fwt(t,e){Fr.call(this,t,e)}function ZC(t,e){Fr.call(this,t,e)}function t_(t,e){Fr.call(this,t,e)}function ky(t,e){Fr.call(this,t,e)}function brt(t,e){Fr.call(this,t,e)}function wrt(t,e){Fr.call(this,t,e)}function Bwt(t,e){Fr.call(this,t,e)}function jD(t,e){Fr.call(this,t,e)}function O4(t,e){Fr.call(this,t,e)}function mrt(t,e){Fr.call(this,t,e)}function N$(t,e){Fr.call(this,t,e)}function $D(t,e){Fr.call(this,t,e)}function Ey(t,e){Fr.call(this,t,e)}function F$(t,e){Fr.call(this,t,e)}function Rwt(t,e){Fr.call(this,t,e)}function vrt(t,e){Fr.call(this,t,e)}function yrt(t,e){Fr.call(this,t,e)}function xrt(t,e){Fr.call(this,t,e)}function krt(t,e){Fr.call(this,t,e)}function Ert(t,e){Fr.call(this,t,e)}function Trt(t,e){Fr.call(this,t,e)}function Crt(t,e){Fr.call(this,t,e)}function ZYt(t,e){this.b=t,this.a=e}function jwt(t,e){Fr.call(this,t,e)}function tXt(t,e){this.a=t,this.b=e}function eXt(t,e){this.a=t,this.b=e}function nXt(t,e){this.a=t,this.b=e}function $wt(t,e){Fr.call(this,t,e)}function zwt(t,e){Fr.call(this,t,e)}function rXt(t,e){this.a=t,this.b=e}function vrn(t,e){return _E(),e!=t}function zD(t){return cr(t.a),t.b}function _rt(t){return _5n(t,t.c),t}function iXt(){return dWt(),new Rve}function sXt(){gz(),this.a=new ivt}function aXt(){JH(),this.a=new Os}function oXt(){ast(),this.b=new Os}function cXt(t,e){this.b=t,this.d=e}function uXt(t,e){this.a=t,this.b=e}function lXt(t,e){this.a=t,this.b=e}function hXt(t,e){this.a=t,this.b=e}function fXt(t,e){this.b=t,this.a=e}function qwt(t,e){Fr.call(this,t,e)}function Hwt(t,e){Fr.call(this,t,e)}function B$(t,e){Fr.call(this,t,e)}function wm(t,e){Fr.call(this,t,e)}function Srt(t,e){Fr.call(this,t,e)}function R$(t,e){Fr.call(this,t,e)}function Vwt(t,e){Fr.call(this,t,e)}function Uwt(t,e){Fr.call(this,t,e)}function qD(t,e){Fr.call(this,t,e)}function Gwt(t,e){Fr.call(this,t,e)}function Art(t,e){Fr.call(this,t,e)}function j$(t,e){Fr.call(this,t,e)}function Lrt(t,e){Fr.call(this,t,e)}function Mrt(t,e){Fr.call(this,t,e)}function Drt(t,e){Fr.call(this,t,e)}function Irt(t,e){Fr.call(this,t,e)}function Kwt(t,e){Fr.call(this,t,e)}function Ort(t,e){Fr.call(this,t,e)}function Wwt(t,e){Fr.call(this,t,e)}function HD(t,e){Fr.call(this,t,e)}function Prt(t,e){Fr.call(this,t,e)}function Ywt(t,e){Fr.call(this,t,e)}function VD(t,e){Fr.call(this,t,e)}function Xwt(t,e){Fr.call(this,t,e)}function dXt(t,e){this.b=t,this.a=e}function gXt(t,e){this.b=t,this.a=e}function pXt(t,e){this.b=t,this.a=e}function bXt(t,e){this.b=t,this.a=e}function Qwt(t,e){this.a=t,this.b=e}function wXt(t,e){this.a=t,this.b=e}function mXt(t,e){this.a=t,this.b=e}function se(t,e){this.a=t,this.b=e}function e_(t,e){Fr.call(this,t,e)}function UD(t,e){Fr.call(this,t,e)}function D6(t,e){Fr.call(this,t,e)}function n_(t,e){Fr.call(this,t,e)}function GD(t,e){Fr.call(this,t,e)}function Nrt(t,e){Fr.call(this,t,e)}function $$(t,e){Fr.call(this,t,e)}function r_(t,e){Fr.call(this,t,e)}function Frt(t,e){Fr.call(this,t,e)}function z$(t,e){Fr.call(this,t,e)}function P4(t,e){Fr.call(this,t,e)}function KD(t,e){Fr.call(this,t,e)}function i_(t,e){Fr.call(this,t,e)}function s_(t,e){Fr.call(this,t,e)}function WD(t,e){Fr.call(this,t,e)}function q$(t,e){Fr.call(this,t,e)}function N4(t,e){Fr.call(this,t,e)}function Brt(t,e){Fr.call(this,t,e)}function vXt(t,e){Fr.call(this,t,e)}function H$(t,e){Fr.call(this,t,e)}function yXt(t,e){this.a=t,this.b=e}function xXt(t,e){this.a=t,this.b=e}function kXt(t,e){this.a=t,this.b=e}function EXt(t,e){this.a=t,this.b=e}function TXt(t,e){this.a=t,this.b=e}function CXt(t,e){this.a=t,this.b=e}function Ys(t,e){this.a=t,this.b=e}function _Xt(t,e){this.a=t,this.b=e}function SXt(t,e){this.a=t,this.b=e}function AXt(t,e){this.a=t,this.b=e}function LXt(t,e){this.a=t,this.b=e}function MXt(t,e){this.a=t,this.b=e}function DXt(t,e){this.a=t,this.b=e}function IXt(t,e){this.b=t,this.a=e}function OXt(t,e){this.b=t,this.a=e}function PXt(t,e){this.b=t,this.a=e}function NXt(t,e){this.b=t,this.a=e}function FXt(t,e){this.a=t,this.b=e}function BXt(t,e){this.a=t,this.b=e}function V$(t,e){Fr.call(this,t,e)}function RXt(t,e){this.a=t,this.b=e}function jXt(t,e){this.a=t,this.b=e}function I6(t,e){Fr.call(this,t,e)}function $Xt(t,e){this.f=t,this.c=e}function Jwt(t,e){return Ju(t.g,e)}function yrn(t,e){return Ju(e.b,t)}function zXt(t,e){return zat(t.a,e)}function xrn(t,e){return-t.b.af(e)}function krn(t,e){t&&di(RN,t,e)}function Zwt(t,e){t.i=null,zq(t,e)}function Ern(t,e,n){Ihe(e,Oot(t,n))}function Trn(t,e,n){Ihe(e,Oot(t,n))}function Crn(t,e){Zxn(t.a,u(e,58))}function qXt(t,e){Ydn(t.a,u(e,12))}function U$(t,e){this.a=t,this.b=e}function HXt(t,e){this.a=t,this.b=e}function VXt(t,e){this.a=t,this.b=e}function UXt(t,e){this.a=t,this.b=e}function GXt(t,e){this.a=t,this.b=e}function KXt(t,e){this.d=t,this.b=e}function WXt(t,e){this.e=t,this.a=e}function YD(t,e){this.b=t,this.c=e}function tmt(t,e){this.i=t,this.g=e}function emt(t,e){this.d=t,this.e=e}function _rn(t,e){l0n(new Zn(t),e)}function G$(t){return hO(t.c,t.b)}function Uo(t){return t?t.md():null}function $t(t){return t??null}function pa(t){return typeof t===_ct}function Ty(t){return typeof t===vk}function Cy(t){return typeof t===Xkt}function mm(t,e){return Rc(t,e)==0}function K$(t,e){return Rc(t,e)>=0}function a_(t,e){return Rc(t,e)!=0}function W$(t,e){return Sgn(t.Kc(),e)}function yb(t,e){return t.Rd().Xb(e)}function YXt(t){return Ll(t),t.d.gc()}function Y$(t){return m_(t==null),t}function o_(t,e){return t.a+=""+e,t}function Lo(t,e){return t.a+=""+e,t}function c_(t,e){return t.a+=""+e,t}function Zc(t,e){return t.a+=""+e,t}function ni(t,e){return t.a+=""+e,t}function nmt(t,e){return t.a+=""+e,t}function Srn(t){return""+(Wn(t),t)}function XXt(t){dl(this),V_(this,t)}function QXt(){Uyt(),Qvt.call(this)}function JXt(t,e){nyt.call(this,t,e)}function ZXt(t,e){nyt.call(this,t,e)}function X$(t,e){nyt.call(this,t,e)}function to(t,e){fs(t,e,t.c.b,t.c)}function F4(t,e){fs(t,e,t.a,t.a.a)}function rmt(t){return mn(t,0),null}function tQt(){this.b=0,this.a=!1}function eQt(){this.b=0,this.a=!1}function nQt(){this.b=new A6(zy(12))}function rQt(){rQt=V,Iye=Rr(Wat())}function iQt(){iQt=V,t4e=Rr(pde())}function sQt(){sQt=V,Eke=Rr(Koe())}function imt(){imt=V,C2t(),GTt=new Er}function y1(t){return t.a=0,t.b=0,t}function aQt(t,e){return t.a=e.g+1,t}function Rrt(t,e){My.call(this,t,e)}function un(t,e){os.call(this,t,e)}function B4(t,e){tmt.call(this,t,e)}function oQt(t,e){ZD.call(this,t,e)}function jrt(t,e){i7.call(this,t,e)}function hi(t,e){E$(),di(qK,t,e)}function cQt(t,e){t.q.setTime(W2(e))}function Arn(t){b.clearTimeout(t)}function Lrn(t){return Hr(t),new u_(t)}function uQt(t,e){return $t(t)===$t(e)}function lQt(t,e){return t.a.a.a.cc(e)}function $rt(t,e){return Ch(t.a,0,e)}function smt(t){return Iun(u(t,74))}function O6(t){return Xs((Wn(t),t))}function Mrn(t){return Xs((Wn(t),t))}function hQt(t){return ku(t.l,t.m,t.h)}function amt(t,e){return Bc(t.a,e.a)}function Drn(t,e){return Qte(t.a,e.a)}function Irn(t,e){return ji(t.a,e.a)}function Fd(t,e){return t.indexOf(e)}function Orn(t,e){return t.j[e.p]==2}function vm(t,e){return t==e?0:t?1:-1}function Q$(t){return t<10?"0"+t:""+t}function Zo(t){return typeof t===Xkt}function Prn(t){return t==pv||t==y3}function Nrn(t){return t==pv||t==v3}function fQt(t,e){return Bc(t.g,e.g)}function omt(t){return Wo(t.b.b,t,0)}function dQt(){Tz.call(this,0,0,0,0)}function Bd(){uo.call(this,new yp)}function cmt(t,e){HE(t,0,t.length,e)}function Frn(t,e){return pe(t.a,e),e}function Brn(t,e){return Bf(),e.a+=t}function Rrn(t,e){return Bf(),e.a+=t}function jrn(t,e){return Bf(),e.c+=t}function $rn(t,e){return pe(t.c,e),t}function umt(t,e){return sh(t.a,e),t}function gQt(t){this.a=iXt(),this.b=t}function pQt(t){this.a=iXt(),this.b=t}function eo(t){this.a=t.a,this.b=t.b}function u_(t){this.a=t,vC.call(this)}function bQt(t){this.a=t,vC.call(this)}function P6(){Th.call(this,0,0,0,0)}function J$(t){return sh(new Fs,t)}function wQt(t){return qz(u(t,123))}function zl(t){return t.vh()&&t.wh()}function R4(t){return t!=md&&t!=c2}function dg(t){return t==Ho||t==Jo}function j4(t){return t==qh||t==bd}function mQt(t){return t==Y5||t==W5}function zrn(t,e){return Bc(t.g,e.g)}function vQt(t,e){return new i7(e,t)}function qrn(t,e){return new i7(e,t)}function lmt(t){return ucn(t.b.Kc(),t.a)}function zrt(t,e){f7(t,e),QE(t,t.D)}function qrt(t,e,n){Oq(t,e),Iq(t,n)}function $4(t,e,n){zm(t,e),$m(t,n)}function xh(t,e,n){Cu(t,e),_u(t,n)}function XD(t,e,n){KE(t,e),YE(t,n)}function QD(t,e,n){WE(t,e),XE(t,n)}function yQt(t,e,n){Gmt.call(this,t,e,n)}function hmt(t){$Xt.call(this,t,!0)}function xQt(){_$.call(this,"Tail",3)}function kQt(){_$.call(this,"Head",1)}function xb(t){Gd(),Egn.call(this,t)}function ym(t){Tz.call(this,t,t,t,t)}function Hrt(t){t.c=Vt(sa,Ln,1,0,5,1)}function fmt(t){return t.b&&cct(t),t.a}function dmt(t){return t.b&&cct(t),t.c}function Hrn(t,e){hd||(t.b=e)}function Vrn(t,e){return t[t.length]=e}function Urn(t,e){return t[t.length]=e}function Grn(t,e){return qy(e,Y1(t))}function Krn(t,e){return qy(e,Y1(t))}function Wrn(t,e){return Rq(jit(t.d),e)}function Yrn(t,e){return Rq(jit(t.g),e)}function Xrn(t,e){return Rq(jit(t.j),e)}function Ta(t,e){os.call(this,t.b,e)}function Qrn(t,e){Mr(Gc(t.a),Hne(e))}function Jrn(t,e){Mr(Al(t.a),Vne(e))}function Zrn(t,e,n){xh(n,n.i+t,n.j+e)}function EQt(t,e,n){hs(t.c[e.g],e.g,n)}function tin(t,e,n){u(t.c,71).Gi(e,n)}function Vrt(t,e,n){return hs(t,e,n),n}function TQt(t){Tu(t.Sf(),new _nt(t))}function z4(t){return t!=null?Hi(t):0}function ein(t){return t==null?0:Hi(t)}function l_(t){xi(),cm.call(this,t)}function CQt(t){this.a=t,Svt.call(this,t)}function K1(){K1=V,b.Math.log(2)}function kh(){kh=V,W0=(AYt(),B7e)}function _Qt(){_Qt=V,T1t=new rS(Bdt)}function Ur(){Ur=V,new SQt,new ge}function SQt(){new Er,new Er,new Er}function nin(){throw nt(new up(uve))}function rin(){throw nt(new up(uve))}function iin(){throw nt(new up(lve))}function sin(){throw nt(new up(lve))}function Urt(t){this.a=t,g$.call(this,t)}function Grt(t){this.a=t,g$.call(this,t)}function AQt(t,e){Lm(),this.a=t,this.b=e}function ain(t,e){Hr(e),K4(t).Jc(new at)}function Ms(t,e){Eit(t.c,t.c.length,e)}function cc(t){return t.ae?1:0}function pmt(t,e){return Rc(t,e)>0?t:e}function ku(t,e,n){return{l:t,m:e,h:n}}function oin(t,e){t.a!=null&&qXt(e,t.a)}function cin(t){Ya(t,null),ya(t,null)}function uin(t,e,n){return di(t.g,n,e)}function q4(t,e,n){return R5t(e,n,t.c)}function lin(t,e,n){return di(t.k,n,e)}function hin(t,e,n){return XTn(t,e,n),n}function fin(t,e){return th(),e.n.b+=t}function MQt(t){Ryt.call(this),this.b=t}function bmt(t){rvt.call(this),this.a=t}function DQt(){_$.call(this,"Range",2)}function Z$(t){this.b=t,this.a=new ge}function IQt(t){this.b=new gu,this.a=t}function OQt(t){t.a=new Pe,t.c=new Pe}function PQt(t){t.a=new Er,t.d=new Er}function NQt(t){ost(t,null),cst(t,null)}function FQt(t,e){return JTn(t.a,e,null)}function din(t,e){return di(t.a,e.a,e)}function Ma(t){return new se(t.a,t.b)}function wmt(t){return new se(t.c,t.d)}function gin(t){return new se(t.c,t.d)}function h_(t,e){return lTn(t.c,t.b,e)}function At(t,e){return t!=null&&Jat(t,e)}function Krt(t,e){return rpn(t.Kc(),e)!=-1}function tz(t){return t.Ob()?t.Pb():null}function pin(t){this.b=(wn(),new hr(t))}function mmt(t){this.a=t,Er.call(this)}function BQt(){ZD.call(this,null,null)}function RQt(){oz.call(this,null,null)}function jQt(){Fr.call(this,"INSTANCE",0)}function $Qt(){wxt(),this.a=new vS(dCt)}function zQt(t){return nf(t,0,t.length)}function bin(t,e){return new sJt(t.Kc(),e)}function vmt(t,e){return t.a.Bc(e)!=null}function qQt(t,e){Lr(t),t.Gc(u(e,15))}function win(t,e,n){t.c.bd(e,u(n,136))}function min(t,e,n){t.c.Ui(e,u(n,136))}function HQt(t,e){t.c&&($vt(e),pne(e))}function vin(t,e){t.q.setHours(e),TS(t,e)}function yin(t,e){Em(e,t.a.a.a,t.a.a.b)}function xin(t,e,n,r){hs(t.a[e.g],n.g,r)}function Wrt(t,e,n){return t.a[e.g][n.g]}function kin(t,e){return t.e[e.c.p][e.p]}function Ein(t,e){return t.c[e.c.p][e.p]}function W1(t,e){return t.a[e.c.p][e.p]}function Tin(t,e){return t.j[e.p]=Nxn(e)}function Yrt(t,e){return t.a.Bc(e)!=null}function Cin(t,e){return Rt(Ht(e.a))<=t}function _in(t,e){return Rt(Ht(e.a))>=t}function Sin(t,e){return E3t(t.f,e.Pg())}function N6(t,e){return t.a*e.a+t.b*e.b}function Ain(t,e){return t.a0?e/(t*t):e*100}function Zin(t,e){return t>0?e*e/t:e*e*100}function _y(t,e){return u(ed(t.a,e),34)}function tsn(t,e){return jb(),dn(t,e.e,e)}function esn(t,e,n){return y$(),n.Mg(t,e)}function nsn(t){return Eg(),t.e.a+t.f.a/2}function rsn(t,e,n){return Eg(),n.e.a-t*e}function isn(t){return Eg(),t.e.b+t.f.b/2}function ssn(t,e,n){return Eg(),n.e.b-t*e}function vJt(t){t.d=new bJt(t),t.e=new Er}function yJt(){this.a=new Nm,this.b=new Nm}function xJt(t){this.c=t,this.a=1,this.b=1}function kJt(t){Tct(),jGt(this),this.Ff(t)}function asn(t,e,n){vq(),t.pf(e)&&n.Cd(t)}function osn(t,e,n){return pe(e,Oue(t,n))}function Em(t,e,n){return t.a+=e,t.b+=n,t}function csn(t,e,n){return t.a*=e,t.b*=n,t}function Bmt(t,e){return t.a=e.a,t.b=e.b,t}function cz(t){return t.a=-t.a,t.b=-t.b,t}function p_(t,e,n){return t.a-=e,t.b-=n,t}function EJt(t){Qi.call(this),$_(this,t)}function TJt(){Fr.call(this,"GROW_TREE",0)}function CJt(){Fr.call(this,"POLYOMINO",0)}function Hl(t,e,n){el.call(this,t,e,n,2)}function usn(t,e,n){eS(Gc(t.a),e,Hne(n))}function _Jt(t,e){KC(),ZD.call(this,t,e)}function Rmt(t,e){gp(),oz.call(this,t,e)}function SJt(t,e){gp(),Rmt.call(this,t,e)}function AJt(t,e){gp(),oz.call(this,t,e)}function lsn(t,e){return t.c.Fc(u(e,136))}function hsn(t,e,n){eS(Al(t.a),e,Vne(n))}function LJt(t){this.c=t,Cu(t,0),_u(t,0)}function eit(t,e){kh(),Sz.call(this,t,e)}function MJt(t,e){kh(),eit.call(this,t,e)}function jmt(t,e){kh(),eit.call(this,t,e)}function $mt(t,e){kh(),Sz.call(this,t,e)}function DJt(t,e){kh(),jmt.call(this,t,e)}function IJt(t,e){kh(),$mt.call(this,t,e)}function OJt(t,e){kh(),Sz.call(this,t,e)}function fsn(t,e,n){return e.zl(t.e,t.c,n)}function dsn(t,e,n){return e.Al(t.e,t.c,n)}function zmt(t,e,n){return lV(RI(t,e),n)}function nit(t,e){return Pb(t.e,u(e,54))}function gsn(t){return t==null?null:j9n(t)}function psn(t){return t==null?null:I3n(t)}function bsn(t){return t==null?null:ec(t)}function wsn(t){return t==null?null:ec(t)}function De(t){return m_(t==null||Ty(t)),t}function Ht(t){return m_(t==null||Cy(t)),t}function Gr(t){return m_(t==null||pa(t)),t}function gg(t){t.o==null&&lxn(t)}function qmt(t){if(!t)throw nt(new TD)}function msn(t){if(!t)throw nt(new Int)}function cr(t){if(!t)throw nt(new ac)}function Sy(t){if(!t)throw nt(new Yu)}function PJt(t){if(!t)throw nt(new yh)}function TE(){TE=V,$N=new wKt,new mKt}function G4(){G4=V,J5=new Ni("root")}function Hmt(){boe.call(this),this.Bb|=fo}function vsn(t,e){this.d=t,kn(this),this.b=e}function Vmt(t,e){Lst.call(this,t),this.a=e}function Umt(t,e){Lst.call(this,t),this.a=e}function Gmt(t,e,n){pq.call(this,t,e,n,null)}function NJt(t,e,n){pq.call(this,t,e,n,null)}function nI(t,e){this.c=t,bE.call(this,t,e)}function b_(t,e){this.a=t,nI.call(this,t,e)}function Kmt(t){this.q=new b.Date(W2(t))}function FJt(t){return t>8?0:t+1}function BJt(t,e){hd||pe(t.a,e)}function ysn(t,e){return PD(),r7(e.d.i,t)}function xsn(t,e){return ik(),new g0e(e,t)}function ksn(t,e,n){return t.Ne(e,n)<=0?n:e}function Esn(t,e,n){return t.Ne(e,n)<=0?e:n}function Tsn(t,e){return u(ed(t.b,e),143)}function Csn(t,e){return u(ed(t.c,e),233)}function rit(t){return u(Oe(t.a,t.b),293)}function RJt(t){return new se(t.c,t.d+t.a)}function jJt(t){return Wn(t),t?1231:1237}function $Jt(t){return th(),mQt(u(t,203))}function Ay(){Ay=V,z9t=Ze((Kl(),Fw))}function _sn(t,e){e.a?M5n(t,e):Yrt(t.a,e.b)}function rI(t,e,n){++t.j,t.tj(),Ast(t,e,n)}function zJt(t,e,n){++t.j,t.qj(e,t.Zi(e,n))}function qJt(t,e,n){var r;r=t.fd(e),r.Rb(n)}function Wmt(t,e,n){return n=ch(t,e,6,n),n}function Ymt(t,e,n){return n=ch(t,e,3,n),n}function Xmt(t,e,n){return n=ch(t,e,9,n),n}function jd(t,e){return yI(e,v8t),t.f=e,t}function Qmt(t,e){return(e&ki)%t.d.length}function HJt(t,e,n){return Lkt(t.c,t.b,e,n)}function VJt(t,e){this.c=t,jm.call(this,e)}function UJt(t,e){this.a=t,DGt.call(this,e)}function iI(t,e){this.a=t,DGt.call(this,e)}function os(t,e){Ni.call(this,t),this.a=e}function Jmt(t,e){x2t.call(this,t),this.a=e}function iit(t,e){x2t.call(this,t),this.a=e}function Ssn(t){I5t.call(this,0,0),this.f=t}function GJt(t,e,n){return t.a+=nf(e,0,n),t}function sI(t){return!t.a&&(t.a=new ft),t.a}function Zmt(t,e){var n;return n=t.e,t.e=e,n}function tvt(t,e){var n;return n=e,!!t.Fe(n)}function Asn(t,e){return Nn(),t==e?0:t?1:-1}function Ly(t,e){t.a.bd(t.b,e),++t.b,t.c=-1}function aI(t){t.b?aI(t.b):t.f.c.zc(t.e,t.d)}function KJt(t){dl(t.e),t.d.b=t.d,t.d.a=t.d}function Lsn(t,e,n){j2(),Uj(t,e.Ve(t.a,n))}function evt(t,e,n){return U6(t,u(e,22),n)}function Ff(t,e){return u$(new Array(e),t)}function Msn(t){return qr(Eb(t,32))^qr(t)}function sit(t){return String.fromCharCode(t)}function Dsn(t){return t==null?null:t.message}function Isn(t,e,n){return t.apply(e,n)}function Osn(t,e){var n;n=t[iut],n.call(t,e)}function Psn(t,e){var n;n=t[iut],n.call(t,e)}function Nsn(t,e){return PD(),!r7(e.d.i,t)}function nvt(t,e,n,r){Tz.call(this,t,e,n,r)}function WJt(){uz.call(this),this.a=new Ea}function rvt(){this.n=new Ea,this.o=new Ea}function YJt(){this.b=new Ea,this.c=new ge}function XJt(){this.a=new ge,this.b=new ge}function QJt(){this.a=new S2,this.b=new YGt}function ivt(){this.b=new yp,this.a=new yp}function JJt(){this.b=new Os,this.a=new Os}function ZJt(){this.b=new Er,this.a=new Er}function tZt(){this.b=new _Wt,this.a=new EZ}function eZt(){this.a=new Uet,this.b=new EJ}function nZt(){this.a=new ge,this.d=new ge}function uz(){this.n=new k6,this.i=new P6}function rZt(t){this.a=(ih(t,c3),new bu(t))}function iZt(t){this.a=(ih(t,c3),new bu(t))}function Fsn(t){return t<100?null:new bb(t)}function Bsn(t,e){return t.n.a=(Wn(e),e+10)}function Rsn(t,e){return t.n.a=(Wn(e),e+10)}function jsn(t,e){return e==t||_7(KH(e),t)}function sZt(t,e){return di(t.a,e,"")==null}function $sn(t,e){var n;return n=e.qi(t.a),n}function Ei(t,e){return t.a+=e.a,t.b+=e.b,t}function ra(t,e){return t.a-=e.a,t.b-=e.b,t}function zsn(t){return wy(t.j.c,0),t.a=-1,t}function svt(t,e,n){return n=ch(t,e,11,n),n}function qsn(t,e,n){n!=null&&jq(e,uot(t,n))}function Hsn(t,e,n){n!=null&&$q(e,uot(t,n))}function R6(t,e,n,r){Jt.call(this,t,e,n,r)}function avt(t,e,n,r){Jt.call(this,t,e,n,r)}function aZt(t,e,n,r){avt.call(this,t,e,n,r)}function oZt(t,e,n,r){Pz.call(this,t,e,n,r)}function ait(t,e,n,r){Pz.call(this,t,e,n,r)}function ovt(t,e,n,r){Pz.call(this,t,e,n,r)}function cZt(t,e,n,r){ait.call(this,t,e,n,r)}function cvt(t,e,n,r){ait.call(this,t,e,n,r)}function En(t,e,n,r){ovt.call(this,t,e,n,r)}function uZt(t,e,n,r){cvt.call(this,t,e,n,r)}function lZt(t,e,n,r){ayt.call(this,t,e,n,r)}function My(t,e){No.call(this,ZS+t+ww+e)}function uvt(t,e){return t.jk().wi().ri(t,e)}function lvt(t,e){return t.jk().wi().ti(t,e)}function hZt(t,e){return Wn(t),$t(t)===$t(e)}function hn(t,e){return Wn(t),$t(t)===$t(e)}function Vsn(t,e){return t.b.Bd(new PYt(t,e))}function Usn(t,e){return t.b.Bd(new NYt(t,e))}function fZt(t,e){return t.b.Bd(new FYt(t,e))}function Gsn(t,e){return t.e=u(t.d.Kb(e),159)}function hvt(t,e,n){return t.lastIndexOf(e,n)}function Ksn(t,e,n){return ji(t[e.a],t[n.a])}function Wsn(t,e){return Zt(e,(Me(),JP),t)}function Ysn(t,e){return Bc(e.a.d.p,t.a.d.p)}function Xsn(t,e){return Bc(t.a.d.p,e.a.d.p)}function Qsn(t,e){return ji(t.c-t.s,e.c-e.s)}function Jsn(t,e){return ji(t.b.e.a,e.b.e.a)}function Zsn(t,e){return ji(t.c.e.a,e.c.e.a)}function dZt(t){return t.c?Wo(t.c.a,t,0):-1}function j6(t){return t==Nw||t==G0||t==lu}function fvt(t,e){this.c=t,Oit.call(this,t,e)}function gZt(t,e,n){this.a=t,Pmt.call(this,e,n)}function pZt(t){this.c=t,X$.call(this,QO,0)}function bZt(t,e,n){this.c=e,this.b=n,this.a=t}function oI(t){_E(),this.d=t,this.a=new V4}function wZt(t){$d(),this.a=(wn(),new lE(t))}function tan(t,e){dg(t.f)?nxn(t,e):Oyn(t,e)}function mZt(t,e){dcn.call(this,t,t.length,e)}function ean(t,e){hd||e&&(t.d=e)}function vZt(t,e){return At(e,15)&&Wde(t.c,e)}function nan(t,e,n){return u(t.c,71).Wk(e,n)}function lz(t,e,n){return u(t.c,71).Xk(e,n)}function ran(t,e,n){return fsn(t,u(e,343),n)}function dvt(t,e,n){return dsn(t,u(e,343),n)}function ian(t,e,n){return $he(t,u(e,343),n)}function yZt(t,e,n){return Gyn(t,u(e,343),n)}function w_(t,e){return e==null?null:Gy(t.b,e)}function gvt(t){return Cy(t)?(Wn(t),t):t.ue()}function hz(t){return!isNaN(t)&&!isFinite(t)}function oit(t){OQt(this),Zl(this),Aa(this,t)}function fl(t){Hrt(this),Mvt(this.c,0,t.Pc())}function Eh(t,e,n){this.a=t,this.b=e,this.c=n}function xZt(t,e,n){this.a=t,this.b=e,this.c=n}function kZt(t,e,n){this.d=t,this.b=n,this.a=e}function EZt(t){this.a=t,fg(),Oc(Date.now())}function TZt(t){Ul(t.a),L3t(t.c,t.b),t.b=null}function cit(){cit=V,g9t=new Ee,jve=new nn}function CZt(){CZt=V,q7e=Vt(sa,Ln,1,0,5,1)}function _Zt(){_Zt=V,aTe=Vt(sa,Ln,1,0,5,1)}function pvt(){pvt=V,oTe=Vt(sa,Ln,1,0,5,1)}function $d(){$d=V,new T2t((wn(),wn(),so))}function san(t){return VE(),Br((Ise(),qve),t)}function aan(t){return bl(),Br((kse(),Wve),t)}function oan(t){return vH(),Br((oie(),tye),t)}function can(t){return _q(),Br((cie(),eye),t)}function uan(t){return eV(),Br((oce(),nye),t)}function lan(t){return _1(),Br((yse(),sye),t)}function han(t){return pl(),Br((vse(),oye),t)}function fan(t){return zu(),Br((xse(),uye),t)}function dan(t){return pV(),Br((rQt(),Iye),t)}function gan(t){return Um(),Br((Pse(),Pye),t)}function pan(t){return lk(),Br((Fse(),Fye),t)}function ban(t){return cS(),Br((Nse(),jye),t)}function wan(t){return m$(),Br((Ore(),$ye),t)}function man(t){return Sq(),Br((uie(),r3e),t)}function van(t){return R_(),Br((Ese(),L3e),t)}function yan(t){return Ha(),Br((wae(),O3e),t)}function xan(t){return a7(),Br((Rse(),R3e),t)}function kan(t){return iw(),Br((Bse(),V3e),t)}function bvt(t,e){if(!t)throw nt(new zn(e))}function CE(t){if(!t)throw nt(new Fo(Qkt))}function uit(t,e){if(t!=e)throw nt(new yh)}function SZt(t,e,n){this.a=t,this.b=e,this.c=n}function wvt(t,e,n){this.a=t,this.b=e,this.c=n}function AZt(t,e,n){this.a=t,this.b=e,this.c=n}function fz(t,e,n){this.b=t,this.a=e,this.c=n}function mvt(t,e,n){this.b=t,this.c=e,this.a=n}function vvt(t,e,n){this.a=t,this.b=e,this.c=n}function dz(t,e,n){this.e=e,this.b=t,this.d=n}function LZt(t,e,n){this.b=t,this.a=e,this.c=n}function Ean(t,e,n){return j2(),t.a.Yd(e,n),e}function lit(t){var e;return e=new ll,e.e=t,e}function yvt(t){var e;return e=new tKt,e.b=t,e}function cI(){cI=V,UU=new uQ,GU=new lQ}function gz(){gz=V,s4e=new K9,i4e=new Dd}function Bf(){Bf=V,l4e=new ZQ,h4e=new YB}function Tan(t){return Hm(),Br((ese(),x4e),t)}function Can(t){return Ja(),Br((iQt(),t4e),t)}function _an(t){return Jq(),Br(($se(),r4e),t)}function San(t){return rd(),Br((jse(),g4e),t)}function Aan(t){return Qy(),Br((mae(),b4e),t)}function Lan(t){return ZH(),Br((Goe(),k4e),t)}function Man(t){return gk(),Br((Hae(),E4e),t)}function Dan(t){return mq(),Br((die(),T4e),t)}function Ian(t){return z_(),Br((Jie(),C4e),t)}function Oan(t){return Nq(),Br((Zie(),_4e),t)}function Pan(t){return Mp(),Br((vae(),S4e),t)}function Nan(t){return HI(),Br((fie(),A4e),t)}function Fan(t){return A7(),Br((Gae(),P4e),t)}function Ban(t){return ko(),Br((Ece(),N4e),t)}function Ran(t){return s7(),Br((rse(),F4e),t)}function jan(t){return kg(),Br((nse(),R4e),t)}function $an(t){return oq(),Br((vie(),j4e),t)}function zan(t){return kO(),Br((Uae(),O4e),t)}function qan(t){return ew(),Br((tse(),M4e),t)}function Han(t){return $H(),Br((Vae(),D4e),t)}function Van(t){return FI(),Br((hie(),I4e),t)}function Uan(t){return Ph(),Br((xae(),$4e),t)}function Gan(t){return Np(),Br((ice(),l6e),t)}function Kan(t){return Q_(),Br((ise(),h6e),t)}function Wan(t){return Yy(),Br((zse(),f6e),t)}function Yan(t){return oS(),Br((yae(),d6e),t)}function Xan(t){return sf(),Br((Tce(),g6e),t)}function Qan(t){return Vd(),Br((qse(),p6e),t)}function Jan(t){return zI(),Br((gie(),b6e),t)}function Zan(t){return xo(),Br((ose(),m6e),t)}function ton(t){return Yq(),Br((sse(),v6e),t)}function eon(t){return W_(),Br((ase(),y6e),t)}function non(t){return d7(),Br((use(),x6e),t)}function ron(t){return Pq(),Br((cse(),k6e),t)}function ion(t){return Zq(),Br((lse(),E6e),t)}function son(t){return qm(),Br((mse(),j6e),t)}function aon(t){return N_(),Br((pie(),V6e),t)}function oon(t){return qd(),Br((bie(),Q6e),t)}function con(t){return X1(),Br((wie(),Z6e),t)}function uon(t){return E1(),Br((mie(),gke),t)}function lon(t){return Fm(),Br((yie(),xke),t)}function hon(t){return dk(),Br((Yse(),kke),t)}function fon(t){return kS(),Br((sQt(),Eke),t)}function don(t){return Y_(),Br((hse(),Tke),t)}function gon(t){return X_(),Br((Wse(),Kke),t)}function pon(t){return iq(),Br((kie(),Wke),t)}function bon(t){return qq(),Br((Eie(),Zke),t)}function won(t){return FH(),Br((kae(),e8e),t)}function mon(t){return rO(),Br((fse(),r8e),t)}function von(t){return yq(),Br((xie(),n8e),t)}function yon(t){return LH(),Br((Kse(),E8e),t)}function xon(t){return Wq(),Br((dse(),T8e),t)}function kon(t){return gH(),Br((gse(),C8e),t)}function Eon(t){return CH(),Br((pse(),S8e),t)}function Ton(t){return cH(),Br((bse(),M8e),t)}function Con(t){return fq(),Br((Tie(),Q8e),t)}function _on(t){return t7(),Br((lie(),Z3e),t)}function Son(t){return Un(),Br((Kae(),W3e),t)}function Aon(t){return xq(),Br((wse(),J8e),t)}function Lon(t){return aat(),Br((Cie(),Z8e),t)}function Mon(t){return mS(),Br((Eae(),eEe),t)}function Don(t){return x$(),Br((zre(),rEe),t)}function Ion(t){return uO(),Br((Cse(),nEe),t)}function Oon(t){return k$(),Br((qre(),sEe),t)}function Pon(t){return DI(),Br((_ie(),aEe),t)}function Non(t){return TO(),Br((Tae(),oEe),t)}function Fon(t){return VC(),Br((Hre(),EEe),t)}function Bon(t){return ZI(),Br((Sie(),TEe),t)}function Ron(t){return A1(),Br((_ae(),MEe),t)}function jon(t){return Pp(),Br((Voe(),IEe),t)}function $on(t){return L0(),Br((Wae(),OEe),t)}function zon(t){return aw(),Br((Yae(),jEe),t)}function qon(t){return Rs(),Br((Cae(),i7e),t)}function Hon(t){return nd(),Br((_se(),s7e),t)}function Von(t){return _g(),Br((Xse(),a7e),t)}function Uon(t){return RH(),Br((Xae(),o7e),t)}function Gon(t){return Cg(),Br((Tse(),u7e),t)}function Kon(t){return ah(),Br((Qse(),h7e),t)}function Won(t){return e3(),Br((ace(),f7e),t)}function Yon(t){return i5(),Br((Sae(),d7e),t)}function Xon(t){return xa(),Br((Qae(),g7e),t)}function Qon(t){return wl(),Br((Jae(),p7e),t)}function Jon(t){return ve(),Br((Aae(),b7e),t)}function Zon(t){return Kl(),Br((Jse(),x7e),t)}function tcn(t){return Dl(),Br((sce(),k7e),t)}function ecn(t){return ok(),Br((Sse(),E7e),t)}function ncn(t,e){return Wn(t),t+(Wn(e),e)}function rcn(t){return hit(),Br((Aie(),T7e),t)}function icn(t){return lH(),Br((Zse(),C7e),t)}function scn(t){return tH(),Br((tae(),A7e),t)}function _E(){_E=V,jAt=(ve(),Gn),QG=Jn}function hit(){hit=V,rIt=new ste,iIt=new Vte}function acn(t){return!t.e&&(t.e=new ge),t.e}function fit(t,e){this.c=t,this.a=e,this.b=e-t}function MZt(t,e,n){this.a=t,this.b=e,this.c=n}function dit(t,e,n){this.a=t,this.b=e,this.c=n}function xvt(t,e,n){this.a=t,this.b=e,this.c=n}function kvt(t,e,n){this.a=t,this.b=e,this.c=n}function DZt(t,e,n){this.a=t,this.b=e,this.c=n}function IZt(t,e,n){this.a=t,this.b=e,this.c=n}function bp(t,e,n){this.e=t,this.a=e,this.c=n}function OZt(t,e,n){kh(),$yt.call(this,t,e,n)}function git(t,e,n){kh(),Eyt.call(this,t,e,n)}function Evt(t,e,n){kh(),Eyt.call(this,t,e,n)}function Tvt(t,e,n){kh(),Eyt.call(this,t,e,n)}function PZt(t,e,n){kh(),git.call(this,t,e,n)}function Cvt(t,e,n){kh(),git.call(this,t,e,n)}function NZt(t,e,n){kh(),Cvt.call(this,t,e,n)}function FZt(t,e,n){kh(),Evt.call(this,t,e,n)}function BZt(t,e,n){kh(),Tvt.call(this,t,e,n)}function pit(t){Tz.call(this,t.d,t.c,t.a,t.b)}function _vt(t){Tz.call(this,t.d,t.c,t.a,t.b)}function Svt(t){this.d=t,kn(this),this.b=sun(t.d)}function ocn(t){return M7(),Br((Uoe(),z7e),t)}function uI(t,e){return Hr(t),Hr(e),new UWt(t,e)}function $6(t,e){return Hr(t),Hr(e),new XZt(t,e)}function ccn(t,e){return Hr(t),Hr(e),new QZt(t,e)}function ucn(t,e){return Hr(t),Hr(e),new tYt(t,e)}function bit(t){return cr(t.b!=0),Lh(t,t.a.a)}function lcn(t){return cr(t.b!=0),Lh(t,t.c.b)}function hcn(t){return!t.c&&(t.c=new op),t.c}function SE(t){var e;return e=new ge,$st(e,t),e}function fcn(t){var e;return e=new Os,$st(e,t),e}function RZt(t){var e;return e=new L2t,Zst(e,t),e}function lI(t){var e;return e=new Qi,Zst(e,t),e}function u(t,e){return m_(t==null||Jat(t,e)),t}function dcn(t,e,n){Bte.call(this,e,n),this.a=t}function jZt(t,e){this.c=t,this.b=e,this.a=!1}function $Zt(){this.a=";,;",this.b="",this.c=""}function zZt(t,e,n){this.b=t,JXt.call(this,e,n)}function Avt(t,e,n){this.c=t,S$.call(this,e,n)}function Lvt(t,e,n){vE.call(this,t,e),this.b=n}function Mvt(t,e,n){x6t(n,0,t,e,n.length,!1)}function E0(t,e,n,r,s){t.b=e,t.c=n,t.d=r,t.a=s}function Dvt(t,e,n,r,s){t.d=e,t.c=n,t.a=r,t.b=s}function gcn(t,e){e&&(t.b=e,t.a=(_b(e),e.a))}function hI(t,e){if(!t)throw nt(new zn(e))}function z6(t,e){if(!t)throw nt(new Fo(e))}function Ivt(t,e){if(!t)throw nt(new YKt(e))}function pcn(t,e){return v$(),Bc(t.d.p,e.d.p)}function bcn(t,e){return Eg(),ji(t.e.b,e.e.b)}function wcn(t,e){return Eg(),ji(t.e.a,e.e.a)}function mcn(t,e){return Bc(nte(t.d),nte(e.d))}function pz(t,e){return e&&jz(t,e.d)?e:null}function vcn(t,e){return e==(ve(),Gn)?t.c:t.d}function Ovt(t){return Db(mun(Zo(t)?tf(t):t))}function ycn(t){return new se(t.c+t.b,t.d+t.a)}function qZt(t){return t!=null&&!Bat(t,pL,bL)}function xcn(t,e){return(yue(t)<<4|yue(e))&js}function HZt(t,e,n,r,s){t.c=e,t.d=n,t.b=r,t.a=s}function Pvt(t){var e,n;e=t.b,n=t.c,t.b=n,t.c=e}function Nvt(t){var e,n;n=t.d,e=t.a,t.d=e,t.a=n}function kcn(t,e){var n;return n=t.c,d4t(t,e),n}function Fvt(t,e){return e<0?t.g=-1:t.g=e,t}function bz(t,e){return M0n(t),t.a*=e,t.b*=e,t}function VZt(t,e,n){Rae.call(this,e,n),this.d=t}function fI(t,e,n){emt.call(this,t,e),this.c=n}function wz(t,e,n){emt.call(this,t,e),this.c=n}function Bvt(t){pvt(),U8.call(this),this.ci(t)}function UZt(){zE(),Hun.call(this,(mb(),wf))}function GZt(t){return xi(),new T0(0,t)}function KZt(){KZt=V,Jdt=(wn(),new Kn(nht))}function mz(){mz=V,new W5t(($nt(),ght),(jnt(),dht))}function WZt(){WZt=V,t9t=Vt(Na,le,17,256,0,1)}function YZt(){this.b=Rt(Ht(_e((Vf(),Kht))))}function wit(t){this.b=t,this.a=z2(this.b.a).Od()}function XZt(t,e){this.b=t,this.a=e,vC.call(this)}function QZt(t,e){this.a=t,this.b=e,vC.call(this)}function JZt(t,e,n){this.a=t,B4.call(this,e,n)}function ZZt(t,e,n){this.a=t,B4.call(this,e,n)}function AE(t,e,n){var r;r=new Oy(n),C1(t,e,r)}function Rvt(t,e,n){var r;return r=t[e],t[e]=n,r}function vz(t){var e;return e=t.slice(),Ost(e,t)}function yz(t){var e;return e=t.n,t.a.b+e.d+e.a}function tte(t){var e;return e=t.n,t.e.b+e.d+e.a}function jvt(t){var e;return e=t.n,t.e.a+e.b+e.c}function $vt(t){t.a.b=t.b,t.b.a=t.a,t.a=t.b=null}function Zr(t,e){return fs(t,e,t.c.b,t.c),!0}function Ecn(t){return t.a?t.a:Uit(t)}function Tcn(t){return Y6(),M0(t)==es(Bb(t))}function Ccn(t){return Y6(),Bb(t)==es(M0(t))}function Tm(t,e){return fS(t,new vE(e.a,e.b))}function _cn(t,e){return zz(),aot(t,e),new kee(t,e)}function Scn(t,e){return t.c=e)throw nt(new F2t)}function Dy(t,e){return oO(t,(Wn(e),new db(e)))}function H6(t,e){return oO(t,(Wn(e),new w1(e)))}function jte(t,e,n){return ZCn(t,u(e,12),u(n,12))}function $te(t){return nl(),u(t,12).g.c.length!=0}function zte(t){return nl(),u(t,12).e.c.length!=0}function hun(t,e){return ik(),ji(e.a.o.a,t.a.o.a)}function fun(t,e){e.Bb&Pc&&!t.a.o&&(t.a.o=e)}function dun(t,e){e.Ug("General 'Rotator",1),S9n(t)}function gun(t,e,n){e.qf(n,Rt(Ht(tr(t.b,n)))*t.a)}function qte(t,e,n){return g5(),e7(t,e)&&e7(t,n)}function k_(t){return wl(),!t.Hc($g)&&!t.Hc(u2)}function pun(t){return t.e?S3t(t.e):null}function E_(t){return Zo(t)?""+t:Kde(t)}function syt(t){var e;for(e=t;e.f;)e=e.f;return e}function bun(t,e,n){return hs(e,0,Uvt(e[0],n[0])),e}function wp(t,e,n,r){var s;s=t.i,s.i=e,s.a=n,s.b=r}function Jt(t,e,n,r){Ns.call(this,t,e,n),this.b=r}function la(t,e,n,r,s){Dst.call(this,t,e,n,r,s,-1)}function T_(t,e,n,r,s){OI.call(this,t,e,n,r,s,-1)}function Pz(t,e,n,r){fI.call(this,t,e,n),this.b=r}function Hte(t){$Xt.call(this,t,!1),this.a=!1}function Vte(){vXt.call(this,"LOOKAHEAD_LAYOUT",1)}function Ute(t){this.b=t,F6.call(this,t),XQt(this)}function Gte(t){this.b=t,tI.call(this,t),QQt(this)}function Iy(t,e,n){this.a=t,R6.call(this,e,n,5,6)}function ayt(t,e,n,r){this.b=t,Ns.call(this,e,n,r)}function Kte(t,e){this.b=t,Fj.call(this,t.b),this.a=e}function Wte(t){this.a=Dle(t.a),this.b=new fl(t.b)}function oyt(t,e){Lm(),Knn.call(this,t,iH(new hl(e)))}function Nz(t,e){return xi(),new kyt(t,e,0)}function Mit(t,e){return xi(),new kyt(6,t,e)}function Da(t,e){for(Wn(e);t.Ob();)e.Cd(t.Pb())}function Eu(t,e){return pa(e)?Zit(t,e):!!yo(t.f,e)}function Dit(t,e){return e.Vh()?Pb(t.b,u(e,54)):e}function wun(t,e){return hn(t.substr(0,e.length),e)}function C0(t){return new nr(new Amt(t.a.length,t.a))}function Fz(t){return new se(t.c+t.b/2,t.d+t.a/2)}function mun(t){return ku(~t.l&Il,~t.m&Il,~t.h&Og)}function Iit(t){return typeof t===KO||typeof t===Sct}function dl(t){t.f=new gQt(t),t.i=new pQt(t),++t.g}function Yte(t){if(!t)throw nt(new ac);return t.d}function V6(t){var e;return e=K_(t),cr(e!=null),e}function vun(t){var e;return e=Nbn(t),cr(e!=null),e}function ME(t,e){var n;return n=t.a.gc(),k3t(e,n),n-e}function qs(t,e){var n;return n=t.a.zc(e,t),n==null}function gI(t,e){return t.a.zc(e,(Nn(),Yb))==null}function cyt(t){return new ln(null,Tun(t,t.length))}function uyt(t,e,n){return wge(t,u(e,42),u(n,176))}function U6(t,e,n){return zf(t.a,e),Rvt(t.b,e.g,n)}function yun(t,e,n){LE(n,t.a.c.length),Sh(t.a,n,e)}function zt(t,e,n,r){Kce(e,n,t.length),xun(t,e,n,r)}function xun(t,e,n,r){var s;for(s=e;s0?b.Math.log(t/e):-100}function Qte(t,e){return Rc(t,e)<0?-1:Rc(t,e)>0?1:0}function pI(t,e){qQt(t,At(e,160)?e:u(e,2036).Rl())}function dyt(t,e){if(t==null)throw nt(new C6(e))}function Tun(t,e){return _0n(e,t.length),new ite(t,e)}function gyt(t,e){return e?Aa(t,e):!1}function Cun(){return s$(),ot(st(mve,1),te,549,0,[wht])}function __(t){return t.e==0?t:new H2(-t.e,t.d,t.a)}function _un(t,e){return ji(t.c.c+t.c.b,e.c.c+e.c.b)}function bI(t,e){fs(t.d,e,t.b.b,t.b),++t.a,t.c=null}function Jte(t,e){return t.c?Jte(t.c,e):pe(t.b,e),t}function Sun(t,e,n){var r;return r=$y(t,e),pst(t,e,n),r}function Zte(t,e,n){var r;for(r=0;r=t.g}function hs(t,e,n){return msn(n==null||dEn(t,n)),t[e]=n}function vyt(t,e){return qn(e,t.length+1),t.substr(e)}function qit(t,e){for(Wn(e);t.c=t?new bwt:X0n(t-1)}function Ia(t){return!t.a&&t.c?t.c.b:t.a}function Tyt(t){return At(t,616)?t:new mne(t)}function _b(t){t.c?_b(t.c):(Nb(t),t.d=!0)}function L_(t){t.c?t.c.$e():(t.d=!0,g6n(t))}function vee(t){t.b=!1,t.c=!1,t.d=!1,t.a=!1}function yee(t){var e,n;return e=t.c.i.c,n=t.d.i.c,e==n}function Gun(t,e){var n;n=t.Ih(e),n>=0?t.ki(n):f6t(t,e)}function xee(t,e){t.c<0||t.b.b0;)t=t<<1|(t<0?1:0);return t}function Lee(t,e){var n;return n=new tu(t),In(e.c,n),n}function Mee(t,e){t.u.Hc((wl(),$g))&&Q4n(t,e),pdn(t,e)}function Ic(t,e){return $t(t)===$t(e)||t!=null&&Ci(t,e)}function Mo(t,e){return kit(t.a,e)?t.b[u(e,22).g]:null}function sln(){return m$(),ot(st(V9t,1),te,488,0,[$ht])}function aln(){return x$(),ot(st(vMt,1),te,489,0,[udt])}function oln(){return k$(),ot(st(iEe,1),te,558,0,[ldt])}function cln(){return VC(),ot(st($Mt,1),te,539,0,[bN])}function qz(t){return!t.n&&(t.n=new Jt(Oo,t,1,7)),t.n}function Vit(t){return!t.c&&(t.c=new Jt(kl,t,9,9)),t.c}function Ayt(t){return!t.c&&(t.c=new En(gr,t,5,8)),t.c}function uln(t){return!t.b&&(t.b=new En(gr,t,4,7)),t.b}function wI(t){return t.j.c.length=0,Myt(t.c),zsn(t.a),t}function NE(t){return t.e==lT&&Vn(t,rwn(t.g,t.b)),t.e}function mI(t){return t.f==lT&&Rn(t,Wmn(t.g,t.b)),t.f}function gi(t,e,n,r){return Zoe(t,e,n,!1),sH(t,r),t}function Dee(t,e){this.b=t,Oit.call(this,t,e),XQt(this)}function Iee(t,e){this.b=t,fvt.call(this,t,e),QQt(this)}function M_(t){this.d=t,this.a=this.d.b,this.b=this.d.c}function Lyt(t,e){this.b=t,this.c=e,this.a=new L6(this.b)}function qa(t,e){return qn(e,t.length),t.charCodeAt(e)}function lln(t,e){b5t(t,Rt(Tg(e,"x")),Rt(Tg(e,"y")))}function hln(t,e){b5t(t,Rt(Tg(e,"x")),Rt(Tg(e,"y")))}function Ai(t,e){return Nb(t),new ln(t,new $3t(e,t.a))}function Go(t,e){return Nb(t),new ln(t,new C3t(e,t.a))}function Py(t,e){return Nb(t),new Vmt(t,new zie(e,t.a))}function Hz(t,e){return Nb(t),new Umt(t,new qie(e,t.a))}function fln(t,e){return new nne(u(Hr(t),50),u(Hr(e),50))}function dln(t,e){return ji(t.d.c+t.d.b/2,e.d.c+e.d.b/2)}function Oee(t,e,n){n.a?_u(t,e.b-t.f/2):Cu(t,e.a-t.g/2)}function gln(t,e){return ji(t.g.c+t.g.b/2,e.g.c+e.g.b/2)}function pln(t,e){return vwt(),ji((Wn(t),t),(Wn(e),e))}function bln(t){return t!=null&&DD(HK,t.toLowerCase())}function Myt(t){var e;for(e=t.Kc();e.Ob();)e.Pb(),e.Qb()}function K4(t){var e;return e=t.b,!e&&(t.b=e=new pnt(t)),e}function Uit(t){var e;return e=tgn(t),e||null}function Pee(t,e){var n,r;return n=t/e,r=Xs(n),n>r&&++r,r}function wln(t,e,n){var r;r=u(t.d.Kb(n),159),r&&r.Nb(e)}function mln(t,e,n){y7n(t.a,n),Qgn(n),z5n(t.b,n),z7n(e,n)}function Vz(t,e,n,r){this.a=t,this.c=e,this.b=n,this.d=r}function Dyt(t,e,n,r){this.c=t,this.b=e,this.a=n,this.d=r}function Nee(t,e,n,r){this.c=t,this.b=e,this.d=n,this.a=r}function Th(t,e,n,r){this.c=t,this.d=e,this.b=n,this.a=r}function Fee(t,e,n,r){this.a=t,this.d=e,this.c=n,this.b=r}function Git(t,e,n,r){this.a=t,this.e=e,this.d=n,this.c=r}function Bee(t,e,n,r){this.a=t,this.c=e,this.d=n,this.b=r}function Kit(t,e,n){this.a=r8t,this.d=t,this.b=e,this.c=n}function K6(t,e,n,r){Fr.call(this,t,e),this.a=n,this.b=r}function Ree(t,e){this.d=(Wn(t),t),this.a=16449,this.c=e}function jee(t){this.a=new ge,this.e=Vt(Or,le,53,t,0,2)}function vln(t){t.Ug("No crossing minimization",1),t.Vg()}function $ee(){oc.call(this,"There is no more element.")}function zee(t,e,n,r){this.a=t,this.b=e,this.c=n,this.d=r}function qee(t,e,n,r){this.a=t,this.b=e,this.c=n,this.d=r}function V2(t,e,n,r){this.e=t,this.a=e,this.c=n,this.d=r}function Hee(t,e,n,r){this.a=t,this.c=e,this.d=n,this.b=r}function Vee(t,e,n,r){kh(),Hie.call(this,e,n,r),this.a=t}function Uee(t,e,n,r){kh(),Hie.call(this,e,n,r),this.a=t}function Wit(t,e,n){var r,s;return r=Hkt(t),s=e.ti(n,r),s}function pg(t){var e,n;return n=(e=new um,e),GE(n,t),n}function Yit(t){var e,n;return n=(e=new um,e),Kxt(n,t),n}function yln(t,e){var n;return n=tr(t.f,e),_4t(e,n),null}function Gee(t){return!t.b&&(t.b=new Jt(Cs,t,12,3)),t.b}function Kee(t){return m_(t==null||Iit(t)&&t.Tm!==Et),t}function Uz(t){return t.n&&(t.e!==Ype&&t.je(),t.j=null),t}function FE(t){if(Ll(t.d),t.d.d!=t.c)throw nt(new yh)}function Iyt(t){return cr(t.b0&&Che(this)}function Wee(t,e){this.a=t,vsn.call(this,t,u(t.d,15).fd(e))}function xln(t,e){return ji(Zu(t)*Vl(t),Zu(e)*Vl(e))}function kln(t,e){return ji(Zu(t)*Vl(t),Zu(e)*Vl(e))}function Eln(t){return Jm(t)&&Ie(De(ne(t,(Me(),Cw))))}function Tln(t,e){return dn(t,u(K(e,(Me(),MT)),17),e)}function Cln(t,e){return u(K(t,(ae(),qk)),15).Fc(e),e}function Oyt(t,e){return t.b=e.b,t.c=e.c,t.d=e.d,t.a=e.a,t}function Yee(t,e,n,r){this.b=t,this.c=r,X$.call(this,e,n)}function _ln(t,e,n){t.i=0,t.e=0,e!=n&&Ice(t,e,n)}function Sln(t,e,n){t.i=0,t.e=0,e!=n&&Oce(t,e,n)}function Aln(t,e,n){return HC(),e2n(u(tr(t.e,e),529),n)}function W6(t){var e;return e=t.f,e||(t.f=new bE(t,t.c))}function Xee(t,e){return r5(t.j,e.s,e.c)+r5(e.e,t.s,t.c)}function Qee(t,e){t.e&&!t.e.a&&(RGt(t.e,e),Qee(t.e,e))}function Jee(t,e){t.d&&!t.d.a&&(RGt(t.d,e),Jee(t.d,e))}function Lln(t,e){return-ji(Zu(t)*Vl(t),Zu(e)*Vl(e))}function Mln(t){return u(t.ld(),149).Pg()+":"+ec(t.md())}function Zee(){Aot(this,new gD),this.wb=(Tb(),Fn),dE()}function tne(t){this.b=new ge,Hs(this.b,this.b),this.a=t}function Pyt(t,e){new Qi,this.a=new Xu,this.b=t,this.c=e}function Om(){Om=V,f9t=new Gt,Cht=new Gt,d9t=new Be}function wn(){wn=V,so=new jt,j0=new Ft,DU=new _t}function Nyt(){Nyt=V,Qve=new $a,Zve=new Xvt,Jve=new gs}function Y6(){Y6=V,jU=new ge,Vht=new Er,Hht=new ge}function Gz(t,e){if(t==null)throw nt(new C6(e));return t}function Kz(t){return!t.a&&(t.a=new Jt(wi,t,10,11)),t.a}function Ii(t){return!t.q&&(t.q=new Jt(bf,t,11,10)),t.q}function Xt(t){return!t.s&&(t.s=new Jt(Ku,t,21,17)),t.s}function Dln(t){return Hr(t),zle(new nr(ir(t.a.Kc(),new q)))}function Iln(t,e){return Gl(t),Gl(e),WKt(u(t,22),u(e,22))}function U2(t,e,n){var r,s;r=gvt(n),s=new _C(r),C1(t,e,s)}function Qit(t,e,n,r,s,o){OI.call(this,t,e,n,r,s,o?-2:-1)}function ene(t,e,n,r){emt.call(this,e,n),this.b=t,this.a=r}function nne(t,e){Zen.call(this,new Lit(t)),this.a=t,this.b=e}function Fyt(t){this.b=t,this.c=t,t.e=null,t.c=null,this.a=1}function Oln(t){Bf();var e;e=u(t.g,10),e.n.a=t.d.c+e.d.b}function BE(){BE=V;var t,e;e=!$2n(),t=new ht,yht=e?new gt:t}function Jit(t){return wn(),At(t,59)?new Wnt(t):new iz(t)}function Wz(t){return At(t,16)?new v_(u(t,16)):fcn(t.Kc())}function Pln(t){return new ZQt(t,t.e.Rd().gc()*t.c.Rd().gc())}function Nln(t){return new tJt(t,t.e.Rd().gc()*t.c.Rd().gc())}function Byt(t){return t&&t.hashCode?t.hashCode():km(t)}function Zit(t,e){return e==null?!!yo(t.f,null):Qcn(t.i,e)}function Fln(t,e){var n;return n=vmt(t.a,e),n&&(e.d=null),n}function rne(t,e,n){return t.f?t.f.ef(e,n):!1}function vI(t,e,n,r){hs(t.c[e.g],n.g,r),hs(t.c[n.g],e.g,r)}function tst(t,e,n,r){hs(t.c[e.g],e.g,n),hs(t.b[e.g],e.g,r)}function Bln(t,e,n){return Rt(Ht(n.a))<=t&&Rt(Ht(n.b))>=e}function ine(t,e){this.g=t,this.d=ot(st(z0,1),Bp,10,0,[e])}function sne(t){this.c=t,this.b=new dp(u(Hr(new Nu),50))}function ane(t){this.c=t,this.b=new dp(u(Hr(new g4),50))}function one(t){this.b=t,this.a=new dp(u(Hr(new _i),50))}function cne(){this.b=new Os,this.d=new Qi,this.e=new B2t}function Ryt(){this.c=new Ea,this.d=new Ea,this.e=new Ea}function Pm(){this.a=new Xu,this.b=(ih(3,c3),new bu(3))}function mp(t,e){this.e=t,this.a=sa,this.b=u0e(e),this.c=e}function Yz(t){this.c=t.c,this.d=t.d,this.b=t.b,this.a=t.a}function une(t,e,n,r,s,o){this.a=t,Gst.call(this,e,n,r,s,o)}function lne(t,e,n,r,s,o){this.a=t,Gst.call(this,e,n,r,s,o)}function Sb(t,e,n,r,s,o,h){return new wst(t.e,e,n,r,s,o,h)}function Rln(t,e,n){return n>=0&&hn(t.substr(n,e.length),e)}function hne(t,e){return At(e,149)&&hn(t.b,u(e,149).Pg())}function jln(t,e){return t.a?e.Gh().Kc():u(e.Gh(),71).Ii()}function fne(t,e){var n;return n=t.b.Qc(e),aie(n,t.b.gc()),n}function yI(t,e){if(t==null)throw nt(new C6(e));return t}function Ko(t){return t.u||(Sl(t),t.u=new UJt(t,t)),t.u}function est(t){this.a=(wn(),At(t,59)?new Wnt(t):new iz(t))}function ju(t){var e;return e=u($n(t,16),29),e||t.ii()}function Xz(t,e){var n;return n=R2(t.Rm),e==null?n:n+": "+e}function Ch(t,e,n){return Sa(e,n,t.length),t.substr(e,n-e)}function dne(t,e){uz.call(this),Y3t(this),this.a=t,this.c=e}function $ln(t){t&&Xz(t,t.ie())}function zln(t){c$(),b.setTimeout(function(){throw t},0)}function qln(){return vH(),ot(st(x9t,1),te,436,0,[Oht,y9t])}function Hln(){return _q(),ot(st(E9t,1),te,435,0,[k9t,Pht])}function Vln(){return Sq(),ot(st(Q9t,1),te,432,0,[Uht,$U])}function Uln(){return t7(),ot(st(J3e,1),te,517,0,[zP,sft])}function Gln(){return FI(),ot(st(x_t,1),te,487,0,[y_t,mG])}function Kln(){return HI(),ot(st(m_t,1),te,428,0,[bG,w_t])}function Wln(){return mq(),ot(st(l_t,1),te,431,0,[u_t,yft])}function Yln(){return zI(),ot(st(_At,1),te,430,0,[b1t,w1t])}function Xln(){return N_(),ot(st(H6e,1),te,531,0,[BA,FA])}function Qln(){return qd(),ot(st(X6e,1),te,523,0,[Lv,Vp])}function Jln(){return X1(),ot(st(J6e,1),te,522,0,[Mw,gd])}function Zln(){return E1(),ot(st(dke,1),te,528,0,[F3,n2])}function thn(){return oq(),ot(st(P_t,1),te,429,0,[Nft,O_t])}function ehn(){return fq(),ot(st(fMt,1),te,490,0,[adt,hMt])}function nhn(){return aat(),ot(st(mMt,1),te,491,0,[bMt,wMt])}function rhn(){return iq(),ot(st(xLt,1),te,433,0,[j1t,yLt])}function ihn(){return yq(),ot(st(TLt,1),te,434,0,[ELt,U1t])}function shn(){return Fm(),ot(st(yke,1),te,464,0,[r2,X5])}function ahn(){return qq(),ot(st(kLt,1),te,500,0,[aK,Z5])}function ohn(){return DI(),ot(st(yMt,1),te,438,0,[hdt,wK])}function chn(){return ZI(),ot(st(qMt,1),te,437,0,[vK,zMt])}function uhn(){return hit(),ot(st(PK,1),te,347,0,[rIt,iIt])}function Qz(t,e,n,r){return n>=0?t.Uh(e,n,r):t.Ch(null,n,r)}function xI(t){return t.b.b==0?t.a.sf():bit(t.b)}function lhn(t){if(t.p!=5)throw nt(new Yu);return qr(t.f)}function hhn(t){if(t.p!=5)throw nt(new Yu);return qr(t.k)}function jyt(t){return $t(t.a)===$t((iat(),Ydt))&&uTn(t),t.a}function fhn(t,e){t.b=e,t.c>0&&t.b>0&&(t.g=Cz(t.c,t.b,t.a))}function dhn(t,e){t.c=e,t.c>0&&t.b>0&&(t.g=Cz(t.c,t.b,t.a))}function gne(t,e){vt(this,new se(t.a,t.b)),Mt(this,lI(e))}function Nm(){tnn.call(this,new A6(zy(12))),Tmt(!0),this.a=2}function nst(t,e,n){xi(),cm.call(this,t),this.b=e,this.a=n}function $yt(t,e,n){kh(),Zj.call(this,e),this.a=t,this.b=n}function pne(t){var e;e=t.c.d.b,t.b=e,t.a=t.c.d,e.a=t.c.d.b=t}function ghn(t){return t.b==0?null:(cr(t.b!=0),Lh(t,t.a.a))}function eu(t,e){return e==null?Uo(yo(t.f,null)):WC(t.i,e)}function bne(t,e,n,r,s){return new Mot(t,(VE(),Lht),e,n,r,s)}function Jz(t,e){return rie(e),R0n(t,Vt(Or,ii,28,e,15,1),e)}function Zz(t,e){return Gz(t,"set1"),Gz(e,"set2"),new sYt(t,e)}function phn(t,e){var n=vht[t.charCodeAt(0)];return n??t}function wne(t,e){var n,r;return n=e,r=new me,Uge(t,n,r),r.d}function rst(t,e,n,r){var s;s=new WJt,e.a[n.g]=s,U6(t.b,r,s)}function bhn(t,e){var n;return n=N0n(t.f,e),Ei(cz(n),t.f.d)}function tq(t){var e;G0n(t.a),TQt(t.a),e=new LC(t.a),_5t(e)}function whn(t,e){Zde(t,!0),Tu(t.e.Rf(),new mvt(t,!0,e))}function mhn(t,e){return Y6(),t==es(M0(e))||t==es(Bb(e))}function vhn(t,e){return Eg(),u(K(e,(xc(),o0)),17).a==t}function Xs(t){return Math.max(Math.min(t,ki),-2147483648)|0}function mne(t){this.a=u(Hr(t),277),this.b=(wn(),new Dmt(t))}function vne(t,e,n){this.i=new ge,this.b=t,this.g=e,this.a=n}function zyt(t,e,n){this.a=new ge,this.e=t,this.f=e,this.c=n}function eq(t,e,n){this.c=new ge,this.e=t,this.f=e,this.b=n}function yne(t){uz.call(this),Y3t(this),this.a=t,this.c=!0}function yhn(t){function e(){}return e.prototype=t||{},new e}function xhn(t){if(t.Ae())return null;var e=t.n;return CU[e]}function kI(t){return t.Db>>16!=3?null:u(t.Cb,27)}function Y1(t){return t.Db>>16!=9?null:u(t.Cb,27)}function xne(t){return t.Db>>16!=6?null:u(t.Cb,74)}function Fm(){Fm=V,r2=new Hwt(Tk,0),X5=new Hwt(Ck,1)}function qd(){qd=V,Lv=new $wt(Ck,0),Vp=new $wt(Tk,1)}function X1(){X1=V,Mw=new zwt(dut,0),gd=new zwt("UP",1)}function kne(){kne=V,vve=Rr((s$(),ot(st(mve,1),te,549,0,[wht])))}function Ene(t){var e;return e=new f$(zy(t.length)),j4t(e,t),e}function Tne(t,e){return t.b+=e.b,t.c+=e.c,t.d+=e.d,t.a+=e.a,t}function khn(t,e){return lce(t,e)?(aoe(t),!0):!1}function bg(t,e){if(e==null)throw nt(new y6);return q2n(t,e)}function EI(t,e){var n;n=t.q.getHours(),t.q.setDate(e),TS(t,n)}function qyt(t,e,n){var r;r=t.Ih(e),r>=0?t.bi(r,n):j6t(t,e,n)}function Cne(t,e){var n;return n=t.Ih(e),n>=0?t.Wh(n):Fot(t,e)}function _ne(t,e){var n;for(Hr(e),n=t.a;n;n=n.c)e.Yd(n.g,n.i)}function ist(t,e,n){var r;r=Mce(t,e,n),t.b=new Vq(r.c.length)}function W4(t,e,n){nq(),t&&di(Gdt,t,e),t&&di(RN,t,n)}function Ehn(t,e){return gz(),Nn(),u(e.a,17).a0}function Hyt(t){var e;return e=t.d,e=t.bj(t.f),Mr(t,e),e.Ob()}function Sne(t,e){var n;return n=new Kvt(e),Jhe(n,t),new fl(n)}function _hn(t){if(t.p!=0)throw nt(new Yu);return a_(t.f,0)}function Shn(t){if(t.p!=0)throw nt(new Yu);return a_(t.k,0)}function Ane(t){return t.Db>>16!=7?null:u(t.Cb,241)}function RE(t){return t.Db>>16!=6?null:u(t.Cb,241)}function Lne(t){return t.Db>>16!=7?null:u(t.Cb,167)}function es(t){return t.Db>>16!=11?null:u(t.Cb,27)}function Ny(t){return t.Db>>16!=17?null:u(t.Cb,29)}function Mne(t){return t.Db>>16!=3?null:u(t.Cb,155)}function Vyt(t){var e;return Nb(t),e=new Os,Ai(t,new AC(e))}function Dne(t,e){var n=t.a=t.a||[];return n[e]||(n[e]=t.ve(e))}function Ahn(t,e){var n;n=t.q.getHours(),t.q.setMonth(e),TS(t,n)}function Ine(t,e){nz(this),this.f=e,this.g=t,Uz(this),this.je()}function One(t,e){this.a=t,this.c=Ma(this.a),this.b=new Yz(e)}function Pne(t,e,n){this.a=e,this.c=t,this.b=(Hr(n),new fl(n))}function Nne(t,e,n){this.a=e,this.c=t,this.b=(Hr(n),new fl(n))}function Fne(t){this.a=t,this.b=Vt($6e,le,2043,t.e.length,0,2)}function Bne(){this.a=new Bd,this.e=new Os,this.g=0,this.i=0}function nq(){nq=V,Gdt=new Er,RN=new Er,krn(Bve,new zR)}function Rne(){Rne=V,T6e=tl(new Fs,(Ha(),Qo),(Ja(),qP))}function Uyt(){Uyt=V,C6e=tl(new Fs,(Ha(),Qo),(Ja(),qP))}function jne(){jne=V,S6e=tl(new Fs,(Ha(),Qo),(Ja(),qP))}function $ne(){$ne=V,U6e=ri(new Fs,(Ha(),Qo),(Ja(),pA))}function th(){th=V,W6e=ri(new Fs,(Ha(),Qo),(Ja(),pA))}function zne(){zne=V,Y6e=ri(new Fs,(Ha(),Qo),(Ja(),pA))}function ast(){ast=V,tke=ri(new Fs,(Ha(),Qo),(Ja(),pA))}function D_(t,e,n,r,s,o){return new xg(t.e,e,t.Lj(),n,r,s,o)}function Bo(t,e,n){return e==null?vu(t.f,null,n):Gm(t.i,e,n)}function Ya(t,e){t.c&&$u(t.c.g,t),t.c=e,t.c&&pe(t.c.g,t)}function Ca(t,e){t.c&&$u(t.c.a,t),t.c=e,t.c&&pe(t.c.a,t)}function uc(t,e){t.i&&$u(t.i.j,t),t.i=e,t.i&&pe(t.i.j,t)}function ya(t,e){t.d&&$u(t.d.e,t),t.d=e,t.d&&pe(t.d.e,t)}function ost(t,e){t.a&&$u(t.a.k,t),t.a=e,t.a&&pe(t.a.k,t)}function cst(t,e){t.b&&$u(t.b.f,t),t.b=e,t.b&&pe(t.b.f,t)}function qne(t,e){$un(t,t.b,t.c),u(t.b.b,68),e&&u(e.b,68).b}function Lhn(t,e){return ji(u(t.c,65).c.e.b,u(e.c,65).c.e.b)}function Mhn(t,e){return ji(u(t.c,65).c.e.a,u(e.c,65).c.e.a)}function Dhn(t){return Tat(),Nn(),u(t.a,86).d.e!=0}function rq(t,e){At(t.Cb,184)&&(u(t.Cb,184).tb=null),wu(t,e)}function ust(t,e){At(t.Cb,90)&&t3(Sl(u(t.Cb,90)),4),wu(t,e)}function Ihn(t,e){w5t(t,e),At(t.Cb,90)&&t3(Sl(u(t.Cb,90)),2)}function Ohn(t,e){var n,r;n=e.c,r=n!=null,r&&G6(t,new Oy(e.c))}function Hne(t){var e,n;return n=(dE(),e=new um,e),GE(n,t),n}function Vne(t){var e,n;return n=(dE(),e=new um,e),GE(n,t),n}function Une(t){for(var e;;)if(e=t.Pb(),!t.Ob())return e}function Phn(t,e,n){return pe(t.a,(zz(),aot(e,n),new pm(e,n))),t}function nu(t,e){return bo(),Rst(e)?new xz(e,t):new YD(e,t)}function TI(t){return Gd(),Rc(t,0)>=0?Fb(t):__(Fb(Ep(t)))}function Nhn(t){var e;return e=u(vz(t.b),9),new Eh(t.a,e,t.c)}function Gne(t,e){var n;return n=u(Gy(W6(t.a),e),16),n?n.gc():0}function Kne(t,e,n){var r;mue(e,n,t.c.length),r=n-e,dwt(t.c,e,r)}function vp(t,e,n){mue(e,n,t.gc()),this.c=t,this.a=e,this.b=n-e}function X6(t){this.c=new Qi,this.b=t.b,this.d=t.c,this.a=t.a}function lst(t){this.a=b.Math.cos(t),this.b=b.Math.sin(t)}function G2(t,e,n,r){this.c=t,this.d=r,ost(this,e),cst(this,n)}function Gyt(t,e){Jen.call(this,new A6(zy(t))),ih(e,Hpe),this.a=e}function Wne(t,e,n){return new Mot(t,(VE(),Aht),null,!1,e,n)}function Yne(t,e,n){return new Mot(t,(VE(),Mht),e,n,null,!1)}function Fhn(){return bl(),ot(st(zo,1),te,108,0,[v9t,rc,w3])}function Bhn(){return zu(),ot(st(cye,1),te,471,0,[D1,Qb,Kf])}function Rhn(){return pl(),ot(st(aye,1),te,470,0,[i0,Xb,Gf])}function jhn(){return _1(),ot(st(m3,1),te,237,0,[Tc,yu,Cc])}function $hn(){return R_(),ot(st(fCt,1),te,391,0,[Yht,Wht,Xht])}function zhn(){return Hm(),ot(st(hft,1),te,372,0,[wv,Jb,bv])}function qhn(){return z_(),ot(st(f_t,1),te,322,0,[wA,UP,h_t])}function Hhn(){return Nq(),ot(st(g_t,1),te,351,0,[d_t,pG,xft])}function Vhn(){return ew(),ot(st(L4e,1),te,459,0,[Tft,TT,R5])}function Uhn(){return s7(),ot(st(Pft,1),te,298,0,[Ift,Oft,GP])}function Ghn(){return kg(),ot(st(B4e,1),te,311,0,[KP,$5,jk])}function Khn(){return Q_(),ot(st(bAt,1),te,390,0,[u1t,pAt,GG])}function Whn(){return xo(),ot(st(w6e,1),te,462,0,[OA,vl,xu])}function Yhn(){return Yq(),ot(st(LAt,1),te,387,0,[SAt,m1t,AAt])}function Xhn(){return W_(),ot(st(MAt,1),te,349,0,[y1t,v1t,iN])}function Qhn(){return d7(),ot(st(IAt,1),te,350,0,[x1t,DAt,PA])}function Jhn(){return Pq(),ot(st(NAt,1),te,352,0,[PAt,k1t,OAt])}function Zhn(){return Zq(),ot(st(FAt,1),te,388,0,[E1t,BT,N3])}function tfn(){return qm(),ot(st(R6e,1),te,463,0,[sN,NA,XG])}function Q1(t){return hc(ot(st(ua,1),le,8,0,[t.i.n,t.n,t.a]))}function efn(){return Y_(),ot(st(ZAt,1),te,392,0,[JAt,_1t,oN])}function Xne(){Xne=V,Yke=tl(new Fs,(dk(),jA),(kS(),HAt))}function iq(){iq=V,j1t=new Vwt("DFS",0),yLt=new Vwt("BFS",1)}function Qne(t,e,n){var r;r=new aZ,r.b=e,r.a=n,++e.b,pe(t.d,r)}function nfn(t,e,n){var r;r=new eo(n.d),Ei(r,t),b5t(e,r.a,r.b)}function rfn(t,e){VQt(t,qr(ia(_m(e,24),vV)),qr(ia(e,vV)))}function Fy(t,e){if(t<0||t>e)throw nt(new No(f8t+t+d8t+e))}function mn(t,e){if(t<0||t>=e)throw nt(new No(f8t+t+d8t+e))}function qn(t,e){if(t<0||t>=e)throw nt(new twt(f8t+t+d8t+e))}function gn(t,e){this.b=(Wn(t),t),this.a=e&u3?e:e|64|Wd}function Kyt(t){var e;return Nb(t),e=(Om(),Om(),Cht),Mq(t,e)}function ifn(t,e,n){var r;return r=SS(t,e,!1),r.b<=e&&r.a<=n}function sfn(){return xq(),ot(st(pMt,1),te,439,0,[odt,gMt,dMt])}function afn(){return cH(),ot(st(YLt,1),te,394,0,[WLt,rdt,KLt])}function ofn(){return gH(),ot(st(GLt,1),te,445,0,[fN,lK,Q1t])}function cfn(){return CH(),ot(st(_8e,1),te,455,0,[J1t,tdt,Z1t])}function ufn(){return rO(),ot(st(SLt,1),te,393,0,[oK,CLt,_Lt])}function lfn(){return Wq(),ot(st(ULt,1),te,299,0,[X1t,VLt,HLt])}function hfn(){return nd(),ot(st(BDt,1),te,278,0,[HT,$3,VT])}function ffn(){return ok(),ot(st(nIt,1),te,280,0,[eIt,q3,OK])}function dfn(){return Cg(),ot(st(YDt,1),te,346,0,[SK,Wp,aL])}function gfn(){return uO(),ot(st(cdt,1),te,444,0,[gK,pK,bK])}function Bm(t){return Hr(t),At(t,16)?new fl(u(t,16)):SE(t.Kc())}function Wyt(t,e){return t&&t.equals?t.equals(e):$t(t)===$t(e)}function ia(t,e){return Db(aun(Zo(t)?tf(t):t,Zo(e)?tf(e):e))}function k1(t,e){return Db(oun(Zo(t)?tf(t):t,Zo(e)?tf(e):e))}function hst(t,e){return Db(cun(Zo(t)?tf(t):t,Zo(e)?tf(e):e))}function pfn(t,e){var n;return n=(Wn(t),t).g,qmt(!!n),Wn(e),n(e)}function Jne(t,e){var n,r;return r=ME(t,e),n=t.a.fd(r),new rYt(t,n)}function bfn(t){return t.Db>>16!=6?null:u(jot(t),241)}function wfn(t){if(t.p!=2)throw nt(new Yu);return qr(t.f)&js}function mfn(t){if(t.p!=2)throw nt(new Yu);return qr(t.k)&js}function et(t){return cr(t.ar?1:0}function nre(t,e){var n,r;return n=Pst(e),r=n,u(tr(t.c,r),17).a}function fst(t,e,n){var r;r=t.d[e.p],t.d[e.p]=t.d[n.p],t.d[n.p]=r}function Lfn(t,e,n){var r;t.n&&e&&n&&(r=new ztt,pe(t.e,r))}function dst(t,e){if(qs(t.a,e),e.d)throw nt(new oc(fbe));e.d=t}function Qyt(t,e){this.a=new ge,this.d=new ge,this.f=t,this.c=e}function rre(){this.c=new $Qt,this.a=new Gie,this.b=new iKt,kYt()}function ire(){sk(),this.b=new Er,this.a=new Er,this.c=new ge}function sre(t,e,n){this.d=t,this.j=e,this.e=n,this.o=-1,this.p=3}function are(t,e,n){this.d=t,this.k=e,this.f=n,this.o=-1,this.p=5}function ore(t,e,n,r,s,o){Q3t.call(this,t,e,n,r,s),o&&(this.o=-2)}function cre(t,e,n,r,s,o){J3t.call(this,t,e,n,r,s),o&&(this.o=-2)}function ure(t,e,n,r,s,o){p3t.call(this,t,e,n,r,s),o&&(this.o=-2)}function lre(t,e,n,r,s,o){e4t.call(this,t,e,n,r,s),o&&(this.o=-2)}function hre(t,e,n,r,s,o){b3t.call(this,t,e,n,r,s),o&&(this.o=-2)}function fre(t,e,n,r,s,o){Z3t.call(this,t,e,n,r,s),o&&(this.o=-2)}function dre(t,e,n,r,s,o){t4t.call(this,t,e,n,r,s),o&&(this.o=-2)}function gre(t,e,n,r,s,o){w3t.call(this,t,e,n,r,s),o&&(this.o=-2)}function pre(t,e,n,r){Zj.call(this,n),this.b=t,this.c=e,this.d=r}function bre(t,e){this.f=t,this.a=(zE(),GK),this.c=GK,this.b=e}function wre(t,e){this.g=t,this.d=(zE(),KK),this.a=KK,this.b=e}function Jyt(t,e){!t.c&&(t.c=new ws(t,0)),uV(t.c,(Fi(),mL),e)}function Mfn(t,e){return fxn(t,e,At(e,102)&&(u(e,19).Bb&fo)!=0)}function Dfn(t,e){return Qte(Oc(t.q.getTime()),Oc(e.q.getTime()))}function mre(t){return vit(t.e.Rd().gc()*t.c.Rd().gc(),16,new dnt(t))}function Ifn(t){return!!t.u&&Gc(t.u.a).i!=0&&!(t.n&¬(t.n))}function Ofn(t){return!!t.a&&Al(t.a.a).i!=0&&!(t.b&&rot(t.b))}function Zyt(t,e){return e==0?!!t.o&&t.o.f!=0:Xat(t,e)}function Pfn(t,e,n){var r;return r=u(t.Zb().xc(e),16),!!r&&r.Hc(n)}function vre(t,e,n){var r;return r=u(t.Zb().xc(e),16),!!r&&r.Mc(n)}function yre(t,e){var n;return n=1-e,t.a[n]=Hq(t.a[n],n),Hq(t,e)}function xre(t,e){var n,r;return r=ia(t,Eo),n=Rf(e,32),k1(n,r)}function kre(t,e,n){var r;r=(Hr(t),new fl(t)),Fmn(new Pne(r,e,n))}function CI(t,e,n){var r;r=(Hr(t),new fl(t)),Bmn(new Nne(r,e,n))}function vc(t,e,n,r,s,o){return Zoe(t,e,n,o),c5t(t,r),u5t(t,s),t}function Ere(t,e,n,r){return t.a+=""+Ch(e==null?Hu:ec(e),n,r),t}function _a(t,e){this.a=t,$r.call(this,t),Fy(e,t.gc()),this.b=e}function Tre(t){this.a=Vt(sa,Ln,1,N4t(b.Math.max(8,t))<<1,5,1)}function _I(t){return u(id(t,Vt(z0,Bp,10,t.c.length,0,1)),199)}function Hd(t){return u(id(t,Vt(rft,Mut,18,t.c.length,0,1)),482)}function Cre(t){return t.a?t.e.length==0?t.a.a:t.a.a+(""+t.e):t.c}function I_(t){for(;t.d>0&&t.a[--t.d]==0;);t.a[t.d++]==0&&(t.e=0)}function _re(t){return cr(t.b.b!=t.d.a),t.c=t.b=t.b.b,--t.a,t.c.c}function Nfn(t,e,n){t.a=e,t.c=n,t.b.a.$b(),Zl(t.d),wy(t.e.a.c,0)}function Sre(t,e){var n;t.e=new V2t,n=n3(e),Ms(n,t.c),qde(t,n,0)}function Bs(t,e,n,r){var s;s=new rC,s.a=e,s.b=n,s.c=r,Zr(t.a,s)}function he(t,e,n,r){var s;s=new rC,s.a=e,s.b=n,s.c=r,Zr(t.b,s)}function Are(t,e,n){if(t<0||en)throw nt(new No(W3n(t,e,n)))}function SI(t,e){if(t<0||t>=e)throw nt(new No(C4n(t,e)));return t}function Ffn(t){if(!("stack"in t))try{throw t}catch{}return t}function Y4(t){return HC(),At(t.g,10)?u(t.g,10):null}function Bfn(t){return K4(t).dc()?!1:(ain(t,new ut),!0)}function W2(t){var e;return Zo(t)?(e=t,e==-0?0:e):Jdn(t)}function Lre(t,e){return At(e,44)?cot(t.a,u(e,44)):!1}function Mre(t,e){return At(e,44)?cot(t.a,u(e,44)):!1}function Dre(t,e){return At(e,44)?cot(t.a,u(e,44)):!1}function t3t(t){var e;return _b(t),e=new Ot,D4(t.a,new y0(e)),e}function e3t(){var t,e,n;return e=(n=(t=new um,t),n),pe(RIt,e),e}function sq(t){var e;return _b(t),e=new vn,D4(t.a,new G1(e)),e}function Rfn(t,e){return t.a<=t.b?(e.Dd(t.a++),!0):!1}function Ire(t){eat.call(this,t,(VE(),Sht),null,!1,null,!1)}function Ore(){Ore=V,$ye=Rr((m$(),ot(st(V9t,1),te,488,0,[$ht])))}function Pre(){Pre=V,RAt=_ee(fe(1),fe(4)),BAt=_ee(fe(1),fe(2))}function jfn(t,e){return new dit(e,p_(Ma(e.e),t,t),(Nn(),!0))}function aq(t){return new bu((ih(t,Dct),Aq(Xa(Xa(5,t),t/10|0))))}function $fn(t){return vit(t.e.Rd().gc()*t.c.Rd().gc(),273,new fnt(t))}function Nre(t){return u(id(t,Vt(Y3e,Vbe,12,t.c.length,0,1)),2042)}function zfn(t){return th(),!ho(t)&&!(!ho(t)&&t.c.i.c==t.d.i.c)}function qfn(t,e){return rk(),u(K(e,(xc(),Q5)),17).a>=t.gc()}function O_(t,e){TCn(e,t),Pvt(t.d),Pvt(u(K(t,(Me(),jG)),214))}function gst(t,e){CCn(e,t),Nvt(t.d),Nvt(u(K(t,(Me(),jG)),214))}function Hfn(t,e,n){t.d&&$u(t.d.e,t),t.d=e,t.d&&Cm(t.d.e,n,t)}function Vfn(t,e,n){return n.f.c.length>0?uyt(t.a,e,n):uyt(t.b,e,n)}function Ufn(t,e,n){var r;r=cwn();try{return Isn(t,e,n)}finally{B1n(r)}}function Rm(t,e){var n,r;return n=bg(t,e),r=null,n&&(r=n.pe()),r}function P_(t,e){var n,r;return n=bg(t,e),r=null,n&&(r=n.se()),r}function jE(t,e){var n,r;return n=$y(t,e),r=null,n&&(r=n.se()),r}function wg(t,e){var n,r;return n=bg(t,e),r=null,n&&(r=t6t(n)),r}function Gfn(t,e,n){var r;return r=x7(n),iV(t.g,r,e),iV(t.i,e,n),e}function n3t(t,e,n){this.d=new GVt(this),this.e=t,this.i=e,this.f=n}function Fre(t,e,n,r){this.e=null,this.c=t,this.d=e,this.a=n,this.b=r}function Bre(t,e,n,r){PQt(this),this.c=t,this.e=e,this.f=n,this.b=r}function r3t(t,e,n,r){this.d=t,this.n=e,this.g=n,this.o=r,this.p=-1}function Rre(t,e,n,r){return At(n,59)?new gJt(t,e,n,r):new ryt(t,e,n,r)}function $E(t){return At(t,16)?u(t,16).dc():!t.Kc().Ob()}function jre(t){if(t.e.g!=t.b)throw nt(new yh);return!!t.c&&t.d>0}function Tr(t){return cr(t.b!=t.d.c),t.c=t.b,t.b=t.b.a,++t.a,t.c.c}function i3t(t,e){Wn(e),hs(t.a,t.c,e),t.c=t.c+1&t.a.length-1,ohe(t)}function Ab(t,e){Wn(e),t.b=t.b-1&t.a.length-1,hs(t.a,t.b,e),ohe(t)}function $re(t){var e;e=t.Gh(),this.a=At(e,71)?u(e,71).Ii():e.Kc()}function Kfn(t){return new gn(I0n(u(t.a.md(),16).gc(),t.a.ld()),16)}function zre(){zre=V,rEe=Rr((x$(),ot(st(vMt,1),te,489,0,[udt])))}function qre(){qre=V,sEe=Rr((k$(),ot(st(iEe,1),te,558,0,[ldt])))}function Hre(){Hre=V,EEe=Rr((VC(),ot(st($Mt,1),te,539,0,[bN])))}function Wfn(){return iw(),ot(st(bCt,1),te,389,0,[x3,pCt,eft,nft])}function Yfn(){return VE(),ot(st(IU,1),te,303,0,[Sht,Aht,Lht,Mht])}function Xfn(){return lk(),ot(st(Nye,1),te,332,0,[PP,OP,NP,FP])}function Qfn(){return cS(),ot(st(Rye,1),te,406,0,[BP,FU,BU,RP])}function Jfn(){return Um(),ot(st(Oye,1),te,417,0,[IP,DP,Rht,jht])}function Zfn(){return a7(),ot(st(B3e,1),te,416,0,[pv,y3,v3,O5])}function t1n(){return rd(),ot(st(d4e,1),te,421,0,[Rk,wT,mT,lft])}function e1n(){return Jq(),ot(st(n4e,1),te,371,0,[uft,uG,lG,HP])}function n1n(){return Yy(),ot(st(h1t,1),te,203,0,[KG,l1t,Y5,W5])}function r1n(){return Vd(),ot(st(CAt,1),te,284,0,[Hp,TAt,g1t,p1t])}function i1n(t){var e;return t.j==(ve(),vr)&&(e=M1e(t),Ju(e,Jn))}function s1n(t,e){var n;n=e.a,Ya(n,e.c.d),ya(n,e.d.d),Vy(n.a,t.n)}function s3t(t,e){var n;return n=u(ed(t.b,e),67),!n&&(n=new Qi),n}function J6(t){return HC(),At(t.g,154)?u(t.g,154):null}function a1n(t){t.a=null,t.e=null,wy(t.b.c,0),wy(t.f.c,0),t.c=null}function oq(){oq=V,Nft=new Bwt(Y7,0),O_t=new Bwt("TOP_LEFT",1)}function N_(){N_=V,BA=new jwt("UPPER",0),FA=new jwt("LOWER",1)}function o1n(t,e){return N6(new se(e.e.a+e.f.a/2,e.e.b+e.f.b/2),t)}function Vre(t,e){return u(ql(Dy(u(Mi(t.k,e),15).Oc(),N5)),113)}function Ure(t,e){return u(ql(H6(u(Mi(t.k,e),15).Oc(),N5)),113)}function c1n(){return dk(),ot(st(zAt,1),te,405,0,[tK,RA,jA,$A])}function u1n(){return X_(),ot(st(vLt,1),te,353,0,[R1t,sK,B1t,F1t])}function l1n(){return LH(),ot(st(qLt,1),te,354,0,[Y1t,$Lt,zLt,jLt])}function h1n(){return Kl(),ot(st(hL,1),te,386,0,[IN,Fw,DN,z3])}function f1n(){return ah(),ot(st(l7e,1),te,290,0,[AN,V0,a2,SN])}function d1n(){return _g(),ot(st(Bdt,1),te,223,0,[Fdt,_N,UT,Jk])}function g1n(){return lH(),ot(st(cIt,1),te,320,0,[$dt,sIt,oIt,aIt])}function p1n(){return tH(),ot(st(S7e,1),te,415,0,[zdt,lIt,uIt,hIt])}function b1n(t){return nq(),Eu(Gdt,t)?u(tr(Gdt,t),341).Qg():null}function _h(t,e,n){return e<0?Fot(t,n):u(n,69).wk().Bk(t,t.hi(),e)}function w1n(t,e,n){var r;return r=x7(n),iV(t.j,r,e),di(t.k,e,n),e}function m1n(t,e,n){var r;return r=x7(n),iV(t.d,r,e),di(t.e,e,n),e}function Gre(t){var e,n;return e=(wb(),n=new x4,n),t&&WH(e,t),e}function a3t(t){var e;return e=t.aj(t.i),t.i>0&&Wc(t.g,0,e,0,t.i),e}function Kre(t,e){var n;for(n=t.j.c.length;n>24}function y1n(t){if(t.p!=1)throw nt(new Yu);return qr(t.k)<<24>>24}function x1n(t){if(t.p!=7)throw nt(new Yu);return qr(t.k)<<16>>16}function k1n(t){if(t.p!=7)throw nt(new Yu);return qr(t.f)<<16>>16}function X4(t,e){return e.e==0||t.e==0?lA:(O7(),Uot(t,e))}function Xre(t,e){return $t(e)===$t(t)?"(this Map)":e==null?Hu:ec(e)}function E1n(t,e,n){return Ait(Ht(Uo(yo(t.f,e))),Ht(Uo(yo(t.f,n))))}function T1n(t,e,n){var r;r=u(tr(t.g,n),60),pe(t.a.c,new Ys(e,r))}function Qre(t,e,n){t.i=0,t.e=0,e!=n&&(Oce(t,e,n),Ice(t,e,n))}function C1n(t,e,n,r,s){var o;o=_xn(s,n,r),pe(e,m4n(s,o)),u3n(t,s,e)}function o3t(t,e,n,r,s){this.i=t,this.a=e,this.e=n,this.j=r,this.f=s}function Jre(t,e){Ryt.call(this),this.a=t,this.b=e,pe(this.a.b,this)}function Zre(t){this.b=new Er,this.c=new Er,this.d=new Er,this.a=t}function tie(t,e){var n;return n=new L4,t.Gd(n),n.a+="..",e.Hd(n),n.a}function eie(t,e){var n;for(n=e;n;)Em(t,n.i,n.j),n=es(n);return t}function nie(t,e,n){var r;return r=x7(n),di(t.b,r,e),di(t.c,e,n),e}function mg(t){var e;for(e=0;t.Ob();)t.Pb(),e=Xa(e,1);return Aq(e)}function S0(t,e){bo();var n;return n=u(t,69).vk(),C3n(n,e),n.xl(e)}function _1n(t,e,n){if(n){var r=n.oe();t.a[e]=r(n)}else delete t.a[e]}function c3t(t,e){var n;n=t.q.getHours(),t.q.setFullYear(e+Hb),TS(t,n)}function S1n(t,e){return u(e==null?Uo(yo(t.f,null)):WC(t.i,e),288)}function u3t(t,e){return t==(Un(),Ts)&&e==Ts?4:t==Ts||e==Ts?8:32}function cq(t,e,n){return aV(t,e,n,At(e,102)&&(u(e,19).Bb&fo)!=0)}function A1n(t,e,n){return B7(t,e,n,At(e,102)&&(u(e,19).Bb&fo)!=0)}function L1n(t,e,n){return vxn(t,e,n,At(e,102)&&(u(e,19).Bb&fo)!=0)}function l3t(t){t.b!=t.c&&(t.a=Vt(sa,Ln,1,8,5,1),t.b=0,t.c=0)}function F_(t){return cr(t.a=0&&t.a[n]===e[n];n--);return n<0}function uq(t){var e;return t?new Kvt(t):(e=new Bd,Zst(e,t),e)}function F1n(t,e){var n,r;r=!1;do n=kce(t,e),r=r|n;while(n);return r}function B1n(t){t&&u0n((X2t(),UTt)),--_U,t&&SU!=-1&&(Arn(SU),SU=-1)}function lq(t){Rxt(),VQt(this,qr(ia(_m(t,24),vV)),qr(ia(t,vV)))}function oie(){oie=V,tye=Rr((vH(),ot(st(x9t,1),te,436,0,[Oht,y9t])))}function cie(){cie=V,eye=Rr((_q(),ot(st(E9t,1),te,435,0,[k9t,Pht])))}function uie(){uie=V,r3e=Rr((Sq(),ot(st(Q9t,1),te,432,0,[Uht,$U])))}function lie(){lie=V,Z3e=Rr((t7(),ot(st(J3e,1),te,517,0,[zP,sft])))}function hie(){hie=V,I4e=Rr((FI(),ot(st(x_t,1),te,487,0,[y_t,mG])))}function fie(){fie=V,A4e=Rr((HI(),ot(st(m_t,1),te,428,0,[bG,w_t])))}function die(){die=V,T4e=Rr((mq(),ot(st(l_t,1),te,431,0,[u_t,yft])))}function gie(){gie=V,b6e=Rr((zI(),ot(st(_At,1),te,430,0,[b1t,w1t])))}function pie(){pie=V,V6e=Rr((N_(),ot(st(H6e,1),te,531,0,[BA,FA])))}function bie(){bie=V,Q6e=Rr((qd(),ot(st(X6e,1),te,523,0,[Lv,Vp])))}function wie(){wie=V,Z6e=Rr((X1(),ot(st(J6e,1),te,522,0,[Mw,gd])))}function mie(){mie=V,gke=Rr((E1(),ot(st(dke,1),te,528,0,[F3,n2])))}function vie(){vie=V,j4e=Rr((oq(),ot(st(P_t,1),te,429,0,[Nft,O_t])))}function yie(){yie=V,xke=Rr((Fm(),ot(st(yke,1),te,464,0,[r2,X5])))}function xie(){xie=V,n8e=Rr((yq(),ot(st(TLt,1),te,434,0,[ELt,U1t])))}function kie(){kie=V,Wke=Rr((iq(),ot(st(xLt,1),te,433,0,[j1t,yLt])))}function Eie(){Eie=V,Zke=Rr((qq(),ot(st(kLt,1),te,500,0,[aK,Z5])))}function Tie(){Tie=V,Q8e=Rr((fq(),ot(st(fMt,1),te,490,0,[adt,hMt])))}function Cie(){Cie=V,Z8e=Rr((aat(),ot(st(mMt,1),te,491,0,[bMt,wMt])))}function _ie(){_ie=V,aEe=Rr((DI(),ot(st(yMt,1),te,438,0,[hdt,wK])))}function Sie(){Sie=V,TEe=Rr((ZI(),ot(st(qMt,1),te,437,0,[vK,zMt])))}function Aie(){Aie=V,T7e=Rr((hit(),ot(st(PK,1),te,347,0,[rIt,iIt])))}function R1n(){return Rs(),ot(st(iL,1),te,88,0,[wd,Jo,Ho,bd,qh])}function j1n(){return ve(),ot(st(go,1),$c,64,0,[gc,Hn,Jn,vr,Gn])}function $1n(t,e,n){return u(e==null?vu(t.f,null,n):Gm(t.i,e,n),288)}function z1n(t){return(t.k==(Un(),Ts)||t.k==Ds)&&Ui(t,(ae(),xA))}function vst(t){return t.c&&t.d?Xyt(t.c)+"->"+Xyt(t.d):"e_"+km(t)}function Oa(t,e){var n,r;for(Wn(e),r=t.Kc();r.Ob();)n=r.Pb(),e.Cd(n)}function q1n(t,e){var n;n=new T6,U2(n,"x",e.a),U2(n,"y",e.b),G6(t,n)}function H1n(t,e){var n;n=new T6,U2(n,"x",e.a),U2(n,"y",e.b),G6(t,n)}function Lie(t,e){var n;for(n=e;n;)Em(t,-n.i,-n.j),n=es(n);return t}function f3t(t,e){var n,r;for(n=e,r=0;n>0;)r+=t.a[n],n-=n&-n;return r}function Sh(t,e,n){var r;return r=(mn(e,t.c.length),t.c[e]),t.c[e]=n,r}function d3t(t,e,n){t.a.c.length=0,gTn(t,e,n),t.a.c.length==0||q8n(t,e)}function AI(t){t.i=0,ND(t.b,null),ND(t.c,null),t.a=null,t.e=null,++t.g}function hq(){hq=V,hd=!0,Vve=!1,Uve=!1,Kve=!1,Gve=!1}function yst(t){hq(),!hd&&(this.c=t,this.e=!0,this.a=new ge)}function Mie(t,e){this.c=0,this.b=e,ZXt.call(this,t,17493),this.a=this.c}function Die(t){Ppe(),jGt(this),this.a=new Qi,G4t(this,t),Zr(this.a,t)}function Iie(){Hrt(this),this.b=new se(ns,ns),this.a=new se(Vs,Vs)}function fq(){fq=V,adt=new Kwt(q8t,0),hMt=new Kwt("TARGET_WIDTH",1)}function Q4(t,e){return(Nb(t),gE(new ln(t,new $3t(e,t.a)))).Bd(Nk)}function V1n(){return Ha(),ot(st(dCt,1),te,367,0,[Wf,$0,Yc,ou,Qo])}function U1n(){return Qy(),ot(st(p4e,1),te,375,0,[VP,dG,gG,fG,hG])}function G1n(){return Mp(),ot(st(b_t,1),te,348,0,[kft,p_t,Eft,ET,kT])}function K1n(){return oS(),ot(st(mAt,1),te,323,0,[wAt,f1t,d1t,DA,IA])}function W1n(){return Ph(),ot(st(K_t,1),te,171,0,[QP,EA,t2,TA,_3])}function Y1n(){return FH(),ot(st(t8e,1),te,368,0,[H1t,$1t,V1t,z1t,q1t])}function X1n(){return mS(),ot(st(tEe,1),te,373,0,[tx,Kk,XA,YA,pN])}function Q1n(){return TO(),ot(st(TMt,1),te,324,0,[xMt,fdt,EMt,ddt,kMt])}function J1n(){return A1(),ot(st(H0,1),te,170,0,[_n,Js,c0,Dw,Gp])}function Z1n(){return i5(),ot(st(cL,1),te,256,0,[o2,LN,XDt,oL,QDt])}function tdn(t){return c$(),function(){return Ufn(t,this,arguments)}}function ho(t){return!t.c||!t.d?!1:!!t.c.i&&t.c.i==t.d.i}function g3t(t,e){return At(e,143)?hn(t.c,u(e,143).c):!1}function Sl(t){return t.t||(t.t=new LGt(t),eS(new UKt(t),0,t.t)),t.t}function Oie(t){this.b=t,Zn.call(this,t),this.a=u($n(this.b.a,4),129)}function Pie(t){this.b=t,B6.call(this,t),this.a=u($n(this.b.a,4),129)}function jf(t,e,n,r,s){Vie.call(this,e,r,s),this.c=t,this.b=n}function p3t(t,e,n,r,s){sre.call(this,e,r,s),this.c=t,this.a=n}function b3t(t,e,n,r,s){are.call(this,e,r,s),this.c=t,this.a=n}function w3t(t,e,n,r,s){Vie.call(this,e,r,s),this.c=t,this.a=n}function xst(t,e){var n;return n=u(ed(t.d,e),23),n||u(ed(t.e,e),23)}function Nie(t,e){var n,r;return n=e.ld(),r=t.Fe(n),!!r&&Ic(r.e,e.md())}function Fie(t,e){var n;return n=e.ld(),new pm(n,t.e.pc(n,u(e.md(),16)))}function edn(t,e){var n;return n=t.a.get(e),n??Vt(sa,Ln,1,0,5,1)}function Bie(t){var e;return e=t.length,hn(Xn.substr(Xn.length-e,e),t)}function lr(t){if(Sr(t))return t.c=t.a,t.a.Pb();throw nt(new ac)}function m3t(t,e){return e==0||t.e==0?t:e>0?Sde(t,e):Xue(t,-e)}function Z6(t,e){return e==0||t.e==0?t:e>0?Xue(t,e):Sde(t,-e)}function v3t(t){frn.call(this,t==null?Hu:ec(t),At(t,82)?u(t,82):null)}function Rie(t){var e;return t.c||(e=t.r,At(e,90)&&(t.c=u(e,29))),t.c}function kst(t){var e;return e=new Pm,Yo(e,t),Zt(e,(Me(),qo),null),e}function jie(t){var e,n;return e=t.c.i,n=t.d.i,e.k==(Un(),Ds)&&n.k==Ds}function Est(t){var e,n,r;return e=t&Il,n=t>>22&Il,r=t<0?Og:0,ku(e,n,r)}function ndn(t){var e,n,r,s;for(n=t,r=0,s=n.length;r=0?t.Lh(r,n,!0):Zm(t,e,n)}function idn(t,e,n){return ji(N6(E7(t),Ma(e.b)),N6(E7(t),Ma(n.b)))}function sdn(t,e,n){return ji(N6(E7(t),Ma(e.e)),N6(E7(t),Ma(n.e)))}function adn(t,e){return b.Math.min(Lb(e.a,t.d.d.c),Lb(e.b,t.d.d.c))}function LI(t,e){t._i(t.i+1),f_(t,t.i,t.Zi(t.i,e)),t.Mi(t.i++,e),t.Ni()}function B_(t){var e,n;++t.j,e=t.g,n=t.i,t.g=null,t.i=0,t.Oi(n,e),t.Ni()}function $ie(t,e,n){var r;r=new mmt(t.a),V_(r,t.a.a),vu(r.f,e,n),t.a.a=r}function y3t(t,e,n,r){var s;for(s=0;se)throw nt(new No(c6t(t,e,"index")));return t}function xp(t,e){var n;return n=(mn(e,t.c.length),t.c[e]),dwt(t.c,e,1),n}function E3t(t,e){var n,r;return n=(Wn(t),t),r=(Wn(e),e),n==r?0:ne.p?-1:0}function Wie(t){var e;return t.a||(e=t.r,At(e,156)&&(t.a=u(e,156))),t.a}function fdn(t,e,n){var r;return++t.e,--t.f,r=u(t.d[e].gd(n),136),r.md()}function ddn(t){var e,n;return e=t.ld(),n=u(t.md(),16),uI(n.Nc(),new gnt(e))}function Yie(t,e){return Eu(t.a,e)?(tk(t.a,e),!0):!1}function ek(t,e,n){return SI(e,t.e.Rd().gc()),SI(n,t.c.Rd().gc()),t.a[e][n]}function gq(t,e,n){this.a=t,this.b=e,this.c=n,pe(t.t,this),pe(e.i,this)}function pq(t,e,n,r){this.f=t,this.e=e,this.d=n,this.b=r,this.c=r?r.d:null}function MI(){this.b=new Qi,this.a=new Qi,this.b=new Qi,this.a=new Qi}function zE(){zE=V;var t,e;GK=(dE(),e=new n$,e),KK=(t=new Nnt,t)}function gdn(t){var e;return Nb(t),e=new zZt(t,t.a.e,t.a.d|4),new Vmt(t,e)}function Xie(t){var e;for(_b(t),e=0;t.a.Bd(new yn);)e=Xa(e,1);return e}function bq(t,e){return Wn(e),t.c=0,"Initial capacity must not be negative")}function wq(){wq=V,QA=new Ni("org.eclipse.elk.labels.labelManager")}function Qie(){Qie=V,i_t=new os("separateLayerConnections",(Jq(),uft))}function E1(){E1=V,F3=new qwt("REGULAR",0),n2=new qwt("CRITICAL",1)}function DI(){DI=V,hdt=new Ywt("FIXED",0),wK=new Ywt("CENTER_NODE",1)}function mq(){mq=V,u_t=new Pwt("QUADRATIC",0),yft=new Pwt("SCANLINE",1)}function Jie(){Jie=V,C4e=Rr((z_(),ot(st(f_t,1),te,322,0,[wA,UP,h_t])))}function Zie(){Zie=V,_4e=Rr((Nq(),ot(st(g_t,1),te,351,0,[d_t,pG,xft])))}function tse(){tse=V,M4e=Rr((ew(),ot(st(L4e,1),te,459,0,[Tft,TT,R5])))}function ese(){ese=V,x4e=Rr((Hm(),ot(st(hft,1),te,372,0,[wv,Jb,bv])))}function nse(){nse=V,R4e=Rr((kg(),ot(st(B4e,1),te,311,0,[KP,$5,jk])))}function rse(){rse=V,F4e=Rr((s7(),ot(st(Pft,1),te,298,0,[Ift,Oft,GP])))}function ise(){ise=V,h6e=Rr((Q_(),ot(st(bAt,1),te,390,0,[u1t,pAt,GG])))}function sse(){sse=V,v6e=Rr((Yq(),ot(st(LAt,1),te,387,0,[SAt,m1t,AAt])))}function ase(){ase=V,y6e=Rr((W_(),ot(st(MAt,1),te,349,0,[y1t,v1t,iN])))}function ose(){ose=V,m6e=Rr((xo(),ot(st(w6e,1),te,462,0,[OA,vl,xu])))}function cse(){cse=V,k6e=Rr((Pq(),ot(st(NAt,1),te,352,0,[PAt,k1t,OAt])))}function use(){use=V,x6e=Rr((d7(),ot(st(IAt,1),te,350,0,[x1t,DAt,PA])))}function lse(){lse=V,E6e=Rr((Zq(),ot(st(FAt,1),te,388,0,[E1t,BT,N3])))}function hse(){hse=V,Tke=Rr((Y_(),ot(st(ZAt,1),te,392,0,[JAt,_1t,oN])))}function fse(){fse=V,r8e=Rr((rO(),ot(st(SLt,1),te,393,0,[oK,CLt,_Lt])))}function dse(){dse=V,T8e=Rr((Wq(),ot(st(ULt,1),te,299,0,[X1t,VLt,HLt])))}function gse(){gse=V,C8e=Rr((gH(),ot(st(GLt,1),te,445,0,[fN,lK,Q1t])))}function pse(){pse=V,S8e=Rr((CH(),ot(st(_8e,1),te,455,0,[J1t,tdt,Z1t])))}function bse(){bse=V,M8e=Rr((cH(),ot(st(YLt,1),te,394,0,[WLt,rdt,KLt])))}function wse(){wse=V,J8e=Rr((xq(),ot(st(pMt,1),te,439,0,[odt,gMt,dMt])))}function mse(){mse=V,j6e=Rr((qm(),ot(st(R6e,1),te,463,0,[sN,NA,XG])))}function vse(){vse=V,oye=Rr((pl(),ot(st(aye,1),te,470,0,[i0,Xb,Gf])))}function yse(){yse=V,sye=Rr((_1(),ot(st(m3,1),te,237,0,[Tc,yu,Cc])))}function xse(){xse=V,uye=Rr((zu(),ot(st(cye,1),te,471,0,[D1,Qb,Kf])))}function kse(){kse=V,Wve=Rr((bl(),ot(st(zo,1),te,108,0,[v9t,rc,w3])))}function Ese(){Ese=V,L3e=Rr((R_(),ot(st(fCt,1),te,391,0,[Yht,Wht,Xht])))}function Tse(){Tse=V,u7e=Rr((Cg(),ot(st(YDt,1),te,346,0,[SK,Wp,aL])))}function Cse(){Cse=V,nEe=Rr((uO(),ot(st(cdt,1),te,444,0,[gK,pK,bK])))}function _se(){_se=V,s7e=Rr((nd(),ot(st(BDt,1),te,278,0,[HT,$3,VT])))}function Sse(){Sse=V,E7e=Rr((ok(),ot(st(nIt,1),te,280,0,[eIt,q3,OK])))}function td(t,e){return!t.o&&(t.o=new el((jc(),K0),Yp,t,0)),zat(t.o,e)}function pdn(t,e){var n;t.C&&(n=u(Mo(t.b,e),127).n,n.d=t.C.d,n.a=t.C.a)}function A3t(t){var e,n,r,s;s=t.d,e=t.a,n=t.b,r=t.c,t.d=n,t.a=r,t.b=s,t.c=e}function bdn(t){return!t.g&&(t.g=new E4),!t.g.b&&(t.g.b=new CGt(t)),t.g.b}function II(t){return!t.g&&(t.g=new E4),!t.g.c&&(t.g.c=new AGt(t)),t.g.c}function wdn(t){return!t.g&&(t.g=new E4),!t.g.d&&(t.g.d=new _Gt(t)),t.g.d}function mdn(t){return!t.g&&(t.g=new E4),!t.g.a&&(t.g.a=new SGt(t)),t.g.a}function vdn(t,e,n,r){return n&&(r=n.Rh(e,ss(n.Dh(),t.c.uk()),null,r)),r}function ydn(t,e,n,r){return n&&(r=n.Th(e,ss(n.Dh(),t.c.uk()),null,r)),r}function Sst(t,e,n,r){var s;return s=Vt(Or,ii,28,e+1,15,1),TEn(s,t,e,n,r),s}function Vt(t,e,n,r,s,o){var h;return h=Jle(s,r),s!=10&&ot(st(t,o),e,n,s,h),h}function xdn(t,e,n){var r,s;for(s=new i7(e,t),r=0;rn||e=0?t.Lh(n,!0,!0):Zm(t,e,!0)}function Rdn(t,e,n){var r;return r=Mce(t,e,n),t.b=new Vq(r.c.length),X6t(t,r)}function jdn(t){if(t.b<=0)throw nt(new ac);return--t.b,t.a-=t.c.c,fe(t.a)}function $dn(t){var e;if(!t.a)throw nt(new $ee);return e=t.a,t.a=es(t.a),e}function zdn(t){for(;!t.a;)if(!fZt(t.c,new x0(t)))return!1;return!0}function nk(t){var e;return Hr(t),At(t,204)?(e=u(t,204),e):new mnt(t)}function qdn(t){vq(),u(t.of((si(),j3)),181).Fc((wl(),MN)),t.qf(Odt,null)}function vq(){vq=V,SEe=new _R,LEe=new Att,AEe=Mpn((si(),Odt),SEe,s2,LEe)}function yq(){yq=V,ELt=new Gwt("LEAF_NUMBER",0),U1t=new Gwt("NODE_SIZE",1)}function Ist(t){t.a=Vt(Or,ii,28,t.b+1,15,1),t.c=Vt(Or,ii,28,t.b,15,1),t.d=0}function Hdn(t,e){t.a.Ne(e.d,t.b)>0&&(pe(t.c,new Lvt(e.c,e.d,t.d)),t.b=e.d)}function R3t(t,e){if(t.g==null||e>=t.i)throw nt(new Rrt(e,t.i));return t.g[e]}function Dse(t,e,n){if(l7(t,n),n!=null&&!t.fk(n))throw nt(new Int);return n}function Ost(t,e){return qI(e)!=10&&ot(Gl(e),e.Sm,e.__elementTypeId$,qI(e),t),t}function HE(t,e,n,r){var s;r=(Om(),r||f9t),s=t.slice(e,n),u6t(s,t,e,n,-e,r)}function Ah(t,e,n,r,s){return e<0?Zm(t,n,r):u(n,69).wk().yk(t,t.hi(),e,r,s)}function Vdn(t,e){return ji(Rt(Ht(K(t,(ae(),yv)))),Rt(Ht(K(e,yv))))}function Ise(){Ise=V,qve=Rr((VE(),ot(st(IU,1),te,303,0,[Sht,Aht,Lht,Mht])))}function VE(){VE=V,Sht=new _$("All",0),Aht=new kQt,Lht=new DQt,Mht=new xQt}function pl(){pl=V,i0=new urt(Tk,0),Xb=new urt(Y7,1),Gf=new urt(Ck,2)}function Ose(){Ose=V,oV(),GIt=ns,MTe=Vs,KIt=new ys(ns),DTe=new ys(Vs)}function Pse(){Pse=V,Pye=Rr((Um(),ot(st(Oye,1),te,417,0,[IP,DP,Rht,jht])))}function Nse(){Nse=V,jye=Rr((cS(),ot(st(Rye,1),te,406,0,[BP,FU,BU,RP])))}function Fse(){Fse=V,Fye=Rr((lk(),ot(st(Nye,1),te,332,0,[PP,OP,NP,FP])))}function Bse(){Bse=V,V3e=Rr((iw(),ot(st(bCt,1),te,389,0,[x3,pCt,eft,nft])))}function Rse(){Rse=V,R3e=Rr((a7(),ot(st(B3e,1),te,416,0,[pv,y3,v3,O5])))}function jse(){jse=V,g4e=Rr((rd(),ot(st(d4e,1),te,421,0,[Rk,wT,mT,lft])))}function $se(){$se=V,r4e=Rr((Jq(),ot(st(n4e,1),te,371,0,[uft,uG,lG,HP])))}function zse(){zse=V,f6e=Rr((Yy(),ot(st(h1t,1),te,203,0,[KG,l1t,Y5,W5])))}function qse(){qse=V,p6e=Rr((Vd(),ot(st(CAt,1),te,284,0,[Hp,TAt,g1t,p1t])))}function FI(){FI=V,y_t=new Fwt(Zd,0),mG=new Fwt("IMPROVE_STRAIGHTNESS",1)}function Hse(t,e){var n,r;return r=e/t.c.Rd().gc()|0,n=e%t.c.Rd().gc(),ek(t,r,n)}function Vse(t){var e;if(t.nl())for(e=t.i-1;e>=0;--e)Lt(t,e);return a3t(t)}function j3t(t){var e,n;if(!t.b)return null;for(n=t.b;e=n.a[0];)n=e;return n}function Use(t){var e,n;if(!t.b)return null;for(n=t.b;e=n.a[1];)n=e;return n}function Udn(t){return At(t,180)?""+u(t,180).a:t==null?null:ec(t)}function Gdn(t){return At(t,180)?""+u(t,180).a:t==null?null:ec(t)}function Gse(t,e){if(e.a)throw nt(new oc(fbe));qs(t.a,e),e.a=t,!t.j&&(t.j=e)}function $3t(t,e){X$.call(this,e.zd(),e.yd()&-16449),Wn(t),this.a=t,this.c=e}function Kdn(t,e){return new dit(e,Em(Ma(e.e),e.f.a+t,e.f.b+t),(Nn(),!1))}function Wdn(t,e){return _E(),pe(t,new Ys(e,fe(e.e.c.length+e.g.c.length)))}function Ydn(t,e){return _E(),pe(t,new Ys(e,fe(e.e.c.length+e.g.c.length)))}function Kse(){Kse=V,E8e=Rr((LH(),ot(st(qLt,1),te,354,0,[Y1t,$Lt,zLt,jLt])))}function Wse(){Wse=V,Kke=Rr((X_(),ot(st(vLt,1),te,353,0,[R1t,sK,B1t,F1t])))}function Yse(){Yse=V,kke=Rr((dk(),ot(st(zAt,1),te,405,0,[tK,RA,jA,$A])))}function Xse(){Xse=V,a7e=Rr((_g(),ot(st(Bdt,1),te,223,0,[Fdt,_N,UT,Jk])))}function Qse(){Qse=V,h7e=Rr((ah(),ot(st(l7e,1),te,290,0,[AN,V0,a2,SN])))}function Jse(){Jse=V,x7e=Rr((Kl(),ot(st(hL,1),te,386,0,[IN,Fw,DN,z3])))}function Zse(){Zse=V,C7e=Rr((lH(),ot(st(cIt,1),te,320,0,[$dt,sIt,oIt,aIt])))}function tae(){tae=V,A7e=Rr((tH(),ot(st(S7e,1),te,415,0,[zdt,lIt,uIt,hIt])))}function xq(){xq=V,odt=new Ort(M2e,0),gMt=new Ort(o7t,1),dMt=new Ort(Zd,2)}function jy(t,e,n,r,s){return Wn(t),Wn(e),Wn(n),Wn(r),Wn(s),new hyt(t,e,r)}function eae(t,e){var n;return n=u(tk(t.e,e),400),n?($vt(n),n.e):null}function $u(t,e){var n;return n=Wo(t,e,0),n==-1?!1:(xp(t,n),!0)}function nae(t,e,n){var r;return _b(t),r=new Qe,r.a=e,t.a.Nb(new BYt(r,n)),r.a}function Xdn(t){var e;return _b(t),e=Vt(wa,Io,28,0,15,1),D4(t.a,new S4(e)),e}function z3t(t){var e;if(!Yst(t))throw nt(new ac);return t.e=1,e=t.d,t.d=null,e}function Ep(t){var e;return Zo(t)&&(e=0-t,!isNaN(e))?e:Db(c7(t))}function Wo(t,e,n){for(;n=0?EH(t,n,!0,!0):Zm(t,e,!0)}function H3t(t){var e;return e=X2($n(t,32)),e==null&&(Su(t),e=X2($n(t,32))),e}function V3t(t){var e;return t.Oh()||(e=ur(t.Dh())-t.ji(),t.$h().Mk(e)),t.zh()}function cae(t,e){q9t=new Le,Bye=e,fA=t,u(fA.b,68),D3t(fA,q9t,null),Tge(fA)}function R_(){R_=V,Yht=new hrt("XY",0),Wht=new hrt("X",1),Xht=new hrt("Y",2)}function zu(){zu=V,D1=new lrt("TOP",0),Qb=new lrt(Y7,1),Kf=new lrt(y8t,2)}function kg(){kg=V,KP=new wrt(Zd,0),$5=new wrt("TOP",1),jk=new wrt(y8t,2)}function zI(){zI=V,b1t=new Rwt("INPUT_ORDER",0),w1t=new Rwt("PORT_DEGREE",1)}function UE(){UE=V,KTt=ku(Il,Il,524287),_ve=ku(0,0,tP),WTt=Est(1),Est(2),YTt=Est(0)}function Rst(t){var e;return t.d!=t.r&&(e=rf(t),t.e=!!e&&e.lk()==_me,t.d=e),t.e}function jst(t,e,n){var r;return r=t.g[e],f_(t,e,t.Zi(e,n)),t.Ri(e,n,r),t.Ni(),r}function Cq(t,e){var n;return n=t.dd(e),n>=0?(t.gd(n),!0):!1}function $st(t,e){var n;for(Hr(t),Hr(e),n=!1;e.Ob();)n=n|t.Fc(e.Pb());return n}function ed(t,e){var n;return n=u(tr(t.e,e),400),n?(HQt(t,n),n.e):null}function uae(t){var e,n;return e=t/60|0,n=t%60,n==0?""+e:""+e+":"+(""+n)}function $y(t,e){var n=t.a[e],r=(fat(),xht)[typeof n];return r?r(n):Z4t(typeof n)}function lc(t,e){var n,r;return Nb(t),r=new C3t(e,t.a),n=new pZt(r),new ln(t,n)}function zst(t){var e;return e=t.b.c.length==0?null:Oe(t.b,0),e!=null&&Qst(t,0),e}function t0n(t,e){var n,r,s;s=e.c.i,n=u(tr(t.f,s),60),r=n.d.c-n.e.c,k4t(e.a,r,0)}function U3t(t,e){var n;for(++t.d,++t.c[e],n=e+1;n=0;)++e[0]}function e0n(t,e){Cu(t,e==null||hz((Wn(e),e))||isNaN((Wn(e),e))?0:(Wn(e),e))}function n0n(t,e){_u(t,e==null||hz((Wn(e),e))||isNaN((Wn(e),e))?0:(Wn(e),e))}function r0n(t,e){zm(t,e==null||hz((Wn(e),e))||isNaN((Wn(e),e))?0:(Wn(e),e))}function i0n(t,e){$m(t,e==null||hz((Wn(e),e))||isNaN((Wn(e),e))?0:(Wn(e),e))}function s0n(t,e,n){return N6(new se(n.e.a+n.f.a/2,n.e.b+n.f.b/2),t)==(Wn(e),e)}function a0n(t,e){return At(e,102)&&u(e,19).Bb&fo?new jrt(e,t):new i7(e,t)}function o0n(t,e){return At(e,102)&&u(e,19).Bb&fo?new jrt(e,t):new i7(e,t)}function qI(t){return t.__elementTypeCategory$==null?10:t.__elementTypeCategory$}function fae(t,e){return e==(cit(),cit(),jve)?t.toLocaleLowerCase():t.toLowerCase()}function dae(t){if(!t.e)throw nt(new ac);return t.c=t.a=t.e,t.e=t.e.e,--t.d,t.a.f}function G3t(t){if(!t.c)throw nt(new ac);return t.e=t.a=t.c,t.c=t.c.c,++t.d,t.a.f}function gae(t){var e;for(++t.a,e=t.c.a.length;t.at.a[r]&&(r=n);return r}function pae(t){var e;return e=u(K(t,(ae(),mv)),313),e?e.a==t:!1}function bae(t){var e;return e=u(K(t,(ae(),mv)),313),e?e.i==t:!1}function wae(){wae=V,O3e=Rr((Ha(),ot(st(dCt,1),te,367,0,[Wf,$0,Yc,ou,Qo])))}function mae(){mae=V,b4e=Rr((Qy(),ot(st(p4e,1),te,375,0,[VP,dG,gG,fG,hG])))}function vae(){vae=V,S4e=Rr((Mp(),ot(st(b_t,1),te,348,0,[kft,p_t,Eft,ET,kT])))}function yae(){yae=V,d6e=Rr((oS(),ot(st(mAt,1),te,323,0,[wAt,f1t,d1t,DA,IA])))}function xae(){xae=V,$4e=Rr((Ph(),ot(st(K_t,1),te,171,0,[QP,EA,t2,TA,_3])))}function kae(){kae=V,e8e=Rr((FH(),ot(st(t8e,1),te,368,0,[H1t,$1t,V1t,z1t,q1t])))}function Eae(){Eae=V,eEe=Rr((mS(),ot(st(tEe,1),te,373,0,[tx,Kk,XA,YA,pN])))}function Tae(){Tae=V,oEe=Rr((TO(),ot(st(TMt,1),te,324,0,[xMt,fdt,EMt,ddt,kMt])))}function Cae(){Cae=V,i7e=Rr((Rs(),ot(st(iL,1),te,88,0,[wd,Jo,Ho,bd,qh])))}function _ae(){_ae=V,MEe=Rr((A1(),ot(st(H0,1),te,170,0,[_n,Js,c0,Dw,Gp])))}function Sae(){Sae=V,d7e=Rr((i5(),ot(st(cL,1),te,256,0,[o2,LN,XDt,oL,QDt])))}function Aae(){Aae=V,b7e=Rr((ve(),ot(st(go,1),$c,64,0,[gc,Hn,Jn,vr,Gn])))}function _q(){_q=V,k9t=new Awt("BY_SIZE",0),Pht=new Awt("BY_SIZE_AND_SHAPE",1)}function Sq(){Sq=V,Uht=new Dwt("EADES",0),$U=new Dwt("FRUCHTERMAN_REINGOLD",1)}function HI(){HI=V,bG=new Nwt("READING_DIRECTION",0),w_t=new Nwt("ROTATION",1)}function j_(){j_=V,z3e=new LM,q3e=new PX,j3e=new L2,$3e=new Vc,H3e=new NX}function Lae(t){this.b=new ge,this.a=new ge,this.c=new ge,this.d=new ge,this.e=t}function Mae(t){this.g=t,this.f=new ge,this.a=b.Math.min(this.g.c.c,this.g.d.c)}function Dae(t,e,n){uz.call(this),Y3t(this),this.a=t,this.c=n,this.b=e.d,this.f=e.e}function d0n(t,e,n){var r,s;for(s=new J(n);s.a=0&&e0?e-1:e,fWt($nn(eoe(Fvt(new E6,n),t.n),t.j),t.k)}function jo(t){var e,n;n=(e=new Fnt,e),Mr((!t.q&&(t.q=new Jt(bf,t,11,10)),t.q),n)}function K3t(t){return(t.i&2?"interface ":t.i&1?"":"class ")+(gg(t),t.o)}function Aq(t){return Rc(t,ki)>0?ki:Rc(t,Va)<0?Va:qr(t)}function zy(t){return t<3?(ih(t,Kpe),t+1):t=-.01&&t.a<=cd&&(t.a=0),t.b>=-.01&&t.b<=cd&&(t.b=0),t}function J4(t){g5();var e,n;for(n=l7t,e=0;en&&(n=t[e]);return n}function Nae(t,e){var n;if(n=NO(t.Dh(),e),!n)throw nt(new zn(Kb+e+Plt));return n}function qy(t,e){var n;for(n=t;es(n);)if(n=es(n),n==e)return!0;return!1}function T0n(t,e){var n,r,s;for(r=e.a.ld(),n=u(e.a.md(),16).gc(),s=0;st||t>e)throw nt(new ewt("fromIndex: 0, toIndex: "+t+c8t+e))}function jm(t){if(t<0)throw nt(new zn("Illegal Capacity: "+t));this.g=this.aj(t)}function W3t(t,e){return K1(),$f(qb),b.Math.abs(t-e)<=qb||t==e||isNaN(t)&&isNaN(e)}function Vst(t,e){var n,r,s,o;for(r=t.d,s=0,o=r.length;s0&&(t.a/=e,t.b/=e),t}function nh(t){var e;return t.w?t.w:(e=bfn(t),e&&!e.Vh()&&(t.w=e),e)}function GE(t,e){var n,r;r=t.a,n=ybn(t,e,null),r!=e&&!t.e&&(n=$7(t,e,n)),n&&n.oj()}function $ae(t,e,n){var r,s;r=e;do s=Rt(t.p[r.p])+n,t.p[r.p]=s,r=t.a[r.p];while(r!=e)}function zae(t,e,n){var r=function(){return t.apply(r,arguments)};return e.apply(r,n),r}function D0n(t){var e;return t==null?null:(e=u(t,195),Hyn(e,e.length))}function Lt(t,e){if(t.g==null||e>=t.i)throw nt(new Rrt(e,t.i));return t.Wi(e,t.g[e])}function I0n(t,e){wn();var n,r;for(r=new ge,n=0;n=14&&e<=16))),t}function Br(t,e){var n;return Wn(e),n=t[":"+e],hI(!!n,"Enum constant undefined: "+e),n}function Cr(t,e,n,r,s,o){var h;return h=$it(t,e),noe(n,h),h.i=s?8:0,h.f=r,h.e=s,h.g=o,h}function Q3t(t,e,n,r,s){this.d=e,this.k=r,this.f=s,this.o=-1,this.p=1,this.c=t,this.a=n}function J3t(t,e,n,r,s){this.d=e,this.k=r,this.f=s,this.o=-1,this.p=2,this.c=t,this.a=n}function Z3t(t,e,n,r,s){this.d=e,this.k=r,this.f=s,this.o=-1,this.p=6,this.c=t,this.a=n}function t4t(t,e,n,r,s){this.d=e,this.k=r,this.f=s,this.o=-1,this.p=7,this.c=t,this.a=n}function e4t(t,e,n,r,s){this.d=e,this.j=r,this.e=s,this.o=-1,this.p=4,this.c=t,this.a=n}function roe(t,e){var n,r,s,o;for(r=e,s=0,o=r.length;s=0))throw nt(new zn("tolerance ("+t+") must be >= 0"));return t}function soe(t,e){var n;return At(e,44)?t.c.Mc(e):(n=zat(t,e),pH(t,e),n)}function Do(t,e,n){return rw(t,e),wu(t,n),Tp(t,0),Hy(t,1),Lp(t,!0),Ap(t,!0),t}function UI(t,e){var n;if(n=t.gc(),e<0||e>n)throw nt(new My(e,n));return new fvt(t,e)}function Fq(t,e){t.b=b.Math.max(t.b,e.d),t.e+=e.r+(t.a.c.length==0?0:t.c),pe(t.a,e)}function aoe(t){Sy(t.c>=0),G2n(t.d,t.c)<0&&(t.a=t.a-1&t.d.a.length-1,t.b=t.d.c),t.c=-1}function Bq(t){var e,n;for(n=t.c.Cc().Kc();n.Ob();)e=u(n.Pb(),16),e.$b();t.c.$b(),t.d=0}function q0n(t){var e,n,r,s;for(n=t.a,r=0,s=n.length;r=0}function c4t(t,e){t.r>0&&t.c0&&t.g!=0&&c4t(t.i,e/t.r*t.i.d))}function u4t(t,e){var n;n=t.c,t.c=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,1,n,t.c))}function Kst(t,e){var n;n=t.c,t.c=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,4,n,t.c))}function ZE(t,e){var n;n=t.k,t.k=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,2,n,t.k))}function Wst(t,e){var n;n=t.D,t.D=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,2,n,t.D))}function jq(t,e){var n;n=t.f,t.f=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,8,n,t.f))}function $q(t,e){var n;n=t.i,t.i=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,7,n,t.i))}function l4t(t,e){var n;n=t.a,t.a=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,8,n,t.a))}function h4t(t,e){var n;n=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,0,n,t.b))}function f4t(t,e){var n;n=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,0,n,t.b))}function d4t(t,e){var n;n=t.c,t.c=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,1,n,t.c))}function g4t(t,e){var n;n=t.d,t.d=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,1,n,t.d))}function Y0n(t,e,n){var r;t.b=e,t.a=n,r=(t.a&512)==512?new SKt:new hD,t.c=ukn(r,t.b,t.a)}function moe(t,e){return Dg(t.e,e)?(bo(),Rst(e)?new xz(e,t):new YD(e,t)):new GXt(e,t)}function X0n(t){var e,n;return 0>t?new bwt:(e=t+1,n=new Mie(e,t),new Umt(null,n))}function Q0n(t,e){wn();var n;return n=new A6(1),pa(t)?Bo(n,t,e):vu(n.f,t,e),new hr(n)}function J0n(t,e){var n,r;return n=t.c,r=e.e[t.p],r>0?u(Oe(n.a,r-1),10):null}function Z0n(t,e){var n,r;return n=t.o+t.p,r=e.o+e.p,ne?(e<<=1,e>0?e:DS):e}function Yst(t){switch(Cmt(t.e!=3),t.e){case 2:return!1;case 0:return!0}return cdn(t)}function yoe(t,e){var n;return At(e,8)?(n=u(e,8),t.a==n.a&&t.b==n.b):!1}function egn(t,e){var n;n=new Le,u(e.b,68),u(e.b,68),u(e.b,68),Tu(e.a,new kvt(t,n,e))}function xoe(t,e){var n,r;for(r=e.vc().Kc();r.Ob();)n=u(r.Pb(),44),yO(t,n.ld(),n.md())}function p4t(t,e){var n;n=t.d,t.d=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,11,n,t.d))}function zq(t,e){var n;n=t.j,t.j=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,13,n,t.j))}function b4t(t,e){var n;n=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,21,n,t.b))}function ngn(t,e){(hq(),hd?null:e.c).length==0&&BJt(e,new Ae),Bo(t.a,hd?null:e.c,e)}function rgn(t,e){e.Ug("Hierarchical port constraint processing",1),xwn(t),zCn(t),e.Vg()}function Hm(){Hm=V,wv=new frt("START",0),Jb=new frt("MIDDLE",1),bv=new frt("END",2)}function qq(){qq=V,aK=new Uwt("P1_NODE_PLACEMENT",0),Z5=new Uwt("P2_EDGE_ROUTING",1)}function Mb(){Mb=V,Bk=new Ni(O8t),HU=new Ni(Bbe),gA=new Ni(Rbe),jP=new Ni(jbe)}function Vm(t){var e;return uit(t.f.g,t.d),cr(t.b),t.c=t.a,e=u(t.a.Pb(),44),t.b=L4t(t),e}function w4t(t){var e;return t.b==null?(gp(),gp(),zN):(e=t.ul()?t.tl():t.sl(),e)}function koe(t,e){var n;return n=e==null?-1:Wo(t.b,e,0),n<0?!1:(Qst(t,n),!0)}function zf(t,e){var n;return Wn(e),n=e.g,t.b[n]?!1:(hs(t.b,n,e),++t.c,!0)}function Hq(t,e){var n,r;return n=1-e,r=t.a[n],t.a[n]=r.a[e],r.a[e]=t,t.b=!0,r.b=!1,r}function ign(t,e){var n,r;for(r=e.Kc();r.Ob();)n=u(r.Pb(),272),t.b=!0,qs(t.e,n),n.b=t}function sgn(t,e){var n,r;return n=u(K(t,(Me(),I3)),8),r=u(K(e,I3),8),ji(n.b,r.b)}function Xst(t,e,n){var r,s,o;return o=e>>5,s=e&31,r=ia(Eb(t.n[n][o],qr(Rf(s,1))),3),r}function Eoe(t,e,n){var r,s,o;for(o=t.a.length-1,s=t.b,r=0;r0?1:0:(!t.c&&(t.c=TI(Oc(t.f))),t.c).e}function Ioe(t,e){e?t.B==null&&(t.B=t.D,t.D=null):t.B!=null&&(t.D=t.B,t.B=null)}function ugn(t,e){return a7(),t==pv&&e==y3||t==y3&&e==pv||t==O5&&e==v3||t==v3&&e==O5}function lgn(t,e){return a7(),t==pv&&e==v3||t==pv&&e==O5||t==y3&&e==O5||t==y3&&e==v3}function Ooe(t,e){return K1(),$f(cd),b.Math.abs(0-e)<=cd||e==0||isNaN(0)&&isNaN(e)?0:t/e}function Poe(t,e){return Rt(Ht(ql(oO(Go(new ln(null,new gn(t.c.b,16)),new zVt(t)),e))))}function x4t(t,e){return Rt(Ht(ql(oO(Go(new ln(null,new gn(t.c.b,16)),new $Vt(t)),e))))}function hgn(){return ko(),ot(st(Dft,1),te,259,0,[yG,zh,vA,xG,ST,j5,yA,CT,_T,kG])}function fgn(){return sf(),ot(st(EAt,1),te,243,0,[WG,nN,rN,yAt,xAt,vAt,kAt,YG,Av,P3])}function dgn(t,e){var n;e.Ug("General Compactor",1),n=m2n(u(ne(t,($b(),K1t)),393)),n.Cg(t)}function ggn(t,e){var n,r;return n=u(ne(t,($b(),cK)),17),r=u(ne(e,cK),17),Bc(n.a,r.a)}function k4t(t,e,n){var r,s;for(s=_r(t,0);s.b!=s.d.c;)r=u(Tr(s),8),r.a+=e,r.b+=n;return t}function q_(t,e,n){var r;for(r=t.b[n&t.f];r;r=r.b)if(n==r.a&&zd(e,r.g))return r;return null}function H_(t,e,n){var r;for(r=t.c[n&t.f];r;r=r.d)if(n==r.f&&zd(e,r.i))return r;return null}function pgn(t,e,n){var r,s,o;for(r=0,s=0;s>>31;r!=0&&(t[n]=r)}function eat(t,e,n,r,s,o){var h;this.c=t,h=new ge,ext(t,h,e,t.b,n,r,s,o),this.a=new _a(h,0)}function Noe(){this.c=new d$(0),this.b=new d$(u7t),this.d=new d$(E2e),this.a=new d$(Eut)}function Mh(t,e,n,r,s,o,h){Fr.call(this,t,e),this.d=n,this.e=r,this.c=s,this.b=o,this.a=J1(h)}function ks(t,e,n,r,s,o,h,d,m,k,T,A,N){return zfe(t,e,n,r,s,o,h,d,m,k,T,A,N),Pat(t,!1),t}function bgn(t){return t.b.c.i.k==(Un(),Ds)?u(K(t.b.c.i,(ae(),Di)),12):t.b.c}function Foe(t){return t.b.d.i.k==(Un(),Ds)?u(K(t.b.d.i,(ae(),Di)),12):t.b.d}function wgn(t){var e;return e=sq(t),mm(e.a,0)?(w$(),w$(),$ve):(w$(),new wJt(e.b))}function nat(t){var e;return e=t3t(t),mm(e.a,0)?(yy(),yy(),_ht):(yy(),new Zrt(e.b))}function rat(t){var e;return e=t3t(t),mm(e.a,0)?(yy(),yy(),_ht):(yy(),new Zrt(e.c))}function Boe(t){switch(t.g){case 2:return ve(),Gn;case 4:return ve(),Jn;default:return t}}function Roe(t){switch(t.g){case 1:return ve(),vr;case 3:return ve(),Hn;default:return t}}function joe(t){switch(t.g){case 0:return new Ttt;case 1:return new XM;default:return null}}function ik(){ik=V,cft=new os("edgelabelcenterednessanalysis.includelabel",(Nn(),Yb))}function E4t(){E4t=V,B6e=Ud(aQt(ri(ri(new Fs,(Ha(),Yc),(Ja(),eG)),ou,XU),Qo),tG)}function $oe(){$oe=V,z6e=Ud(aQt(ri(ri(new Fs,(Ha(),Yc),(Ja(),eG)),ou,XU),Qo),tG)}function iat(){iat=V,wL=new kKt,Ydt=ot(st(Ku,1),L5,179,0,[]),cTe=ot(st(bf,1),ATt,62,0,[])}function t7(){t7=V,zP=new Iwt("TO_INTERNAL_LTR",0),sft=new Iwt("TO_INPUT_DIRECTION",1)}function nl(){nl=V,kCt=new ub,yCt=new oy,xCt=new BX,vCt=new M2,ECt=new RX,TCt=new jX}function mgn(t,e){e.Ug(t2e,1),_5t(nrn(new LC((qC(),new Git(t,!1,!1,new q9))))),e.Vg()}function vgn(t,e,n){n.Ug("DFS Treeifying phase",1),F2n(t,e),P6n(t,e),t.a=null,t.b=null,n.Vg()}function GI(t,e){return Nn(),pa(t)?E3t(t,Gr(e)):Cy(t)?Ait(t,Ht(e)):Ty(t)?uun(t,De(e)):t.Fd(e)}function V_(t,e){var n,r;for(Wn(e),r=e.vc().Kc();r.Ob();)n=u(r.Pb(),44),t.zc(n.ld(),n.md())}function ygn(t,e,n){var r;for(r=n.Kc();r.Ob();)if(!cq(t,e,r.Pb()))return!1;return!0}function xgn(t,e,n,r,s){var o;return n&&(o=ss(e.Dh(),t.c),s=n.Rh(e,-1-(o==-1?r:o),null,s)),s}function kgn(t,e,n,r,s){var o;return n&&(o=ss(e.Dh(),t.c),s=n.Th(e,-1-(o==-1?r:o),null,s)),s}function zoe(t){var e;if(t.b==-2){if(t.e==0)e=-1;else for(e=0;t.a[e]==0;e++);t.b=e}return t.b}function Egn(t){if(Wn(t),t.length==0)throw nt(new Nd("Zero length BigInteger"));L8n(this,t)}function T4t(t){this.i=t.gc(),this.i>0&&(this.g=this.aj(this.i+(this.i/8|0)+1),t.Qc(this.g))}function qoe(t,e,n){this.g=t,this.d=e,this.e=n,this.a=new ge,N4n(this),wn(),Ms(this.a,null)}function C4t(t,e){e.q=t,t.d=b.Math.max(t.d,e.r),t.b+=e.d+(t.a.c.length==0?0:t.c),pe(t.a,e)}function e7(t,e){var n,r,s,o;return s=t.c,n=t.c+t.b,o=t.d,r=t.d+t.a,e.a>s&&e.ao&&e.bs?n=s:qn(e,n+1),t.a=Ch(t.a,0,e)+(""+r)+vyt(t.a,n)}function Qoe(t,e){t.a=Xa(t.a,1),t.c=b.Math.min(t.c,e),t.b=b.Math.max(t.b,e),t.d=Xa(t.d,e)}function Mgn(t,e){return e1||t.Ob())return++t.a,t.g=0,e=t.i,t.Ob(),e;throw nt(new ac)}function ece(t){switch(t.a.g){case 1:return new aXt;case 3:return new ahe;default:return new Zet}}function S4t(t,e){switch(e){case 1:return!!t.n&&t.n.i!=0;case 2:return t.k!=null}return Zyt(t,e)}function Oc(t){return eP>22),s=t.h+e.h+(r>>22),ku(n&Il,r&Il,s&Og)}function uce(t,e){var n,r,s;return n=t.l-e.l,r=t.m-e.m+(n>>22),s=t.h-e.h+(r>>22),ku(n&Il,r&Il,s&Og)}function Qgn(t){var e,n;for(V9n(t),n=new J(t.d);n.ar)throw nt(new My(e,r));return t.Si()&&(n=Sne(t,n)),t.Ei(e,n)}function o7(t,e,n,r,s){var o,h;for(h=n;h<=s;h++)for(o=e;o<=r;o++)a5(t,o,h)||rV(t,o,h,!0,!1)}function hpn(t){g5();var e,n,r;for(n=Vt(ua,le,8,2,0,1),r=0,e=0;e<2;e++)r+=.5,n[e]=imn(r,t);return n}function c7(t){var e,n,r;return e=~t.l+1&Il,n=~t.m+(e==0?1:0)&Il,r=~t.h+(e==0&&n==0?1:0)&Og,ku(e,n,r)}function N4t(t){var e;if(t<0)return Va;if(t==0)return 0;for(e=DS;!(e&t);e>>=1);return e}function hat(t,e,n){return t>=128?!1:t<64?a_(ia(Rf(1,t),n),0):a_(ia(Rf(1,t-64),e),0)}function eO(t,e,n){return n==null?(!t.q&&(t.q=new Er),tk(t.q,e)):(!t.q&&(t.q=new Er),di(t.q,e,n)),t}function Zt(t,e,n){return n==null?(!t.q&&(t.q=new Er),tk(t.q,e)):(!t.q&&(t.q=new Er),di(t.q,e,n)),t}function yce(t){var e,n;return n=new dq,Yo(n,t),Zt(n,(Mb(),Bk),t),e=new Er,$En(t,n,e),g9n(t,n,e),n}function xce(t){var e,n;return e=t.t-t.k[t.o.p]*t.d+t.j[t.o.p]>t.f,n=t.u+t.e[t.o.p]*t.d>t.f*t.s*t.d,e||n}function kce(t,e){var n,r,s,o;for(n=!1,r=t.a[e].length,o=0;o=0,"Negative initial capacity"),hI(e>=0,"Non-positive load factor"),dl(this)}function dpn(t,e,n,r,s){var o,h;if(h=t.length,o=n.length,e<0||r<0||s<0||e+s>h||r+s>o)throw nt(new S2t)}function j4t(t,e){wn();var n,r,s,o,h;for(h=!1,r=e,s=0,o=r.length;s1||e>=0&&t.b<3)}function gat(t){var e,n,r;e=~t.l+1&Il,n=~t.m+(e==0?1:0)&Il,r=~t.h+(e==0&&n==0?1:0)&Og,t.l=e,t.m=n,t.h=r}function q4t(t){wn();var e,n,r;for(r=1,n=t.Kc();n.Ob();)e=n.Pb(),r=31*r+(e!=null?Hi(e):0),r=r|0;return r}function mpn(t,e,n,r,s){var o;return o=M6t(t,e),n&&gat(o),s&&(t=hmn(t,e),r?Wb=c7(t):Wb=ku(t.l,t.m,t.h)),o}function Ice(t,e,n){t.g=Iot(t,e,(ve(),Jn),t.b),t.d=Iot(t,n,Jn,t.b),!(t.g.c==0||t.d.c==0)&&ufe(t)}function Oce(t,e,n){t.g=Iot(t,e,(ve(),Gn),t.j),t.d=Iot(t,n,Gn,t.j),!(t.g.c==0||t.d.c==0)&&ufe(t)}function H4t(t,e){switch(e){case 7:return!!t.e&&t.e.i!=0;case 8:return!!t.d&&t.d.i!=0}return S5t(t,e)}function vpn(t,e){switch(e.g){case 0:At(t.b,641)||(t.b=new Xoe);break;case 1:At(t.b,642)||(t.b=new YZt)}}function Pce(t){switch(t.g){case 0:return new Stt;default:throw nt(new zn(rU+(t.f!=null?t.f:""+t.g)))}}function Nce(t){switch(t.g){case 0:return new _tt;default:throw nt(new zn(rU+(t.f!=null?t.f:""+t.g)))}}function ypn(t,e,n){return!gE(Ai(new ln(null,new gn(t.c,16)),new Mf(new xXt(e,n)))).Bd((j2(),Nk))}function Fce(t,e){return N6(E7(u(K(e,(xc(),Mv)),88)),new se(t.c.e.a-t.b.e.a,t.c.e.b-t.b.e.b))<=0}function xpn(t,e){for(;t.g==null&&!t.c?Hyt(t):t.g==null||t.i!=0&&u(t.g[t.i-1],51).Ob();)Crn(e,UH(t))}function nw(t){var e,n;for(n=new J(t.a.b);n.ar?1:0}function Tpn(t){return pe(t.c,(sk(),_Ee)),W3t(t.a,Rt(Ht(_e(($at(),VG)))))?new Rtt:new GUt(t)}function Cpn(t){for(;!t.d||!t.d.Ob();)if(t.b&&!RC(t.b))t.d=u(V6(t.b),51);else return null;return t.d}function U4t(t){switch(t.g){case 1:return E2e;default:case 2:return 0;case 3:return Eut;case 4:return u7t}}function _pn(){xi();var t;return e0t||(t=Gin(zb("M",!0)),t=_z(zb("M",!1),t),e0t=t,e0t)}function tH(){tH=V,zdt=new V$("ELK",0),lIt=new V$("JSON",1),uIt=new V$("DOT",2),hIt=new V$("SVG",3)}function W_(){W_=V,y1t=new xrt("STACKED",0),v1t=new xrt("REVERSE_STACKED",1),iN=new xrt("SEQUENCED",2)}function Y_(){Y_=V,JAt=new Srt(Zd,0),_1t=new Srt("MIDDLE_TO_MIDDLE",1),oN=new Srt("AVOID_OVERLAP",2)}function h7(){h7=V,a_t=new RM,o_t=new CQ,c4e=new Xx,o4e=new _Q,a4e=new TQ,s_t=(Wn(a4e),new xt)}function eH(){eH=V,WDt=new ym(15),c7e=new Ta((si(),Kp),WDt),sL=Yk,VDt=zEe,UDt=Ow,KDt=ox,GDt=R3}function t5(t,e){var n,r,s,o,h;for(r=e,s=0,o=r.length;s=t.b.c.length||(K4t(t,2*e+1),n=2*e+2,n0&&(e.Cd(n),n.i&&Abn(n))}function W4t(t,e,n){var r;for(r=n-1;r>=0&&t[r]===e[r];r--);return r<0?0:art(ia(t[r],Eo),ia(e[r],Eo))?-1:1}function jce(t,e,n){var r,s;this.g=t,this.c=e,this.a=this,this.d=this,s=voe(n),r=Vt(yve,JO,227,s,0,1),this.b=r}function vat(t,e,n,r,s){var o,h;for(h=n;h<=s;h++)for(o=e;o<=r;o++)if(a5(t,o,h))return!0;return!1}function Ipn(t,e){var n,r;for(r=t.Zb().Cc().Kc();r.Ob();)if(n=u(r.Pb(),16),n.Hc(e))return!0;return!1}function $ce(t,e,n){var r,s,o,h;for(Wn(n),h=!1,o=t.fd(e),s=n.Kc();s.Ob();)r=s.Pb(),o.Rb(r),h=!0;return h}function yat(t,e){var n,r;return r=u($n(t.a,4),129),n=Vt(Kdt,Qlt,424,e,0,1),r!=null&&Wc(r,0,n,0,r.length),n}function zce(t,e){var n;return n=new Wot((t.f&256)!=0,t.i,t.a,t.d,(t.f&16)!=0,t.j,t.g,e),t.e!=null||(n.c=t),n}function Opn(t,e){var n;return t===e?!0:At(e,85)?(n=u(e,85),Qxt(z2(t),n.vc())):!1}function qce(t,e,n){var r,s;for(s=n.Kc();s.Ob();)if(r=u(s.Pb(),44),t.Be(e,r.md()))return!0;return!1}function Hce(t,e,n){return t.d[e.p][n.p]||(Fwn(t,e,n),t.d[e.p][n.p]=!0,t.d[n.p][e.p]=!0),t.a[e.p][n.p]}function Ppn(t,e){var n;return!t||t==e||!Ui(e,(ae(),vv))?!1:(n=u(K(e,(ae(),vv)),10),n!=t)}function xat(t){switch(t.i){case 2:return!0;case 1:return!1;case-1:++t.c;default:return t.$l()}}function Vce(t){switch(t.i){case-2:return!0;case-1:return!1;case 1:--t.c;default:return t._l()}}function Uce(t){Ine.call(this,"The given string does not match the expected format for individual spacings.",t)}function Npn(t,e){var n;e.Ug("Min Size Preprocessing",1),n=a6t(t),Oi(t,(D0(),GA),n.a),Oi(t,hK,n.b),e.Vg()}function Fpn(t){var e,n,r;for(e=0,r=Vt(ua,le,8,t.b,0,1),n=_r(t,0);n.b!=n.d.c;)r[e++]=u(Tr(n),8);return r}function kat(t,e,n){var r,s,o;for(r=new Qi,o=_r(n,0);o.b!=o.d.c;)s=u(Tr(o),8),Zr(r,new eo(s));$ce(t,e,r)}function Bpn(t,e){var n;return n=Xa(t,e),art(hst(t,e),0)|K$(hst(t,n),0)?n:Xa(QO,hst(Eb(n,63),1))}function Rpn(t,e){var n,r;return n=u(t.d.Bc(e),16),n?(r=t.e.hc(),r.Gc(n),t.e.d-=n.gc(),n.$b(),r):null}function Gce(t){var e;if(e=t.a.c.length,e>0)return LE(e-1,t.a.c.length),xp(t.a,e-1);throw nt(new GGt)}function Kce(t,e,n){if(t>e)throw nt(new zn(yV+t+ube+e));if(t<0||e>n)throw nt(new ewt(yV+t+h8t+e+c8t+n))}function f7(t,e){t.D==null&&t.B!=null&&(t.D=t.B,t.B=null),Wst(t,e==null?null:(Wn(e),e)),t.C&&t.hl(null)}function jpn(t,e){var n;n=_e(($at(),VG))!=null&&e.Sg()!=null?Rt(Ht(e.Sg()))/Rt(Ht(_e(VG))):1,di(t.b,e,n)}function Y4t(t,e){var n,r;if(r=t.c[e],r!=0)for(t.c[e]=0,t.d-=r,n=e+1;nXV?t-n>XV:n-t>XV}function iue(t,e){var n;for(n=0;ns&&(Phe(e.q,s),r=n!=e.q.d)),r}function sue(t,e){var n,r,s,o,h,d,m,k;return m=e.i,k=e.j,r=t.f,s=r.i,o=r.j,h=m-s,d=k-o,n=b.Math.sqrt(h*h+d*d),n}function e5t(t,e){var n,r;return r=bH(t),r||(n=(bct(),K1e(e)),r=new NGt(n),Mr(r.El(),t)),r}function sO(t,e){var n,r;return n=u(t.c.Bc(e),16),n?(r=t.hc(),r.Gc(n),t.d-=n.gc(),n.$b(),t.mc(r)):t.jc()}function Xpn(t,e){var n,r;for(r=Ml(t.d,1)!=0,n=!0;n;)n=!1,n=e.c.mg(e.e,r),n=n|FO(t,e,r,!1),r=!r;v4t(t)}function aue(t,e,n,r){var s,o;t.a=e,o=r?0:1,t.f=(s=new vfe(t.c,t.a,n,o),new Jde(n,t.a,s,t.e,t.b,t.c==(qm(),NA)))}function rH(t){var e;return cr(t.a!=t.b),e=t.d.a[t.a],PJt(t.b==t.d.c&&e!=null),t.c=t.a,t.a=t.a+1&t.d.a.length-1,e}function oue(t){var e;if(t.c!=0)return t.c;for(e=0;e=t.c.b:t.a<=t.c.b))throw nt(new ac);return e=t.a,t.a+=t.c.c,++t.b,fe(e)}function Sat(t){var e;return e=new bmt(t.a),Yo(e,t),Zt(e,(ae(),Di),t),e.o.a=t.g,e.o.b=t.f,e.n.a=t.i,e.n.b=t.j,e}function Aat(t){return(ve(),Uu).Hc(t.j)?Rt(Ht(K(t,(ae(),AT)))):hc(ot(st(ua,1),le,8,0,[t.i.n,t.n,t.a])).b}function Jpn(t){var e;return e=J$(F6e),u(K(t,(ae(),uu)),21).Hc((ko(),ST))&&ri(e,(Ha(),Yc),(Ja(),iG)),e}function Zpn(t){var e,n,r,s;for(s=new Os,r=new J(t);r.a=0?e:-e;r>0;)r%2==0?(n*=n,r=r/2|0):(s*=n,r-=1);return e<0?1/s:s}function ibn(t,e){var n,r,s;for(s=1,n=t,r=e>=0?e:-e;r>0;)r%2==0?(n*=n,r=r/2|0):(s*=n,r-=1);return e<0?1/s:s}function Pb(t,e){var n,r,s,o;return o=(s=t?bH(t):null,Hfe((r=e,s&&s.Gl(),r))),o==e&&(n=bH(t),n&&n.Gl()),o}function cue(t,e,n){var r,s;return s=t.f,t.f=e,t.Db&4&&!(t.Db&1)&&(r=new la(t,1,0,s,e),n?n.nj(r):n=r),n}function uue(t,e,n){var r,s;return s=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&(r=new la(t,1,3,s,e),n?n.nj(r):n=r),n}function r5t(t,e,n){var r,s;return s=t.a,t.a=e,t.Db&4&&!(t.Db&1)&&(r=new la(t,1,1,s,e),n?n.nj(r):n=r),n}function lue(t){var e,n;if(t!=null)for(n=0;n=r||e-129&&t<128?(WZt(),e=t+128,n=t9t[e],!n&&(n=t9t[e]=new wr(t)),n):new wr(t)}function g7(t){var e,n;return t>-129&&t<128?(hte(),e=t+128,n=i9t[e],!n&&(n=i9t[e]=new ci(t)),n):new ci(t)}function due(t,e){var n;t.a.c.length>0&&(n=u(Oe(t.a,t.a.c.length-1),579),G4t(n,e))||pe(t.a,new Die(e))}function lbn(t){Bf();var e,n;e=t.d.c-t.e.c,n=u(t.g,154),Tu(n.b,new AVt(e)),Tu(n.c,new LVt(e)),Oa(n.i,new MVt(e))}function gue(t){var e;return e=new pb,e.a+="VerticalSegment ",Zc(e,t.e),e.a+=" ",ni(e,Emt(new Knt,new J(t.k))),e.a}function Lat(t,e){var n,r,s;for(n=0,s=fc(t,e).Kc();s.Ob();)r=u(s.Pb(),12),n+=K(r,(ae(),ml))!=null?1:0;return n}function r5(t,e,n){var r,s,o;for(r=0,o=_r(t,0);o.b!=o.d.c&&(s=Rt(Ht(Tr(o))),!(s>n));)s>=e&&++r;return r}function pue(t,e){Hr(t);try{return t._b(e)}catch(n){if(n=is(n),At(n,212)||At(n,169))return!1;throw nt(n)}}function s5t(t,e){Hr(t);try{return t.Hc(e)}catch(n){if(n=is(n),At(n,212)||At(n,169))return!1;throw nt(n)}}function hbn(t,e){Hr(t);try{return t.Mc(e)}catch(n){if(n=is(n),At(n,212)||At(n,169))return!1;throw nt(n)}}function Gy(t,e){Hr(t);try{return t.xc(e)}catch(n){if(n=is(n),At(n,212)||At(n,169))return null;throw nt(n)}}function fbn(t,e){Hr(t);try{return t.Bc(e)}catch(n){if(n=is(n),At(n,212)||At(n,169))return null;throw nt(n)}}function J_(t,e){switch(e.g){case 2:case 1:return fc(t,e);case 3:case 4:return Oh(fc(t,e))}return wn(),wn(),so}function Z_(t){var e;return t.Db&64?qf(t):(e=new Jh(qf(t)),e.a+=" (name: ",Lo(e,t.zb),e.a+=")",e.a)}function dbn(t){var e;return e=u(ed(t.c.c,""),233),e||(e=new X6(fE(hE(new lb,""),"Other")),Dp(t.c.c,"",e)),e}function a5t(t,e,n){var r,s;return s=t.sb,t.sb=e,t.Db&4&&!(t.Db&1)&&(r=new la(t,1,4,s,e),n?n.nj(r):n=r),n}function o5t(t,e,n){var r,s;return s=t.r,t.r=e,t.Db&4&&!(t.Db&1)&&(r=new la(t,1,8,s,t.r),n?n.nj(r):n=r),n}function gbn(t,e,n){var r,s;return r=new xg(t.e,4,13,(s=e.c,s||(bn(),yd)),null,Ip(t,e),!1),n?n.nj(r):n=r,n}function pbn(t,e,n){var r,s;return r=new xg(t.e,3,13,null,(s=e.c,s||(bn(),yd)),Ip(t,e),!1),n?n.nj(r):n=r,n}function Sp(t,e){var n,r;return n=u(e,691),r=n.el(),!r&&n.fl(r=At(e,90)?new KXt(t,u(e,29)):new bre(t,u(e,156))),r}function aO(t,e,n){var r;t._i(t.i+1),r=t.Zi(e,n),e!=t.i&&Wc(t.g,e,t.g,e+1,t.i-e),hs(t.g,e,r),++t.i,t.Mi(e,n),t.Ni()}function bbn(t,e){var n;return e.a&&(n=e.a.a.length,t.a?ni(t.a,t.b):t.a=new Jl(t.d),Ere(t.a,e.a,e.d.length,n)),t}function wbn(t,e){var n;t.c=e,t.a=k2n(e),t.a<54&&(t.f=(n=e.d>1?xre(e.a[0],e.a[1]):xre(e.a[0],0),W2(e.e>0?n:Ep(n))))}function oO(t,e){var n;return n=new Qe,t.a.Bd(n)?(yE(),new znt(Wn(nae(t,n.a,e)))):(_b(t),yE(),yE(),p9t)}function bue(t,e){var n;t.c.length!=0&&(n=u(id(t,Vt(z0,Bp,10,t.c.length,0,1)),199),cmt(n,new I8),l1e(n,e))}function wue(t,e){var n;t.c.length!=0&&(n=u(id(t,Vt(z0,Bp,10,t.c.length,0,1)),199),cmt(n,new m0),l1e(n,e))}function Ci(t,e){return pa(t)?hn(t,e):Cy(t)?hZt(t,e):Ty(t)?(Wn(t),$t(t)===$t(e)):eyt(t)?t.Fb(e):Wvt(t)?uQt(t,e):Wyt(t,e)}function Dh(t,e,n){if(e<0)f6t(t,n);else{if(!n.rk())throw nt(new zn(Kb+n.xe()+XS));u(n,69).wk().Ek(t,t.hi(),e)}}function mue(t,e,n){if(t<0||e>n)throw nt(new No(yV+t+h8t+e+", size: "+n));if(t>e)throw nt(new zn(yV+t+ube+e))}function vue(t){var e;return t.Db&64?qf(t):(e=new Jh(qf(t)),e.a+=" (source: ",Lo(e,t.d),e.a+=")",e.a)}function yue(t){return t>=65&&t<=70?t-65+10:t>=97&&t<=102?t-97+10:t>=48&&t<=57?t-48:0}function mbn(t){pV();var e,n,r,s;for(n=Wat(),r=0,s=n.length;r=0?Fb(t):__(Fb(Ep(t))))}function Eue(t,e,n,r,s,o){this.e=new ge,this.f=(xo(),OA),pe(this.e,t),this.d=e,this.a=n,this.b=r,this.f=s,this.c=o}function xbn(t,e,n){t.n=$2(b2,[le,tut],[376,28],14,[n,Xs(b.Math.ceil(e/32))],2),t.o=e,t.p=n,t.j=e-1>>1,t.k=n-1>>1}function Tue(t){return t-=t>>1&1431655765,t=(t>>2&858993459)+(t&858993459),t=(t>>4)+t&252645135,t+=t>>8,t+=t>>16,t&63}function Cue(t,e){var n,r;for(r=new Zn(t);r.e!=r.i.gc();)if(n=u(sr(r),142),$t(e)===$t(n))return!0;return!1}function kbn(t,e,n){var r,s,o;return o=(s=D7(t.b,e),s),o&&(r=u(lV(RI(t,o),""),29),r)?P6t(t,r,e,n):null}function Mat(t,e,n){var r,s,o;return o=(s=D7(t.b,e),s),o&&(r=u(lV(RI(t,o),""),29),r)?N6t(t,r,e,n):null}function Ebn(t,e){var n;if(n=Z4(t.i,e),n==null)throw nt(new Pd("Node did not exist in input."));return _4t(e,n),null}function Tbn(t,e){var n;if(n=NO(t,e),At(n,331))return u(n,35);throw nt(new zn(Kb+e+"' is not a valid attribute"))}function eS(t,e,n){var r;if(r=t.gc(),e>r)throw nt(new My(e,r));if(t.Si()&&t.Hc(n))throw nt(new zn(kP));t.Gi(e,n)}function Cbn(t,e){e.Ug("Sort end labels",1),xs(Ai(lc(new ln(null,new gn(t.b,16)),new _B),new Gx),new tQ),e.Vg()}function Rs(){Rs=V,wd=new GD(FS,0),Jo=new GD(Ck,1),Ho=new GD(Tk,2),bd=new GD(dut,3),qh=new GD("UP",4)}function uO(){uO=V,gK=new Prt("P1_STRUCTURE",0),pK=new Prt("P2_PROCESSING_ORDER",1),bK=new Prt("P3_EXECUTION",2)}function _ue(){_ue=V,Qke=Ud(Ud(GC(Ud(Ud(GC(ri(new Fs,(dk(),RA),(kS(),C1t)),jA),WAt),XAt),$A),VAt),QAt)}function _bn(t){switch(u(K(t,(ae(),kw)),311).g){case 1:Zt(t,kw,(kg(),jk));break;case 2:Zt(t,kw,(kg(),$5))}}function Sbn(t){switch(t){case 0:return new pKt;case 1:return new dKt;case 2:return new gKt;default:throw nt(new TD)}}function Sue(t){switch(t.g){case 2:return Jo;case 1:return Ho;case 4:return bd;case 3:return qh;default:return wd}}function h5t(t,e){switch(t.b.g){case 0:case 1:return e;case 2:case 3:return new Th(e.d,0,e.a,e.b);default:return null}}function f5t(t){switch(t.g){case 1:return Gn;case 2:return Hn;case 3:return Jn;case 4:return vr;default:return gc}}function lO(t){switch(t.g){case 1:return vr;case 2:return Gn;case 3:return Hn;case 4:return Jn;default:return gc}}function aH(t){switch(t.g){case 1:return Jn;case 2:return vr;case 3:return Gn;case 4:return Hn;default:return gc}}function d5t(t,e,n,r){switch(e){case 1:return!t.n&&(t.n=new Jt(Oo,t,1,7)),t.n;case 2:return t.k}return sxt(t,e,n,r)}function nS(t,e,n){var r,s;return t.Pj()?(s=t.Qj(),r=Bot(t,e,n),t.Jj(t.Ij(7,fe(n),r,e,s)),r):Bot(t,e,n)}function Dat(t,e){var n,r,s;t.d==null?(++t.e,--t.f):(s=e.ld(),n=e.Bi(),r=(n&ki)%t.d.length,fdn(t,r,Q1e(t,r,n,s)))}function p7(t,e){var n;n=(t.Bb&Uf)!=0,e?t.Bb|=Uf:t.Bb&=-1025,t.Db&4&&!(t.Db&1)&&Ti(t,new jf(t,1,10,n,e))}function b7(t,e){var n;n=(t.Bb&u3)!=0,e?t.Bb|=u3:t.Bb&=-4097,t.Db&4&&!(t.Db&1)&&Ti(t,new jf(t,1,12,n,e))}function w7(t,e){var n;n=(t.Bb&al)!=0,e?t.Bb|=al:t.Bb&=-8193,t.Db&4&&!(t.Db&1)&&Ti(t,new jf(t,1,15,n,e))}function m7(t,e){var n;n=(t.Bb&b3)!=0,e?t.Bb|=b3:t.Bb&=-2049,t.Db&4&&!(t.Db&1)&&Ti(t,new jf(t,1,11,n,e))}function Abn(t){var e;t.g&&(e=t.c.kg()?t.f:t.a,W6t(e.a,t.o,!0),W6t(e.a,t.o,!1),Zt(t.o,(Me(),ms),(xa(),Nw)))}function Lbn(t){var e;if(!t.a)throw nt(new Fo("Cannot offset an unassigned cut."));e=t.c-t.b,t.b+=e,Jee(t,e),Qee(t,e)}function Mbn(t,e){var n;if(n=tr(t.k,e),n==null)throw nt(new Pd("Port did not exist in input."));return _4t(e,n),null}function Dbn(t){var e,n;for(n=W1e(nh(t)).Kc();n.Ob();)if(e=Gr(n.Pb()),ES(t,e))return I1n((LYt(),X7e),e);return null}function Aue(t){var e,n;for(n=t.p.a.ec().Kc();n.Ob();)if(e=u(n.Pb(),218),e.f&&t.b[e.c]<-1e-10)return e;return null}function Ibn(t){var e,n;for(n=Cb(new pb,91),e=!0;t.Ob();)e||(n.a+=ro),e=!1,Zc(n,t.Pb());return(n.a+="]",n).a}function Obn(t){var e,n,r;for(e=new ge,r=new J(t.b);r.ae?1:t==e?t==0?ji(1/t,1/e):0:isNaN(t)?isNaN(e)?0:1:-1}function Nbn(t){var e;return e=t.a[t.c-1&t.a.length-1],e==null?null:(t.c=t.c-1&t.a.length-1,hs(t.a,t.c,null),e)}function Fbn(t){var e,n,r;for(r=0,n=t.length,e=0;e=1?Jo:bd):n}function $bn(t){switch(u(K(t,(Me(),Rg)),223).g){case 1:return new vJ;case 3:return new TJ;default:return new mJ}}function Nb(t){if(t.c)Nb(t.c);else if(t.d)throw nt(new Fo("Stream already terminated, can't be modified or used"))}function Gm(t,e,n){var r;return r=t.a.get(e),t.a.set(e,n===void 0?null:n),r===void 0?(++t.c,++t.b.g):++t.d,r}function zbn(t,e,n){var r,s;for(s=t.a.ec().Kc();s.Ob();)if(r=u(s.Pb(),10),QI(n,u(Oe(e,r.p),16)))return r;return null}function p5t(t,e,n){var r;return r=0,e&&(j4(t.a)?r+=e.f.a/2:r+=e.f.b/2),n&&(j4(t.a)?r+=n.f.a/2:r+=n.f.b/2),r}function qbn(t,e,n){var r;r=n,!r&&(r=Fvt(new E6,0)),r.Ug(zbe,2),Ole(t.b,e,r.eh(1)),rTn(t,e,r.eh(1)),aCn(e,r.eh(1)),r.Vg()}function b5t(t,e,n){var r,s;return r=(wb(),s=new sC,s),Oq(r,e),Iq(r,n),t&&Mr((!t.a&&(t.a=new Ns(bh,t,5)),t.a),r),r}function Oat(t){var e;return t.Db&64?qf(t):(e=new Jh(qf(t)),e.a+=" (identifier: ",Lo(e,t.k),e.a+=")",e.a)}function Pat(t,e){var n;n=(t.Bb&Pc)!=0,e?t.Bb|=Pc:t.Bb&=-32769,t.Db&4&&!(t.Db&1)&&Ti(t,new jf(t,1,18,n,e))}function w5t(t,e){var n;n=(t.Bb&Pc)!=0,e?t.Bb|=Pc:t.Bb&=-32769,t.Db&4&&!(t.Db&1)&&Ti(t,new jf(t,1,18,n,e))}function v7(t,e){var n;n=(t.Bb&Wd)!=0,e?t.Bb|=Wd:t.Bb&=-16385,t.Db&4&&!(t.Db&1)&&Ti(t,new jf(t,1,16,n,e))}function m5t(t,e){var n;n=(t.Bb&fo)!=0,e?t.Bb|=fo:t.Bb&=-65537,t.Db&4&&!(t.Db&1)&&Ti(t,new jf(t,1,20,n,e))}function v5t(t){var e;return e=Vt(Uh,Yd,28,2,15,1),t-=fo,e[0]=(t>>10)+nP&js,e[1]=(t&1023)+56320&js,nf(e,0,e.length)}function Hbn(t){var e;return e=Jy(t),e>34028234663852886e22?ns:e<-34028234663852886e22?Vs:e}function Xa(t,e){var n;return Zo(t)&&Zo(e)&&(n=t+e,eP"+K2(e.c):"e_"+Hi(e),t.b&&t.c?K2(t.b)+"->"+K2(t.c):"e_"+Hi(t))}function Gbn(t,e){return hn(e.b&&e.c?K2(e.b)+"->"+K2(e.c):"e_"+Hi(e),t.b&&t.c?K2(t.b)+"->"+K2(t.c):"e_"+Hi(t))}function Km(t,e){return K1(),$f(qb),b.Math.abs(t-e)<=qb||t==e||isNaN(t)&&isNaN(e)?0:te?1:vm(isNaN(t),isNaN(e))}function _g(){_g=V,Fdt=new $$(FS,0),_N=new $$("POLYLINE",1),UT=new $$("ORTHOGONAL",2),Jk=new $$("SPLINES",3)}function cH(){cH=V,WLt=new Irt("ASPECT_RATIO_DRIVEN",0),rdt=new Irt("MAX_SCALE_DRIVEN",1),KLt=new Irt("AREA_DRIVEN",2)}function Kbn(t,e,n){var r;try{bpn(t,e,n)}catch(s){throw s=is(s),At(s,606)?(r=s,nt(new v3t(r))):nt(s)}return e}function Wbn(t){var e,n,r;for(n=0,r=t.length;ne&&r.Ne(t[o-1],t[o])>0;--o)h=t[o],hs(t,o,t[o-1]),hs(t,o-1,h)}function Xe(t,e){var n,r,s,o,h;if(n=e.f,Dp(t.c.d,n,e),e.g!=null)for(s=e.g,o=0,h=s.length;oe){_re(n);break}}bI(n,e)}function Jbn(t,e){var n,r,s;r=Y4(e),s=Rt(Ht(Wy(r,(Me(),Yf)))),n=b.Math.max(0,s/2-.5),hS(e,n,1),pe(t,new UYt(e,n))}function Zbn(t,e,n){var r;n.Ug("Straight Line Edge Routing",1),n.dh(e,v7t),r=u(ne(e,(G4(),J5)),27),pge(t,r),n.dh(e,ZV)}function y5t(t,e){t.n.c.length==0&&pe(t.n,new eq(t.s,t.t,t.i)),pe(t.b,e),txt(u(Oe(t.n,t.n.c.length-1),209),e),Q0e(t,e)}function rS(t){var e;this.a=(e=u(t.e&&t.e(),9),new Eh(e,u(Ff(e,e.length),9),0)),this.b=Vt(sa,Ln,1,this.a.a.length,5,1)}function ec(t){var e;return Array.isArray(t)&&t.Tm===Et?R2(Gl(t))+"@"+(e=Hi(t)>>>0,e.toString(16)):t.toString()}function t2n(t,e){return t.h==tP&&t.m==0&&t.l==0?(e&&(Wb=ku(0,0,0)),hQt((UE(),WTt))):(e&&(Wb=ku(t.l,t.m,t.h)),ku(0,0,0))}function e2n(t,e){switch(e.g){case 2:return t.b;case 1:return t.c;case 4:return t.d;case 3:return t.a;default:return!1}}function Iue(t,e){switch(e.g){case 2:return t.b;case 1:return t.c;case 4:return t.d;case 3:return t.a;default:return!1}}function x5t(t,e,n,r){switch(e){case 3:return t.f;case 4:return t.g;case 5:return t.i;case 6:return t.j}return d5t(t,e,n,r)}function uH(t,e){if(e==t.d)return t.e;if(e==t.e)return t.d;throw nt(new zn("Node "+e+" not part of edge "+t))}function n2n(t,e){var n;if(n=NO(t.Dh(),e),At(n,102))return u(n,19);throw nt(new zn(Kb+e+"' is not a valid reference"))}function Ih(t,e,n,r){if(e<0)j6t(t,n,r);else{if(!n.rk())throw nt(new zn(Kb+n.xe()+XS));u(n,69).wk().Ck(t,t.hi(),e,r)}}function Ll(t){var e;if(t.b){if(Ll(t.b),t.b.d!=t.c)throw nt(new yh)}else t.d.dc()&&(e=u(t.f.c.xc(t.e),16),e&&(t.d=e))}function r2n(t){Ay();var e,n,r,s;for(e=t.o.b,r=u(u(Mi(t.r,(ve(),vr)),21),87).Kc();r.Ob();)n=u(r.Pb(),117),s=n.e,s.b+=e}function i2n(t){var e,n,r;for(this.a=new Bd,r=new J(t);r.a=s)return e.c+n;return e.c+e.b.gc()}function a2n(t,e){TE();var n,r,s,o;for(r=Vse(t),s=e,HE(r,0,r.length,s),n=0;n0&&(r+=s,++n);return n>1&&(r+=t.d*(n-1)),r}function c2n(t){var e,n,r,s,o;return o=jxt(t),n=AD(t.c),r=!n,r&&(s=new lg,C1(o,"knownLayouters",s),e=new kGt(s),Oa(t.c,e)),o}function T5t(t){var e,n,r;for(r=new hp,r.a+="[",e=0,n=t.gc();e0&&(qn(e-1,t.length),t.charCodeAt(e-1)==58)&&!Bat(t,pL,bL))}function C5t(t,e){var n;return $t(t)===$t(e)?!0:At(e,92)?(n=u(e,92),t.e==n.e&&t.d==n.d&&N1n(t,n.a)):!1}function ck(t){switch(ve(),t.g){case 4:return Hn;case 1:return Jn;case 3:return vr;case 2:return Gn;default:return gc}}function f2n(t){var e,n;if(t.b)return t.b;for(n=hd?null:t.d;n;){if(e=hd?null:n.b,e)return e;n=hd?null:n.d}return mE(),m9t}function _5t(t){var e,n,r;for(r=Rt(Ht(t.a.of((si(),TK)))),n=new J(t.a.Sf());n.a>5,e=t&31,r=Vt(Or,ii,28,n+1,15,1),r[n]=1<3;)s*=10,--o;t=(t+(s>>1))/s|0}return r.i=t,!0}function ss(t,e){var n,r,s;if(n=(t.i==null&&Kd(t),t.i),r=e.Lj(),r!=-1){for(s=n.length;r=0;--r)for(e=n[r],s=0;s>1,this.k=e-1>>1}function S2n(t){vq(),u(t.of((si(),s2)),181).Hc((Dl(),DK))&&(u(t.of(j3),181).Fc((wl(),Zk)),u(t.of(s2),181).Mc(DK))}function jue(t){var e,n;e=t.d==(gk(),vT),n=Lxt(t),e&&!n||!e&&n?Zt(t.a,(Me(),s0),(L0(),mN)):Zt(t.a,(Me(),s0),(L0(),wN))}function $at(){$at=V,y$(),VG=(Me(),Sv),u6e=J1(ot(st(mdt,1),a7t,149,0,[tN,Yf,G5,_v,O3,n1t,OT,PT,r1t,LA,U5,Lw,K5]))}function A2n(t,e){var n;return n=u(tc(t,gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[(bl(),rc)]))),15),n.Qc(ate(n.gc()))}function $ue(t,e){var n,r;if(r=new b1(t.a.ad(e,!0)),r.a.gc()<=1)throw nt(new y6);return n=r.a.ec().Kc(),n.Pb(),u(n.Pb(),39)}function L2n(t,e,n){var r,s;return r=Rt(t.p[e.i.p])+Rt(t.d[e.i.p])+e.n.b+e.a.b,s=Rt(t.p[n.i.p])+Rt(t.d[n.i.p])+n.n.b+n.a.b,s-r}function O5t(t,e){var n;return t.i>0&&(e.lengtht.i&&hs(e,t.i,null),e}function hH(t){var e;return t.Db&64?Z_(t):(e=new Jh(Z_(t)),e.a+=" (instanceClassName: ",Lo(e,t.D),e.a+=")",e.a)}function fH(t){var e,n,r,s;for(s=0,n=0,r=t.length;n0?(t._j(),r=e==null?0:Hi(e),s=(r&ki)%t.d.length,n=Q1e(t,s,r,e),n!=-1):!1}function zue(t,e){var n,r;t.a=Xa(t.a,1),t.c=b.Math.min(t.c,e),t.b=b.Math.max(t.b,e),t.d+=e,n=e-t.f,r=t.e+n,t.f=r-t.e-n,t.e=r}function P5t(t,e){switch(e){case 3:$m(t,0);return;case 4:zm(t,0);return;case 5:Cu(t,0);return;case 6:_u(t,0);return}i5t(t,e)}function Wm(t,e){switch(e.g){case 1:return $6(t.j,(nl(),yCt));case 2:return $6(t.j,(nl(),kCt));default:return wn(),wn(),so}}function N5t(t){Lm();var e;switch(e=t.Pc(),e.length){case 0:return pht;case 1:return new yit(Hr(e[0]));default:return new est(Wbn(e))}}function que(t,e){t.Xj();try{t.d.bd(t.e++,e),t.f=t.d.j,t.g=-1}catch(n){throw n=is(n),At(n,77)?nt(new yh):nt(n)}}function qat(){qat=V,Qdt=new eD,MIt=new nD,DIt=new o6,IIt=new Ktt,OIt=new Wtt,PIt=new Ytt,NIt=new Xtt,FIt=new gy,BIt=new KR}function dH(t,e){imt();var n,r;return n=sI((a$(),a$(),cA)),r=null,e==n&&(r=u(eu(GTt,t),624)),r||(r=new oee(t),e==n&&Bo(GTt,t,r)),r}function Hue(t){Yy();var e;return(t.q?t.q:(wn(),wn(),j0))._b((Me(),Tv))?e=u(K(t,Tv),203):e=u(K(Ia(t),AA),203),e}function Wy(t,e){var n,r;return r=null,Ui(t,(Me(),qG))&&(n=u(K(t,qG),96),n.pf(e)&&(r=n.of(e))),r==null&&(r=K(Ia(t),e)),r}function Vue(t,e){var n,r,s;return At(e,44)?(n=u(e,44),r=n.ld(),s=Gy(t.Rc(),r),zd(s,n.md())&&(s!=null||t.Rc()._b(r))):!1}function S1(t,e){var n,r,s;return t.f>0&&(t._j(),r=e==null?0:Hi(e),s=(r&ki)%t.d.length,n=v6t(t,s,r,e),n)?n.md():null}function mu(t,e,n){var r,s,o;return t.Pj()?(r=t.i,o=t.Qj(),aO(t,r,e),s=t.Ij(3,null,e,r,o),n?n.nj(s):n=s):aO(t,t.i,e),n}function D2n(t,e,n){var r,s;return r=new xg(t.e,4,10,(s=e.c,At(s,90)?u(s,29):(bn(),mf)),null,Ip(t,e),!1),n?n.nj(r):n=r,n}function I2n(t,e,n){var r,s;return r=new xg(t.e,3,10,null,(s=e.c,At(s,90)?u(s,29):(bn(),mf)),Ip(t,e),!1),n?n.nj(r):n=r,n}function Uue(t){Ay();var e;return e=new eo(u(t.e.of((si(),ox)),8)),t.B.Hc((Dl(),KT))&&(e.a<=0&&(e.a=20),e.b<=0&&(e.b=20)),e}function Fb(t){Gd();var e,n;return n=qr(t),e=qr(Eb(t,32)),e!=0?new Zne(n,e):n>10||n<0?new vg(1,n):Ive[n]}function fO(t,e){var n;return Zo(t)&&Zo(e)&&(n=t%e,eP=0?o=o.a[1]:(s=o,o=o.a[0])}return s}function gO(t,e,n){var r,s,o;for(s=null,o=t.b;o;){if(r=t.a.Ne(e,o.d),n&&r==0)return o;r<=0?o=o.a[0]:(s=o,o=o.a[1])}return s}function R2n(t,e,n,r){var s,o,h;return s=!1,zTn(t.f,n,r)&&(awn(t.f,t.a[e][n],t.a[e][r]),o=t.a[e],h=o[r],o[r]=o[n],o[n]=h,s=!0),s}function Yue(t,e,n){var r,s,o,h;for(s=u(tr(t.b,n),183),r=0,h=new J(e.j);h.a>5,e&=31,s=t.d+n+(e==0?0:1),r=Vt(Or,ii,28,s,15,1),Fyn(r,t.a,n,e),o=new H2(t.e,s,r),I_(o),o}function j2n(t,e){var n,r,s;for(r=new nr(ir(As(t).a.Kc(),new q));Sr(r);)if(n=u(lr(r),18),s=n.d.i,s.c==e)return!1;return!0}function R5t(t,e,n){var r,s,o,h,d;return h=t.k,d=e.k,r=n[h.g][d.g],s=Ht(Wy(t,r)),o=Ht(Wy(e,r)),b.Math.max((Wn(s),s),(Wn(o),o))}function $2n(){return Error.stackTraceLimit>0?(b.Error.stackTraceLimit=Error.stackTraceLimit=64,!0):"stack"in new Error}function z2n(t,e){return K1(),K1(),$f(qb),(b.Math.abs(t-e)<=qb||t==e||isNaN(t)&&isNaN(e)?0:te?1:vm(isNaN(t),isNaN(e)))>0}function j5t(t,e){return K1(),K1(),$f(qb),(b.Math.abs(t-e)<=qb||t==e||isNaN(t)&&isNaN(e)?0:te?1:vm(isNaN(t),isNaN(e)))<0}function Que(t,e){return K1(),K1(),$f(qb),(b.Math.abs(t-e)<=qb||t==e||isNaN(t)&&isNaN(e)?0:te?1:vm(isNaN(t),isNaN(e)))<=0}function Vat(t,e){for(var n=0;!e[n]||e[n]=="";)n++;for(var r=e[n++];n0&&this.b>0&&(this.g=Cz(this.c,this.b,this.a))}function q2n(t,e){var n=t.a,r;e=String(e),n.hasOwnProperty(e)&&(r=n[e]);var s=(fat(),xht)[typeof r],o=s?s(r):Z4t(typeof r);return o}function x7(t){var e,n,r;if(r=null,e=n0 in t.a,n=!e,n)throw nt(new Pd("Every element must have an id."));return r=pk(bg(t,n0)),r}function Ym(t){var e,n;for(n=Efe(t),e=null;t.c==2;)vi(t),e||(e=(xi(),xi(),new l_(2)),cw(e,n),n=e),n.Jm(Efe(t));return n}function pH(t,e){var n,r,s;return t._j(),r=e==null?0:Hi(e),s=(r&ki)%t.d.length,n=v6t(t,s,r,e),n?(soe(t,n),n.md()):null}function ile(t,e){return t.e>e.e?1:t.ee.d?t.e:t.d=48&&t<48+b.Math.min(10,10)?t-48:t>=97&&t<97?t-97+10:t>=65&&t<65?t-65+10:-1}function H2n(t,e){if(e.c==t)return e.d;if(e.d==t)return e.c;throw nt(new zn("Input edge is not connected to the input port."))}function V2n(t){if(wH(aT,t))return Nn(),dT;if(wH(Dlt,t))return Nn(),Yb;throw nt(new zn("Expecting true or false"))}function q5t(t){switch(typeof t){case _ct:return Cp(t);case Xkt:return O6(t);case vk:return jJt(t);default:return t==null?0:km(t)}}function Ud(t,e){if(t.a<0)throw nt(new Fo("Did not call before(...) or after(...) before calling add(...)."));return Fmt(t,t.a,e),t}function H5t(t){return nq(),At(t,162)?u(tr(RN,Bve),294).Rg(t):Eu(RN,Gl(t))?u(tr(RN,Gl(t)),294).Rg(t):null}function Su(t){var e,n;return t.Db&32||(n=(e=u($n(t,16),29),ur(e||t.ii())-ur(t.ii())),n!=0&&uk(t,32,Vt(sa,Ln,1,n,5,1))),t}function uk(t,e,n){var r;t.Db&e?n==null?S5n(t,e):(r=hot(t,e),r==-1?t.Eb=n:hs(X2(t.Eb),r,n)):n!=null&&X6n(t,e,n)}function U2n(t,e,n,r){var s,o;e.c.length!=0&&(s=$xn(n,r),o=z4n(e),xs(Mq(new ln(null,new gn(o,1)),new pZ),new Fee(t,n,s,r)))}function G2n(t,e){var n,r,s,o;return r=t.a.length-1,n=e-t.b&r,o=t.c-e&r,s=t.c-t.b&r,PJt(n=o?(Vpn(t,e),-1):(Hpn(t,e),1)}function bH(t){var e,n,r;if(r=t.Jh(),!r)for(e=0,n=t.Ph();n;n=n.Ph()){if(++e>eut)return n.Qh();if(r=n.Jh(),r||n==t)break}return r}function ale(t,e){var n;return $t(e)===$t(t)?!0:!At(e,21)||(n=u(e,21),n.gc()!=t.gc())?!1:t.Ic(n)}function K2n(t,e){return t.ee.e?1:t.fe.f?1:Hi(t)-Hi(e)}function wH(t,e){return Wn(t),e==null?!1:hn(t,e)?!0:t.length==e.length&&hn(t.toLowerCase(),e.toLowerCase())}function Ag(t){var e,n;return Rc(t,-129)>0&&Rc(t,128)<0?(lte(),e=qr(t)+128,n=e9t[e],!n&&(n=e9t[e]=new Ar(t)),n):new Ar(t)}function iw(){iw=V,x3=new I$(Zd,0),pCt=new I$("INSIDE_PORT_SIDE_GROUPS",1),eft=new I$("GROUP_MODEL_ORDER",2),nft=new I$(j8t,3)}function W2n(t){var e;return t.b||znn(t,(e=$sn(t.e,t.a),!e||!hn(Dlt,S1((!e.b&&(e.b=new Hl((bn(),po),Sc,e)),e.b),"qualified")))),t.c}function Y2n(t,e){var n,r;for(n=(qn(e,t.length),t.charCodeAt(e)),r=e+1;r2e3&&(kve=t,SU=b.setTimeout(Gnn,10))),_U++==0?(c0n((X2t(),UTt)),!0):!1}function uwn(t,e,n){var r;(Vve?(f2n(t),!0):Uve||Kve?(mE(),!0):Gve&&(mE(),!1))&&(r=new EZt(e),r.b=n,w3n(t,r))}function Gat(t,e){var n;n=!t.A.Hc((Kl(),Fw))||t.q==(xa(),lu),t.u.Hc((wl(),$g))?n?J9n(t,e):npe(t,e):t.u.Hc(u2)&&(n?m9n(t,e):wpe(t,e))}function fle(t){var e;$t(ne(t,(si(),sx)))===$t((Cg(),SK))&&(es(t)?(e=u(ne(es(t),sx),346),Oi(t,sx,e)):Oi(t,sx,aL))}function lwn(t){var e,n;return Ui(t.d.i,(Me(),MT))?(e=u(K(t.c.i,MT),17),n=u(K(t.d.i,MT),17),Bc(e.a,n.a)>0):!1}function dle(t,e,n){return new Th(b.Math.min(t.a,e.a)-n/2,b.Math.min(t.b,e.b)-n/2,b.Math.abs(t.a-e.a)+n,b.Math.abs(t.b-e.b)+n)}function gle(t){var e;this.d=new ge,this.j=new Ea,this.g=new Ea,e=t.g.b,this.f=u(K(Ia(e),(Me(),fh)),88),this.e=Rt(Ht(xH(e,O3)))}function ple(t){this.d=new ge,this.e=new yp,this.c=Vt(Or,ii,28,(ve(),ot(st(go,1),$c,64,0,[gc,Hn,Jn,vr,Gn])).length,15,1),this.b=t}function G5t(t,e,n){var r;switch(r=n[t.g][e],t.g){case 1:case 3:return new se(0,r);case 2:case 4:return new se(r,0);default:return null}}function ble(t,e,n){var r,s;s=u(xI(e.f),205);try{s.rf(t,n),xee(e.f,s)}catch(o){throw o=is(o),At(o,103)?(r=o,nt(r)):nt(o)}}function wle(t,e,n){var r,s,o,h,d,m;return r=null,d=Fkt(JE(),e),o=null,d&&(s=null,m=Pkt(d,n),h=null,m!=null&&(h=t.qf(d,m)),s=h,o=s),r=o,r}function Kat(t,e,n,r){var s;if(s=t.length,e>=s)return s;for(e=e>0?e:0;er&&hs(e,r,null),e}function mle(t,e){var n,r;for(r=t.a.length,e.lengthr&&hs(e,r,null),e}function k7(t,e){var n,r;if(++t.j,e!=null&&(n=(r=t.a.Cb,At(r,99)?u(r,99).th():null),p5n(e,n))){uk(t.a,4,n);return}uk(t.a,4,u(e,129))}function hwn(t){var e;if(t==null)return null;if(e=bxn(iu(t,!0)),e==null)throw nt(new Gnt("Invalid hexBinary value: '"+t+"'"));return e}function mH(t,e,n){var r;e.a.length>0&&(pe(t.b,new jZt(e.a,n)),r=e.a.length,0r&&(e.a+=zQt(Vt(Uh,Yd,28,-r,15,1))))}function vle(t,e,n){var r,s,o;if(!n[e.d])for(n[e.d]=!0,s=new J(n5(e));s.a=t.b>>1)for(r=t.c,n=t.b;n>e;--n)r=r.b;else for(r=t.a.a,n=0;n=0?t.Wh(s):Fot(t,r)):n<0?Fot(t,r):u(r,69).wk().Bk(t,t.hi(),n)}function Ele(t){var e,n,r;for(r=(!t.o&&(t.o=new el((jc(),K0),Yp,t,0)),t.o),n=r.c.Kc();n.e!=n.i.gc();)e=u(n.Yj(),44),e.md();return II(r)}function _e(t){var e;if(At(t.a,4)){if(e=H5t(t.a),e==null)throw nt(new Fo(G2e+t.b+"'. "+U2e+(gg(jN),jN.k)+Q7t));return e}else return t.a}function vwn(t,e){var n,r;if(t.j.length!=e.j.length)return!1;for(n=0,r=t.j.length;n=64&&e<128&&(s=k1(s,Rf(1,e-64)));return s}function xH(t,e){var n,r;return r=null,Ui(t,(si(),Xk))&&(n=u(K(t,Xk),96),n.pf(e)&&(r=n.of(e))),r==null&&Ia(t)&&(r=K(Ia(t),e)),r}function ywn(t,e){var n;return n=u(K(t,(Me(),qo)),75),Krt(e,U3e)?n?Zl(n):(n=new Xu,Zt(t,qo,n)):n&&Zt(t,qo,null),n}function aS(){aS=V,Y9t=(si(),SDt),qht=oDt,Vye=nx,W9t=Kp,Wye=(OH(),S9t),Kye=C9t,Yye=L9t,Gye=T9t,Uye=(Eat(),U9t),zht=zye,K9t=qye,RU=Hye}function kH(t){switch(vwt(),this.c=new ge,this.d=t,t.g){case 0:case 2:this.a=Syt(gCt),this.b=ns;break;case 3:case 1:this.a=gCt,this.b=Vs}}function xwn(t){var e;j6(u(K(t,(Me(),ms)),101))&&(e=t.b,f1e((mn(0,e.c.length),u(e.c[0],30))),f1e(u(Oe(e,e.c.length-1),30)))}function kwn(t,e){e.Ug("Self-Loop post-processing",1),xs(Ai(Ai(lc(new ln(null,new gn(t.b,16)),new OQ),new PQ),new jB),new NQ),e.Vg()}function Tle(t,e,n){var r,s;if(t.c)Cu(t.c,t.c.i+e),_u(t.c,t.c.j+n);else for(s=new J(t.b);s.a=0&&(n.d=t.t);break;case 3:t.t>=0&&(n.a=t.t)}t.C&&(n.b=t.C.b,n.c=t.C.c)}function oS(){oS=V,wAt=new $D(o7t,0),f1t=new $D(Put,1),d1t=new $D("LINEAR_SEGMENTS",2),DA=new $D("BRANDES_KOEPF",3),IA=new $D(y2e,4)}function cS(){cS=V,BP=new M$(kV,0),FU=new M$(gut,1),BU=new M$(put,2),RP=new M$(but,3),BP.a=!1,FU.a=!0,BU.a=!1,RP.a=!0}function lk(){lk=V,PP=new L$(kV,0),OP=new L$(gut,1),NP=new L$(put,2),FP=new L$(but,3),PP.a=!1,OP.a=!0,NP.a=!1,FP.a=!0}function hk(t,e,n,r){var s;return n>=0?t.Sh(e,n,r):(t.Ph()&&(r=(s=t.Fh(),s>=0?t.Ah(r):t.Ph().Th(t,-1-s,null,r))),t.Ch(e,n,r))}function K5t(t,e){switch(e){case 7:!t.e&&(t.e=new En(Cs,t,7,4)),Lr(t.e);return;case 8:!t.d&&(t.d=new En(Cs,t,8,5)),Lr(t.d);return}P5t(t,e)}function Oi(t,e,n){return n==null?(!t.o&&(t.o=new el((jc(),K0),Yp,t,0)),pH(t.o,e)):(!t.o&&(t.o=new el((jc(),K0),Yp,t,0)),yO(t.o,e,n)),t}function Ale(t,e){wn();var n,r,s,o;for(n=t,o=e,At(t,21)&&!At(e,21)&&(n=e,o=t),s=n.Kc();s.Ob();)if(r=s.Pb(),o.Hc(r))return!1;return!0}function Swn(t,e,n,r){if(e.an.b)return!0}return!1}function Jat(t,e){return pa(t)?!!pve[e]:t.Sm?!!t.Sm[e]:Cy(t)?!!gve[e]:Ty(t)?!!dve[e]:!1}function Awn(t){var e;e=t.a;do e=u(lr(new nr(ir(ca(e).a.Kc(),new q))),18).c.i,e.k==(Un(),ha)&&t.b.Fc(e);while(e.k==(Un(),ha));t.b=Oh(t.b)}function Lle(t,e){var n,r,s;for(s=t,r=new nr(ir(ca(e).a.Kc(),new q));Sr(r);)n=u(lr(r),18),n.c.i.c&&(s=b.Math.max(s,n.c.i.c.p));return s}function Lwn(t,e){var n,r,s;for(s=0,r=u(u(Mi(t.r,e),21),87).Kc();r.Ob();)n=u(r.Pb(),117),s+=n.d.d+n.b.Mf().b+n.d.a,r.Ob()&&(s+=t.w);return s}function Mwn(t,e){var n,r,s;for(s=0,r=u(u(Mi(t.r,e),21),87).Kc();r.Ob();)n=u(r.Pb(),117),s+=n.d.b+n.b.Mf().a+n.d.c,r.Ob()&&(s+=t.w);return s}function Mle(t){var e,n,r,s;if(r=0,s=n3(t),s.c.length==0)return 1;for(n=new J(s);n.a=0?t.Lh(h,n,!0):Zm(t,o,n)):u(o,69).wk().yk(t,t.hi(),s,n,r)}function Pwn(t,e,n,r){var s,o;o=e.pf((si(),ax))?u(e.of(ax),21):t.j,s=mbn(o),s!=(pV(),Bht)&&(n&&!$5t(s)||Jxt(wxn(t,s,r),e))}function Nwn(t){switch(t.g){case 1:return Um(),IP;case 3:return Um(),DP;case 2:return Um(),jht;case 4:return Um(),Rht;default:return null}}function Fwn(t,e,n){if(t.e)switch(t.b){case 1:_ln(t.c,e,n);break;case 0:Sln(t.c,e,n)}else Qre(t.c,e,n);t.a[e.p][n.p]=t.c.i,t.a[n.p][e.p]=t.c.e}function Dle(t){var e,n;if(t==null)return null;for(n=Vt(z0,le,199,t.length,0,2),e=0;e=0)return s;if(t.ol()){for(r=0;r=s)throw nt(new My(e,s));if(t.Si()&&(r=t.dd(n),r>=0&&r!=e))throw nt(new zn(kP));return t.Xi(e,n)}function W5t(t,e){if(this.a=u(Hr(t),253),this.b=u(Hr(e),253),t.Ed(e)>0||t==(jnt(),dht)||e==($nt(),ght))throw nt(new zn("Invalid range: "+tie(t,e)))}function Ile(t){var e,n;for(this.b=new ge,this.c=t,this.a=!1,n=new J(t.a);n.a0),(e&-e)==e)return Xs(e*Ml(t,31)*4656612873077393e-25);do n=Ml(t,31),r=n%e;while(n-r+(e-1)<0);return Xs(r)}function qwn(t,e,n){switch(n.g){case 1:t.a=e.a/2,t.b=0;break;case 2:t.a=e.a,t.b=e.b/2;break;case 3:t.a=e.a/2,t.b=e.b;break;case 4:t.a=0,t.b=e.b/2}}function pO(t,e,n,r){var s,o;for(s=e;s1&&(o=Rwn(t,e)),o}function Nle(t){var e;return e=Rt(Ht(ne(t,(si(),CN))))*b.Math.sqrt((!t.a&&(t.a=new Jt(wi,t,10,11)),t.a).i),new se(e,e/Rt(Ht(ne(t,CK))))}function tot(t){var e;return t.f&&t.f.Vh()&&(e=u(t.f,54),t.f=u(Pb(t,e),84),t.f!=e&&t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,9,8,e,t.f))),t.f}function eot(t){var e;return t.i&&t.i.Vh()&&(e=u(t.i,54),t.i=u(Pb(t,e),84),t.i!=e&&t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,9,7,e,t.i))),t.i}function wo(t){var e;return t.b&&t.b.Db&64&&(e=t.b,t.b=u(Pb(t,e),19),t.b!=e&&t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,9,21,e,t.b))),t.b}function SH(t,e){var n,r,s;t.d==null?(++t.e,++t.f):(r=e.Bi(),h6n(t,t.f+1),s=(r&ki)%t.d.length,n=t.d[s],!n&&(n=t.d[s]=t.dk()),n.Fc(e),++t.f)}function Q5t(t,e,n){var r;return e.tk()?!1:e.Ik()!=-2?(r=e.ik(),r==null?n==null:Ci(r,n)):e.qk()==t.e.Dh()&&n==null}function AH(){var t;ih(16,Kpe),t=voe(16),this.b=Vt(bht,JO,302,t,0,1),this.c=Vt(bht,JO,302,t,0,1),this.a=null,this.e=null,this.i=0,this.f=t-1,this.g=0}function Lg(t){rvt.call(this),this.k=(Un(),Ts),this.j=(ih(6,c3),new bu(6)),this.b=(ih(2,c3),new bu(2)),this.d=new Pnt,this.f=new R2t,this.a=t}function Vwn(t){var e,n;t.c.length<=1||(e=$de(t,(ve(),vr)),_fe(t,u(e.a,17).a,u(e.b,17).a),n=$de(t,Gn),_fe(t,u(n.a,17).a,u(n.b,17).a))}function Uwn(t,e,n){var r,s;for(s=t.a.b,r=s.c.length;r102?-1:t<=57?t-48:t<65?-1:t<=70?t-65+10:t<97?-1:t-97+10}function aot(t,e){if(t==null)throw nt(new C6("null key in entry: null="+e));if(e==null)throw nt(new C6("null value in entry: "+t+"=null"))}function Wwn(t,e){for(var n,r;t.Ob();)if(!e.Ob()||(n=t.Pb(),r=e.Pb(),!($t(n)===$t(r)||n!=null&&Ci(n,r))))return!1;return!e.Ob()}function Rle(t,e){var n;return n=ot(st(wa,1),Io,28,15,[Cat(t.a[0],e),Cat(t.a[1],e),Cat(t.a[2],e)]),t.d&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function jle(t,e){var n;return n=ot(st(wa,1),Io,28,15,[nH(t.a[0],e),nH(t.a[1],e),nH(t.a[2],e)]),t.d&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function Z5t(t,e,n){j6(u(K(e,(Me(),ms)),101))||(d3t(t,e,Op(e,n)),d3t(t,e,Op(e,(ve(),vr))),d3t(t,e,Op(e,Hn)),wn(),Ms(e.j,new UVt(t)))}function $le(t){var e,n;for(t.c||dTn(t),n=new Xu,e=new J(t.a),et(e);e.a0&&(qn(0,e.length),e.charCodeAt(0)==43)?(qn(1,e.length+1),e.substr(1)):e))}function cmn(t){var e;return t==null?null:new xb((e=iu(t,!0),e.length>0&&(qn(0,e.length),e.charCodeAt(0)==43)?(qn(1,e.length+1),e.substr(1)):e))}function ext(t,e,n,r,s,o,h,d){var m,k;r&&(m=r.a[0],m&&ext(t,e,n,m,s,o,h,d),pot(t,n,r.d,s,o,h,d)&&e.Fc(r),k=r.a[1],k&&ext(t,e,n,k,s,o,h,d))}function a5(t,e,n){try{return mm(Xst(t,e,n),1)}catch(r){throw r=is(r),At(r,333)?nt(new No(wut+t.o+"*"+t.p+mut+e+ro+n+vut)):nt(r)}}function Ule(t,e,n){try{return mm(Xst(t,e,n),0)}catch(r){throw r=is(r),At(r,333)?nt(new No(wut+t.o+"*"+t.p+mut+e+ro+n+vut)):nt(r)}}function Gle(t,e,n){try{return mm(Xst(t,e,n),2)}catch(r){throw r=is(r),At(r,333)?nt(new No(wut+t.o+"*"+t.p+mut+e+ro+n+vut)):nt(r)}}function Kle(t,e){if(t.g==-1)throw nt(new Yu);t.Xj();try{t.d.hd(t.g,e),t.f=t.d.j}catch(n){throw n=is(n),At(n,77)?nt(new yh):nt(n)}}function umn(t){var e,n,r,s,o;for(r=new J(t.b);r.ao&&hs(e,o,null),e}function lmn(t,e){var n,r;if(r=t.gc(),e==null){for(n=0;n0&&(m+=s),k[T]=h,h+=d*(m+r)}function Yle(t){var e,n,r;for(r=t.f,t.n=Vt(wa,Io,28,r,15,1),t.d=Vt(wa,Io,28,r,15,1),e=0;e0?t.c:0),++s;t.b=r,t.d=o}function the(t,e){var n;return n=ot(st(wa,1),Io,28,15,[X5t(t,(_1(),Tc),e),X5t(t,yu,e),X5t(t,Cc,e)]),t.f&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function mmn(t,e,n){var r;try{rV(t,e+t.j,n+t.k,!1,!0)}catch(s){throw s=is(s),At(s,77)?(r=s,nt(new No(r.g+TV+e+ro+n+")."))):nt(s)}}function vmn(t,e,n){var r;try{rV(t,e+t.j,n+t.k,!0,!1)}catch(s){throw s=is(s),At(s,77)?(r=s,nt(new No(r.g+TV+e+ro+n+")."))):nt(s)}}function ehe(t){var e;Ui(t,(Me(),Ev))&&(e=u(K(t,Ev),21),e.Hc((e3(),Qf))?(e.Mc(Qf),e.Fc(Jf)):e.Hc(Jf)&&(e.Mc(Jf),e.Fc(Qf)))}function nhe(t){var e;Ui(t,(Me(),Ev))&&(e=u(K(t,Ev),21),e.Hc((e3(),t1))?(e.Mc(t1),e.Fc(df)):e.Hc(df)&&(e.Mc(df),e.Fc(t1)))}function fot(t,e,n,r){var s,o,h,d;return t.a==null&&x3n(t,e),h=e.b.j.c.length,o=n.d.p,d=r.d.p,s=d-1,s<0&&(s=h-1),o<=s?t.a[s]-t.a[o]:t.a[h-1]-t.a[o]+t.a[s]}function ymn(t){var e,n;if(!t.b)for(t.b=aq(u(t.f,27).kh().i),n=new Zn(u(t.f,27).kh());n.e!=n.i.gc();)e=u(sr(n),135),pe(t.b,new Hnt(e));return t.b}function xmn(t){var e,n;if(!t.e)for(t.e=aq(Vit(u(t.f,27)).i),n=new Zn(Vit(u(t.f,27)));n.e!=n.i.gc();)e=u(sr(n),123),pe(t.e,new YUt(e));return t.e}function rhe(t){var e,n;if(!t.a)for(t.a=aq(Kz(u(t.f,27)).i),n=new Zn(Kz(u(t.f,27)));n.e!=n.i.gc();)e=u(sr(n),27),pe(t.a,new Qrt(t,e));return t.a}function Qm(t){var e;if(!t.C&&(t.D!=null||t.B!=null))if(e=c9n(t),e)t.hl(e);else try{t.hl(null)}catch(n){if(n=is(n),!At(n,63))throw nt(n)}return t.C}function kmn(t){switch(t.q.g){case 5:She(t,(ve(),Hn)),She(t,vr);break;case 4:Mge(t,(ve(),Hn)),Mge(t,vr);break;default:Ife(t,(ve(),Hn)),Ife(t,vr)}}function Emn(t){switch(t.q.g){case 5:Ahe(t,(ve(),Jn)),Ahe(t,Gn);break;case 4:Dge(t,(ve(),Jn)),Dge(t,Gn);break;default:Ofe(t,(ve(),Jn)),Ofe(t,Gn)}}function o5(t,e){var n,r,s;for(s=new Ea,r=t.Kc();r.Ob();)n=u(r.Pb(),36),P7(n,s.a,0),s.a+=n.f.a+e,s.b=b.Math.max(s.b,n.f.b);return s.b>0&&(s.b+=e),s}function DH(t,e){var n,r,s;for(s=new Ea,r=t.Kc();r.Ob();)n=u(r.Pb(),36),P7(n,0,s.b),s.b+=n.f.b+e,s.a=b.Math.max(s.a,n.f.a);return s.a>0&&(s.a+=e),s}function ihe(t){var e,n,r;for(r=ki,n=new J(t.a);n.a>16==6?t.Cb.Th(t,5,P1,e):(r=wo(u(Tn((n=u($n(t,16),29),n||t.ii()),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function Tmn(t){BE();var e=t.e;if(e&&e.stack){var n=e.stack,r=e+` +`;return n.substring(0,r.length)==r&&(n=n.substring(r.length)),n.split(` +`)}return[]}function Cmn(t){var e;return e=(coe(),Sve),e[t>>>28]|e[t>>24&15]<<4|e[t>>20&15]<<8|e[t>>16&15]<<12|e[t>>12&15]<<16|e[t>>8&15]<<20|e[t>>4&15]<<24|e[t&15]<<28}function ohe(t){var e,n,r;t.b==t.c&&(r=t.a.length,n=N4t(b.Math.max(8,r))<<1,t.b!=0?(e=Ff(t.a,n),Eoe(t,e,r),t.a=e,t.b=0):wy(t.a,n),t.c=r)}function _mn(t,e){var n;return n=t.b,n.pf((si(),Nl))?n.ag()==(ve(),Gn)?-n.Mf().a-Rt(Ht(n.of(Nl))):e+Rt(Ht(n.of(Nl))):n.ag()==(ve(),Gn)?-n.Mf().a:e}function wO(t){var e;return t.b.c.length!=0&&u(Oe(t.b,0),72).a?u(Oe(t.b,0),72).a:(e=Uit(t),e??""+(t.c?Wo(t.c.a,t,0):-1))}function IH(t){var e;return t.f.c.length!=0&&u(Oe(t.f,0),72).a?u(Oe(t.f,0),72).a:(e=Uit(t),e??""+(t.i?Wo(t.i.j,t,0):-1))}function Smn(t,e){var n,r;if(e<0||e>=t.gc())return null;for(n=e;n0?t.c:0),s=b.Math.max(s,e.d),++r;t.e=o,t.b=s}function Lmn(t){var e,n;if(!t.b)for(t.b=aq(u(t.f,123).kh().i),n=new Zn(u(t.f,123).kh());n.e!=n.i.gc();)e=u(sr(n),135),pe(t.b,new Hnt(e));return t.b}function Mmn(t,e){var n,r,s;if(e.dc())return TE(),TE(),$N;for(n=new VJt(t,e.gc()),s=new Zn(t);s.e!=s.i.gc();)r=sr(s),e.Hc(r)&&Mr(n,r);return n}function sxt(t,e,n,r){return e==0?r?(!t.o&&(t.o=new el((jc(),K0),Yp,t,0)),t.o):(!t.o&&(t.o=new el((jc(),K0),Yp,t,0)),II(t.o)):EH(t,e,n,r)}function got(t){var e,n;if(t.rb)for(e=0,n=t.rb.i;e>22),s+=r>>22,s<0)?!1:(t.l=n&Il,t.m=r&Il,t.h=s&Og,!0)}function pot(t,e,n,r,s,o,h){var d,m;return!(e.Te()&&(m=t.a.Ne(n,r),m<0||!s&&m==0)||e.Ue()&&(d=t.a.Ne(n,o),d>0||!h&&d==0))}function Pmn(t,e){h7();var n;if(n=t.j.g-e.j.g,n!=0)return 0;switch(t.j.g){case 2:return Nat(e,o_t)-Nat(t,o_t);case 4:return Nat(t,a_t)-Nat(e,a_t)}return 0}function Nmn(t){switch(t.g){case 0:return Cft;case 1:return _ft;case 2:return Sft;case 3:return Aft;case 4:return wG;case 5:return Lft;default:return null}}function $o(t,e,n){var r,s;return r=(s=new Bnt,rw(s,e),wu(s,n),Mr((!t.c&&(t.c=new Jt(Iv,t,12,10)),t.c),s),s),Tp(r,0),Hy(r,1),Lp(r,!0),Ap(r,!0),r}function fk(t,e){var n,r;if(e>=t.i)throw nt(new Rrt(e,t.i));return++t.j,n=t.g[e],r=t.i-e-1,r>0&&Wc(t.g,e+1,t.g,e,r),hs(t.g,--t.i,null),t.Qi(e,n),t.Ni(),n}function che(t,e){var n,r;return t.Db>>16==17?t.Cb.Th(t,21,pf,e):(r=wo(u(Tn((n=u($n(t,16),29),n||t.ii()),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function Fmn(t){var e,n,r,s;for(wn(),Ms(t.c,t.a),s=new J(t.c);s.an.a.c.length))throw nt(new zn("index must be >= 0 and <= layer node count"));t.c&&$u(t.c.a,t),t.c=n,n&&Cm(n.a,e,t)}function dhe(t,e){var n,r,s;for(r=new nr(ir(Sg(t).a.Kc(),new q));Sr(r);)return n=u(lr(r),18),s=u(e.Kb(n),10),new CC(Hr(s.n.b+s.o.b/2));return NC(),NC(),fht}function ghe(t,e){this.c=new Er,this.a=t,this.b=e,this.d=u(K(t,(ae(),H5)),312),$t(K(t,(Me(),USt)))===$t((FI(),mG))?this.e=new uKt:this.e=new cKt}function lS(t,e){var n,r;return r=null,t.pf((si(),Xk))&&(n=u(t.of(Xk),96),n.pf(e)&&(r=n.of(e))),r==null&&t.Tf()&&(r=t.Tf().of(e)),r==null&&(r=_e(e)),r}function bot(t,e){var n,r;n=t.fd(e);try{return r=n.Pb(),n.Qb(),r}catch(s){throw s=is(s),At(s,112)?nt(new No("Can't remove element "+e)):nt(s)}}function Vmn(t,e){var n,r,s;if(r=new b$,s=new R4t(r.q.getFullYear()-Hb,r.q.getMonth(),r.q.getDate()),n=e7n(t,e,s),n==0||n0?e:0),++n;return new se(r,s)}function lxt(t,e){var n,r;return t.Db>>16==6?t.Cb.Th(t,6,Cs,e):(r=wo(u(Tn((n=u($n(t,16),29),n||(jc(),NK)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function hxt(t,e){var n,r;return t.Db>>16==7?t.Cb.Th(t,1,NN,e):(r=wo(u(Tn((n=u($n(t,16),29),n||(jc(),dIt)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function fxt(t,e){var n,r;return t.Db>>16==9?t.Cb.Th(t,9,wi,e):(r=wo(u(Tn((n=u($n(t,16),29),n||(jc(),pIt)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function whe(t,e){var n,r;return t.Db>>16==5?t.Cb.Th(t,9,VK,e):(r=wo(u(Tn((n=u($n(t,16),29),n||(bn(),Qp)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function mhe(t,e){var n,r;return t.Db>>16==7?t.Cb.Th(t,6,P1,e):(r=wo(u(Tn((n=u($n(t,16),29),n||(bn(),Zp)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function dxt(t,e){var n,r;return t.Db>>16==3?t.Cb.Th(t,0,BN,e):(r=wo(u(Tn((n=u($n(t,16),29),n||(bn(),Xp)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function vhe(){this.a=new aC,this.g=new AH,this.j=new AH,this.b=new Er,this.d=new AH,this.i=new AH,this.k=new Er,this.c=new Er,this.e=new Er,this.f=new Er}function Kmn(t,e,n){var r,s,o;for(n<0&&(n=0),o=t.i,s=n;seut)return T7(t,r);if(r==t)return!0}}return!1}function Ymn(t){switch(az(),t.q.g){case 5:n1e(t,(ve(),Hn)),n1e(t,vr);break;case 4:rde(t,(ve(),Hn)),rde(t,vr);break;default:ape(t,(ve(),Hn)),ape(t,vr)}}function Xmn(t){switch(az(),t.q.g){case 5:x1e(t,(ve(),Jn)),x1e(t,Gn);break;case 4:Cle(t,(ve(),Jn)),Cle(t,Gn);break;default:ope(t,(ve(),Jn)),ope(t,Gn)}}function Qmn(t){var e,n;e=u(K(t,(Vf(),f3e)),17),e?(n=e.a,n==0?Zt(t,(Mb(),HU),new jat):Zt(t,(Mb(),HU),new lq(n))):Zt(t,(Mb(),HU),new lq(1))}function Jmn(t,e){var n;switch(n=t.i,e.g){case 1:return-(t.n.b+t.o.b);case 2:return t.n.a-n.o.a;case 3:return t.n.b-n.o.b;case 4:return-(t.n.a+t.o.a)}return 0}function Zmn(t,e){switch(t.g){case 0:return e==(Ph(),t2)?uG:lG;case 1:return e==(Ph(),t2)?uG:HP;case 2:return e==(Ph(),t2)?HP:lG;default:return HP}}function vO(t,e){var n,r,s;for($u(t.a,e),t.e-=e.r+(t.a.c.length==0?0:t.c),s=y7t,r=new J(t.a);r.a>16==3?t.Cb.Th(t,12,wi,e):(r=wo(u(Tn((n=u($n(t,16),29),n||(jc(),fIt)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function pxt(t,e){var n,r;return t.Db>>16==11?t.Cb.Th(t,10,wi,e):(r=wo(u(Tn((n=u($n(t,16),29),n||(jc(),gIt)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function yhe(t,e){var n,r;return t.Db>>16==10?t.Cb.Th(t,11,pf,e):(r=wo(u(Tn((n=u($n(t,16),29),n||(bn(),Jp)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function xhe(t,e){var n,r;return t.Db>>16==10?t.Cb.Th(t,12,bf,e):(r=wo(u(Tn((n=u($n(t,16),29),n||(bn(),K3)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function rf(t){var e;return!(t.Bb&1)&&t.r&&t.r.Vh()&&(e=u(t.r,54),t.r=u(Pb(t,e),142),t.r!=e&&t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,9,8,e,t.r))),t.r}function wot(t,e,n){var r;return r=ot(st(wa,1),Io,28,15,[zxt(t,(_1(),Tc),e,n),zxt(t,yu,e,n),zxt(t,Cc,e,n)]),t.f&&(r[0]=b.Math.max(r[0],r[2]),r[2]=r[0]),r}function tvn(t,e){var n,r,s;if(s=Twn(t,e),s.c.length!=0)for(Ms(s,new vQ),n=s.c.length,r=0;r>19,k=e.h>>19,m!=k?k-m:(s=t.h,d=e.h,s!=d?s-d:(r=t.m,h=e.m,r!=h?r-h:(n=t.l,o=e.l,n-o)))}function OH(){OH=V,M9t=(eV(),Nht),L9t=new un(g8t,M9t),A9t=(_q(),Pht),S9t=new un(p8t,A9t),_9t=(vH(),Oht),C9t=new un(b8t,_9t),T9t=new un(w8t,(Nn(),!0))}function hS(t,e,n){var r,s;r=e*n,At(t.g,154)?(s=J6(t),s.f.d?s.f.a||(t.d.a+=r+cd):(t.d.d-=r+cd,t.d.a+=r+cd)):At(t.g,10)&&(t.d.d-=r,t.d.a+=2*r)}function khe(t,e,n){var r,s,o,h,d;for(s=t[n.g],d=new J(e.d);d.a0?t.b:0),++n;e.b=r,e.e=s}function Ehe(t){var e,n,r;if(r=t.b,gYt(t.i,r.length)){for(n=r.length*2,t.b=Vt(bht,JO,302,n,0,1),t.c=Vt(bht,JO,302,n,0,1),t.f=n-1,t.i=0,e=t.a;e;e=e.c)AO(t,e,e);++t.g}}function ovn(t,e,n,r){var s,o,h,d;for(s=0;sh&&(d=h/r),s>o&&(m=o/s),Rd(t,b.Math.min(d,m)),t}function uvn(){oV();var t,e;try{if(e=u(_xt((mb(),wf),cT),2113),e)return e}catch(n){if(n=is(n),At(n,103))t=n,pyt((Ur(),t));else throw nt(n)}return new BR}function lvn(){oV();var t,e;try{if(e=u(_xt((mb(),wf),cf),2040),e)return e}catch(n){if(n=is(n),At(n,103))t=n,pyt((Ur(),t));else throw nt(n)}return new WR}function hvn(){Ose();var t,e;try{if(e=u(_xt((mb(),wf),vw),2122),e)return e}catch(n){if(n=is(n),At(n,103))t=n,pyt((Ur(),t));else throw nt(n)}return new pC}function fvn(t,e,n){var r,s;return s=t.e,t.e=e,t.Db&4&&!(t.Db&1)&&(r=new la(t,1,4,s,e),n?n.nj(r):n=r),s!=e&&(e?n=$7(t,GH(t,e),n):n=$7(t,t.a,n)),n}function The(){b$.call(this),this.e=-1,this.a=!1,this.p=Va,this.k=-1,this.c=-1,this.b=-1,this.g=!1,this.f=-1,this.j=-1,this.n=-1,this.i=-1,this.d=-1,this.o=Va}function dvn(t,e){var n,r,s;if(r=t.b.d.d,t.a||(r+=t.b.d.a),s=e.b.d.d,e.a||(s+=e.b.d.a),n=ji(r,s),n==0){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function gvn(t,e){var n,r,s;if(r=t.b.b.d,t.a||(r+=t.b.b.a),s=e.b.b.d,e.a||(s+=e.b.b.a),n=ji(r,s),n==0){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function pvn(t,e){var n,r,s;if(r=t.b.g.d,t.a||(r+=t.b.g.a),s=e.b.g.d,e.a||(s+=e.b.g.a),n=ji(r,s),n==0){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function wxt(){wxt=V,M3e=tl(ri(ri(ri(new Fs,(Ha(),ou),(Ja(),GCt)),ou,KCt),Qo,WCt),Qo,NCt),I3e=ri(ri(new Fs,ou,ACt),ou,FCt),D3e=tl(new Fs,Qo,RCt)}function bvn(t){var e,n,r,s,o;for(e=u(K(t,(ae(),xA)),85),o=t.n,r=e.Cc().Kc();r.Ob();)n=u(r.Pb(),314),s=n.i,s.c+=o.a,s.d+=o.b,n.c?Vde(n):Ude(n);Zt(t,xA,null)}function wvn(t,e,n){var r,s;switch(s=t.b,r=s.d,e.g){case 1:return-r.d-n;case 2:return s.o.a+r.c+n;case 3:return s.o.b+r.a+n;case 4:return-r.b-n;default:return-1}}function mvn(t,e,n){var r,s;for(n.Ug("Interactive node placement",1),t.a=u(K(e,(ae(),H5)),312),s=new J(e.b);s.a0&&(h=(o&ki)%t.d.length,s=v6t(t,h,o,e),s)?(d=s.nd(n),d):(r=t.ck(o,e,n),t.c.Fc(r),null)}function yxt(t,e){var n,r,s,o;switch(Sp(t,e).Kl()){case 3:case 2:{for(n=b5(e),s=0,o=n.i;s=0;r--)if(hn(t[r].d,e)||hn(t[r].d,n)){t.length>=r+1&&t.splice(0,r+1);break}return t}function xO(t,e){var n;return Zo(t)&&Zo(e)&&(n=t/e,eP0&&(t.b+=2,t.a+=r):(t.b+=1,t.a+=b.Math.min(r,s))}function Dhe(t){var e;e=u(K(u(Nh(t.b,0),39),(xc(),dLt)),107),Zt(t,(zi(),RT),new se(0,0)),E0e(new MI,t,e.b+e.c-Rt(Ht(K(t,M1t))),e.d+e.a-Rt(Ht(K(t,D1t))))}function Ihe(t,e){var n,r;if(r=!1,pa(e)&&(r=!0,G6(t,new Oy(Gr(e)))),r||At(e,242)&&(r=!0,G6(t,(n=gvt(u(e,242)),new _C(n)))),!r)throw nt(new Unt(bTt))}function Nvn(t,e,n,r){var s,o,h;return s=new xg(t.e,1,10,(h=e.c,At(h,90)?u(h,29):(bn(),mf)),(o=n.c,At(o,90)?u(o,29):(bn(),mf)),Ip(t,e),!1),r?r.nj(s):r=s,r}function Ext(t){var e,n;switch(u(K(Ia(t),(Me(),RSt)),429).g){case 0:return e=t.n,n=t.o,new se(e.a+n.a/2,e.b+n.b/2);case 1:return new eo(t.n);default:return null}}function kO(){kO=V,vG=new ZC(Zd,0),E_t=new ZC("LEFTUP",1),C_t=new ZC("RIGHTUP",2),k_t=new ZC("LEFTDOWN",3),T_t=new ZC("RIGHTDOWN",4),Mft=new ZC("BALANCED",5)}function Fvn(t,e,n){var r,s,o;if(r=ji(t.a[e.p],t.a[n.p]),r==0){if(s=u(K(e,(ae(),qk)),15),o=u(K(n,qk),15),s.Hc(n))return-1;if(o.Hc(e))return 1}return r}function Bvn(t){switch(t.g){case 1:return new dtt;case 2:return new gtt;case 3:return new ftt;case 0:return null;default:throw nt(new zn(wlt+(t.f!=null?t.f:""+t.g)))}}function Txt(t,e,n){switch(e){case 1:!t.n&&(t.n=new Jt(Oo,t,1,7)),Lr(t.n),!t.n&&(t.n=new Jt(Oo,t,1,7)),bs(t.n,u(n,16));return;case 2:ZE(t,Gr(n));return}V4t(t,e,n)}function Cxt(t,e,n){switch(e){case 3:$m(t,Rt(Ht(n)));return;case 4:zm(t,Rt(Ht(n)));return;case 5:Cu(t,Rt(Ht(n)));return;case 6:_u(t,Rt(Ht(n)));return}Txt(t,e,n)}function PH(t,e,n){var r,s,o;o=(r=new Bnt,r),s=sd(o,e,null),s&&s.oj(),wu(o,n),Mr((!t.c&&(t.c=new Jt(Iv,t,12,10)),t.c),o),Tp(o,0),Hy(o,1),Lp(o,!0),Ap(o,!0)}function _xt(t,e){var n,r,s;return n=WC(t.i,e),At(n,241)?(s=u(n,241),s.zi()==null,s.wi()):At(n,507)?(r=u(n,2037),s=r.b,s):null}function Rvn(t,e,n,r){var s,o;return Hr(e),Hr(n),o=u(w_(t.d,e),17),sae(!!o,"Row %s not in %s",e,t.e),s=u(w_(t.b,n),17),sae(!!s,"Column %s not in %s",n,t.c),bce(t,o.a,s.a,r)}function Ohe(t,e,n,r,s,o,h){var d,m,k,T,A;if(T=s[o],k=o==h-1,d=k?r:0,A=Jle(d,T),r!=10&&ot(st(t,h-o),e[o],n[o],d,A),!k)for(++o,m=0;m1||d==-1?(o=u(m,15),s.Wb(x2n(t,o))):s.Wb(nct(t,u(m,58)))))}function Uvn(t,e,n,r){HWt();var s=hht;function o(){for(var h=0;h0)return!1;return!0}function Wvn(t){var e,n,r,s,o;for(r=new Z2(new ps(t.b).a);r.b;)n=Vm(r),e=u(n.ld(),10),o=u(u(n.md(),42).a,10),s=u(u(n.md(),42).b,8),Ei(y1(e.n),Ei(Ma(o.n),s))}function Yvn(t){switch(u(K(t.b,(Me(),DSt)),387).g){case 1:xs(Go(lc(new ln(null,new gn(t.d,16)),new m4),new dJ),new gJ);break;case 2:Vkn(t);break;case 0:k4n(t)}}function Xvn(t,e,n){var r,s,o;for(r=n,!r&&(r=new E6),r.Ug("Layout",t.a.c.length),o=new J(t.a);o.adlt)return n;s>-1e-6&&++n}return n}function Axt(t,e){var n;e!=t.b?(n=null,t.b&&(n=Qz(t.b,t,-4,n)),e&&(n=hk(e,t,-4,n)),n=uue(t,e,n),n&&n.oj()):t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,3,e,e))}function Fhe(t,e){var n;e!=t.f?(n=null,t.f&&(n=Qz(t.f,t,-1,n)),e&&(n=hk(e,t,-1,n)),n=cue(t,e,n),n&&n.oj()):t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,0,e,e))}function tyn(t,e,n,r){var s,o,h,d;return zl(t.e)&&(s=e.Lk(),d=e.md(),o=n.md(),h=Sb(t,1,s,d,o,s.Jk()?B7(t,s,o,At(s,102)&&(u(s,19).Bb&fo)!=0):-1,!0),r?r.nj(h):r=h),r}function Bhe(t){var e,n,r;if(t==null)return null;if(n=u(t,15),n.dc())return"";for(r=new hp,e=n.Kc();e.Ob();)Lo(r,(Fi(),Gr(e.Pb()))),r.a+=" ";return $rt(r,r.a.length-1)}function Rhe(t){var e,n,r;if(t==null)return null;if(n=u(t,15),n.dc())return"";for(r=new hp,e=n.Kc();e.Ob();)Lo(r,(Fi(),Gr(e.Pb()))),r.a+=" ";return $rt(r,r.a.length-1)}function eyn(t,e,n){var r,s;return r=t.c[e.c.p][e.p],s=t.c[n.c.p][n.p],r.a!=null&&s.a!=null?Ait(r.a,s.a):r.a!=null?-1:s.a!=null?1:0}function nyn(t,e,n){return n.Ug("Tree layout",1),wI(t.b),x1(t.b,(dk(),tK),tK),x1(t.b,RA,RA),x1(t.b,jA,jA),x1(t.b,$A,$A),t.a=VO(t.b,e),Xvn(t,e,n.eh(1)),n.Vg(),e}function ryn(t,e){var n,r,s,o,h,d;if(e)for(o=e.a.length,n=new q2(o),d=(n.b-n.a)*n.c<0?(vb(),p2):new kb(n);d.Ob();)h=u(d.Pb(),17),s=jE(e,h.a),r=new sGt(t),hln(r.a,s)}function iyn(t,e){var n,r,s,o,h,d;if(e)for(o=e.a.length,n=new q2(o),d=(n.b-n.a)*n.c<0?(vb(),p2):new kb(n);d.Ob();)h=u(d.Pb(),17),s=jE(e,h.a),r=new XUt(t),lln(r.a,s)}function syn(t){var e;if(t!=null&&t.length>0&&qa(t,t.length-1)==33)try{return e=K1e(Ch(t,0,t.length-1)),e.e==null}catch(n){if(n=is(n),!At(n,33))throw nt(n)}return!1}function ayn(t,e,n){var r,s,o;switch(r=Ia(e),s=oH(r),o=new Kc,uc(o,e),n.g){case 1:Qs(o,lO(ck(s)));break;case 2:Qs(o,ck(s))}return Zt(o,(Me(),M3),Ht(K(t,M3))),o}function Lxt(t){var e,n;return e=u(lr(new nr(ir(ca(t.a).a.Kc(),new q))),18),n=u(lr(new nr(ir(As(t.a).a.Kc(),new q))),18),Ie(De(K(e,(ae(),dd))))||Ie(De(K(n,dd)))}function Qy(){Qy=V,VP=new BD("ONE_SIDE",0),dG=new BD("TWO_SIDES_CORNER",1),gG=new BD("TWO_SIDES_OPPOSING",2),fG=new BD("THREE_SIDES",3),hG=new BD("FOUR_SIDES",4)}function jhe(t,e){var n,r,s,o;for(o=new ge,s=0,r=e.Kc();r.Ob();){for(n=fe(u(r.Pb(),17).a+s);n.a=t.f)break;In(o.c,n)}return o}function oyn(t,e){var n,r,s,o,h;for(o=new J(e.a);o.a0&&uhe(this,this.c-1,(ve(),Jn)),this.c0&&t[0].length>0&&(this.c=Ie(De(K(Ia(t[0][0]),(ae(),$_t))))),this.a=Vt(P6e,le,2117,t.length,0,2),this.b=Vt(N6e,le,2118,t.length,0,2),this.d=new rue}function fyn(t){return t.c.length==0?!1:(mn(0,t.c.length),u(t.c[0],18)).c.i.k==(Un(),ha)?!0:Q4(Go(new ln(null,new gn(t,16)),new HJ),new VJ)}function qhe(t,e){var n,r,s,o,h,d,m;for(d=n3(e),o=e.f,m=e.g,h=b.Math.sqrt(o*o+m*m),s=0,r=new J(d);r.a=0?(n=xO(t,mV),r=fO(t,mV)):(e=Eb(t,1),n=xO(e,5e8),r=fO(e,5e8),r=Xa(Rf(r,1),ia(t,1))),k1(Rf(r,32),ia(n,Eo))}function Uhe(t,e,n){var r,s;switch(r=(cr(e.b!=0),u(Lh(e,e.a.a),8)),n.g){case 0:r.b=0;break;case 2:r.b=t.f;break;case 3:r.a=0;break;default:r.a=t.g}return s=_r(e,0),bI(s,r),e}function Ghe(t,e,n,r){var s,o,h,d,m;switch(m=t.b,o=e.d,h=o.j,d=G5t(h,m.d[h.g],n),s=Ei(Ma(o.n),o.a),o.j.g){case 1:case 3:d.a+=s.a;break;case 2:case 4:d.b+=s.b}fs(r,d,r.c.b,r.c)}function Tyn(t,e,n){var r,s,o,h;for(h=Wo(t.e,e,0),o=new N2t,o.b=n,r=new _a(t.e,h);r.b1;e>>=1)e&1&&(r=X4(r,n)),n.d==1?n=X4(n,n):n=new cle(L0e(n.a,n.d,Vt(Or,ii,28,n.d<<1,15,1)));return r=X4(r,n),r}function Rxt(){Rxt=V;var t,e,n,r;for(b9t=Vt(wa,Io,28,25,15,1),w9t=Vt(wa,Io,28,33,15,1),r=152587890625e-16,e=32;e>=0;e--)w9t[e]=r,r*=.5;for(n=1,t=24;t>=0;t--)b9t[t]=n,n*=.5}function Myn(t){var e,n;if(Ie(De(ne(t,(Me(),L3))))){for(n=new nr(ir(Mg(t).a.Kc(),new q));Sr(n);)if(e=u(lr(n),74),Jm(e)&&Ie(De(ne(e,Cw))))return!0}return!1}function Khe(t,e){var n,r,s;qs(t.f,e)&&(e.b=t,r=e.c,Wo(t.j,r,0)!=-1||pe(t.j,r),s=e.d,Wo(t.j,s,0)!=-1||pe(t.j,s),n=e.a.b,n.c.length!=0&&(!t.i&&(t.i=new gle(t)),Ngn(t.i,n)))}function Dyn(t){var e,n,r,s,o;return n=t.c.d,r=n.j,s=t.d.d,o=s.j,r==o?n.p=0&&hn(t.substr(e,3),"GMT")||e>=0&&hn(t.substr(e,3),"UTC"))&&(n[0]=e+3),bkt(t,n,r)}function Oyn(t,e){var n,r,s,o,h;for(o=t.g.a,h=t.g.b,r=new J(t.d);r.an;o--)t[o]|=e[o-n-1]>>>h,t[o-1]=e[o-n-1]<0&&Wc(t.g,e,t.g,e+r,d),h=n.Kc(),t.i+=r,s=0;s>4&15,o=t[r]&15,h[s++]=bIt[n],h[s++]=bIt[o];return nf(h,0,h.length)}function qu(t){var e,n;return t>=fo?(e=nP+(t-fo>>10&1023)&js,n=56320+(t-fo&1023)&js,String.fromCharCode(e)+(""+String.fromCharCode(n))):String.fromCharCode(t&js)}function Vyn(t,e){Ay();var n,r,s,o;return s=u(u(Mi(t.r,e),21),87),s.gc()>=2?(r=u(s.Kc().Pb(),117),n=t.u.Hc((wl(),lL)),o=t.u.Hc(Zk),!r.a&&!n&&(s.gc()==2||o)):!1}function Xhe(t,e,n,r,s){var o,h,d;for(o=Fde(t,e,n,r,s),d=!1;!o;)VH(t,s,!0),d=!0,o=Fde(t,e,n,r,s);d&&VH(t,s,!1),h=lat(s),h.c.length!=0&&(t.d&&t.d.Gg(h),Xhe(t,s,n,r,h))}function RH(){RH=V,Rdt=new r_(Zd,0),$Dt=new r_("DIRECTED",1),qDt=new r_("UNDIRECTED",2),RDt=new r_("ASSOCIATION",3),zDt=new r_("GENERALIZATION",4),jDt=new r_("DEPENDENCY",5)}function Uyn(t,e){var n;if(!Y1(t))throw nt(new Fo(dwe));switch(n=Y1(t),e.g){case 1:return-(t.j+t.f);case 2:return t.i-n.g;case 3:return t.j-n.f;case 4:return-(t.i+t.g)}return 0}function Gyn(t,e,n){var r,s,o;return r=e.Lk(),o=e.md(),s=r.Jk()?Sb(t,4,r,o,null,B7(t,r,o,At(r,102)&&(u(r,19).Bb&fo)!=0),!0):Sb(t,r.tk()?2:1,r,o,r.ik(),-1,!0),n?n.nj(s):n=s,n}function S7(t,e){var n,r;for(Wn(e),r=t.b.c.length,pe(t.b,e);r>0;){if(n=r,r=(r-1)/2|0,t.a.Ne(Oe(t.b,r),e)<=0)return Sh(t.b,n,e),!0;Sh(t.b,n,Oe(t.b,r))}return Sh(t.b,r,e),!0}function zxt(t,e,n,r){var s,o;if(s=0,n)s=nH(t.a[n.g][e.g],r);else for(o=0;o=d)}function Qhe(t){switch(t.g){case 0:return new ytt;case 1:return new xtt;default:throw nt(new zn("No implementation is available for the width approximator "+(t.f!=null?t.f:""+t.g)))}}function qxt(t,e,n,r){var s;if(s=!1,pa(r)&&(s=!0,AE(e,n,Gr(r))),s||Ty(r)&&(s=!0,qxt(t,e,n,r)),s||At(r,242)&&(s=!0,U2(e,n,u(r,242))),!s)throw nt(new Unt(bTt))}function Wyn(t,e){var n,r,s;if(n=e.qi(t.a),n&&(s=S1((!n.b&&(n.b=new Hl((bn(),po),Sc,n)),n.b),of),s!=null)){for(r=1;r<(rl(),$It).length;++r)if(hn($It[r],s))return r}return 0}function Yyn(t,e){var n,r,s;if(n=e.qi(t.a),n&&(s=S1((!n.b&&(n.b=new Hl((bn(),po),Sc,n)),n.b),of),s!=null)){for(r=1;r<(rl(),zIt).length;++r)if(hn(zIt[r],s))return r}return 0}function Jhe(t,e){var n,r,s,o;if(Wn(e),o=t.a.gc(),o0?1:0;o.a[s]!=n;)o=o.a[s],s=t.a.Ne(n.d,o.d)>0?1:0;o.a[s]=r,r.b=n.b,r.a[0]=n.a[0],r.a[1]=n.a[1],n.a[0]=null,n.a[1]=null}function Jyn(t){var e,n,r,s;for(e=new ge,n=Vt(Fl,B0,28,t.a.c.length,16,1),lyt(n,n.length),s=new J(t.a);s.a0&&C0e((mn(0,n.c.length),u(n.c[0],30)),t),n.c.length>1&&C0e(u(Oe(n,n.c.length-1),30),t),e.Vg()}function t3n(t){wl();var e,n;return e=Gi($g,ot(st(AK,1),te,279,0,[u2])),!(WI(Zz(e,t))>1||(n=Gi(lL,ot(st(AK,1),te,279,0,[uL,Zk])),WI(Zz(n,t))>1))}function Vxt(t,e){var n;n=eu((mb(),wf),t),At(n,507)?Bo(wf,t,new VXt(this,e)):Bo(wf,t,this),Aot(this,e),e==(dE(),AIt)?(this.wb=u(this,2038),u(e,2040)):this.wb=(Tb(),Fn)}function e3n(t){var e,n,r;if(t==null)return null;for(e=null,n=0;n=Fp?"error":r>=900?"warn":r>=800?"info":"log"),hee(n,t.a),t.b&&U6t(e,n,t.b,"Exception: ",!0))}function K(t,e){var n,r;return r=(!t.q&&(t.q=new Er),tr(t.q,e)),r??(n=e.Sg(),At(n,4)&&(n==null?(!t.q&&(t.q=new Er),tk(t.q,e)):(!t.q&&(t.q=new Er),di(t.q,e,n))),n)}function Ha(){Ha=V,Wf=new FD("P1_CYCLE_BREAKING",0),$0=new FD("P2_LAYERING",1),Yc=new FD("P3_NODE_ORDERING",2),ou=new FD("P4_NODE_PLACEMENT",3),Qo=new FD("P5_EDGE_ROUTING",4)}function n3n(t,e){j_();var n;if(t.c==e.c){if(t.b==e.b||ugn(t.b,e.b)){if(n=Prn(t.b)?1:-1,t.a&&!e.a)return n;if(!t.a&&e.a)return-n}return Bc(t.b.g,e.b.g)}else return ji(t.c,e.c)}function rfe(t,e){var n,r,s;if(Gxt(t,e))return!0;for(r=new J(e);r.a=s||e<0)throw nt(new No(Ult+e+ww+s));if(n>=s||n<0)throw nt(new No(Glt+n+ww+s));return e!=n?r=(o=t.Cj(n),t.qj(e,o),o):r=t.xj(n),r}function afe(t){var e,n,r;if(r=t,t)for(e=0,n=t.Eh();n;n=n.Eh()){if(++e>eut)return afe(n);if(r=n,n==t)throw nt(new Fo("There is a cycle in the containment hierarchy of "+t))}return r}function Rb(t){var e,n,r;for(r=new tw(ro,"[","]"),n=t.Kc();n.Ob();)e=n.Pb(),yg(r,$t(e)===$t(t)?"(this Collection)":e==null?Hu:ec(e));return r.a?r.e.length==0?r.a.a:r.a.a+(""+r.e):r.c}function Gxt(t,e){var n,r;if(r=!1,e.gc()<2)return!1;for(n=0;n1&&(t.j.b+=t.e)):(t.j.a+=n.a,t.j.b=b.Math.max(t.j.b,n.b),t.d.c.length>1&&(t.j.a+=t.e))}function jb(){jb=V,m4e=ot(st(go,1),$c,64,0,[(ve(),Hn),Jn,vr]),w4e=ot(st(go,1),$c,64,0,[Jn,vr,Gn]),v4e=ot(st(go,1),$c,64,0,[vr,Gn,Hn]),y4e=ot(st(go,1),$c,64,0,[Gn,Hn,Jn])}function i3n(t,e,n,r){var s,o,h,d,m,k,T;if(h=t.c.d,d=t.d.d,h.j!=d.j)for(T=t.b,s=h.j,m=null;s!=d.j;)m=e==0?aH(s):f5t(s),o=G5t(s,T.d[s.g],n),k=G5t(m,T.d[m.g],n),Zr(r,Ei(o,k)),s=m}function s3n(t,e,n,r){var s,o,h,d,m;return h=lhe(t.a,e,n),d=u(h.a,17).a,o=u(h.b,17).a,r&&(m=u(K(e,(ae(),ml)),10),s=u(K(n,ml),10),m&&s&&(Qre(t.b,m,s),d+=t.b.i,o+=t.b.e)),d>o}function cfe(t){var e,n,r,s,o,h,d,m,k;for(this.a=Dle(t),this.b=new ge,n=t,r=0,s=n.length;rrit(t.d).c?(t.i+=t.g.c,Hat(t.d)):rit(t.d).c>rit(t.g).c?(t.e+=t.d.c,Hat(t.g)):(t.i+=vte(t.g),t.e+=vte(t.d),Hat(t.g),Hat(t.d))}function u3n(t,e,n){var r,s,o,h;for(o=e.q,h=e.r,new G2((E1(),n2),e,o,1),new G2(n2,o,h,1),s=new J(n);s.ad&&(m=d/r),s>o&&(k=o/s),h=b.Math.min(m,k),t.a+=h*(e.a-t.a),t.b+=h*(e.b-t.b)}function d3n(t,e,n,r,s){var o,h;for(h=!1,o=u(Oe(n.b,0),27);qEn(t,e,o,r,s)&&(h=!0,Hvn(n,o),n.b.c.length!=0);)o=u(Oe(n.b,0),27);return n.b.c.length==0&&vO(n.j,n),h&&MH(e.q),h}function g3n(t,e){g5();var n,r,s,o;if(e.b<2)return!1;for(o=_r(e,0),n=u(Tr(o),8),r=n;o.b!=o.d.c;){if(s=u(Tr(o),8),Vot(t,r,s))return!0;r=s}return!!Vot(t,r,n)}function Wxt(t,e,n,r){var s,o;return n==0?(!t.o&&(t.o=new el((jc(),K0),Yp,t,0)),lz(t.o,e,r)):(o=u(Tn((s=u($n(t,16),29),s||t.ii()),n),69),o.wk().Ak(t,Su(t),n-ur(t.ii()),e,r))}function Aot(t,e){var n;e!=t.sb?(n=null,t.sb&&(n=u(t.sb,54).Th(t,1,dL,n)),e&&(n=u(e,54).Rh(t,1,dL,n)),n=a5t(t,e,n),n&&n.oj()):t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,4,e,e))}function p3n(t,e){var n,r,s,o;if(e)s=Tg(e,"x"),n=new nGt(t),KE(n.a,(Wn(s),s)),o=Tg(e,"y"),r=new rGt(t),YE(r.a,(Wn(o),o));else throw nt(new Pd("All edge sections need an end point."))}function b3n(t,e){var n,r,s,o;if(e)s=Tg(e,"x"),n=new ZUt(t),WE(n.a,(Wn(s),s)),o=Tg(e,"y"),r=new tGt(t),XE(r.a,(Wn(o),o));else throw nt(new Pd("All edge sections need a start point."))}function w3n(t,e){var n,r,s,o,h,d,m;for(r=Rce(t),o=0,d=r.length;o>22-e,s=t.h<>22-e):e<44?(n=0,r=t.l<>44-e):(n=0,r=0,s=t.l<t)throw nt(new zn("k must be smaller than n"));return e==0||e==t?1:t==0?0:xxt(t)/(xxt(e)*xxt(t-e))}function Yxt(t,e){var n,r,s,o;for(n=new hmt(t);n.g==null&&!n.c?Hyt(n):n.g==null||n.i!=0&&u(n.g[n.i-1],51).Ob();)if(o=u(UH(n),58),At(o,167))for(r=u(o,167),s=0;s>4],e[n*2+1]=YK[o&15];return nf(e,0,e.length)}function O3n(t){zz();var e,n,r;switch(r=t.c.length,r){case 0:return bve;case 1:return e=u(Xfe(new J(t)),44),_cn(e.ld(),e.md());default:return n=u(id(t,Vt(yw,bV,44,t.c.length,0,1)),173),new W2t(n)}}function P3n(t){var e,n,r,s,o,h;for(e=new V4,n=new V4,Ab(e,t),Ab(n,t);n.b!=n.c;)for(s=u(V6(n),36),h=new J(s.a);h.a0&&RO(t,n,e),s):k5n(t,e,n)}function $b(){$b=V,x8e=(si(),Yk),k8e=Pw,w8e=Ow,m8e=ox,v8e=s2,b8e=ax,OLt=EN,y8e=j3,G1t=(ckt(),s8e),K1t=a8e,NLt=l8e,W1t=d8e,FLt=h8e,BLt=f8e,PLt=o8e,cK=c8e,uK=u8e,hN=g8e,RLt=p8e,ILt=i8e}function bfe(t,e){var n,r,s,o,h;if(t.e<=e||ifn(t,t.g,e))return t.g;for(o=t.r,r=t.g,h=t.r,s=(o-r)/2+r;r+11&&(t.e.b+=t.a)):(t.e.a+=n.a,t.e.b=b.Math.max(t.e.b,n.b),t.d.c.length>1&&(t.e.a+=t.a))}function j3n(t){var e,n,r,s;switch(s=t.i,e=s.b,r=s.j,n=s.g,s.a.g){case 0:n.a=(t.g.b.o.a-r.a)/2;break;case 1:n.a=e.d.n.a+e.d.a.a;break;case 2:n.a=e.d.n.a+e.d.a.a-r.a;break;case 3:n.b=e.d.n.b+e.d.a.b}}function $3n(t,e,n){var r,s,o;for(s=new nr(ir(Sg(n).a.Kc(),new q));Sr(s);)r=u(lr(s),18),!ho(r)&&!(!ho(r)&&r.c.i.c==r.d.i.c)&&(o=ode(t,r,n,new lKt),o.c.length>1&&In(e.c,o))}function mfe(t,e,n,r,s){if(rr&&(t.a=r),t.bs&&(t.b=s),t}function z3n(t){if(At(t,143))return m6n(u(t,143));if(At(t,233))return c2n(u(t,233));if(At(t,23))return v3n(u(t,23));throw nt(new zn(wTt+Rb(new hl(ot(st(sa,1),Ln,1,5,[t])))))}function q3n(t,e,n,r,s){var o,h,d;for(o=!0,h=0;h>>s|n[h+r+1]<>>s,++h}return o}function Zxt(t,e,n,r){var s,o,h;if(e.k==(Un(),ha)){for(o=new nr(ir(ca(e).a.Kc(),new q));Sr(o);)if(s=u(lr(o),18),h=s.c.i.k,h==ha&&t.c.a[s.c.i.c.p]==r&&t.c.a[e.c.p]==n)return!0}return!1}function H3n(t,e){var n,r,s,o;return e&=63,n=t.h&Og,e<22?(o=n>>>e,s=t.m>>e|n<<22-e,r=t.l>>e|t.m<<22-e):e<44?(o=0,s=n>>>e-22,r=t.m>>e-22|t.h<<44-e):(o=0,s=0,r=n>>>e-44),ku(r&Il,s&Il,o&Og)}function vfe(t,e,n,r){var s;this.b=r,this.e=t==(qm(),NA),s=e[n],this.d=$2(Fl,[le,B0],[183,28],16,[s.length,s.length],2),this.a=$2(Or,[le,ii],[53,28],15,[s.length,s.length],2),this.c=new Pxt(e,n)}function V3n(t){var e,n,r;for(t.k=new Gyt((ve(),ot(st(go,1),$c,64,0,[gc,Hn,Jn,vr,Gn])).length,t.j.c.length),r=new J(t.j);r.a=n)return L7(t,e,r.p),!0;return!1}function l5(t,e,n,r){var s,o,h,d,m,k;for(h=n.length,o=0,s=-1,k=fae((qn(e,t.length+1),t.substr(e)),(cit(),g9t)),d=0;do&&wun(k,fae(n[d],g9t))&&(s=d,o=m);return s>=0&&(r[0]=e+o),s}function xfe(t){var e;return t.Db&64?Lot(t):(e=new Jl(aTt),!t.a||ni(ni((e.a+=' "',e),t.a),'"'),ni(gm(ni(gm(ni(gm(ni(gm((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function kfe(t,e,n){var r,s,o,h,d;for(d=Au(t.e.Dh(),e),s=u(t.g,124),r=0,h=0;hn?c6t(t,n,"start index"):e<0||e>n?c6t(e,n,"end index"):xS("end index (%s) must not be less than start index (%s)",ot(st(sa,1),Ln,1,5,[fe(e),fe(t)]))}function Tfe(t,e){var n,r,s,o;for(r=0,s=t.length;r0&&Cfe(t,o,n));e.p=0}function qe(t){var e;this.c=new Qi,this.f=t.e,this.e=t.d,this.i=t.g,this.d=t.c,this.b=t.b,this.k=t.j,this.a=t.a,t.i?this.j=t.i:this.j=(e=u(m1(H0),9),new Eh(e,u(Ff(e,e.length),9),0)),this.g=t.f}function X3n(t){var e,n,r,s;for(e=Cb(ni(new Jl("Predicates."),"and"),40),n=!0,s=new $r(t);s.b0?d[h-1]:Vt(z0,Bp,10,0,0,1),s=d[h],k=h=0?t.ki(s):f6t(t,r);else throw nt(new zn(Kb+r.xe()+XS));else throw nt(new zn(Twe+e+Cwe));else Dh(t,n,r)}function t6t(t){var e,n;if(n=null,e=!1,At(t,211)&&(e=!0,n=u(t,211).a),e||At(t,263)&&(e=!0,n=""+u(t,263).a),e||At(t,492)&&(e=!0,n=""+u(t,492).a),!e)throw nt(new Unt(bTt));return n}function e6t(t,e,n){var r,s,o,h,d,m;for(m=Au(t.e.Dh(),e),r=0,d=t.i,s=u(t.g,124),h=0;h=t.d.b.c.length&&(e=new tu(t.d),e.p=r.p-1,pe(t.d.b,e),n=new tu(t.d),n.p=r.p,pe(t.d.b,n)),Ca(r,u(Oe(t.d.b,r.p),30))}function i6t(t,e,n){var r,s,o;if(!t.b[e.g]){for(t.b[e.g]=!0,r=n,!r&&(r=new MI),Zr(r.b,e),o=t.a[e.g].Kc();o.Ob();)s=u(o.Pb(),65),s.b!=e&&i6t(t,s.b,r),s.c!=e&&i6t(t,s.c,r),Zr(r.a,s);return r}return null}function t4n(t){switch(t.g){case 0:case 1:case 2:return ve(),Hn;case 3:case 4:case 5:return ve(),vr;case 6:case 7:case 8:return ve(),Gn;case 9:case 10:case 11:return ve(),Jn;default:return ve(),gc}}function e4n(t,e){var n;return t.c.length==0?!1:(n=Hue((mn(0,t.c.length),u(t.c[0],18)).c.i),th(),n==(Yy(),Y5)||n==W5?!0:Q4(Go(new ln(null,new gn(t,16)),new UJ),new uUt(e)))}function Oot(t,e){if(At(e,207))return Yrn(t,u(e,27));if(At(e,193))return Xrn(t,u(e,123));if(At(e,451))return Wrn(t,u(e,166));throw nt(new zn(wTt+Rb(new hl(ot(st(sa,1),Ln,1,5,[e])))))}function Dfe(t,e,n){var r,s;if(this.f=t,r=u(tr(t.b,e),260),s=r?r.a:0,k3t(n,s),n>=(s/2|0))for(this.e=r?r.c:null,this.d=s;n++0;)G3t(this);this.b=e,this.a=null}function n4n(t,e){var n,r;e.a?F6n(t,e):(n=u(nrt(t.b,e.b),60),n&&n==t.a[e.b.f]&&n.a&&n.a!=e.b.a&&n.c.Fc(e.b),r=u(ert(t.b,e.b),60),r&&t.a[r.f]==e.b&&r.a&&r.a!=e.b.a&&e.b.c.Fc(r),Yrt(t.b,e.b))}function Ife(t,e){var n,r;if(n=u(Mo(t.b,e),127),u(u(Mi(t.r,e),21),87).dc()){n.n.b=0,n.n.c=0;return}n.n.b=t.C.b,n.n.c=t.C.c,t.A.Hc((Kl(),Fw))&&s0e(t,e),r=Mwn(t,e),Got(t,e)==(i5(),o2)&&(r+=2*t.w),n.a.a=r}function Ofe(t,e){var n,r;if(n=u(Mo(t.b,e),127),u(u(Mi(t.r,e),21),87).dc()){n.n.d=0,n.n.a=0;return}n.n.d=t.C.d,n.n.a=t.C.a,t.A.Hc((Kl(),Fw))&&a0e(t,e),r=Lwn(t,e),Got(t,e)==(i5(),o2)&&(r+=2*t.w),n.a.b=r}function r4n(t,e){var n,r,s,o;for(o=new ge,r=new J(e);r.ar&&(qn(e-1,t.length),t.charCodeAt(e-1)<=32);)--e;return r>0||en.a&&(r.Hc((aw(),JA))?s=(e.a-n.a)/2:r.Hc(ZA)&&(s=e.a-n.a)),e.b>n.b&&(r.Hc((aw(),eL))?o=(e.b-n.b)/2:r.Hc(tL)&&(o=e.b-n.b)),Hxt(t,s,o)}function zfe(t,e,n,r,s,o,h,d,m,k,T,A,N){At(t.Cb,90)&&t3(Sl(u(t.Cb,90)),4),wu(t,n),t.f=h,b7(t,d),m7(t,m),p7(t,k),w7(t,T),Lp(t,A),v7(t,N),Ap(t,!0),Tp(t,s),t.Zk(o),rw(t,e),r!=null&&(t.i=null,zq(t,r))}function c6t(t,e,n){if(t<0)return xS(Rpe,ot(st(sa,1),Ln,1,5,[n,fe(t)]));if(e<0)throw nt(new zn(jpe+e));return xS("%s (%s) must not be greater than size (%s)",ot(st(sa,1),Ln,1,5,[n,fe(t),fe(e)]))}function u6t(t,e,n,r,s,o){var h,d,m,k;if(h=r-n,h<7){Qbn(e,n,r,o);return}if(m=n+s,d=r+s,k=m+(d-m>>1),u6t(e,t,m,k,-s,o),u6t(e,t,k,d,-s,o),o.Ne(t[k-1],t[k])<=0){for(;n=0?t.bi(o,n):j6t(t,s,n);else throw nt(new zn(Kb+s.xe()+XS));else throw nt(new zn(Twe+e+Cwe));else Ih(t,r,s,n)}function qfe(t){var e,n;if(t.f){for(;t.n>0;){if(e=u(t.k.Xb(t.n-1),76),n=e.Lk(),At(n,102)&&u(n,19).Bb&Pc&&(!t.e||n.pk()!=WT||n.Lj()!=0)&&e.md()!=null)return!0;--t.n}return!1}else return t.n>0}function Hfe(t){var e,n,r,s;if(n=u(t,54)._h(),n)try{if(r=null,e=D7((mb(),wf),A0e(u2n(n))),e&&(s=e.ai(),s&&(r=s.Fl(lnn(n.e)))),r&&r!=t)return Hfe(r)}catch(o){if(o=is(o),!At(o,63))throw nt(o)}return t}function v4n(t,e,n){var r,s,o;n.Ug("Remove overlaps",1),n.dh(e,v7t),r=u(ne(e,(G4(),J5)),27),t.f=r,t.a=Zat(u(ne(e,($b(),hN)),299)),s=Ht(ne(e,(si(),Pw))),Pt(t,(Wn(s),s)),o=n3(r),Xge(t,e,o,n),n.dh(e,ZV)}function y4n(t){var e,n,r;if(Ie(De(ne(t,(si(),xN))))){for(r=new ge,n=new nr(ir(Mg(t).a.Kc(),new q));Sr(n);)e=u(lr(n),74),Jm(e)&&Ie(De(ne(e,_dt)))&&In(r.c,e);return r}else return wn(),wn(),so}function Vfe(t){if(!t)return HKt(),Cve;var e=t.valueOf?t.valueOf():t;if(e!==t){var n=xht[typeof e];return n?n(e):Z4t(typeof e)}else return t instanceof Array||t instanceof b.Array?new Hj(t):new g6(t)}function Ufe(t,e,n){var r,s,o;switch(o=t.o,r=u(Mo(t.p,n),252),s=r.i,s.b=MO(r),s.a=LO(r),s.b=b.Math.max(s.b,o.a),s.b>o.a&&!e&&(s.b=o.a),s.c=-(s.b-o.a)/2,n.g){case 1:s.d=-s.a;break;case 3:s.d=o.b}sct(r),act(r)}function Gfe(t,e,n){var r,s,o;switch(o=t.o,r=u(Mo(t.p,n),252),s=r.i,s.b=MO(r),s.a=LO(r),s.a=b.Math.max(s.a,o.b),s.a>o.b&&!e&&(s.a=o.b),s.d=-(s.a-o.b)/2,n.g){case 4:s.c=-s.b;break;case 2:s.c=o.a}sct(r),act(r)}function x4n(t,e){var n,r,s,o,h;if(!e.dc()){if(s=u(e.Xb(0),131),e.gc()==1){Ede(t,s,s,1,0,e);return}for(n=1;n0)try{s=oh(e,Va,ki)}catch(o){throw o=is(o),At(o,130)?(r=o,nt(new kq(r))):nt(o)}return n=(!t.a&&(t.a=new Lnt(t)),t.a),s=0?u(Lt(n,s),58):null}function C4n(t,e){if(t<0)return xS(Rpe,ot(st(sa,1),Ln,1,5,["index",fe(t)]));if(e<0)throw nt(new zn(jpe+e));return xS("%s (%s) must be less than size (%s)",ot(st(sa,1),Ln,1,5,["index",fe(t),fe(e)]))}function _4n(t){var e,n,r,s,o;if(t==null)return Hu;for(o=new tw(ro,"[","]"),n=t,r=0,s=n.length;r=0?t.Lh(n,!0,!0):Zm(t,s,!0),160)),u(r,220).Zl(e);else throw nt(new zn(Kb+e.xe()+XS))}function d6t(t){var e,n;return t>-0x800000000000&&t<0x800000000000?t==0?0:(e=t<0,e&&(t=-t),n=Xs(b.Math.floor(b.Math.log(t)/.6931471805599453)),(!e||t!=b.Math.pow(2,n))&&++n,n):cce(Oc(t))}function z4n(t){var e,n,r,s,o,h,d;for(o=new Bd,n=new J(t);n.a2&&d.e.b+d.j.b<=2&&(s=d,r=h),o.a.zc(s,o),s.q=r);return o}function q4n(t,e,n){n.Ug("Eades radial",1),n.dh(e,ZV),t.d=u(ne(e,(G4(),J5)),27),t.c=Rt(Ht(ne(e,($b(),uK)))),t.e=Zat(u(ne(e,hN),299)),t.a=w2n(u(ne(e,RLt),434)),t.b=Bvn(u(ne(e,PLt),354)),vvn(t),n.dh(e,ZV)}function H4n(t,e){if(e.Ug("Target Width Setter",1),td(t,(ad(),sdt)))Oi(t,(D0(),B3),Ht(ne(t,sdt)));else throw nt(new lp("A target width has to be set if the TargetWidthWidthApproximator should be used."));e.Vg()}function Qfe(t,e){var n,r,s;return r=new Lg(t),Yo(r,e),Zt(r,(ae(),_G),e),Zt(r,(Me(),ms),(xa(),lu)),Zt(r,s0,(L0(),xK)),C(r,(Un(),Ds)),n=new Kc,uc(n,r),Qs(n,(ve(),Gn)),s=new Kc,uc(s,r),Qs(s,Jn),r}function Jfe(t){switch(t.g){case 0:return new qnt((qm(),sN));case 1:return new Wet;case 2:return new Yet;default:throw nt(new zn("No implementation is available for the crossing minimizer "+(t.f!=null?t.f:""+t.g)))}}function Zfe(t,e){var n,r,s,o,h;for(t.c[e.p]=!0,pe(t.a,e),h=new J(e.j);h.a=o)h.$b();else for(s=h.Kc(),r=0;r0?Z2t():h<0&&r1e(t,e,-h),!0):!1}function LO(t){var e,n,r,s,o,h,d;if(d=0,t.b==0){for(h=Rle(t,!0),e=0,r=h,s=0,o=r.length;s0&&(d+=n,++e);e>1&&(d+=t.c*(e-1))}else d=eWt(nat(Py(Ai(cyt(t.a),new ka),new du)));return d>0?d+t.n.d+t.n.a:0}function MO(t){var e,n,r,s,o,h,d;if(d=0,t.b==0)d=eWt(nat(Py(Ai(cyt(t.a),new Ac),new pc)));else{for(h=jle(t,!0),e=0,r=h,s=0,o=r.length;s0&&(d+=n,++e);e>1&&(d+=t.c*(e-1))}return d>0?d+t.n.b+t.n.c:0}function X4n(t){var e,n;if(t.c.length!=2)throw nt(new Fo("Order only allowed for two paths."));e=(mn(0,t.c.length),u(t.c[0],18)),n=(mn(1,t.c.length),u(t.c[1],18)),e.d.i!=n.c.i&&(t.c.length=0,In(t.c,n),In(t.c,e))}function i1e(t,e,n){var r;for($4(n,e.g,e.f),xh(n,e.i,e.j),r=0;r<(!e.a&&(e.a=new Jt(wi,e,10,11)),e.a).i;r++)i1e(t,u(Lt((!e.a&&(e.a=new Jt(wi,e,10,11)),e.a),r),27),u(Lt((!n.a&&(n.a=new Jt(wi,n,10,11)),n.a),r),27))}function Q4n(t,e){var n,r,s,o;for(o=u(Mo(t.b,e),127),n=o.a,s=u(u(Mi(t.r,e),21),87).Kc();s.Ob();)r=u(s.Pb(),117),r.c&&(n.a=b.Math.max(n.a,jvt(r.c)));if(n.a>0)switch(e.g){case 2:o.n.c=t.s;break;case 4:o.n.b=t.s}}function J4n(t,e){var n,r,s;return n=u(K(e,(Vf(),Fk)),17).a-u(K(t,Fk),17).a,n==0?(r=ra(Ma(u(K(t,(Mb(),jP)),8)),u(K(t,gA),8)),s=ra(Ma(u(K(e,jP),8)),u(K(e,gA),8)),ji(r.a*r.b,s.a*s.b)):n}function Z4n(t,e){var n,r,s;return n=u(K(e,(xc(),iK)),17).a-u(K(t,iK),17).a,n==0?(r=ra(Ma(u(K(t,(zi(),cN)),8)),u(K(t,RT),8)),s=ra(Ma(u(K(e,cN),8)),u(K(e,RT),8)),ji(r.a*r.b,s.a*s.b)):n}function s1e(t){var e,n;return n=new pb,n.a+="e_",e=Ggn(t),e!=null&&(n.a+=""+e),t.c&&t.d&&(ni((n.a+=" ",n),IH(t.c)),ni(Zc((n.a+="[",n),t.c.i),"]"),ni((n.a+=Lut,n),IH(t.d)),ni(Zc((n.a+="[",n),t.d.i),"]")),n.a}function a1e(t){switch(t.g){case 0:return new ent;case 1:return new tE;case 2:return new Z8;case 3:return new tnt;default:throw nt(new zn("No implementation is available for the layout phase "+(t.f!=null?t.f:""+t.g)))}}function b6t(t,e,n,r,s){var o;switch(o=0,s.g){case 1:o=b.Math.max(0,e.b+t.b-(n.b+r));break;case 3:o=b.Math.max(0,-t.b-r);break;case 2:o=b.Math.max(0,-t.a-r);break;case 4:o=b.Math.max(0,e.a+t.a-(n.a+r))}return o}function t5n(t,e,n){var r,s,o,h,d;if(n)for(s=n.a.length,r=new q2(s),d=(r.b-r.a)*r.c<0?(vb(),p2):new kb(r);d.Ob();)h=u(d.Pb(),17),o=jE(n,h.a),lTt in o.a||Hlt in o.a?g8n(t,o,e):OCn(t,o,e),Iin(u(tr(t.b,x7(o)),74))}function w6t(t){var e,n;switch(t.b){case-1:return!0;case 0:return n=t.t,n>1||n==-1?(t.b=-1,!0):(e=rf(t),e&&(bo(),e.lk()==_me)?(t.b=-1,!0):(t.b=1,!1));default:case 1:return!1}}function m6t(t,e){var n,r,s,o;if(vi(t),t.c!=0||t.a!=123)throw nt(new Yr(Qr((Ur(),Wwe))));if(o=e==112,r=t.d,n=xE(t.i,125,r),n<0)throw nt(new Yr(Qr((Ur(),Ywe))));return s=Ch(t.i,r,n),t.d=n+1,Lse(s,o,(t.e&512)==512)}function o1e(t){var e,n,r,s,o,h,d;if(r=t.a.c.length,r>0)for(h=t.c.d,d=t.d.d,s=Rd(ra(new se(d.a,d.b),h),1/(r+1)),o=new se(h.a,h.b),n=new J(t.a);n.a=0&&r=0?t.Lh(n,!0,!0):Zm(t,s,!0),160)),u(r,220).Wl(e);throw nt(new zn(Kb+e.xe()+Plt))}function i5n(){xwt();var t;return lTe?u(D7((mb(),wf),cf),2038):(hi(yw,new gC),ZTn(),t=u(At(eu((mb(),wf),cf),560)?eu(wf,cf):new Eee,560),lTe=!0,t_n(t),o_n(t),di((ywt(),SIt),t,new YR),Bo(wf,cf,t),t)}function s5n(t,e){var n,r,s,o;t.j=-1,zl(t.e)?(n=t.i,o=t.i!=0,LI(t,e),r=new xg(t.e,3,t.c,null,e,n,o),s=e.zl(t.e,t.c,null),s=$he(t,e,s),s?(s.nj(r),s.oj()):Ti(t.e,r)):(LI(t,e),s=e.zl(t.e,t.c,null),s&&s.oj())}function qH(t,e){var n,r,s;if(s=0,r=e[0],r>=t.length)return-1;for(n=(qn(r,t.length),t.charCodeAt(r));n>=48&&n<=57&&(s=s*10+(n-48),++r,!(r>=t.length));)n=(qn(r,t.length),t.charCodeAt(r));return r>e[0]?e[0]=r:s=-1,s}function a5n(t){var e,n,r,s,o;return s=u(t.a,17).a,o=u(t.b,17).a,n=s,r=o,e=b.Math.max(b.Math.abs(s),b.Math.abs(o)),s<=0&&s==o?(n=0,r=o-1):s==-e&&o!=e?(n=o,r=s,o>=0&&++n):(n=-o,r=s),new Ys(fe(n),fe(r))}function o5n(t,e,n,r){var s,o,h,d,m,k;for(s=0;s=0&&k>=0&&m=t.i)throw nt(new No(Ult+e+ww+t.i));if(n>=t.i)throw nt(new No(Glt+n+ww+t.i));return r=t.g[n],e!=n&&(e>16),e=r>>16&16,n=16-e,t=t>>e,r=t-256,e=r>>16&8,n+=e,t<<=e,r=t-u3,e=r>>16&4,n+=e,t<<=e,r=t-Wd,e=r>>16&2,n+=e,t<<=e,r=t>>14,e=r&~(r>>1),n+2-e)}function u5n(t){Y6();var e,n,r,s;for(jU=new ge,Vht=new Er,Hht=new ge,e=(!t.a&&(t.a=new Jt(wi,t,10,11)),t.a),Z9n(e),s=new Zn(e);s.e!=s.i.gc();)r=u(sr(s),27),Wo(jU,r,0)==-1&&(n=new ge,pe(Hht,n),lle(r,n));return Hht}function l5n(t,e,n){var r,s,o,h;t.a=n.b.d,At(e,326)?(s=d5(u(e,74),!1,!1),o=CO(s),r=new gb(t),Oa(o,r),zO(o,s),e.of((si(),Dv))!=null&&Oa(u(e.of(Dv),75),r)):(h=u(e,422),h.rh(h.nh()+t.a.a),h.sh(h.oh()+t.a.b))}function h5n(t,e){var n,r,s;for(s=new ge,r=_r(e.a,0);r.b!=r.d.c;)n=u(Tr(r),65),n.c.g==t.g&&$t(K(n.b,(xc(),o0)))!==$t(K(n.c,o0))&&!Q4(new ln(null,new gn(s,16)),new xUt(n))&&In(s.c,n);return Ms(s,new CZ),s}function u1e(t,e,n){var r,s,o,h;return At(e,153)&&At(n,153)?(o=u(e,153),h=u(n,153),t.a[o.a][h.a]+t.a[h.a][o.a]):At(e,250)&&At(n,250)&&(r=u(e,250),s=u(n,250),r.a==s.a)?u(K(s.a,(Vf(),Fk)),17).a:0}function l1e(t,e){var n,r,s,o,h,d,m,k;for(k=Rt(Ht(K(e,(Me(),LA)))),m=t[0].n.a+t[0].o.a+t[0].d.c+k,d=1;d=0?n:(d=A_(ra(new se(h.c+h.b/2,h.d+h.a/2),new se(o.c+o.b/2,o.d+o.a/2))),-(F0e(o,h)-1)*d)}function d5n(t,e,n){var r;xs(new ln(null,(!n.a&&(n.a=new Jt(Ji,n,6,6)),new gn(n.a,16))),new TXt(t,e)),xs(new ln(null,(!n.n&&(n.n=new Jt(Oo,n,1,7)),new gn(n.n,16))),new CXt(t,e)),r=u(ne(n,(si(),Dv)),75),r&&k4t(r,t,e)}function Zm(t,e,n){var r,s,o;if(o=w5((rl(),Fa),t.Dh(),e),o)return bo(),u(o,69).xk()||(o=Q6(Ro(Fa,o))),s=(r=t.Ih(o),u(r>=0?t.Lh(r,!0,!0):Zm(t,o,!0),160)),u(s,220).Sl(e,n);throw nt(new zn(Kb+e.xe()+Plt))}function v6t(t,e,n,r){var s,o,h,d,m;if(s=t.d[e],s){if(o=s.g,m=s.i,r!=null){for(d=0;d=n&&(r=e,k=(m.c+m.a)/2,h=k-n,m.c<=k-n&&(s=new fit(m.c,h),Cm(t,r++,s)),d=k+n,d<=m.a&&(o=new fit(d,m.a),Fy(r,t.c.length),YC(t.c,r,o)))}function d1e(t,e,n){var r,s,o,h,d,m;if(!e.dc()){for(s=new Qi,m=e.Kc();m.Ob();)for(d=u(m.Pb(),39),di(t.a,fe(d.g),fe(n)),h=(r=_r(new hg(d).a.d,0),new A4(r));_D(h.a);)o=u(Tr(h.a),65).c,fs(s,o,s.c.b,s.c);d1e(t,s,n+1)}}function y6t(t){var e;if(!t.c&&t.g==null)t.d=t.bj(t.f),Mr(t,t.d),e=t.d;else{if(t.g==null)return!0;if(t.i==0)return!1;e=u(t.g[t.i-1],51)}return e==t.b&&null.Vm>=null.Um()?(UH(t),y6t(t)):e.Ob()}function g1e(t){if(this.a=t,t.c.i.k==(Un(),Ds))this.c=t.c,this.d=u(K(t.c.i,(ae(),_c)),64);else if(t.d.i.k==Ds)this.c=t.d,this.d=u(K(t.d.i,(ae(),_c)),64);else throw nt(new zn("Edge "+t+" is not an external edge."))}function p1e(t,e){var n,r,s;s=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,3,s,t.b)),e?e!=t&&(wu(t,e.zb),Ust(t,e.d),n=(r=e.c,r??e.zb),Kst(t,n==null||hn(n,e.zb)?null:n)):(wu(t,null),Ust(t,0),Kst(t,null))}function b1e(t,e){var n;this.e=(Lm(),Hr(t),Lm(),N5t(t)),this.c=(Hr(e),N5t(e)),Tmt(this.e.Rd().dc()==this.c.Rd().dc()),this.d=Mue(this.e),this.b=Mue(this.c),n=$2(sa,[le,Ln],[5,1],5,[this.e.Rd().gc(),this.c.Rd().gc()],2),this.a=n,q0n(this)}function w1e(t){!vht&&(vht=hCn());var e=t.replace(/[\x00-\x1f\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200b-\u200f\u2028-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb"\\]/g,function(n){return phn(n)});return'"'+e+'"'}function x6t(t,e,n,r,s,o){var h,d,m,k,T;if(s!=0)for($t(t)===$t(n)&&(t=t.slice(e,e+s),e=0),m=n,d=e,k=e+s;d=h)throw nt(new My(e,h));return s=n[e],h==1?r=null:(r=Vt(Kdt,Qlt,424,h-1,0,1),Wc(n,0,r,0,e),o=h-e-1,o>0&&Wc(n,e+1,r,e,o)),k7(t,r),jfe(t,e,s),s}function v1e(t){var e,n;if(t.f){for(;t.n0?o=ck(n):o=lO(ck(n))),Oi(e,DT,o)}function y5n(t,e){var n;e.Ug("Partition preprocessing",1),n=u(tc(Ai(lc(Ai(new ln(null,new gn(t.a,16)),new EQ),new NB),new Yx),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[(bl(),rc)]))),15),xs(n.Oc(),new FB),e.Vg()}function x5n(t,e){var n,r,s,o,h;for(h=t.j,e.a!=e.b&&Ms(h,new pJ),s=h.c.length/2|0,r=0;r0&&RO(t,n,e),o):r.a!=null?(RO(t,e,n),-1):s.a!=null?(RO(t,n,e),1):0}function E5n(t,e){var n,r,s,o,h;for(s=e.b.b,t.a=Vt($h,l3,15,s,0,1),t.b=Vt(Fl,B0,28,s,16,1),h=_r(e.b,0);h.b!=h.d.c;)o=u(Tr(h),39),t.a[o.g]=new Qi;for(r=_r(e.a,0);r.b!=r.d.c;)n=u(Tr(r),65),t.a[n.b.g].Fc(n),t.a[n.c.g].Fc(n)}function E1e(t,e){var n,r,s,o;t.Pj()?(n=t.Ej(),o=t.Qj(),++t.j,t.qj(n,t.Zi(n,e)),r=t.Ij(3,null,e,n,o),t.Mj()?(s=t.Nj(e,null),s?(s.nj(r),s.oj()):t.Jj(r)):t.Jj(r)):(fee(t,e),t.Mj()&&(s=t.Nj(e,null),s&&s.oj()))}function k6t(t,e,n){var r,s,o;t.Pj()?(o=t.Qj(),aO(t,e,n),r=t.Ij(3,null,n,e,o),t.Mj()?(s=t.Nj(n,null),t.Tj()&&(s=t.Uj(n,s)),s?(s.nj(r),s.oj()):t.Jj(r)):t.Jj(r)):(aO(t,e,n),t.Mj()&&(s=t.Nj(n,null),s&&s.oj()))}function HH(t,e){var n,r,s,o,h;for(h=Au(t.e.Dh(),e),s=new V8,n=u(t.g,124),o=t.i;--o>=0;)r=n[o],h.am(r.Lk())&&Mr(s,r);!mpe(t,s)&&zl(t.e)&&cE(t,e.Jk()?Sb(t,6,e,(wn(),so),null,-1,!1):Sb(t,e.tk()?2:1,e,null,null,-1,!1))}function T5n(t,e){var n,r,s,o,h;return t.a==(A7(),mA)?!0:(o=e.a.c,n=e.a.c+e.a.b,!(e.j&&(r=e.A,h=r.c.c.a-r.o.a/2,s=o-(r.n.a+r.o.a),s>h)||e.q&&(r=e.C,h=r.c.c.a-r.o.a/2,s=r.n.a-n,s>h)))}function T1e(t){ast();var e,n,r,s,o,h,d;for(n=new yp,s=new J(t.e.b);s.a1?t.e*=Rt(t.a):t.f/=Rt(t.a),Gpn(t),J2n(t),Ykn(t),Zt(t.b,(aS(),RU),t.g)}function A1e(t,e,n){var r,s,o,h,d,m;for(r=0,m=n,e||(r=n*(t.c.length-1),m*=-1),o=new J(t);o.a=0?t.Ah(null):t.Ph().Th(t,-1-e,null,null)),t.Bh(u(s,54),n),r&&r.oj(),t.vh()&&t.wh()&&n>-1&&Ti(t,new la(t,9,n,o,s)),s):o}function C6t(t,e){var n,r,s,o,h;for(o=t.b.Ce(e),r=(n=t.a.get(o),n??Vt(sa,Ln,1,0,5,1)),h=0;h>5,s>=t.d)return t.e<0;if(n=t.a[s],e=1<<(e&31),t.e<0){if(r=zoe(t),s>16)),15).dd(o),d0&&(!(dg(t.a.c)&&e.n.d)&&!(j4(t.a.c)&&e.n.b)&&(e.g.d+=b.Math.max(0,r/2-.5)),!(dg(t.a.c)&&e.n.a)&&!(j4(t.a.c)&&e.n.c)&&(e.g.a-=r-1))}function B1e(t){var e,n,r,s,o;if(s=new ge,o=I0e(t,s),e=u(K(t,(ae(),ml)),10),e)for(r=new J(e.j);r.a>e,o=t.m>>e|n<<22-e,s=t.l>>e|t.m<<22-e):e<44?(h=r?Og:0,o=n>>e-22,s=t.m>>e-22|n<<44-e):(h=r?Og:0,o=r?Il:0,s=n>>e-44),ku(s&Il,o&Il,h&Og)}function $ot(t){var e,n,r,s,o,h;for(this.c=new ge,this.d=t,r=ns,s=ns,e=Vs,n=Vs,h=_r(t,0);h.b!=h.d.c;)o=u(Tr(h),8),r=b.Math.min(r,o.a),s=b.Math.min(s,o.b),e=b.Math.max(e,o.a),n=b.Math.max(n,o.b);this.a=new Th(r,s,e-r,n-s)}function j1e(t,e){var n,r,s,o,h,d;for(o=new J(t.b);o.a0&&At(e,44)&&(t.a._j(),k=u(e,44),m=k.ld(),o=m==null?0:Hi(m),h=Qmt(t.a,o),n=t.a.d[h],n)){for(r=u(n.g,379),T=n.i,d=0;d=2)for(n=s.Kc(),e=Ht(n.Pb());n.Ob();)o=e,e=Ht(n.Pb()),r=b.Math.min(r,(Wn(e),e-(Wn(o),o)));return r}function G5n(t,e){var n,r,s;for(s=new ge,r=_r(e.a,0);r.b!=r.d.c;)n=u(Tr(r),65),n.b.g==t.g&&!hn(n.b.c,QV)&&$t(K(n.b,(xc(),o0)))!==$t(K(n.c,o0))&&!Q4(new ln(null,new gn(s,16)),new kUt(n))&&In(s.c,n);return Ms(s,new LZ),s}function K5n(t,e){var n,r,s;if($t(e)===$t(Hr(t)))return!0;if(!At(e,15)||(r=u(e,15),s=t.gc(),s!=r.gc()))return!1;if(At(r,59)){for(n=0;n0&&(s=n),h=new J(t.f.e);h.a0?(e-=1,n-=1):r>=0&&s<0?(e+=1,n+=1):r>0&&s>=0?(e-=1,n+=1):(e+=1,n-=1),new Ys(fe(e),fe(n))}function oxn(t,e){return t.ce.c?1:t.be.b?1:t.a!=e.a?Hi(t.a)-Hi(e.a):t.d==(N_(),BA)&&e.d==FA?-1:t.d==FA&&e.d==BA?1:0}function G1e(t,e){var n,r,s,o,h;return o=e.a,o.c.i==e.b?h=o.d:h=o.c,o.c.i==e.b?r=o.c:r=o.d,s=L2n(t.a,h,r),s>0&&s0):s<0&&-s0):!1}function cxn(t,e,n,r){var s,o,h,d,m,k,T,A;for(s=(e-t.d)/t.c.c.length,o=0,t.a+=n,t.d=e,A=new J(t.c);A.a>24;return h}function lxn(t){if(t.ze()){var e=t.c;e.Ae()?t.o="["+e.n:e.ze()?t.o="["+e.xe():t.o="[L"+e.xe()+";",t.b=e.we()+"[]",t.k=e.ye()+"[]";return}var n=t.j,r=t.d;r=r.split("/"),t.o=Vat(".",[n,Vat("$",r)]),t.b=Vat(".",[n,Vat(".",r)]),t.k=r[r.length-1]}function hxn(t,e){var n,r,s,o,h;for(h=null,o=new J(t.e.a);o.a=0;e-=2)for(n=0;n<=e;n+=2)(t.b[n]>t.b[n+2]||t.b[n]===t.b[n+2]&&t.b[n+1]>t.b[n+3])&&(r=t.b[n+2],t.b[n+2]=t.b[n],t.b[n]=r,r=t.b[n+3],t.b[n+3]=t.b[n+1],t.b[n+1]=r);t.c=!0}}function gxn(t,e){var n,r,s,o,h,d,m,k,T;for(k=-1,T=0,h=t,d=0,m=h.length;d0&&++T;++k}return T}function qf(t){var e,n;return n=new Jl(R2(t.Rm)),n.a+="@",ni(n,(e=Hi(t)>>>0,e.toString(16))),t.Vh()?(n.a+=" (eProxyURI: ",Zc(n,t._h()),t.Kh()&&(n.a+=" eClass: ",Zc(n,t.Kh())),n.a+=")"):t.Kh()&&(n.a+=" (eClass: ",Zc(n,t.Kh()),n.a+=")"),n.a}function wS(t){var e,n,r,s;if(t.e)throw nt(new Fo((gg(Iht),uut+Iht.k+lut)));for(t.d==(Rs(),wd)&&hV(t,Ho),n=new J(t.a.a);n.a>24}return n}function wxn(t,e,n){var r,s,o;if(s=u(Mo(t.i,e),314),!s)if(s=new Dae(t.d,e,n),U6(t.i,e,s),$5t(e))xin(t.a,e.c,e.b,s);else switch(o=t4n(e),r=u(Mo(t.p,o),252),o.g){case 1:case 3:s.j=!0,Vnt(r,e.b,s);break;case 4:case 2:s.k=!0,Vnt(r,e.c,s)}return s}function mxn(t,e){var n,r,s,o,h,d,m,k,T;for(m=k0(t.c-t.b&t.a.length-1),k=null,T=null,o=new M_(t);o.a!=o.b;)s=u(rH(o),10),n=(d=u(K(s,(ae(),I1)),12),d?d.i:null),r=(h=u(K(s,hf),12),h?h.i:null),(k!=n||T!=r)&&(L1e(m,e),k=n,T=r),In(m.c,s);L1e(m,e)}function vxn(t,e,n,r){var s,o,h,d,m,k;if(d=new V8,m=Au(t.e.Dh(),e),s=u(t.g,124),bo(),u(e,69).xk())for(h=0;h=0)return s;for(o=1,d=new J(e.j);d.a=0)return s;for(o=1,d=new J(e.j);d.a0&&e.Ne((mn(s-1,t.c.length),u(t.c[s-1],10)),o)>0;)Sh(t,s,(mn(s-1,t.c.length),u(t.c[s-1],10))),--s;mn(s,t.c.length),t.c[s]=o}n.a=new Er,n.b=new Er}function yxn(t,e,n){var r,s,o,h,d,m,k,T;for(T=(r=u(e.e&&e.e(),9),new Eh(r,u(Ff(r,r.length),9),0)),m=s3(n,"[\\[\\]\\s,]+"),o=m,h=0,d=o.length;h=0?(e||(e=new jC,r>0&&Lo(e,(Sa(0,r,t.length),t.substr(0,r)))),e.a+="\\",IE(e,n&js)):e&&IE(e,n&js);return e?e.a:t}function kxn(t){var e,n,r;for(n=new J(t.a.a.b);n.a0&&(!(dg(t.a.c)&&e.n.d)&&!(j4(t.a.c)&&e.n.b)&&(e.g.d-=b.Math.max(0,r/2-.5)),!(dg(t.a.c)&&e.n.a)&&!(j4(t.a.c)&&e.n.c)&&(e.g.a+=b.Math.max(0,r-1)))}function ede(t,e,n){var r,s;if((t.c-t.b&t.a.length-1)==2)e==(ve(),Hn)||e==Jn?(Lq(u(K_(t),15),(ah(),V0)),Lq(u(K_(t),15),a2)):(Lq(u(K_(t),15),(ah(),a2)),Lq(u(K_(t),15),V0));else for(s=new M_(t);s.a!=s.b;)r=u(rH(s),15),Lq(r,n)}function Exn(t,e){var n,r,s,o,h,d,m;for(s=SE(new y2t(t)),d=new _a(s,s.c.length),o=SE(new y2t(e)),m=new _a(o,o.c.length),h=null;d.b>0&&m.b>0&&(n=(cr(d.b>0),u(d.a.Xb(d.c=--d.b),27)),r=(cr(m.b>0),u(m.a.Xb(m.c=--m.b),27)),n==r);)h=n;return h}function nde(t,e,n){var r,s,o,h;nre(t,e)>nre(t,n)?(r=fc(n,(ve(),Jn)),t.d=r.dc()?0:mit(u(r.Xb(0),12)),h=fc(e,Gn),t.b=h.dc()?0:mit(u(h.Xb(0),12))):(s=fc(n,(ve(),Gn)),t.d=s.dc()?0:mit(u(s.Xb(0),12)),o=fc(e,Jn),t.b=o.dc()?0:mit(u(o.Xb(0),12)))}function rde(t,e){var n,r,s,o;for(n=t.o.a,o=u(u(Mi(t.r,e),21),87).Kc();o.Ob();)s=u(o.Pb(),117),s.e.a=n*Rt(Ht(s.b.of(NU))),s.e.b=(r=s.b,r.pf((si(),Nl))?r.ag()==(ve(),Hn)?-r.Mf().b-Rt(Ht(r.of(Nl))):Rt(Ht(r.of(Nl))):r.ag()==(ve(),Hn)?-r.Mf().b:0)}function Txn(t,e){var n,r,s,o;for(e.Ug("Self-Loop pre-processing",1),r=new J(t.a);r.at.c));h++)s.a>=t.s&&(o<0&&(o=h),d=h);return m=(t.s+t.c)/2,o>=0&&(r=f8n(t,e,o,d),m=lrn((mn(r,e.c.length),u(e.c[r],339))),w5n(e,r,n)),m}function zr(t,e,n){var r,s,o,h,d,m,k;for(h=(o=new HR,o),g4t(h,(Wn(e),e)),k=(!h.b&&(h.b=new Hl((bn(),po),Sc,h)),h.b),m=1;m0&&cTn(this,s)}function F6t(t,e,n,r,s,o){var h,d,m;if(!s[e.a]){for(s[e.a]=!0,h=r,!h&&(h=new dq),pe(h.e,e),m=o[e.a].Kc();m.Ob();)d=u(m.Pb(),289),!(d.d==n||d.c==n)&&(d.c!=e&&F6t(t,d.c,e,h,s,o),d.d!=e&&F6t(t,d.d,e,h,s,o),pe(h.c,d),Hs(h.d,d.b));return h}return null}function Sxn(t){var e,n,r,s,o,h,d;for(e=0,s=new J(t.e);s.a=2}function Axn(t,e,n,r,s){var o,h,d,m,k,T;for(o=t.c.d.j,h=u(Nh(n,0),8),T=1;T1||(e=Gi(Qf,ot(st(_o,1),te,95,0,[jg,Jf])),WI(Zz(e,t))>1)||(r=Gi(t1,ot(st(_o,1),te,95,0,[U0,df])),WI(Zz(r,t))>1))}function B6t(t,e,n){var r,s,o;for(o=new J(t.t);o.a0&&(r.b.n-=r.c,r.b.n<=0&&r.b.u>0&&Zr(e,r.b));for(s=new J(t.i);s.a0&&(r.a.u-=r.c,r.a.u<=0&&r.a.n>0&&Zr(n,r.a))}function UH(t){var e,n,r,s,o;if(t.g==null&&(t.d=t.bj(t.f),Mr(t,t.d),t.c))return o=t.f,o;if(e=u(t.g[t.i-1],51),s=e.Pb(),t.e=e,n=t.bj(s),n.Ob())t.d=n,Mr(t,n);else for(t.d=null;!e.Ob()&&(hs(t.g,--t.i,null),t.i!=0);)r=u(t.g[t.i-1],51),e=r;return s}function Mxn(t,e){var n,r,s,o,h,d;if(r=e,s=r.Lk(),Dg(t.e,s)){if(s.Si()&&cq(t,s,r.md()))return!1}else for(d=Au(t.e.Dh(),s),n=u(t.g,124),o=0;o1||n>1)return 2;return e+n==1?2:0}function Ml(t,e){var n,r,s,o,h,d;return o=t.a*sut+t.b*1502,d=t.b*sut+11,n=b.Math.floor(d*iP),o+=n,d-=n*o8t,o%=o8t,t.a=o,t.b=d,e<=24?b.Math.floor(t.a*b9t[e]):(s=t.a*(1<=2147483648&&(r-=4294967296),r)}function cde(t,e,n){var r,s,o,h,d,m,k;for(o=new ge,k=new Qi,h=new Qi,JEn(t,k,h,e),MTn(t,k,h,e,n),m=new J(t);m.ar.b.g&&In(o.c,r);return o}function Fxn(t,e,n){var r,s,o,h,d,m;for(d=t.c,h=(n.q?n.q:(wn(),wn(),j0)).vc().Kc();h.Ob();)o=u(h.Pb(),44),r=!gE(Ai(new ln(null,new gn(d,16)),new Mf(new wXt(e,o)))).Bd((j2(),Nk)),r&&(m=o.md(),At(m,4)&&(s=H5t(m),s!=null&&(m=s)),e.qf(u(o.ld(),149),m))}function Bxn(t,e,n){var r,s;if(wI(t.b),x1(t.b,(uO(),gK),(VC(),bN)),x1(t.b,pK,e.g),x1(t.b,bK,e.a),t.a=VO(t.b,e),n.Ug("Compaction by shrinking a tree",t.a.c.length),e.i.c.length>1)for(s=new J(t.a);s.a=0?t.Lh(r,!0,!0):Zm(t,o,!0),160)),u(s,220).Xl(e,n)}else throw nt(new zn(Kb+e.xe()+XS))}function GH(t,e){var n,r,s,o,h;if(e){for(o=At(t.Cb,90)||At(t.Cb,102),h=!o&&At(t.Cb,331),r=new Zn((!e.a&&(e.a=new y_(e,So,e)),e.a));r.e!=r.i.gc();)if(n=u(sr(r),89),s=sV(n),o?At(s,90):h?At(s,156):s)return s;return o?(bn(),mf):(bn(),yd)}else return null}function Rxn(t,e){var n,r,s,o;for(e.Ug("Resize child graph to fit parent.",1),r=new J(t.b);r.a=2*e&&pe(n,new fit(h[r-1]+e,h[r]-e));return n}function zxn(t,e,n){var r,s,o,h,d,m,k,T;if(n)for(o=n.a.length,r=new q2(o),d=(r.b-r.a)*r.c<0?(vb(),p2):new kb(r);d.Ob();)h=u(d.Pb(),17),s=jE(n,h.a),s&&(m=w1n(t,(k=(wb(),T=new j2t,T),e&&$6t(k,e),k),s),ZE(m,wg(s,n0)),BH(s,m),l6t(s,m),dat(t,s,m))}function KH(t){var e,n,r,s,o,h;if(!t.j){if(h=new cC,e=wL,o=e.a.zc(t,e),o==null){for(r=new Zn(Ko(t));r.e!=r.i.gc();)n=u(sr(r),29),s=KH(n),bs(h,s),Mr(h,n);e.a.Bc(t)!=null}Uy(h),t.j=new B4((u(Lt(Xt((Tb(),Fn).o),11),19),h.i),h.g),Sl(t).b&=-33}return t.j}function qxn(t){var e,n,r,s;if(t==null)return null;if(r=iu(t,!0),s=AP.length,hn(r.substr(r.length-s,s),AP)){if(n=r.length,n==4){if(e=(qn(0,r.length),r.charCodeAt(0)),e==43)return KIt;if(e==45)return DTe}else if(n==3)return KIt}return new A2t(r)}function Hxn(t){var e,n,r;return n=t.l,n&n-1||(r=t.m,r&r-1)||(e=t.h,e&e-1)||e==0&&r==0&&n==0?-1:e==0&&r==0&&n!=0?i4t(n):e==0&&r!=0&&n==0?i4t(r)+22:e!=0&&r==0&&n==0?i4t(e)+44:-1}function f5(t,e){var n,r,s,o,h;for(s=e.a&t.f,o=null,r=t.b[s];;r=r.b){if(r==e){o?o.b=e.b:t.b[s]=e.b;break}o=r}for(h=e.f&t.f,o=null,n=t.c[h];;n=n.d){if(n==e){o?o.d=e.d:t.c[h]=e.d;break}o=n}e.e?e.e.c=e.c:t.a=e.c,e.c?e.c.e=e.e:t.e=e.e,--t.i,++t.g}function Vxn(t,e){var n;e.d?e.d.b=e.b:t.a=e.b,e.b?e.b.d=e.d:t.e=e.d,!e.e&&!e.c?(n=u(Zh(u(tk(t.b,e.a),260)),260),n.a=0,++t.c):(n=u(Zh(u(tr(t.b,e.a),260)),260),--n.a,e.e?e.e.c=e.c:n.b=u(Zh(e.c),511),e.c?e.c.e=e.e:n.c=u(Zh(e.e),511)),--t.d}function Uxn(t){var e,n,r,s,o,h,d,m,k,T;for(n=t.o,e=t.p,h=ki,s=Va,d=ki,o=Va,k=0;k0),o.a.Xb(o.c=--o.b),Ly(o,s),cr(o.b3&&A0(t,0,e-3))}function Kxn(t){var e,n,r,s;return $t(K(t,(Me(),A3)))===$t((Cg(),Wp))?!t.e&&$t(K(t,JP))!==$t((s7(),GP)):(r=u(K(t,Kft),298),s=Ie(De(K(t,Wft)))||$t(K(t,_A))===$t((z_(),UP)),e=u(K(t,CSt),17).a,n=t.a.c.length,!s&&r!=(s7(),GP)&&(e==0||e>n))}function Wxn(t){var e,n;for(n=0;n0);n++);if(n>0&&n0);e++);return e>0&&n>16!=6&&e){if(T7(t,e))throw nt(new zn(QS+C1e(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?lxt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=hk(e,t,6,r)),r=Wmt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,6,e,e))}function WH(t,e){var n,r;if(e!=t.Cb||t.Db>>16!=3&&e){if(T7(t,e))throw nt(new zn(QS+fge(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?gxt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=hk(e,t,12,r)),r=Ymt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,3,e,e))}function $6t(t,e){var n,r;if(e!=t.Cb||t.Db>>16!=9&&e){if(T7(t,e))throw nt(new zn(QS+l0e(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?fxt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=hk(e,t,9,r)),r=Xmt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,9,e,e))}function I7(t){var e,n,r,s,o;if(r=rf(t),o=t.j,o==null&&r)return t.Jk()?null:r.ik();if(At(r,156)){if(n=r.jk(),n&&(s=n.wi(),s!=t.i)){if(e=u(r,156),e.nk())try{t.g=s.ti(e,o)}catch(h){if(h=is(h),At(h,82))t.g=null;else throw nt(h)}t.i=s}return t.g}return null}function fde(t){var e;return e=new ge,pe(e,new M6(new se(t.c,t.d),new se(t.c+t.b,t.d))),pe(e,new M6(new se(t.c,t.d),new se(t.c,t.d+t.a))),pe(e,new M6(new se(t.c+t.b,t.d+t.a),new se(t.c+t.b,t.d))),pe(e,new M6(new se(t.c+t.b,t.d+t.a),new se(t.c,t.d+t.a))),e}function Yxn(t){var e,n,r;if(t==null)return Hu;try{return ec(t)}catch(s){if(s=is(s),At(s,103))return e=s,r=R2(Gl(t))+"@"+(n=(fg(),q5t(t)>>>0),n.toString(16)),uwn(Wgn(),(mE(),"Exception during lenientFormat for "+r),e),"<"+r+" threw "+R2(e.Rm)+">";throw nt(s)}}function Xxn(t,e,n){var r,s,o;for(o=e.a.ec().Kc();o.Ob();)s=u(o.Pb(),74),r=u(tr(t.b,s),272),!r&&(es(M0(s))==es(Bb(s))?B6n(t,s,n):M0(s)==es(Bb(s))?tr(t.c,s)==null&&tr(t.b,Bb(s))!=null&&Vge(t,s,n,!1):tr(t.d,s)==null&&tr(t.b,M0(s))!=null&&Vge(t,s,n,!0))}function Qxn(t,e){var n,r,s,o,h,d,m;for(s=t.Kc();s.Ob();)for(r=u(s.Pb(),10),d=new Kc,uc(d,r),Qs(d,(ve(),Jn)),Zt(d,(ae(),SG),(Nn(),!0)),h=e.Kc();h.Ob();)o=u(h.Pb(),10),m=new Kc,uc(m,o),Qs(m,Gn),Zt(m,SG,!0),n=new Pm,Zt(n,SG,!0),Ya(n,d),ya(n,m)}function Jxn(t,e,n,r){var s,o,h,d;s=Yue(t,e,n),o=Yue(t,n,e),h=u(tr(t.c,e),118),d=u(tr(t.c,n),118),s1)for(e=xm((n=new B2,++t.b,n),t.d),d=_r(o,0);d.b!=d.d.c;)h=u(Tr(d),125),Hf(Of(If(Pf(Df(new Qh,1),0),e),h))}function e6n(t,e,n){var r,s,o,h,d;for(n.Ug("Breaking Point Removing",1),t.a=u(K(e,(Me(),Rg)),223),o=new J(e.b);o.a>16!=11&&e){if(T7(t,e))throw nt(new zn(QS+akt(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?pxt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=hk(e,t,10,r)),r=svt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,11,e,e))}function n6n(t){var e,n,r,s;for(r=new Z2(new ps(t.b).a);r.b;)n=Vm(r),s=u(n.ld(),12),e=u(n.md(),10),Zt(e,(ae(),Di),s),Zt(s,ml,e),Zt(s,YP,(Nn(),!0)),Qs(s,u(K(e,_c),64)),K(e,_c),Zt(s.i,(Me(),ms),(xa(),GT)),u(K(Ia(s.i),uu),21).Fc((ko(),ST))}function r6n(t,e,n){var r,s,o,h,d,m;if(o=0,h=0,t.c)for(m=new J(t.d.i.j);m.ao.a?-1:s.am){for(T=t.d,t.d=Vt(mIt,_Tt,66,2*m+4,0,1),o=0;o=9223372036854776e3?(UE(),KTt):(s=!1,t<0&&(s=!0,t=-t),r=0,t>=lw&&(r=Xs(t/lw),t-=r*lw),n=0,t>=Ek&&(n=Xs(t/Ek),t-=n*Ek),e=Xs(t),o=ku(e,n,r),s&&gat(o),o)}function g6n(t){var e,n,r,s,o;if(o=new ge,Tu(t.b,new knt(o)),t.b.c.length=0,o.c.length!=0){for(e=(mn(0,o.c.length),u(o.c[0],82)),n=1,r=o.c.length;n=-e&&r==e?new Ys(fe(n-1),fe(r)):new Ys(fe(n),fe(r-1))}function pde(){return Ja(),ot(st(__n,1),te,81,0,[PCt,DCt,P5,aft,ZCt,QU,oG,E3,QCt,qCt,YCt,k3,JCt,jCt,t_t,CCt,eG,oft,YU,iG,n_t,rG,_Ct,XCt,r_t,sG,e_t,XU,FCt,KCt,GCt,cG,LCt,WU,ZU,ACt,bT,VCt,$Ct,WCt,pA,ICt,MCt,UCt,zCt,tG,aG,SCt,nG,HCt,JU,BCt,NCt,qP,KU,RCt,OCt])}function w6n(t,e,n){t.d=0,t.b=0,e.k==(Un(),cu)&&n.k==cu&&u(K(e,(ae(),Di)),10)==u(K(n,Di),10)&&(Pst(e).j==(ve(),Hn)?nde(t,e,n):nde(t,n,e)),e.k==cu&&n.k==ha?Pst(e).j==(ve(),Hn)?t.d=1:t.b=1:n.k==cu&&e.k==ha&&(Pst(n).j==(ve(),Hn)?t.b=1:t.d=1),emn(t,e,n)}function m6n(t){var e,n,r,s,o,h,d,m,k,T,A;return A=jxt(t),e=t.a,m=e!=null,m&&AE(A,"category",t.a),s=AD(new ui(t.d)),h=!s,h&&(k=new lg,C1(A,"knownOptions",k),n=new yGt(k),Oa(new ui(t.d),n)),o=AD(t.g),d=!o,d&&(T=new lg,C1(A,"supportedFeatures",T),r=new xGt(T),Oa(t.g,r)),A}function v6n(t){var e,n,r,s,o,h,d,m,k;for(r=!1,e=336,n=0,o=new rZt(t.length),d=t,m=0,k=d.length;m>16!=7&&e){if(T7(t,e))throw nt(new zn(QS+xfe(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?hxt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=u(e,54).Rh(t,1,NN,r)),r=Jvt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,7,e,e))}function bde(t,e){var n,r;if(e!=t.Cb||t.Db>>16!=3&&e){if(T7(t,e))throw nt(new zn(QS+vue(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?dxt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=u(e,54).Rh(t,0,BN,r)),r=Zvt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,3,e,e))}function Uot(t,e){O7();var n,r,s,o,h,d,m,k,T;return e.d>t.d&&(d=t,t=e,e=d),e.d<63?okn(t,e):(h=(t.d&-2)<<4,k=m3t(t,h),T=m3t(e,h),r=hct(t,Z6(k,h)),s=hct(e,Z6(T,h)),m=Uot(k,T),n=Uot(r,s),o=Uot(hct(k,r),hct(s,T)),o=mct(mct(o,m),n),o=Z6(o,h),m=Z6(m,h<<1),mct(mct(m,o),n))}function Np(){Np=V,c1t=new O4(y2e,0),hAt=new O4("LONGEST_PATH",1),fAt=new O4("LONGEST_PATH_SOURCE",2),o1t=new O4("COFFMAN_GRAHAM",3),lAt=new O4(Put,4),dAt=new O4("STRETCH_WIDTH",5),UG=new O4("MIN_WIDTH",6),NT=new O4("BF_MODEL_ORDER",7),FT=new O4("DF_MODEL_ORDER",8)}function x6n(t,e,n){var r,s,o,h,d;for(h=J_(t,n),d=Vt(z0,Bp,10,e.length,0,1),r=0,o=h.Kc();o.Ob();)s=u(o.Pb(),12),Ie(De(K(s,(ae(),YP))))&&(d[r++]=u(K(s,ml),10));if(r=0;o+=n?1:-1)h=h|e.c.lg(m,o,n,r&&!Ie(De(K(e.j,(ae(),Zb))))&&!Ie(De(K(e.j,(ae(),q5))))),h=h|e.q.ug(m,o,n),h=h|r0e(t,m[o],n,r);return qs(t.c,e),h}function QH(t,e,n){var r,s,o,h,d,m,k,T,A,N;for(T=Nre(t.j),A=0,N=T.length;A1&&(t.a=!0),tun(u(n.b,68),Ei(Ma(u(e.b,68).c),Rd(ra(Ma(u(n.b,68).a),u(e.b,68).a),s))),qne(t,e),wde(t,n)}function mde(t){var e,n,r,s,o,h,d;for(o=new J(t.a.a);o.a0&&o>0?h.p=e++:r>0?h.p=n++:o>0?h.p=s++:h.p=n++}wn(),Ms(t.j,new FM)}function _6n(t){var e,n;n=null,e=u(Oe(t.g,0),18);do{if(n=e.d.i,Ui(n,(ae(),hf)))return u(K(n,hf),12).i;if(n.k!=(Un(),Ts)&&Sr(new nr(ir(As(n).a.Kc(),new q))))e=u(lr(new nr(ir(As(n).a.Kc(),new q))),18);else if(n.k!=Ts)return null}while(n&&n.k!=(Un(),Ts));return n}function S6n(t,e){var n,r,s,o,h,d,m,k,T;for(d=e.j,h=e.g,m=u(Oe(d,d.c.length-1),113),T=(mn(0,d.c.length),u(d.c[0],113)),k=fot(t,h,m,T),o=1;ok&&(m=n,T=s,k=r);e.a=T,e.c=m}function A6n(t,e,n){var r,s,o,h,d,m,k;for(k=new dp(new iUt(t)),h=ot(st(Y3e,1),Vbe,12,0,[e,n]),d=0,m=h.length;dm-t.b&&dm-t.a&&d0?o.a?(d=o.b.Mf().a,n>d&&(s=(n-d)/2,o.d.b=s,o.d.c=s)):o.d.c=t.s+n:k_(t.u)&&(r=$xt(o.b),r.c<0&&(o.d.b=-r.c),r.c+r.b>o.b.Mf().a&&(o.d.c=r.c+r.b-o.b.Mf().a))}function U6n(t,e){var n,r,s,o,h;h=new ge,n=e;do o=u(tr(t.b,n),131),o.B=n.c,o.D=n.d,In(h.c,o),n=u(tr(t.k,n),18);while(n);return r=(mn(0,h.c.length),u(h.c[0],131)),r.j=!0,r.A=u(r.d.a.ec().Kc().Pb(),18).c.i,s=u(Oe(h,h.c.length-1),131),s.q=!0,s.C=u(s.d.a.ec().Kc().Pb(),18).d.i,h}function G6n(t){var e,n;if(e=u(t.a,17).a,n=u(t.b,17).a,e>=0){if(e==n)return new Ys(fe(-e-1),fe(-e-1));if(e==-n)return new Ys(fe(-e),fe(n+1))}return b.Math.abs(e)>b.Math.abs(n)?e<0?new Ys(fe(-e),fe(n)):new Ys(fe(-e),fe(n+1)):new Ys(fe(e+1),fe(n))}function K6n(t){var e,n;n=u(K(t,(Me(),Du)),171),e=u(K(t,(ae(),kw)),311),n==(Ph(),t2)?(Zt(t,Du,QP),Zt(t,kw,(kg(),$5))):n==_3?(Zt(t,Du,QP),Zt(t,kw,(kg(),jk))):e==(kg(),$5)?(Zt(t,Du,t2),Zt(t,kw,KP)):e==jk&&(Zt(t,Du,_3),Zt(t,kw,KP))}function JH(){JH=V,aN=new lZ,cke=ri(new Fs,(Ha(),Yc),(Ja(),YU)),hke=tl(ri(new Fs,Yc,rG),Qo,nG),fke=Ud(Ud(GC(tl(ri(new Fs,Wf,oG),Qo,aG),ou),sG),cG),uke=tl(ri(ri(ri(new Fs,$0,QU),ou,ZU),ou,bT),Qo,JU),lke=tl(ri(ri(new Fs,ou,bT),ou,WU),Qo,KU)}function yS(){yS=V,pke=ri(tl(new Fs,(Ha(),Qo),(Ja(),BCt)),Yc,YU),vke=Ud(Ud(GC(tl(ri(new Fs,Wf,oG),Qo,aG),ou),sG),cG),bke=tl(ri(ri(ri(new Fs,$0,QU),ou,ZU),ou,bT),Qo,JU),mke=ri(ri(new Fs,Yc,rG),Qo,nG),wke=tl(ri(ri(new Fs,ou,bT),ou,WU),Qo,KU)}function W6n(t,e,n,r,s){var o,h;(!ho(e)&&e.c.i.c==e.d.i.c||!yoe(hc(ot(st(ua,1),le,8,0,[s.i.n,s.n,s.a])),n))&&!ho(e)&&(e.c==s?kE(e.a,0,new eo(n)):Zr(e.a,new eo(n)),r&&!v1(t.a,n)&&(h=u(K(e,(Me(),qo)),75),h||(h=new Xu,Zt(e,qo,h)),o=new eo(n),fs(h,o,h.c.b,h.c),qs(t.a,o)))}function xde(t,e){var n,r,s,o;for(o=qr(Qa(P0,_0(qr(Qa(e==null?0:Hi(e),N0)),15))),n=o&t.b.length-1,s=null,r=t.b[n];r;s=r,r=r.a)if(r.d==o&&zd(r.i,e))return s?s.a=r.a:t.b[n]=r.a,QKt(u(Zh(r.c),604),u(Zh(r.f),604)),ED(u(Zh(r.b),227),u(Zh(r.e),227)),--t.f,++t.e,!0;return!1}function Y6n(t){var e,n;for(n=new nr(ir(ca(t).a.Kc(),new q));Sr(n);)if(e=u(lr(n),18),e.c.i.k!=(Un(),qc))throw nt(new lp(Out+wO(t)+"' has its layer constraint set to FIRST, but has at least one incoming edge that does not come from a FIRST_SEPARATE node. That must not happen."))}function X6n(t,e,n){var r,s,o,h,d,m,k;if(s=Tue(t.Db&254),s==0)t.Eb=n;else{if(s==1)d=Vt(sa,Ln,1,2,5,1),o=hot(t,e),o==0?(d[0]=n,d[1]=t.Eb):(d[0]=t.Eb,d[1]=n);else for(d=Vt(sa,Ln,1,s+1,5,1),h=X2(t.Eb),r=2,m=0,k=0;r<=128;r<<=1)r==e?d[k++]=n:t.Db&r&&(d[k++]=h[m++]);t.Eb=d}t.Db|=e}function kde(t,e,n){var r,s,o,h;for(this.b=new ge,s=0,r=0,h=new J(t);h.a0&&(o=u(Oe(this.b,0),176),s+=o.o,r+=o.p),s*=2,r*=2,e>1?s=Xs(b.Math.ceil(s*e)):r=Xs(b.Math.ceil(r/e)),this.a=new I5t(s,r)}function Ede(t,e,n,r,s,o){var h,d,m,k,T,A,N,j,U,W,tt,ct;for(T=r,e.j&&e.o?(j=u(tr(t.f,e.A),60),W=j.d.c+j.d.b,--T):W=e.a.c+e.a.b,A=s,n.q&&n.o?(j=u(tr(t.f,n.C),60),k=j.d.c,++A):k=n.a.c,tt=k-W,m=b.Math.max(2,A-T),d=tt/m,U=W+d,N=T;N=0;h+=s?1:-1){for(d=e[h],m=r==(ve(),Jn)?s?fc(d,r):Oh(fc(d,r)):s?Oh(fc(d,r)):fc(d,r),o&&(t.c[d.p]=m.gc()),A=m.Kc();A.Ob();)T=u(A.Pb(),12),t.d[T.p]=k++;Hs(n,m)}}function Cde(t,e,n){var r,s,o,h,d,m,k,T;for(o=Rt(Ht(t.b.Kc().Pb())),k=Rt(Ht(Kgn(e.b))),r=Rd(Ma(t.a),k-n),s=Rd(Ma(e.a),n-o),T=Ei(r,s),Rd(T,1/(k-o)),this.a=T,this.b=new ge,d=!0,h=t.b.Kc(),h.Pb();h.Ob();)m=Rt(Ht(h.Pb())),d&&m-n>dlt&&(this.b.Fc(n),d=!1),this.b.Fc(m);d&&this.b.Fc(n)}function Q6n(t){var e,n,r,s;if(p8n(t,t.n),t.d.c.length>0){for(BC(t.c);A6t(t,u(et(new J(t.e.a)),125))>5,e&=31,r>=t.d)return t.e<0?(Gd(),Dve):(Gd(),lA);if(o=t.d-r,s=Vt(Or,ii,28,o+1,15,1),q3n(s,o,t.a,r,e),t.e<0){for(n=0;n0&&t.a[n]<<32-e){for(n=0;n=0?!1:(n=w5((rl(),Fa),s,e),n?(r=n.Ik(),(r>1||r==-1)&&Im(Ro(Fa,n))!=3):!0)):!1}function ekn(t,e,n,r){var s,o,h,d,m;return d=Xo(u(Lt((!e.b&&(e.b=new En(gr,e,4,7)),e.b),0),84)),m=Xo(u(Lt((!e.c&&(e.c=new En(gr,e,5,8)),e.c),0),84)),es(d)==es(m)||qy(m,d)?null:(h=kI(e),h==n?r:(o=u(tr(t.a,h),10),o&&(s=o.e,s)?s:null))}function nkn(t,e,n){var r,s,o,h,d;for(n.Ug("Longest path to source layering",1),t.a=e,d=t.a.a,t.b=Vt(Or,ii,28,d.c.length,15,1),r=0,h=new J(d);h.a0&&(n[0]+=t.d,h-=n[0]),n[2]>0&&(n[2]+=t.d,h-=n[2]),o=b.Math.max(0,h),n[1]=b.Math.max(n[1],h),y3t(t,yu,s.c+r.b+n[0]-(n[1]-h)/2,n),e==yu&&(t.c.b=o,t.c.c=s.c+r.b+(o-h)/2)}function Nde(){this.c=Vt(wa,Io,28,(ve(),ot(st(go,1),$c,64,0,[gc,Hn,Jn,vr,Gn])).length,15,1),this.b=Vt(wa,Io,28,ot(st(go,1),$c,64,0,[gc,Hn,Jn,vr,Gn]).length,15,1),this.a=Vt(wa,Io,28,ot(st(go,1),$c,64,0,[gc,Hn,Jn,vr,Gn]).length,15,1),Ewt(this.c,ns),Ewt(this.b,Vs),Ewt(this.a,Vs)}function ru(t,e,n){var r,s,o,h;if(e<=n?(s=e,o=n):(s=n,o=e),r=0,t.b==null)t.b=Vt(Or,ii,28,2,15,1),t.b[0]=s,t.b[1]=o,t.c=!0;else{if(r=t.b.length,t.b[r-1]+1==s){t.b[r-1]=o;return}h=Vt(Or,ii,28,r+2,15,1),Wc(t.b,0,h,0,r),t.b=h,t.b[r-1]>=s&&(t.c=!1,t.a=!1),t.b[r++]=s,t.b[r]=o,t.c||h5(t)}}function ckn(t,e,n){var r,s,o,h,d,m,k;for(k=e.d,t.a=new bu(k.c.length),t.c=new Er,d=new J(k);d.a=0?t.Lh(k,!1,!0):Zm(t,n,!1),61));t:for(o=A.Kc();o.Ob();){for(s=u(o.Pb(),58),T=0;T1;)r3(s,s.i-1);return r}function Bde(t,e){var n,r,s,o,h,d,m;for(n=new V4,o=new J(t.b);o.at.d[h.p]&&(n+=f3t(t.b,o),Ab(t.a,fe(o)));for(;!RC(t.a);)U3t(t.b,u(V6(t.a),17).a)}return n}function gkn(t){var e,n,r,s,o,h,d,m,k;for(t.a=new ivt,k=0,s=0,r=new J(t.i.b);r.ad.d&&(T=d.d+d.a+k));n.c.d=T,e.a.zc(n,e),m=b.Math.max(m,n.c.d+n.c.a)}return m}function ko(){ko=V,yG=new ky("COMMENTS",0),zh=new ky("EXTERNAL_PORTS",1),vA=new ky("HYPEREDGES",2),xG=new ky("HYPERNODES",3),ST=new ky("NON_FREE_PORTS",4),j5=new ky("NORTH_SOUTH_PORTS",5),yA=new ky(c2e,6),CT=new ky("CENTER_LABELS",7),_T=new ky("END_LABELS",8),kG=new ky("PARTITIONS",9)}function bkn(t,e,n,r,s){return r<0?(r=l5(t,s,ot(st(Ne,1),le,2,6,[Pct,Nct,Fct,Bct,xk,Rct,jct,$ct,zct,qct,Hct,Vct]),e),r<0&&(r=l5(t,s,ot(st(Ne,1),le,2,6,["Jan","Feb","Mar","Apr",xk,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),e)),r<0?!1:(n.k=r,!0)):r>0?(n.k=r-1,!0):!1}function wkn(t,e,n,r,s){return r<0?(r=l5(t,s,ot(st(Ne,1),le,2,6,[Pct,Nct,Fct,Bct,xk,Rct,jct,$ct,zct,qct,Hct,Vct]),e),r<0&&(r=l5(t,s,ot(st(Ne,1),le,2,6,["Jan","Feb","Mar","Apr",xk,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),e)),r<0?!1:(n.k=r,!0)):r>0?(n.k=r-1,!0):!1}function mkn(t,e,n,r,s,o){var h,d,m,k;if(d=32,r<0){if(e[0]>=t.length||(d=qa(t,e[0]),d!=43&&d!=45)||(++e[0],r=qH(t,e),r<0))return!1;d==45&&(r=-r)}return d==32&&e[0]-n==2&&s.b==2&&(m=new b$,k=m.q.getFullYear()-Hb+Hb-80,h=k%100,o.a=r==h,r+=(k/100|0)*100+(r=0?Fb(t):__(Fb(Ep(t)))),hA[e]=K$(Rf(t,e),0)?Fb(Rf(t,e)):__(Fb(Ep(Rf(t,e)))),t=Qa(t,5);for(;e=k&&(m=r);m&&(T=b.Math.max(T,m.a.o.a)),T>N&&(A=k,N=T)}return A}function Tkn(t){var e,n,r,s,o,h,d;for(o=new dp(u(Hr(new mh),50)),d=Vs,n=new J(t.d);n.aP2e?Ms(m,t.b):r<=P2e&&r>N2e?Ms(m,t.d):r<=N2e&&r>F2e?Ms(m,t.c):r<=F2e&&Ms(m,t.a),o=qde(t,m,o);return s}function Hde(t,e,n,r){var s,o,h,d,m,k;for(s=(r.c+r.a)/2,Zl(e.j),Zr(e.j,s),Zl(n.e),Zr(n.e,s),k=new lWt,d=new J(t.f);d.a1,d&&(r=new se(s,n.b),Zr(e.a,r)),$_(e.a,ot(st(ua,1),le,8,0,[N,A]))}function Q6t(t,e,n){var r,s;for(e=48;n--)xL[n]=n-48<<24>>24;for(r=70;r>=65;r--)xL[r]=r-65+10<<24>>24;for(s=102;s>=97;s--)xL[s]=s-97+10<<24>>24;for(o=0;o<10;o++)YK[o]=48+o&js;for(t=10;t<=15;t++)YK[t]=65+t-10&js}function Akn(t,e){e.Ug("Process graph bounds",1),Zt(t,(zi(),M1t),zD(rat(Py(new ln(null,new gn(t.b,16)),new FZ)))),Zt(t,D1t,zD(rat(Py(new ln(null,new gn(t.b,16)),new BZ)))),Zt(t,nLt,zD(nat(Py(new ln(null,new gn(t.b,16)),new RZ)))),Zt(t,rLt,zD(nat(Py(new ln(null,new gn(t.b,16)),new pR)))),e.Vg()}function Lkn(t){var e,n,r,s,o;s=u(K(t,(Me(),Sw)),21),o=u(K(t,zG),21),n=new se(t.f.a+t.d.b+t.d.c,t.f.b+t.d.d+t.d.a),e=new eo(n),s.Hc((Kl(),z3))&&(r=u(K(t,LT),8),o.Hc((Dl(),KT))&&(r.a<=0&&(r.a=20),r.b<=0&&(r.b=20)),e.a=b.Math.max(n.a,r.a),e.b=b.Math.max(n.b,r.b)),Ie(De(K(t,t1t)))||s7n(t,n,e)}function Mkn(t,e){var n,r,s,o;for(o=fc(e,(ve(),vr)).Kc();o.Ob();)r=u(o.Pb(),12),n=u(K(r,(ae(),ml)),10),n&&Hf(Of(If(Pf(Df(new Qh,0),.1),t.i[e.p].d),t.i[n.p].a));for(s=fc(e,Hn).Kc();s.Ob();)r=u(s.Pb(),12),n=u(K(r,(ae(),ml)),10),n&&Hf(Of(If(Pf(Df(new Qh,0),.1),t.i[n.p].d),t.i[e.p].a))}function Kot(t){var e,n,r,s,o,h;if(!t.c){if(h=new VR,e=wL,o=e.a.zc(t,e),o==null){for(r=new Zn(Gc(t));r.e!=r.i.gc();)n=u(sr(r),89),s=sV(n),At(s,90)&&bs(h,Kot(u(s,29))),Mr(h,n);e.a.Bc(t)!=null,e.a.gc()==0}C2n(h),Uy(h),t.c=new B4((u(Lt(Xt((Tb(),Fn).o),15),19),h.i),h.g),Sl(t).b&=-33}return t.c}function Z6t(t){var e;if(t.c!=10)throw nt(new Yr(Qr((Ur(),lU))));switch(e=t.a,e){case 110:e=10;break;case 114:e=13;break;case 116:e=9;break;case 92:case 124:case 46:case 94:case 45:case 63:case 42:case 43:case 123:case 125:case 40:case 41:case 91:case 93:break;default:throw nt(new Yr(Qr((Ur(),jh))))}return e}function Kde(t){var e,n,r,s,o;if(t.l==0&&t.m==0&&t.h==0)return"0";if(t.h==tP&&t.m==0&&t.l==0)return"-9223372036854775808";if(t.h>>19)return"-"+Kde(c7(t));for(n=t,r="";!(n.l==0&&n.m==0&&n.h==0);){if(s=Est(mV),n=Okt(n,s,!0),e=""+bWt(Wb),!(n.l==0&&n.m==0&&n.h==0))for(o=9-e.length;o>0;o--)e="0"+e;r=e+r}return r}function Dkn(t){var e,n,r,s,o,h,d;for(e=!1,n=0,s=new J(t.d.b);s.a=t.a||!Fxt(e,n))return-1;if($E(u(r.Kb(e),20)))return 1;for(s=0,h=u(r.Kb(e),20).Kc();h.Ob();)if(o=u(h.Pb(),18),m=o.c.i==e?o.d.i:o.c.i,d=tkt(t,m,n,r),d==-1||(s=b.Math.max(s,d),s>t.c-1))return-1;return s+1}function Wde(t,e){var n,r,s,o,h,d;if($t(e)===$t(t))return!0;if(!At(e,15)||(r=u(e,15),d=t.gc(),r.gc()!=d))return!1;if(h=r.Kc(),t.Yi()){for(n=0;n0){if(t._j(),e!=null){for(o=0;o>24;case 97:case 98:case 99:case 100:case 101:case 102:return t-97+10<<24>>24;case 65:case 66:case 67:case 68:case 69:case 70:return t-65+10<<24>>24;default:throw nt(new Nd("Invalid hexadecimal"))}}function eV(){eV=V,R9t=new I4("SPIRAL",0),P9t=new I4("LINE_BY_LINE",1),N9t=new I4("MANHATTAN",2),O9t=new I4("JITTER",3),Nht=new I4("QUADRANTS_LINE_BY_LINE",4),B9t=new I4("QUADRANTS_MANHATTAN",5),F9t=new I4("QUADRANTS_JITTER",6),I9t=new I4("COMBINE_LINE_BY_LINE_MANHATTAN",7),D9t=new I4("COMBINE_JITTER_MANHATTAN",8)}function Xde(t,e,n,r){var s,o,h,d,m,k;for(m=mot(t,n),k=mot(e,n),s=!1;m&&k&&(r||Amn(m,k,n));)h=mot(m,n),d=mot(k,n),BI(e),BI(t),o=m.c,vct(m,!1),vct(k,!1),n?(Xy(e,k.p,o),e.p=k.p,Xy(t,m.p+1,o),t.p=m.p):(Xy(t,m.p,o),t.p=m.p,Xy(e,k.p+1,o),e.p=k.p),Ca(m,null),Ca(k,null),m=h,k=d,s=!0;return s}function Qde(t){switch(t.g){case 0:return new Het;case 1:return new zet;case 3:return new TYt;case 4:return new FJ;case 5:return new JJt;case 6:return new qet;case 2:return new $et;case 7:return new Cj;case 8:return new _j;default:throw nt(new zn("No implementation is available for the layerer "+(t.f!=null?t.f:""+t.g)))}}function Bkn(t,e,n,r){var s,o,h,d,m;for(s=!1,o=!1,d=new J(r.j);d.a=e.length)throw nt(new No("Greedy SwitchDecider: Free layer not in graph."));this.c=e[t],this.e=new oI(r),Jst(this.e,this.c,(ve(),Gn)),this.i=new oI(r),Jst(this.i,this.c,Jn),this.f=new pte(this.c),this.a=!o&&s.i&&!s.s&&this.c[0].k==(Un(),Ds),this.a&&Q3n(this,t,e.length)}function Zde(t,e){var n,r,s,o,h,d;o=!t.B.Hc((Dl(),ON)),h=t.B.Hc(jdt),t.a=new Rue(h,o,t.c),t.n&&Oyt(t.a.n,t.n),Vnt(t.g,(_1(),yu),t.a),e||(r=new sS(1,o,t.c),r.n.a=t.k,U6(t.p,(ve(),Hn),r),s=new sS(1,o,t.c),s.n.d=t.k,U6(t.p,vr,s),d=new sS(0,o,t.c),d.n.c=t.k,U6(t.p,Gn,d),n=new sS(0,o,t.c),n.n.b=t.k,U6(t.p,Jn,n))}function jkn(t){var e,n,r;switch(e=u(K(t.d,(Me(),Rg)),223),e.g){case 2:n=SCn(t);break;case 3:n=(r=new ge,xs(Ai(Go(lc(lc(new ln(null,new gn(t.d.b,16)),new cJ),new uJ),new Q9),new JQ),new PVt(r)),r);break;default:throw nt(new Fo("Compaction not supported for "+e+" edges."))}Y7n(t,n),Oa(new ui(t.g),new IVt(t))}function $kn(t,e){var n,r,s,o,h,d,m;if(e.Ug("Process directions",1),n=u(K(t,(xc(),Mv)),88),n!=(Rs(),bd))for(s=_r(t.b,0);s.b!=s.d.c;){switch(r=u(Tr(s),39),d=u(K(r,(zi(),uN)),17).a,m=u(K(r,lN),17).a,n.g){case 4:m*=-1;break;case 1:o=d,d=m,m=o;break;case 2:h=d,d=-m,m=h}Zt(r,uN,fe(d)),Zt(r,lN,fe(m))}e.Vg()}function zkn(t,e){var n;return n=new Ls,e&&Yo(n,u(tr(t.a,NN),96)),At(e,422)&&Yo(n,u(tr(t.a,FN),96)),At(e,366)?(Yo(n,u(tr(t.a,Oo),96)),n):(At(e,84)&&Yo(n,u(tr(t.a,gr),96)),At(e,207)?(Yo(n,u(tr(t.a,wi),96)),n):At(e,193)?(Yo(n,u(tr(t.a,kl),96)),n):(At(e,326)&&Yo(n,u(tr(t.a,Cs),96)),n))}function qkn(t){var e,n,r,s,o,h,d,m;for(m=new Iie,d=new J(t.a);d.a0&&e=0)return!1;if(e.p=n.b,pe(n.e,e),s==(Un(),ha)||s==cu){for(h=new J(e.j);h.at.d[d.p]&&(n+=f3t(t.b,o),Ab(t.a,fe(o)))):++h;for(n+=t.b.d*h;!RC(t.a);)U3t(t.b,u(V6(t.a),17).a)}return n}function u0e(t){var e,n,r,s,o,h;return o=0,e=rf(t),e.kk()&&(o|=4),t.Bb&al&&(o|=2),At(t,102)?(n=u(t,19),s=wo(n),n.Bb&Pc&&(o|=32),s&&(ur(Ny(s)),o|=8,h=s.t,(h>1||h==-1)&&(o|=16),s.Bb&Pc&&(o|=64)),n.Bb&fo&&(o|=b3),o|=Uf):At(e,468)?o|=512:(r=e.kk(),r&&r.i&1&&(o|=256)),t.Bb&512&&(o|=128),o}function t8n(t,e){var n;return t.f==Jdt?(n=Im(Ro((rl(),Fa),e)),t.e?n==4&&e!=(bk(),n8)&&e!=(bk(),e8)&&e!=(bk(),Zdt)&&e!=(bk(),t0t):n==2):t.d&&(t.d.Hc(e)||t.d.Hc(Q6(Ro((rl(),Fa),e)))||t.d.Hc(w5((rl(),Fa),t.b,e)))?!0:t.f&&z6t((rl(),t.f),mI(Ro(Fa,e)))?(n=Im(Ro(Fa,e)),t.e?n==4:n==2):!1}function e8n(t){var e,n,r,s,o,h,d,m,k,T,A,N,j;for(N=-1,j=0,k=t,T=0,A=k.length;T0&&++j;++N}return j}function n8n(t,e,n,r){var s,o,h,d,m,k,T,A;return h=u(ne(n,(si(),Yk)),8),m=h.a,T=h.b+t,s=b.Math.atan2(T,m),s<0&&(s+=pw),s+=e,s>pw&&(s-=pw),d=u(ne(r,Yk),8),k=d.a,A=d.b+t,o=b.Math.atan2(A,k),o<0&&(o+=pw),o+=e,o>pw&&(o-=pw),K1(),$f(1e-10),b.Math.abs(s-o)<=1e-10||s==o||isNaN(s)&&isNaN(o)?0:so?1:vm(isNaN(s),isNaN(o))}function Xot(t){var e,n,r,s,o,h,d;for(d=new Er,r=new J(t.a.b);r.a=t.o)throw nt(new F2t);d=e>>5,h=e&31,o=Rf(1,qr(Rf(h,1))),s?t.n[n][d]=k1(t.n[n][d],o):t.n[n][d]=ia(t.n[n][d],Ovt(o)),o=Rf(o,1),r?t.n[n][d]=k1(t.n[n][d],o):t.n[n][d]=ia(t.n[n][d],Ovt(o))}catch(m){throw m=is(m),At(m,333)?nt(new No(wut+t.o+"*"+t.p+mut+e+ro+n+vut)):nt(m)}}function s8n(t,e,n,r){var s,o,h,d,m,k,T,A,N;for(N=new dp(new rUt(t)),d=ot(st(z0,1),Bp,10,0,[e,n]),m=0,k=d.length;m0&&(r=(!t.n&&(t.n=new Jt(Oo,t,1,7)),u(Lt(t.n,0),135)).a,!r||ni(ni((e.a+=' "',e),r),'"'))),ni(gm(ni(gm(ni(gm(ni(gm((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function l0e(t){var e,n,r;return t.Db&64?Lot(t):(e=new Jl(cTt),n=t.k,n?ni(ni((e.a+=' "',e),n),'"'):(!t.n&&(t.n=new Jt(Oo,t,1,7)),t.n.i>0&&(r=(!t.n&&(t.n=new Jt(Oo,t,1,7)),u(Lt(t.n,0),135)).a,!r||ni(ni((e.a+=' "',e),r),'"'))),ni(gm(ni(gm(ni(gm(ni(gm((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function c8n(t,e){var n,r,s,o,h;for(e==(W_(),v1t)&&_O(u(Mi(t.a,(Qy(),VP)),15)),s=u(Mi(t.a,(Qy(),VP)),15).Kc();s.Ob();)switch(r=u(s.Pb(),105),n=u(Oe(r.j,0),113).d.j,o=new fl(r.j),Ms(o,new eR),e.g){case 2:Eot(t,o,n,(Hm(),Jb),1);break;case 1:case 0:h=Wxn(o),Eot(t,new vp(o,0,h),n,(Hm(),Jb),0),Eot(t,new vp(o,h,o.c.length),n,Jb,1)}}function Jot(t,e){var n,r,s,o,h,d,m;if(e==null||e.length==0)return null;if(s=u(eu(t.a,e),143),!s){for(r=(d=new li(t.b).a.vc().Kc(),new qi(d));r.a.Ob();)if(n=(o=u(r.a.Pb(),44),u(o.md(),143)),h=n.c,m=e.length,hn(h.substr(h.length-m,m),e)&&(e.length==h.length||qa(h,h.length-e.length-1)==46)){if(s)return null;s=n}s&&Bo(t.a,e,s)}return s}function u8n(t,e){var n,r,s,o;return n=new Yi,r=u(tc(Go(new ln(null,new gn(t.f,16)),n),jy(new we,new Ri,new Pn,new Bn,ot(st(zo,1),te,108,0,[(bl(),w3),rc]))),21),s=r.gc(),r=u(tc(Go(new ln(null,new gn(e.f,16)),n),jy(new we,new Ri,new Pn,new Bn,ot(st(zo,1),te,108,0,[w3,rc]))),21),o=r.gc(),ss.p?(Qs(o,vr),o.d&&(d=o.o.b,e=o.a.b,o.a.b=d-e)):o.j==vr&&s.p>t.p&&(Qs(o,Hn),o.d&&(d=o.o.b,e=o.a.b,o.a.b=-(d-e)));break}return s}function BO(t,e,n,r,s){var o,h,d,m,k,T,A;if(!(At(e,207)||At(e,366)||At(e,193)))throw nt(new zn("Method only works for ElkNode-, ElkLabel and ElkPort-objects."));return h=t.a/2,m=e.i+r-h,T=e.j+s-h,k=m+e.g+t.a,A=T+e.f+t.a,o=new Xu,Zr(o,new se(m,T)),Zr(o,new se(m,A)),Zr(o,new se(k,A)),Zr(o,new se(k,T)),d=new $ot(o),Yo(d,e),n&&di(t.b,e,d),d}function P7(t,e,n){var r,s,o,h,d,m,k,T,A,N;for(o=new se(e,n),T=new J(t.a);T.a1,d&&(r=new se(s,n.b),Zr(e.a,r)),$_(e.a,ot(st(ua,1),le,8,0,[N,A]))}function sf(){sf=V,WG=new Ey(Zd,0),nN=new Ey("NIKOLOV",1),rN=new Ey("NIKOLOV_PIXEL",2),yAt=new Ey("NIKOLOV_IMPROVED",3),xAt=new Ey("NIKOLOV_IMPROVED_PIXEL",4),vAt=new Ey("DUMMYNODE_PERCENTAGE",5),kAt=new Ey("NODECOUNT_PERCENTAGE",6),YG=new Ey("NO_BOUNDARY",7),Av=new Ey("MODEL_ORDER_LEFT_TO_RIGHT",8),P3=new Ey("MODEL_ORDER_RIGHT_TO_LEFT",9)}function v8n(t){var e,n,r,s,o;for(r=t.length,e=new jC,o=0;o=40,h&&yEn(t),L7n(t),Q6n(t),n=Aue(t),r=0;n&&r0&&Zr(t.f,o)):(t.c[h]-=k+1,t.c[h]<=0&&t.a[h]>0&&Zr(t.e,o))))}function E0e(t,e,n,r){var s,o,h,d,m,k,T;for(m=new se(n,r),ra(m,u(K(e,(zi(),RT)),8)),T=_r(e.b,0);T.b!=T.d.c;)k=u(Tr(T),39),Ei(k.e,m),Zr(t.b,k);for(d=u(tc(Vyt(new ln(null,new gn(e.a,16))),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[(bl(),rc)]))),15).Kc();d.Ob();){for(h=u(d.Pb(),65),o=_r(h.a,0);o.b!=o.d.c;)s=u(Tr(o),8),s.a+=m.a,s.b+=m.b;Zr(t.a,h)}}function pkt(t,e){var n,r,s,o;if(0<(At(t,16)?u(t,16).gc():mg(t.Kc()))){if(s=e,1=0&&mo*2?(T=new Dq(A),k=Zu(h)/Vl(h),m=Ect(T,e,new k6,n,r,s,k),Ei(y1(T.e),m),A.c.length=0,o=0,In(A.c,T),In(A.c,h),o=Zu(T)*Vl(T)+Zu(h)*Vl(h)):(In(A.c,h),o+=Zu(h)*Vl(h));return A}function C0e(t,e){var n,r,s,o,h,d;if(d=u(K(e,(Me(),ms)),101),d==(xa(),G0)||d==lu)for(s=new se(e.f.a+e.d.b+e.d.c,e.f.b+e.d.d+e.d.a).b,h=new J(t.a);h.an?e:n;k<=A;++k)k==n?d=r++:(o=s[k],T=U.am(o.Lk()),k==e&&(m=k==A&&!T?r-1:r),T&&++r);return N=u(nS(t,e,n),76),d!=m&&cE(t,new OI(t.e,7,h,fe(d),j.md(),m)),N}}else return u(Bot(t,e,n),76);return u(nS(t,e,n),76)}function j8n(t,e){var n,r,s,o,h,d,m;for(e.Ug("Port order processing",1),m=u(K(t,(Me(),JSt)),430),r=new J(t.b);r.a=0&&(d=Omn(t,h),!(d&&(k<22?m.l|=1<>>1,h.m=T>>>1|(A&1)<<21,h.l=N>>>1|(T&1)<<21,--k;return n&&gat(m),o&&(r?(Wb=c7(t),s&&(Wb=uce(Wb,(UE(),WTt)))):Wb=ku(t.l,t.m,t.h)),m}function q8n(t,e){var n,r,s,o,h,d,m,k,T,A;for(k=t.e[e.c.p][e.p]+1,m=e.c.a.c.length+1,d=new J(t.a);d.a0&&(qn(0,t.length),t.charCodeAt(0)==45||(qn(0,t.length),t.charCodeAt(0)==43))?1:0,r=h;rn)throw nt(new Nd(sv+t+'"'));return d}function H8n(t){var e,n,r,s,o,h,d;for(h=new Qi,o=new J(t.a);o.a1)&&e==1&&u(t.a[t.b],10).k==(Un(),qc)?mk(u(t.a[t.b],10),(ah(),V0)):r&&(!n||(t.c-t.b&t.a.length-1)>1)&&e==1&&u(t.a[t.c-1&t.a.length-1],10).k==(Un(),qc)?mk(u(t.a[t.c-1&t.a.length-1],10),(ah(),a2)):(t.c-t.b&t.a.length-1)==2?(mk(u(K_(t),10),(ah(),V0)),mk(u(K_(t),10),a2)):mxn(t,s),l3t(t)}function G8n(t,e,n){var r,s,o,h,d;for(o=0,s=new Zn((!t.a&&(t.a=new Jt(wi,t,10,11)),t.a));s.e!=s.i.gc();)r=u(sr(s),27),h="",(!r.n&&(r.n=new Jt(Oo,r,1,7)),r.n).i==0||(h=u(Lt((!r.n&&(r.n=new Jt(Oo,r,1,7)),r.n),0),135).a),d=new pat(o++,e,h),Yo(d,r),Zt(d,(zi(),qA),r),d.e.b=r.j+r.f/2,d.f.a=b.Math.max(r.g,1),d.e.a=r.i+r.g/2,d.f.b=b.Math.max(r.f,1),Zr(e.b,d),vu(n.f,r,d)}function K8n(t){var e,n,r,s,o;r=u(K(t,(ae(),Di)),27),o=u(ne(r,(Me(),Sw)),181).Hc((Kl(),Fw)),t.e||(s=u(K(t,uu),21),e=new se(t.f.a+t.d.b+t.d.c,t.f.b+t.d.d+t.d.a),s.Hc((ko(),zh))?(Oi(r,ms,(xa(),lu)),nv(r,e.a,e.b,!1,!0)):Ie(De(ne(r,t1t)))||nv(r,e.a,e.b,!0,!0)),o?Oi(r,Sw,Ze(Fw)):Oi(r,Sw,(n=u(m1(hL),9),new Eh(n,u(Ff(n,n.length),9),0)))}function bkt(t,e,n){var r,s,o,h;if(e[0]>=t.length)return n.o=0,!0;switch(qa(t,e[0])){case 43:s=1;break;case 45:s=-1;break;default:return n.o=0,!0}if(++e[0],o=e[0],h=qH(t,e),h==0&&e[0]==o)return!1;if(e[0]d&&(d=s,T.c.length=0),s==d&&pe(T,new Ys(n.c.i,n)));wn(),Ms(T,t.c),Cm(t.b,m.p,T)}}function Q8n(t,e){var n,r,s,o,h,d,m,k,T;for(h=new J(e.b);h.ad&&(d=s,T.c.length=0),s==d&&pe(T,new Ys(n.d.i,n)));wn(),Ms(T,t.c),Cm(t.f,m.p,T)}}function J8n(t,e){var n,r,s,o,h,d,m,k;if(k=De(K(e,(xc(),qke))),k==null||(Wn(k),k)){for(E5n(t,e),s=new ge,m=_r(e.b,0);m.b!=m.d.c;)h=u(Tr(m),39),n=i6t(t,h,null),n&&(Yo(n,e),In(s.c,n));if(t.a=null,t.b=null,s.c.length>1)for(r=new J(s);r.a=0&&d!=n&&(o=new la(t,1,d,h,null),r?r.nj(o):r=o),n>=0&&(o=new la(t,1,n,d==n?h:null,e),r?r.nj(o):r=o)),r}function A0e(t){var e,n,r;if(t.b==null){if(r=new hp,t.i!=null&&(Lo(r,t.i),r.a+=":"),t.f&256){for(t.f&256&&t.a!=null&&(bln(t.i)||(r.a+="//"),Lo(r,t.a)),t.d!=null&&(r.a+="/",Lo(r,t.d)),t.f&16&&(r.a+="/"),e=0,n=t.j.length;eN?!1:(A=(m=SS(r,N,!1),m.a),T+d+A<=e.b&&(PI(n,o-n.s),n.c=!0,PI(r,o-n.s),bO(r,n.s,n.t+n.d+d),r.k=!0,C4t(n.q,r),j=!0,s&&(Fq(e,r),r.j=e,t.c.length>h&&(vO((mn(h,t.c.length),u(t.c[h],186)),r),(mn(h,t.c.length),u(t.c[h],186)).a.c.length==0&&xp(t,h)))),j)}function sEn(t,e){var n,r,s,o,h,d;if(e.Ug("Partition midprocessing",1),s=new Nm,xs(Ai(new ln(null,new gn(t.a,16)),new xQ),new xVt(s)),s.d!=0){for(d=u(tc(Kyt((o=s.i,new ln(null,(o||(s.i=new U4(s,s.c))).Nc()))),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[(bl(),rc)]))),15),r=d.Kc(),n=u(r.Pb(),17);r.Ob();)h=u(r.Pb(),17),Qxn(u(Mi(s,n),21),u(Mi(s,h),21)),n=h;e.Vg()}}function D0e(t,e,n){var r,s,o,h,d,m,k,T;if(e.p==0){for(e.p=1,h=n,h||(s=new ge,o=(r=u(m1(go),9),new Eh(r,u(Ff(r,r.length),9),0)),h=new Ys(s,o)),u(h.a,15).Fc(e),e.k==(Un(),Ds)&&u(h.b,21).Fc(u(K(e,(ae(),_c)),64)),m=new J(e.j);m.a0){if(s=u(t.Ab.g,2033),e==null){for(o=0;on.s&&dh)return ve(),Jn;break;case 4:case 3:if(T<0)return ve(),Hn;if(T+n>o)return ve(),vr}return m=(k+d/2)/h,r=(T+n/2)/o,m+r<=1&&m-r<=0?(ve(),Gn):m+r>=1&&m-r>=0?(ve(),Jn):r<.5?(ve(),Hn):(ve(),vr)}function lEn(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W;for(n=!1,T=Rt(Ht(K(e,(Me(),Sv)))),U=qb*T,s=new J(e.b);s.am+U&&(W=A.g+N.g,N.a=(N.g*N.a+A.g*A.a)/W,N.g=W,A.f=N,n=!0)),o=d,A=N;return n}function N0e(t,e,n,r,s,o,h){var d,m,k,T,A,N;for(N=new P6,k=e.Kc();k.Ob();)for(d=u(k.Pb(),853),A=new J(d.Rf());A.a0?d.a?(k=d.b.Mf().b,s>k&&(t.v||d.c.d.c.length==1?(h=(s-k)/2,d.d.d=h,d.d.a=h):(n=u(Oe(d.c.d,0),187).Mf().b,r=(n-k)/2,d.d.d=b.Math.max(0,r),d.d.a=s-r-k))):d.d.a=t.t+s:k_(t.u)&&(o=$xt(d.b),o.d<0&&(d.d.d=-o.d),o.d+o.a>d.b.Mf().b&&(d.d.a=o.d+o.a-d.b.Mf().b))}function Vf(){Vf=V,Fk=new Ta((si(),TN),fe(1)),qU=new Ta(Pw,80),g3e=new Ta(ADt,5),i3e=new Ta(nx,Q7),f3e=new Ta(Pdt,fe(1)),d3e=new Ta(Ndt,(Nn(),!0)),eCt=new ym(50),l3e=new Ta(Kp,eCt),J9t=kN,nCt=nL,s3e=new Ta(Tdt,!1),tCt=EN,c3e=R3,u3e=s2,o3e=Ow,a3e=ax,h3e=j3,Z9t=(Xxt(),Qye),Kht=e3e,zU=Xye,Ght=Jye,rCt=t3e,w3e=rL,m3e=_K,b3e=CN,p3e=CK,iCt=(ok(),q3),new Ta(Qk,iCt)}function dEn(t,e){var n;switch(qI(t)){case 6:return pa(e);case 7:return Cy(e);case 8:return Ty(e);case 3:return Array.isArray(e)&&(n=qI(e),!(n>=14&&n<=16));case 11:return e!=null&&typeof e===Sct;case 12:return e!=null&&(typeof e===KO||typeof e==Sct);case 0:return Jat(e,t.__elementTypeId$);case 2:return Iit(e)&&e.Tm!==Et;case 1:return Iit(e)&&e.Tm!==Et||Jat(e,t.__elementTypeId$);default:return!0}}function F0e(t,e){var n,r,s,o;return r=b.Math.min(b.Math.abs(t.c-(e.c+e.b)),b.Math.abs(t.c+t.b-e.c)),o=b.Math.min(b.Math.abs(t.d-(e.d+e.a)),b.Math.abs(t.d+t.a-e.d)),n=b.Math.abs(t.c+t.b/2-(e.c+e.b/2)),n>t.b/2+e.b/2||(s=b.Math.abs(t.d+t.a/2-(e.d+e.a/2)),s>t.a/2+e.a/2)?1:n==0&&s==0?0:n==0?o/s+1:s==0?r/n+1:b.Math.min(r/n,o/s)+1}function gEn(t,e){var n,r,s,o,h,d,m;for(o=0,d=0,m=0,s=new J(t.f.e);s.a0&&t.d!=(R_(),Xht)&&(d+=h*(r.d.a+t.a[e.a][r.a]*(e.d.a-r.d.a)/n)),n>0&&t.d!=(R_(),Wht)&&(m+=h*(r.d.b+t.a[e.a][r.a]*(e.d.b-r.d.b)/n)));switch(t.d.g){case 1:return new se(d/o,e.d.b);case 2:return new se(e.d.a,m/o);default:return new se(d/o,m/o)}}function B0e(t){var e,n,r,s,o,h;for(n=(!t.a&&(t.a=new Ns(bh,t,5)),t.a).i+2,h=new bu(n),pe(h,new se(t.j,t.k)),xs(new ln(null,(!t.a&&(t.a=new Ns(bh,t,5)),new gn(t.a,16))),new KUt(h)),pe(h,new se(t.b,t.c)),e=1;e0&&(tO(m,!1,(Rs(),Ho)),tO(m,!0,Jo)),Tu(e.g,new XYt(t,n)),di(t.g,e,n)}function $0e(){$0e=V;var t;for(n9t=ot(st(Or,1),ii,28,15,[-1,-1,30,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5]),kht=Vt(Or,ii,28,37,15,1),Ave=ot(st(Or,1),ii,28,15,[-1,-1,63,40,32,28,25,23,21,20,19,19,18,18,17,17,16,16,16,15,15,15,15,14,14,14,14,14,14,13,13,13,13,13,13,13,13]),r9t=Vt(b2,tut,28,37,14,1),t=2;t<=36;t++)kht[t]=Xs(b.Math.pow(t,n9t[t])),r9t[t]=xO(QO,kht[t])}function pEn(t){var e;if((!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a).i!=1)throw nt(new zn(gwe+(!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a).i));return e=new Xu,JI(u(Lt((!t.b&&(t.b=new En(gr,t,4,7)),t.b),0),84))&&Aa(e,Ape(t,JI(u(Lt((!t.b&&(t.b=new En(gr,t,4,7)),t.b),0),84)),!1)),JI(u(Lt((!t.c&&(t.c=new En(gr,t,5,8)),t.c),0),84))&&Aa(e,Ape(t,JI(u(Lt((!t.c&&(t.c=new En(gr,t,5,8)),t.c),0),84)),!0)),e}function z0e(t,e){var n,r,s,o,h;for(e.d?s=t.a.c==(qd(),Lv)?ca(e.b):As(e.b):s=t.a.c==(qd(),Vp)?ca(e.b):As(e.b),o=!1,r=new nr(ir(s.a.Kc(),new q));Sr(r);)if(n=u(lr(r),18),h=Ie(t.a.f[t.a.g[e.b.p].p]),!(!h&&!ho(n)&&n.c.i.c==n.d.i.c)&&!(Ie(t.a.n[t.a.g[e.b.p].p])||Ie(t.a.n[t.a.g[e.b.p].p]))&&(o=!0,v1(t.b,t.a.g[pmn(n,e.b).p])))return e.c=!0,e.a=n,e;return e.c=o,e.a=null,e}function mkt(t,e,n){var r,s,o,h,d,m,k;if(r=n.gc(),r==0)return!1;if(t.Pj())if(m=t.Qj(),A5t(t,e,n),h=r==1?t.Ij(3,null,n.Kc().Pb(),e,m):t.Ij(5,null,n,e,m),t.Mj()){for(d=r<100?null:new bb(r),o=e+r,s=e;s0){for(h=0;h>16==-15&&t.Cb.Yh()&&Fst(new Dst(t.Cb,9,13,n,t.c,Ip(Al(u(t.Cb,62)),t))):At(t.Cb,90)&&t.Db>>16==-23&&t.Cb.Yh()&&(e=t.c,At(e,90)||(e=(bn(),mf)),At(n,90)||(n=(bn(),mf)),Fst(new Dst(t.Cb,9,10,n,e,Ip(Gc(u(t.Cb,29)),t)))))),t.c}function mEn(t,e,n){var r,s,o,h,d,m,k,T,A;for(n.Ug("Hyperedge merging",1),q5n(t,e),m=new _a(e.b,0);m.b0,d=uH(e,o),Imt(n?d.b:d.g,e),n5(d).c.length==1&&fs(r,d,r.c.b,r.c),s=new Ys(o,e),Ab(t.o,s),$u(t.e.a,o))}function W0e(t,e){var n,r,s,o,h,d,m;return r=b.Math.abs(Fz(t.b).a-Fz(e.b).a),d=b.Math.abs(Fz(t.b).b-Fz(e.b).b),s=0,m=0,n=1,h=1,r>t.b.b/2+e.b.b/2&&(s=b.Math.min(b.Math.abs(t.b.c-(e.b.c+e.b.b)),b.Math.abs(t.b.c+t.b.b-e.b.c)),n=1-s/r),d>t.b.a/2+e.b.a/2&&(m=b.Math.min(b.Math.abs(t.b.d-(e.b.d+e.b.a)),b.Math.abs(t.b.d+t.b.a-e.b.d)),h=1-m/d),o=b.Math.min(n,h),(1-o)*b.Math.sqrt(r*r+d*d)}function xEn(t){var e,n,r,s;for(kct(t,t.e,t.f,(Fm(),r2),!0,t.c,t.i),kct(t,t.e,t.f,r2,!1,t.c,t.i),kct(t,t.e,t.f,X5,!0,t.c,t.i),kct(t,t.e,t.f,X5,!1,t.c,t.i),wEn(t,t.c,t.e,t.f,t.i),r=new _a(t.i,0);r.b=65;n--)xd[n]=n-65<<24>>24;for(r=122;r>=97;r--)xd[r]=r-97+26<<24>>24;for(s=57;s>=48;s--)xd[s]=s-48+52<<24>>24;for(xd[43]=62,xd[47]=63,o=0;o<=25;o++)tb[o]=65+o&js;for(h=26,m=0;h<=51;++h,m++)tb[h]=97+m&js;for(t=52,d=0;t<=61;++t,d++)tb[t]=48+d&js;tb[62]=43,tb[63]=47}function Y0e(t,e){var n,r,s,o,h,d;return s=y4t(t),d=y4t(e),s==d?t.e==e.e&&t.a<54&&e.a<54?t.fe.f?1:0:(r=t.e-e.e,n=(t.d>0?t.d:b.Math.floor((t.a-1)*nbe)+1)-(e.d>0?e.d:b.Math.floor((e.a-1)*nbe)+1),n>r+1?s:n0&&(h=X4(h,age(r))),ile(o,h))):sk&&(N=0,j+=m+e,m=0),P7(h,N,j),n=b.Math.max(n,N+T.a),m=b.Math.max(m,T.b),N+=T.a+e;return new se(n+e,j+m+e)}function kkt(t,e){var n,r,s,o,h,d,m;if(!Y1(t))throw nt(new Fo(dwe));if(r=Y1(t),o=r.g,s=r.f,o<=0&&s<=0)return ve(),gc;switch(d=t.i,m=t.j,e.g){case 2:case 1:if(d<0)return ve(),Gn;if(d+t.g>o)return ve(),Jn;break;case 4:case 3:if(m<0)return ve(),Hn;if(m+t.f>s)return ve(),vr}return h=(d+t.g/2)/o,n=(m+t.f/2)/s,h+n<=1&&h-n<=0?(ve(),Gn):h+n>=1&&h-n>=0?(ve(),Jn):n<.5?(ve(),Hn):(ve(),vr)}function TEn(t,e,n,r,s){var o,h;if(o=Xa(ia(e[0],Eo),ia(r[0],Eo)),t[0]=qr(o),o=_m(o,32),n>=s){for(h=1;h0&&(s.b[h++]=0,s.b[h++]=o.b[0]-1),e=1;e0&&(Q(m,m.d-s.d),s.c==(E1(),n2)&&z(m,m.a-s.d),m.d<=0&&m.i>0&&fs(e,m,e.c.b,e.c)));for(o=new J(t.f);o.a0&&(it(d,d.i-s.d),s.c==(E1(),n2)&&G(d,d.b-s.d),d.i<=0&&d.d>0&&fs(n,d,n.c.b,n.c)))}function SEn(t,e,n,r,s){var o,h,d,m,k,T,A,N,j;for(wn(),Ms(t,new PR),h=lI(t),j=new ge,N=new ge,d=null,m=0;h.b!=0;)o=u(h.b==0?null:(cr(h.b!=0),Lh(h,h.a.a)),163),!d||Zu(d)*Vl(d)/21&&(m>Zu(d)*Vl(d)/2||h.b==0)&&(A=new Dq(N),T=Zu(d)/Vl(d),k=Ect(A,e,new k6,n,r,s,T),Ei(y1(A.e),k),d=A,In(j.c,A),m=0,N.c.length=0));return Hs(j,N),j}function Wc(t,e,n,r,s){fg();var o,h,d,m,k,T,A;if(dyt(t,"src"),dyt(n,"dest"),A=Gl(t),m=Gl(n),Ivt((A.i&4)!=0,"srcType is not an array"),Ivt((m.i&4)!=0,"destType is not an array"),T=A.c,h=m.c,Ivt(T.i&1?T==h:(h.i&1)==0,"Array types don't match"),dpn(t,e,n,r,s),!(T.i&1)&&A!=m)if(k=X2(t),o=X2(n),$t(t)===$t(n)&&er;)hs(o,d,k[--e]);else for(d=r+s;r0),r.a.Xb(r.c=--r.b),A>N+m&&Ul(r);for(h=new J(j);h.a0),r.a.Xb(r.c=--r.b)}}function LEn(){xi();var t,e,n,r,s,o;if(n0t)return n0t;for(t=new eh(4),a3(t,zb(uht,!0)),MS(t,zb("M",!0)),MS(t,zb("C",!0)),o=new eh(4),r=0;r<11;r++)ru(o,r,r);return e=new eh(4),a3(e,zb("M",!0)),ru(e,4448,4607),ru(e,65438,65439),s=new l_(2),cw(s,t),cw(s,EL),n=new l_(2),n.Jm(_z(o,zb("L",!0))),n.Jm(e),n=new By(3,n),n=new fyt(s,n),n0t=n,n0t}function s3(t,e){var n,r,s,o,h,d,m,k;for(n=new RegExp(e,"g"),m=Vt(Ne,le,2,0,6,1),r=0,k=t,o=null;;)if(d=n.exec(k),d==null||k==""){m[r]=k;break}else h=d.index,m[r]=(Sa(0,h,k.length),k.substr(0,h)),k=Ch(k,h+d[0].length,k.length),n.lastIndex=0,o==k&&(m[r]=(Sa(0,1,k.length),k.substr(0,1)),k=(qn(1,k.length+1),k.substr(1))),o=k,++r;if(t.length>0){for(s=m.length;s>0&&m[s-1]=="";)--s;s0&&(A-=r[0]+t.c,r[0]+=t.c),r[2]>0&&(A-=r[2]+t.c),r[1]=b.Math.max(r[1],A),Mz(t.a[1],n.c+e.b+r[0]-(r[1]-A)/2,r[1]);for(o=t.a,d=0,k=o.length;d0?(t.n.c.length-1)*t.i:0,r=new J(t.n);r.a1)for(r=_r(s,0);r.b!=r.d.c;)for(n=u(Tr(r),235),o=0,m=new J(n.e);m.a0&&(e[0]+=t.c,A-=e[0]),e[2]>0&&(A-=e[2]+t.c),e[1]=b.Math.max(e[1],A),Dz(t.a[1],r.d+n.d+e[0]-(e[1]-A)/2,e[1]);else for(U=r.d+n.d,j=r.a-n.d-n.a,h=t.a,m=0,T=h.length;m0||Km(s.b.d,t.b.d+t.b.a)==0&&r.b<0||Km(s.b.d+s.b.a,t.b.d)==0&&r.b>0){d=0;break}}else d=b.Math.min(d,Wfe(t,s,r));d=b.Math.min(d,Z0e(t,o,d,r))}return d}function zO(t,e){var n,r,s,o,h,d,m;if(t.b<2)throw nt(new zn("The vector chain must contain at least a source and a target point."));for(s=(cr(t.b!=0),u(t.a.a.c,8)),QD(e,s.a,s.b),m=new F6((!e.a&&(e.a=new Ns(bh,e,5)),e.a)),h=_r(t,1);h.a=0&&o!=n))throw nt(new zn(kP));for(s=0,m=0;mRt(W1(h.g,h.d[0]).a)?(cr(m.b>0),m.a.Xb(m.c=--m.b),Ly(m,h),s=!0):d.e&&d.e.gc()>0&&(o=(!d.e&&(d.e=new ge),d.e).Mc(e),k=(!d.e&&(d.e=new ge),d.e).Mc(n),(o||k)&&((!d.e&&(d.e=new ge),d.e).Fc(h),++h.c));s||In(r.c,h)}function FEn(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct;return A=t.a.i+t.a.g/2,N=t.a.i+t.a.g/2,U=e.i+e.g/2,tt=e.j+e.f/2,d=new se(U,tt),k=u(ne(e,(si(),Yk)),8),k.a=k.a+A,k.b=k.b+N,o=(d.b-k.b)/(d.a-k.a),r=d.b-o*d.a,W=n.i+n.g/2,ct=n.j+n.f/2,m=new se(W,ct),T=u(ne(n,Yk),8),T.a=T.a+A,T.b=T.b+N,h=(m.b-T.b)/(m.a-T.a),s=m.b-h*m.a,j=(r-s)/(h-o),k.a>>0,"0"+e.toString(16)),r="\\x"+Ch(n,n.length-2,n.length)):t>=fo?(n=(e=t>>>0,"0"+e.toString(16)),r="\\v"+Ch(n,n.length-6,n.length)):r=""+String.fromCharCode(t&js)}return r}function rge(t){var e,n,r;if(R4(u(K(t,(Me(),ms)),101)))for(n=new J(t.j);n.a=e.o&&n.f<=e.f||e.a*.5<=n.f&&e.a*1.5>=n.f){if(h=u(Oe(e.n,e.n.c.length-1),209),h.e+h.d+n.g+s<=r&&(o=u(Oe(e.n,e.n.c.length-1),209),o.f-t.f+n.f<=t.b||t.a.c.length==1))return y5t(e,n),!0;if(e.s+n.g<=r&&(e.t+e.d+n.f+s<=t.b||t.a.c.length==1))return pe(e.b,n),d=u(Oe(e.n,e.n.c.length-1),209),pe(e.n,new eq(e.s,d.f+d.a+e.i,e.i)),txt(u(Oe(e.n,e.n.c.length-1),209),n),Q0e(e,n),!0}return!1}function sge(t,e,n){var r,s,o,h;return t.Pj()?(s=null,o=t.Qj(),r=t.Ij(1,h=jst(t,e,n),n,e,o),t.Mj()&&!(t.Yi()&&h!=null?Ci(h,n):$t(h)===$t(n))?(h!=null&&(s=t.Oj(h,s)),s=t.Nj(n,s),t.Tj()&&(s=t.Wj(h,n,s)),s?(s.nj(r),s.oj()):t.Jj(r)):(t.Tj()&&(s=t.Wj(h,n,s)),s?(s.nj(r),s.oj()):t.Jj(r)),h):(h=jst(t,e,n),t.Mj()&&!(t.Yi()&&h!=null?Ci(h,n):$t(h)===$t(n))&&(s=null,h!=null&&(s=t.Oj(h,null)),s=t.Nj(n,s),s&&s.oj()),h)}function HEn(t,e){var n,r,s,o,h;if(e.Ug("Path-Like Graph Wrapping",1),t.b.c.length==0){e.Vg();return}if(s=new L6t(t),h=(s.i==null&&(s.i=x4t(s,new oR)),Rt(s.i)*s.f),n=h/(s.i==null&&(s.i=x4t(s,new oR)),Rt(s.i)),s.b>n){e.Vg();return}switch(u(K(t,(Me(),s1t)),351).g){case 2:o=new uR;break;case 0:o=new HM;break;default:o=new lR}if(r=o.og(t,s),!o.pg())switch(u(K(t,HG),352).g){case 2:r=Yfe(s,r);break;case 1:r=jhe(s,r)}j7n(t,s,r),e.Vg()}function TS(t,e){var n,r,s,o,h,d,m,k;e%=24,t.q.getHours()!=e&&(r=new b.Date(t.q.getTime()),r.setDate(r.getDate()+1),d=t.q.getTimezoneOffset()-r.getTimezoneOffset(),d>0&&(m=d/60|0,k=d%60,s=t.q.getDate(),n=t.q.getHours(),n+m>=24&&++s,o=new b.Date(t.q.getFullYear(),t.q.getMonth(),s,e+m,t.q.getMinutes()+k,t.q.getSeconds(),t.q.getMilliseconds()),t.q.setTime(o.getTime()))),h=t.q.getTime(),t.q.setTime(h+36e5),t.q.getHours()!=e&&t.q.setTime(h)}function VEn(t,e){var n,r,s,o;if(rfn(t.d,t.e),t.c.a.$b(),Rt(Ht(K(e.j,(Me(),DG))))!=0||Rt(Ht(K(e.j,DG)))!=0)for(n=E5,$t(K(e.j,q0))!==$t((Vd(),Hp))&&Zt(e.j,(ae(),Zb),(Nn(),!0)),o=u(K(e.j,MA),17).a,s=0;ss&&++k,pe(h,(mn(d+k,e.c.length),u(e.c[d+k],17))),m+=(mn(d+k,e.c.length),u(e.c[d+k],17)).a-r,++n;n=tt&&t.e[m.p]>U*t.b||St>=n*tt)&&(In(N.c,d),d=new ge,Aa(h,o),o.a.$b(),k-=T,j=b.Math.max(j,k*t.b+W),k+=St,Tt=St,St=0,T=0,W=0);return new Ys(j,N)}function oct(t){var e,n,r,s,o,h,d;if(!t.d){if(d=new oC,e=wL,o=e.a.zc(t,e),o==null){for(r=new Zn(Ko(t));r.e!=r.i.gc();)n=u(sr(r),29),bs(d,oct(n));e.a.Bc(t)!=null,e.a.gc()==0}for(h=d.i,s=(!t.q&&(t.q=new Jt(bf,t,11,10)),new Zn(t.q));s.e!=s.i.gc();++h)u(sr(s),411);bs(d,(!t.q&&(t.q=new Jt(bf,t,11,10)),t.q)),Uy(d),t.d=new B4((u(Lt(Xt((Tb(),Fn).o),9),19),d.i),d.g),t.e=u(d.g,688),t.e==null&&(t.e=cTe),Sl(t).b&=-17}return t.d}function B7(t,e,n,r){var s,o,h,d,m,k;if(k=Au(t.e.Dh(),e),m=0,s=u(t.g,124),bo(),u(e,69).xk()){for(h=0;h1||U==-1)if(A=u(W,71),N=u(T,71),A.dc())N.$b();else for(h=!!wo(e),o=0,d=t.a?A.Kc():A.Ii();d.Ob();)k=u(d.Pb(),58),s=u(ed(t,k),58),s?(h?(m=N.dd(s),m==-1?N.Gi(o,s):o!=m&&N.Ui(o,s)):N.Gi(o,s),++o):t.b&&!h&&(N.Gi(o,k),++o);else W==null?T.Wb(null):(s=ed(t,W),s==null?t.b&&!wo(e)&&T.Wb(W):T.Wb(s))}function YEn(t,e){var n,r,s,o,h,d,m,k;for(n=new cQ,s=new nr(ir(ca(e).a.Kc(),new q));Sr(s);)if(r=u(lr(s),18),!ho(r)&&(d=r.c.i,Fxt(d,GU))){if(k=tkt(t,d,GU,UU),k==-1)continue;n.b=b.Math.max(n.b,k),!n.a&&(n.a=new ge),pe(n.a,d)}for(h=new nr(ir(As(e).a.Kc(),new q));Sr(h);)if(o=u(lr(h),18),!ho(o)&&(m=o.d.i,Fxt(m,UU))){if(k=tkt(t,m,UU,GU),k==-1)continue;n.d=b.Math.max(n.d,k),!n.c&&(n.c=new ge),pe(n.c,m)}return n}function XEn(t,e,n,r){var s,o,h,d,m,k,T;if(n.d.i!=e.i){for(s=new Lg(t),C(s,(Un(),ha)),Zt(s,(ae(),Di),n),Zt(s,(Me(),ms),(xa(),lu)),In(r.c,s),h=new Kc,uc(h,s),Qs(h,(ve(),Gn)),d=new Kc,uc(d,s),Qs(d,Jn),T=n.d,ya(n,h),o=new Pm,Yo(o,n),Zt(o,qo,null),Ya(o,d),ya(o,T),k=new _a(n.b,0);k.b1e6)throw nt(new o$("power of ten too big"));if(t<=ki)return Z6(IO(Pk[1],e),e);for(r=IO(Pk[1],ki),s=r,n=Oc(t-ki),e=Xs(t%ki);Rc(n,ki)>0;)s=X4(s,r),n=ef(n,ki);for(s=X4(s,IO(Pk[1],e)),s=Z6(s,ki),n=Oc(t-ki);Rc(n,ki)>0;)s=Z6(s,ki),n=ef(n,ki);return s=Z6(s,e),s}function oge(t){var e,n,r,s,o,h,d,m,k,T;for(m=new J(t.a);m.ak&&r>k)T=d,k=Rt(e.p[d.p])+Rt(e.d[d.p])+d.o.b+d.d.a;else{s=!1,n._g()&&n.bh("bk node placement breaks on "+d+" which should have been after "+T);break}if(!s)break}return n._g()&&n.bh(e+" is feasible: "+s),s}function _kt(t,e,n,r){var s,o,h,d,m,k,T,A,N;if(o=new Lg(t),C(o,(Un(),cu)),Zt(o,(Me(),ms),(xa(),lu)),s=0,e){for(h=new Kc,Zt(h,(ae(),Di),e),Zt(o,Di,e.i),Qs(h,(ve(),Gn)),uc(h,o),N=Hd(e.e),k=N,T=0,A=k.length;T0){if(s<0&&T.a&&(s=m,o=k[0],r=0),s>=0){if(d=T.b,m==s&&(d-=r++,d==0))return 0;if(!hpe(e,k,T,d,h)){m=s-1,k[0]=o;continue}}else if(s=-1,!hpe(e,k,T,0,h))return 0}else{if(s=-1,qa(T.c,0)==32){if(A=k[0],hae(e,k),k[0]>A)continue}else if(Rln(e,T.c,k[0])){k[0]+=T.c.length;continue}return 0}return $9n(h,n)?k[0]:0}function n7n(t,e,n){var r,s,o,h,d,m,k,T,A,N;for(T=new Oz(new xD(n)),d=Vt(Fl,B0,28,t.f.e.c.length,16,1),lyt(d,d.length),n[e.a]=0,k=new J(t.f.e);k.a=0&&!a5(t,T,A);)--A;s[T]=A}for(j=0;j=0&&!a5(t,d,U);)--d;o[U]=d}for(m=0;me[N]&&Nr[m]&&rV(t,m,N,!1,!0)}function Skt(t){var e,n,r,s,o,h,d,m;n=Ie(De(K(t,(Vf(),s3e)))),o=t.a.c.d,d=t.a.d.d,n?(h=Rd(ra(new se(d.a,d.b),o),.5),m=Rd(Ma(t.e),.5),e=ra(Ei(new se(o.a,o.b),h),m),Bmt(t.d,e)):(s=Rt(Ht(K(t.a,g3e))),r=t.d,o.a>=d.a?o.b>=d.b?(r.a=d.a+(o.a-d.a)/2+s,r.b=d.b+(o.b-d.b)/2-s-t.e.b):(r.a=d.a+(o.a-d.a)/2+s,r.b=o.b+(d.b-o.b)/2+s):o.b>=d.b?(r.a=o.a+(d.a-o.a)/2+s,r.b=d.b+(o.b-d.b)/2+s):(r.a=o.a+(d.a-o.a)/2+s,r.b=o.b+(d.b-o.b)/2-s-t.e.b))}function _S(t){var e,n,r,s,o,h,d,m;if(!t.f){if(m=new UR,d=new UR,e=wL,h=e.a.zc(t,e),h==null){for(o=new Zn(Ko(t));o.e!=o.i.gc();)s=u(sr(o),29),bs(m,_S(s));e.a.Bc(t)!=null,e.a.gc()==0}for(r=(!t.s&&(t.s=new Jt(Ku,t,21,17)),new Zn(t.s));r.e!=r.i.gc();)n=u(sr(r),179),At(n,102)&&Mr(d,u(n,19));Uy(d),t.r=new JZt(t,(u(Lt(Xt((Tb(),Fn).o),6),19),d.i),d.g),bs(m,t.r),Uy(m),t.f=new B4((u(Lt(Xt(Fn.o),5),19),m.i),m.g),Sl(t).b&=-3}return t.f}function uge(t){bm(t,new ow(dm(lm(fm(hm(new cg,dw),"ELK DisCo"),"Layouter for arranging unconnected subgraphs. The subgraphs themselves are, by default, not laid out."),new h1))),he(t,dw,xut,_e(Y9t)),he(t,dw,kut,_e(qht)),he(t,dw,Sk,_e(Vye)),he(t,dw,av,_e(W9t)),he(t,dw,p8t,_e(Wye)),he(t,dw,b8t,_e(Kye)),he(t,dw,g8t,_e(Yye)),he(t,dw,w8t,_e(Gye)),he(t,dw,T8t,_e(Uye)),he(t,dw,C8t,_e(zht)),he(t,dw,_8t,_e(K9t)),he(t,dw,S8t,_e(RU))}function oV(){oV=V,bIt=ot(st(Uh,1),Yd,28,15,[48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70]),R7e=new RegExp(`[ +\r\f]+`);try{gL=ot(st(R_n,1),Ln,2114,0,[new kD((imt(),dH("yyyy-MM-dd'T'HH:mm:ss'.'SSSZ",sI((a$(),a$(),cA))))),new kD(dH("yyyy-MM-dd'T'HH:mm:ss'.'SSS",sI(cA))),new kD(dH("yyyy-MM-dd'T'HH:mm:ss",sI(cA))),new kD(dH("yyyy-MM-dd'T'HH:mm",sI(cA))),new kD(dH("yyyy-MM-dd",sI(cA)))])}catch(t){if(t=is(t),!At(t,82))throw nt(t)}}function i7n(t,e){var n,r,s,o;if(s=Ml(t.d,1)!=0,r=okt(t,e),r==0&&Ie(De(K(e.j,(ae(),Zb)))))return 0;!Ie(De(K(e.j,(ae(),Zb))))&&!Ie(De(K(e.j,q5)))||$t(K(e.j,(Me(),q0)))===$t((Vd(),Hp))?e.c.mg(e.e,s):s=Ie(De(K(e.j,Zb))),FO(t,e,s,!0),Ie(De(K(e.j,q5)))&&Zt(e.j,q5,(Nn(),!1)),Ie(De(K(e.j,Zb)))&&(Zt(e.j,Zb,(Nn(),!1)),Zt(e.j,q5,!0)),n=okt(t,e);do{if(v4t(t),n==0)return 0;s=!s,o=n,FO(t,e,s,!1),n=okt(t,e)}while(o>n);return o}function lge(t,e){var n,r,s,o;if(s=Ml(t.d,1)!=0,r=zH(t,e),r==0&&Ie(De(K(e.j,(ae(),Zb)))))return 0;!Ie(De(K(e.j,(ae(),Zb))))&&!Ie(De(K(e.j,q5)))||$t(K(e.j,(Me(),q0)))===$t((Vd(),Hp))?e.c.mg(e.e,s):s=Ie(De(K(e.j,Zb))),FO(t,e,s,!0),Ie(De(K(e.j,q5)))&&Zt(e.j,q5,(Nn(),!1)),Ie(De(K(e.j,Zb)))&&(Zt(e.j,Zb,(Nn(),!1)),Zt(e.j,q5,!0)),n=zH(t,e);do{if(v4t(t),n==0)return 0;s=!s,o=n,FO(t,e,s,!1),n=zH(t,e)}while(o>n);return o}function Akt(t,e,n,r){var s,o,h,d,m,k,T,A,N;return m=ra(new se(n.a,n.b),t),k=m.a*e.b-m.b*e.a,T=e.a*r.b-e.b*r.a,A=(m.a*r.b-m.b*r.a)/T,N=k/T,T==0?k==0?(s=Ei(new se(n.a,n.b),Rd(new se(r.a,r.b),.5)),o=Lb(t,s),h=Lb(Ei(new se(t.a,t.b),e),s),d=b.Math.sqrt(r.a*r.a+r.b*r.b)*.5,o=0&&A<=1&&N>=0&&N<=1?Ei(new se(t.a,t.b),Rd(new se(e.a,e.b),A)):null}function s7n(t,e,n){var r,s,o,h,d;if(r=u(K(t,(Me(),Gft)),21),n.a>e.a&&(r.Hc((aw(),JA))?t.c.a+=(n.a-e.a)/2:r.Hc(ZA)&&(t.c.a+=n.a-e.a)),n.b>e.b&&(r.Hc((aw(),eL))?t.c.b+=(n.b-e.b)/2:r.Hc(tL)&&(t.c.b+=n.b-e.b)),u(K(t,(ae(),uu)),21).Hc((ko(),zh))&&(n.a>e.a||n.b>e.b))for(d=new J(t.a);d.ae.a&&(r.Hc((aw(),JA))?t.c.a+=(n.a-e.a)/2:r.Hc(ZA)&&(t.c.a+=n.a-e.a)),n.b>e.b&&(r.Hc((aw(),eL))?t.c.b+=(n.b-e.b)/2:r.Hc(tL)&&(t.c.b+=n.b-e.b)),u(K(t,(ae(),uu)),21).Hc((ko(),zh))&&(n.a>e.a||n.b>e.b))for(h=new J(t.a);h.a0?t.i:0)>e&&m>0&&(o=0,h+=m+t.i,s=b.Math.max(s,N),r+=m+t.i,m=0,N=0,n&&(++A,pe(t.n,new eq(t.s,h,t.i))),d=0),N+=k.g+(d>0?t.i:0),m=b.Math.max(m,k.f),n&&txt(u(Oe(t.n,A),209),k),o+=k.g+(d>0?t.i:0),++d;return s=b.Math.max(s,N),r+=m,n&&(t.r=s,t.d=r,ixt(t.j)),new Th(t.s,t.t,s,r)}function cct(t){var e,n,r,s,o,h,d,m,k,T,A,N;for(t.b=!1,A=ns,m=Vs,N=ns,k=Vs,r=t.e.a.ec().Kc();r.Ob();)for(n=u(r.Pb(),272),s=n.a,A=b.Math.min(A,s.c),m=b.Math.max(m,s.c+s.b),N=b.Math.min(N,s.d),k=b.Math.max(k,s.d+s.a),h=new J(n.c);h.at.o.a&&(T=(m-t.o.a)/2,d.b=b.Math.max(d.b,T),d.c=b.Math.max(d.c,T))}}function u7n(t){var e,n,r,s,o,h,d,m;for(o=new ire,$rn(o,(sk(),CEe)),r=(s=tat(t,Vt(Ne,le,2,0,6,1)),new $r(new hl(new trt(t,s).b)));r.bd?1:-1:W4t(t.a,e.a,o),s==-1)A=-m,T=h==m?Cst(e.a,d,t.a,o):Sst(e.a,d,t.a,o);else if(A=h,h==m){if(s==0)return Gd(),lA;T=Cst(t.a,o,e.a,d)}else T=Sst(t.a,o,e.a,d);return k=new H2(A,T.length,T),I_(k),k}function l7n(t,e){var n,r,s,o;if(o=K0e(e),!e.c&&(e.c=new Jt(kl,e,9,9)),xs(new ln(null,(!e.c&&(e.c=new Jt(kl,e,9,9)),new gn(e.c,16))),new ZHt(o)),s=u(K(o,(ae(),uu)),21),n9n(e,s),s.Hc((ko(),zh)))for(r=new Zn((!e.c&&(e.c=new Jt(kl,e,9,9)),e.c));r.e!=r.i.gc();)n=u(sr(r),123),D9n(t,e,o,n);return u(ne(e,(Me(),Sw)),181).gc()!=0&&jde(e,o),Ie(De(K(o,YSt)))&&s.Fc(kG),Ui(o,ZP)&&KKt(new D5t(Rt(Ht(K(o,ZP)))),o),$t(ne(e,A3))===$t((Cg(),Wp))?e_n(t,e,o):jCn(t,e,o),o}function h7n(t){var e,n,r,s,o,h,d,m;for(s=new J(t.b);s.a0?Ch(n.a,0,o-1):""):(Sa(0,o-1,t.length),t.substr(0,o-1)):n?n.a:t}function f7n(t,e){var n,r,s,o,h,d,m;for(e.Ug("Sort By Input Model "+K(t,(Me(),q0)),1),s=0,r=new J(t.b);r.a=t.b.length?(o[s++]=h.b[r++],o[s++]=h.b[r++]):r>=h.b.length?(o[s++]=t.b[n++],o[s++]=t.b[n++]):h.b[r]0?t.i:0)),++e;for(g5t(t.n,m),t.d=n,t.r=r,t.g=0,t.f=0,t.e=0,t.o=ns,t.p=ns,o=new J(t.b);o.a0&&(s=(!t.n&&(t.n=new Jt(Oo,t,1,7)),u(Lt(t.n,0),135)).a,!s||ni(ni((e.a+=' "',e),s),'"'))),n=(!t.b&&(t.b=new En(gr,t,4,7)),!(t.b.i<=1&&(!t.c&&(t.c=new En(gr,t,5,8)),t.c.i<=1))),n?e.a+=" [":e.a+=" ",ni(e,Emt(new Knt,new Zn(t.b))),n&&(e.a+="]"),e.a+=Lut,n&&(e.a+="["),ni(e,Emt(new Knt,new Zn(t.c))),n&&(e.a+="]"),e.a)}function g7n(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On;for(Kt=t.c,ie=e.c,n=Wo(Kt.a,t,0),r=Wo(ie.a,e,0),St=u(Wm(t,(xo(),vl)).Kc().Pb(),12),Je=u(Wm(t,xu).Kc().Pb(),12),Bt=u(Wm(e,vl).Kc().Pb(),12),On=u(Wm(e,xu).Kc().Pb(),12),ct=Hd(St.e),Ce=Hd(Je.g),Tt=Hd(Bt.e),en=Hd(On.g),Xy(t,r,ie),h=Tt,T=0,U=h.length;TT?new G2((E1(),F3),n,e,k-T):k>0&&T>0&&(new G2((E1(),F3),e,n,0),new G2(F3,n,e,0))),h)}function w7n(t,e,n){var r,s,o;for(t.a=new ge,o=_r(e.b,0);o.b!=o.d.c;){for(s=u(Tr(o),39);u(K(s,(xc(),o0)),17).a>t.a.c.length-1;)pe(t.a,new Ys(E5,l7t));r=u(K(s,o0),17).a,n==(Rs(),Ho)||n==Jo?(s.e.aRt(Ht(u(Oe(t.a,r),42).b))&&ue(u(Oe(t.a,r),42),s.e.a+s.f.a)):(s.e.bRt(Ht(u(Oe(t.a,r),42).b))&&ue(u(Oe(t.a,r),42),s.e.b+s.f.b))}}function dge(t,e,n,r){var s,o,h,d,m,k,T;if(o=oH(r),d=Ie(De(K(r,(Me(),HSt)))),(d||Ie(De(K(t,FG))))&&!R4(u(K(t,ms),101)))s=ck(o),m=wkt(t,n,n==(xo(),xu)?s:lO(s));else switch(m=new Kc,uc(m,t),e?(T=m.n,T.a=e.a-t.n.a,T.b=e.b-t.n.b,mfe(T,0,0,t.o.a,t.o.b),Qs(m,P0e(m,o))):(s=ck(o),Qs(m,n==(xo(),xu)?s:lO(s))),h=u(K(r,(ae(),uu)),21),k=m.j,o.g){case 2:case 1:(k==(ve(),Hn)||k==vr)&&h.Fc((ko(),j5));break;case 4:case 3:(k==(ve(),Jn)||k==Gn)&&h.Fc((ko(),j5))}return m}function gge(t,e){var n,r,s,o,h,d;for(h=new Z2(new ps(t.f.b).a);h.b;){if(o=Vm(h),s=u(o.ld(),602),e==1){if(s.Af()!=(Rs(),qh)&&s.Af()!=bd)continue}else if(s.Af()!=(Rs(),Ho)&&s.Af()!=Jo)continue;switch(r=u(u(o.md(),42).b,86),d=u(u(o.md(),42).a,194),n=d.c,s.Af().g){case 2:r.g.c=t.e.a,r.g.b=b.Math.max(1,r.g.b+n);break;case 1:r.g.c=r.g.c+n,r.g.b=b.Math.max(1,r.g.b-n);break;case 4:r.g.d=t.e.b,r.g.a=b.Math.max(1,r.g.a+n);break;case 3:r.g.d=r.g.d+n,r.g.a=b.Math.max(1,r.g.a-n)}}}function m7n(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W;for(d=Vt(Or,ii,28,e.b.c.length,15,1),k=Vt(ift,te,273,e.b.c.length,0,1),m=Vt(z0,Bp,10,e.b.c.length,0,1),A=t.a,N=0,j=A.length;N0&&m[r]&&(U=q4(t.b,m[r],s)),W=b.Math.max(W,s.c.c.b+U);for(o=new J(T.e);o.a1)throw nt(new zn(SP));m||(o=S0(e,r.Kc().Pb()),h.Fc(o))}return P4t(t,e6t(t,e,n),h)}function uV(t,e,n){var r,s,o,h,d,m,k,T;if(Dg(t.e,e))m=(bo(),u(e,69).xk()?new xz(e,t):new YD(e,t)),HH(m.c,m.b),h_(m,u(n,16));else{for(T=Au(t.e.Dh(),e),r=u(t.g,124),h=0;h"}m!=null&&(e.a+=""+m)}else t.e?(d=t.e.zb,d!=null&&(e.a+=""+d)):(e.a+="?",t.b?(e.a+=" super ",dct(t.b,e)):t.f&&(e.a+=" extends ",dct(t.f,e)))}function T7n(t){t.b=null,t.a=null,t.o=null,t.q=null,t.v=null,t.w=null,t.B=null,t.p=null,t.Q=null,t.R=null,t.S=null,t.T=null,t.U=null,t.V=null,t.W=null,t.bb=null,t.eb=null,t.ab=null,t.H=null,t.db=null,t.c=null,t.d=null,t.f=null,t.n=null,t.r=null,t.s=null,t.u=null,t.G=null,t.J=null,t.e=null,t.j=null,t.i=null,t.g=null,t.k=null,t.t=null,t.F=null,t.I=null,t.L=null,t.M=null,t.O=null,t.P=null,t.$=null,t.N=null,t.Z=null,t.cb=null,t.K=null,t.D=null,t.A=null,t.C=null,t._=null,t.fb=null,t.X=null,t.Y=null,t.gb=!1,t.hb=!1}function C7n(t){var e,n,r,s;if(r=Cct((!t.c&&(t.c=TI(Oc(t.f))),t.c),0),t.e==0||t.a==0&&t.f!=-1&&t.e<0)return r;if(e=y4t(t)<0?1:0,n=t.e,s=(r.length+1+b.Math.abs(Xs(t.e)),new L4),e==1&&(s.a+="-"),t.e>0)if(n-=r.length-e,n>=0){for(s.a+="0.";n>xw.length;n-=xw.length)cte(s,xw);GJt(s,xw,Xs(n)),ni(s,(qn(e,r.length+1),r.substr(e)))}else n=e-n,ni(s,Ch(r,e,Xs(n))),s.a+=".",ni(s,vyt(r,Xs(n)));else{for(ni(s,(qn(e,r.length+1),r.substr(e)));n<-xw.length;n+=xw.length)cte(s,xw);GJt(s,xw,Xs(-n))}return s.a}function gct(t){var e,n,r,s,o,h,d,m,k;return!(t.k!=(Un(),Ts)||t.j.c.length<=1||(o=u(K(t,(Me(),ms)),101),o==(xa(),lu))||(s=(Yy(),(t.q?t.q:(wn(),wn(),j0))._b(Tv)?r=u(K(t,Tv),203):r=u(K(Ia(t),AA),203),r),s==KG)||!(s==Y5||s==W5)&&(h=Rt(Ht(Wy(t,LA))),e=u(K(t,eN),140),!e&&(e=new nvt(h,h,h,h)),k=fc(t,(ve(),Gn)),m=e.d+e.a+(k.gc()-1)*h,m>t.o.b||(n=fc(t,Jn),d=e.d+e.a+(n.gc()-1)*h,d>t.o.b)))}function _7n(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt;e.Ug("Orthogonal edge routing",1),k=Rt(Ht(K(t,(Me(),K5)))),n=Rt(Ht(K(t,U5))),r=Rt(Ht(K(t,Lw))),N=new Bit(0,n),tt=0,h=new _a(t.b,0),d=null,T=null,m=null,A=null;do T=h.b0?(j=(U-1)*n,d&&(j+=r),T&&(j+=r),je||Ie(De(ne(m,(ad(),gN)))))&&(s=0,o+=T.b+n,In(A.c,T),T=new Qyt(o,n),r=new bat(0,T.f,T,n),Fq(T,r),s=0),r.b.c.length==0||!Ie(De(ne(es(m),(ad(),idt))))&&(m.f>=r.o&&m.f<=r.f||r.a*.5<=m.f&&r.a*1.5>=m.f)?y5t(r,m):(h=new bat(r.s+r.r+n,T.f,T,n),Fq(T,h),y5t(h,m)),s=m.i+m.g;return In(A.c,T),A}function AS(t){var e,n,r,s;if(!(t.b==null||t.b.length<=2)&&!t.a){for(e=0,s=0;s=t.b[s+1])s+=2;else if(n0)for(r=new fl(u(Mi(t.a,o),21)),wn(),Ms(r,new w2t(e)),s=new _a(o.b,0);s.b0&&r>=-6?r>=0?JD(o,n-Xs(t.e),String.fromCharCode(46)):(sat(o,e-1,e-1,"0."),JD(o,e+1,nf(xw,0,-Xs(r)-1))):(n-e>=1&&(JD(o,e,String.fromCharCode(46)),++n),JD(o,n,String.fromCharCode(69)),r>0&&JD(o,++n,String.fromCharCode(43)),JD(o,++n,""+E_(Oc(r)))),t.g=o.a,t.g))}function F7n(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce;r=Rt(Ht(K(e,(Me(),GSt)))),Kt=u(K(e,MA),17).a,N=4,s=3,ie=20/Kt,j=!1,m=0,h=ki;do{for(o=m!=1,A=m!=0,Ce=0,tt=t.a,Tt=0,Bt=tt.length;TtKt)?(m=2,h=ki):m==0?(m=1,h=Ce):(m=0,h=Ce)):(j=Ce>=h||h-Ce0?1:vm(isNaN(r),isNaN(0)))>=0^($f(e0),(b.Math.abs(d)<=e0||d==0||isNaN(d)&&isNaN(0)?0:d<0?-1:d>0?1:vm(isNaN(d),isNaN(0)))>=0)?b.Math.max(d,r):($f(e0),(b.Math.abs(r)<=e0||r==0||isNaN(r)&&isNaN(0)?0:r<0?-1:r>0?1:vm(isNaN(r),isNaN(0)))>0?b.Math.sqrt(d*d+r*r):-b.Math.sqrt(d*d+r*r))}function cw(t,e){var n,r,s,o,h,d;if(e){if(!t.a&&(t.a=new i$),t.e==2){r$(t.a,e);return}if(e.e==1){for(s=0;s=fo?Lo(n,v5t(r)):IE(n,r&js),h=new nst(10,null,0),yun(t.a,h,d-1)):(n=(h.Mm().length+o,new jC),Lo(n,h.Mm())),e.e==0?(r=e.Km(),r>=fo?Lo(n,v5t(r)):IE(n,r&js)):Lo(n,e.Mm()),u(h,530).b=n.a}}function j7n(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt;if(!n.dc()){for(d=0,N=0,r=n.Kc(),U=u(r.Pb(),17).a;d1&&(m=k.Hg(m,t.a,d));return m.c.length==1?u(Oe(m,m.c.length-1),238):m.c.length==2?A7n((mn(0,m.c.length),u(m.c[0],238)),(mn(1,m.c.length),u(m.c[1],238)),h,o):null}function H7n(t,e,n){var r,s,o,h,d,m,k;for(n.Ug("Find roots",1),t.a.c.length=0,s=_r(e.b,0);s.b!=s.d.c;)r=u(Tr(s),39),r.b.b==0&&(Zt(r,(zi(),i2),(Nn(),!0)),pe(t.a,r));switch(t.a.c.length){case 0:o=new pat(0,e,"DUMMY_ROOT"),Zt(o,(zi(),i2),(Nn(),!0)),Zt(o,A1t,!0),Zr(e.b,o);break;case 1:break;default:for(h=new pat(0,e,QV),m=new J(t.a);m.a=b.Math.abs(r.b)?(r.b=0,o.d+o.a>h.d&&o.dh.c&&o.c0){if(e=new tmt(t.i,t.g),n=t.i,o=n<100?null:new bb(n),t.Tj())for(r=0;r0){for(d=t.g,k=t.i,B_(t),o=k<100?null:new bb(k),r=0;r>13|(t.m&15)<<9,s=t.m>>4&8191,o=t.m>>17|(t.h&255)<<5,h=(t.h&1048320)>>8,d=e.l&8191,m=e.l>>13|(e.m&15)<<9,k=e.m>>4&8191,T=e.m>>17|(e.h&255)<<5,A=(e.h&1048320)>>8,en=n*d,Je=r*d,On=s*d,Mn=o*d,er=h*d,m!=0&&(Je+=n*m,On+=r*m,Mn+=s*m,er+=o*m),k!=0&&(On+=n*k,Mn+=r*k,er+=s*k),T!=0&&(Mn+=n*T,er+=r*T),A!=0&&(er+=n*A),j=en&Il,U=(Je&511)<<13,N=j+U,tt=en>>22,ct=Je>>9,Tt=(On&262143)<<4,St=(Mn&31)<<17,W=tt+ct+Tt+St,Kt=On>>18,ie=Mn>>5,Ce=(er&4095)<<8,Bt=Kt+ie+Ce,W+=N>>22,N&=Il,Bt+=W>>22,W&=Il,Bt&=Og,ku(N,W,Bt)}function Cge(t){var e,n,r,s,o,h,d;if(d=u(Oe(t.j,0),12),d.g.c.length!=0&&d.e.c.length!=0)throw nt(new Fo("Interactive layout does not support NORTH/SOUTH ports with incoming _and_ outgoing edges."));if(d.g.c.length!=0){for(o=ns,n=new J(d.g);n.a4)if(t.fk(e)){if(t.al()){if(s=u(e,54),r=s.Eh(),m=r==t.e&&(t.ml()?s.yh(s.Fh(),t.il())==t.jl():-1-s.Fh()==t.Lj()),t.nl()&&!m&&!r&&s.Jh()){for(o=0;o0&&Cfe(t,d,A);for(s=new J(A);s.at.d[h.p]&&(n+=f3t(t.b,o)*u(m.b,17).a,Ab(t.a,fe(o)));for(;!RC(t.a);)U3t(t.b,u(V6(t.a),17).a)}return n}function W7n(t,e){var n,r,s,o,h,d,m,k,T,A;if(T=u(K(t,(ae(),_c)),64),r=u(Oe(t.j,0),12),T==(ve(),Hn)?Qs(r,vr):T==vr&&Qs(r,Hn),u(K(e,(Me(),Sw)),181).Hc((Kl(),Fw))){if(m=Rt(Ht(K(t,OT))),k=Rt(Ht(K(t,PT))),h=Rt(Ht(K(t,O3))),d=u(K(e,D3),21),d.Hc((wl(),$g)))for(n=k,A=t.o.a/2-r.n.a,o=new J(r.f);o.a0&&(k=t.n.a/o);break;case 2:case 4:s=t.i.o.b,s>0&&(k=t.n.b/s)}Zt(t,(ae(),yv),k)}if(m=t.o,h=t.a,r)h.a=r.a,h.b=r.b,t.d=!0;else if(e!=md&&e!=c2&&d!=gc)switch(d.g){case 1:h.a=m.a/2;break;case 2:h.a=m.a,h.b=m.b/2;break;case 3:h.a=m.a/2,h.b=m.b;break;case 4:h.b=m.b/2}else h.a=m.a/2,h.b=m.b/2}function LS(t){var e,n,r,s,o,h,d,m,k,T;if(t.Pj())if(T=t.Ej(),m=t.Qj(),T>0)if(e=new T4t(t.pj()),n=T,o=n<100?null:new bb(n),rI(t,n,e.g),s=n==1?t.Ij(4,Lt(e,0),null,0,m):t.Ij(6,e,null,-1,m),t.Mj()){for(r=new Zn(e);r.e!=r.i.gc();)o=t.Oj(sr(r),o);o?(o.nj(s),o.oj()):t.Jj(s)}else o?(o.nj(s),o.oj()):t.Jj(s);else rI(t,t.Ej(),t.Fj()),t.Jj(t.Ij(6,(wn(),so),null,-1,m));else if(t.Mj())if(T=t.Ej(),T>0){for(d=t.Fj(),k=T,rI(t,T,d),o=k<100?null:new bb(k),r=0;r1&&Zu(h)*Vl(h)/2>d[0]){for(o=0;od[o];)++o;U=new vp(W,0,o+1),A=new Dq(U),T=Zu(h)/Vl(h),m=Ect(A,e,new k6,n,r,s,T),Ei(y1(A.e),m),z6(S7(N,A),K7),j=new vp(W,o+1,W.c.length),cxt(N,j),W.c.length=0,k=0,Cte(d,d.length,0)}else tt=N.b.c.length==0?null:Oe(N.b,0),tt!=null&&Qst(N,0),k>0&&(d[k]=d[k-1]),d[k]+=Zu(h)*Vl(h),++k,In(W.c,h);return W}function tTn(t,e){var n,r,s,o;n=e.b,o=new fl(n.j),s=0,r=n.j,r.c.length=0,Sm(u(J2(t.b,(ve(),Hn),(Hm(),wv)),15),n),s=pO(o,s,new nR,r),Sm(u(J2(t.b,Hn,Jb),15),n),s=pO(o,s,new J9,r),Sm(u(J2(t.b,Hn,bv),15),n),Sm(u(J2(t.b,Jn,wv),15),n),Sm(u(J2(t.b,Jn,Jb),15),n),s=pO(o,s,new rR,r),Sm(u(J2(t.b,Jn,bv),15),n),Sm(u(J2(t.b,vr,wv),15),n),s=pO(o,s,new iR,r),Sm(u(J2(t.b,vr,Jb),15),n),s=pO(o,s,new sR,r),Sm(u(J2(t.b,vr,bv),15),n),Sm(u(J2(t.b,Gn,wv),15),n),s=pO(o,s,new ZB,r),Sm(u(J2(t.b,Gn,Jb),15),n),Sm(u(J2(t.b,Gn,bv),15),n)}function eTn(t,e,n){var r,s,o,h,d,m,k,T,A,N,j;for(d=new J(e);d.a.5?ct-=h*2*(U-.5):U<.5&&(ct+=o*2*(.5-U)),s=d.d.b,cttt.a-W-T&&(ct=tt.a-W-T),d.n.a=e+ct}}function sTn(t){var e,n,r,s,o;if(r=u(K(t,(Me(),Du)),171),r==(Ph(),t2)){for(n=new nr(ir(ca(t).a.Kc(),new q));Sr(n);)if(e=u(lr(n),18),!jie(e))throw nt(new lp(Out+wO(t)+"' has its layer constraint set to FIRST_SEPARATE, but has at least one incoming edge. FIRST_SEPARATE nodes must not have incoming edges."))}else if(r==_3){for(o=new nr(ir(As(t).a.Kc(),new q));Sr(o);)if(s=u(lr(o),18),!jie(s))throw nt(new lp(Out+wO(t)+"' has its layer constraint set to LAST_SEPARATE, but has at least one outgoing edge. LAST_SEPARATE nodes must not have outgoing edges."))}}function VO(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U;if(t.e&&t.c.c>19&&(e=c7(e),m=!m),h=Hxn(e),o=!1,s=!1,r=!1,t.h==tP&&t.m==0&&t.l==0)if(s=!0,o=!0,h==-1)t=hQt((UE(),KTt)),r=!0,m=!m;else return d=M6t(t,h),m&&gat(d),n&&(Wb=ku(0,0,0)),d;else t.h>>19&&(o=!0,t=c7(t),r=!0,m=!m);return h!=-1?mpn(t,h,m,o,n):bxt(t,e)<0?(n&&(o?Wb=c7(t):Wb=ku(t.l,t.m,t.h)),ku(0,0,0)):z8n(r?t:ku(t.l,t.m,t.h),e,m,o,s,n)}function mct(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U;if(h=t.e,m=e.e,h==0)return e;if(m==0)return t;if(o=t.d,d=e.d,o+d==2)return n=ia(t.a[0],Eo),r=ia(e.a[0],Eo),h==m?(T=Xa(n,r),U=qr(T),j=qr(Eb(T,32)),j==0?new vg(h,U):new H2(h,2,ot(st(Or,1),ii,28,15,[U,j]))):(Gd(),K$(h<0?ef(r,n):ef(n,r),0)?Fb(h<0?ef(r,n):ef(n,r)):__(Fb(Ep(h<0?ef(r,n):ef(n,r)))));if(h==m)N=h,A=o>=d?Sst(t.a,o,e.a,d):Sst(e.a,d,t.a,o);else{if(s=o!=d?o>d?1:-1:W4t(t.a,e.a,o),s==0)return Gd(),lA;s==1?(N=h,A=Cst(t.a,o,e.a,d)):(N=m,A=Cst(e.a,d,t.a,o))}return k=new H2(N,A.length,A),I_(k),k}function oTn(t,e){var n,r,s,o,h,d,m;if(!(t.g>e.f||e.g>t.f)){for(n=0,r=0,h=t.w.a.ec().Kc();h.Ob();)s=u(h.Pb(),12),_at(hc(ot(st(ua,1),le,8,0,[s.i.n,s.n,s.a])).b,e.g,e.f)&&++n;for(d=t.r.a.ec().Kc();d.Ob();)s=u(d.Pb(),12),_at(hc(ot(st(ua,1),le,8,0,[s.i.n,s.n,s.a])).b,e.g,e.f)&&--n;for(m=e.w.a.ec().Kc();m.Ob();)s=u(m.Pb(),12),_at(hc(ot(st(ua,1),le,8,0,[s.i.n,s.n,s.a])).b,t.g,t.f)&&++r;for(o=e.r.a.ec().Kc();o.Ob();)s=u(o.Pb(),12),_at(hc(ot(st(ua,1),le,8,0,[s.i.n,s.n,s.a])).b,t.g,t.f)&&--r;n=0)return n;switch(Im(Ro(t,n))){case 2:{if(hn("",Sp(t,n.qk()).xe())){if(m=mI(Ro(t,n)),d=NE(Ro(t,n)),T=P6t(t,e,m,d),T)return T;for(s=lkt(t,e),h=0,A=s.gc();h1)throw nt(new zn(SP));for(T=Au(t.e.Dh(),e),r=u(t.g,124),h=0;h1,k=new Z1(N.b);cc(k.a)||cc(k.b);)m=u(cc(k.a)?et(k.a):et(k.b),18),A=m.c==N?m.d:m.c,b.Math.abs(hc(ot(st(ua,1),le,8,0,[A.i.n,A.n,A.a])).b-h.b)>1&&W6n(t,m,h,o,N)}}function dTn(t){var e,n,r,s,o,h;if(s=new _a(t.e,0),r=new _a(t.a,0),t.d)for(n=0;ndlt;){for(o=e,h=0;b.Math.abs(e-o)0),s.a.Xb(s.c=--s.b),AEn(t,t.b-h,o,r,s),cr(s.b0),r.a.Xb(r.c=--r.b)}if(!t.d)for(n=0;n0?(t.f[T.p]=j/(T.e.c.length+T.g.c.length),t.c=b.Math.min(t.c,t.f[T.p]),t.b=b.Math.max(t.b,t.f[T.p])):d&&(t.f[T.p]=j)}}function pTn(t){t.b=null,t.bb=null,t.fb=null,t.qb=null,t.a=null,t.c=null,t.d=null,t.e=null,t.f=null,t.n=null,t.M=null,t.L=null,t.Q=null,t.R=null,t.K=null,t.db=null,t.eb=null,t.g=null,t.i=null,t.j=null,t.k=null,t.gb=null,t.o=null,t.p=null,t.q=null,t.r=null,t.$=null,t.ib=null,t.S=null,t.T=null,t.t=null,t.s=null,t.u=null,t.v=null,t.w=null,t.B=null,t.A=null,t.C=null,t.D=null,t.F=null,t.G=null,t.H=null,t.I=null,t.J=null,t.P=null,t.Z=null,t.U=null,t.V=null,t.W=null,t.X=null,t.Y=null,t._=null,t.ab=null,t.cb=null,t.hb=null,t.nb=null,t.lb=null,t.mb=null,t.ob=null,t.pb=null,t.jb=null,t.kb=null,t.N=!1,t.O=!1}function bTn(t,e,n){var r,s,o,h;for(n.Ug("Graph transformation ("+t.a+")",1),h=Bm(e.a),o=new J(e.b);o.a=d.b.c)&&(d.b=e),(!d.c||e.c<=d.c.c)&&(d.d=d.c,d.c=e),(!d.e||e.d>=d.e.d)&&(d.e=e),(!d.f||e.d<=d.f.d)&&(d.f=e);return r=new kH((a7(),pv)),CI(t,q3e,new hl(ot(st($P,1),Ln,382,0,[r]))),h=new kH(y3),CI(t,z3e,new hl(ot(st($P,1),Ln,382,0,[h]))),s=new kH(v3),CI(t,$3e,new hl(ot(st($P,1),Ln,382,0,[s]))),o=new kH(O5),CI(t,j3e,new hl(ot(st($P,1),Ln,382,0,[o]))),Hot(r.c,pv),Hot(s.c,v3),Hot(o.c,O5),Hot(h.c,y3),d.a.c.length=0,Hs(d.a,r.c),Hs(d.a,Oh(s.c)),Hs(d.a,o.c),Hs(d.a,Oh(h.c)),d}function vTn(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U;for(e.Ug($2e,1),j=Rt(Ht(ne(t,(D0(),B3)))),h=Rt(Ht(ne(t,(ad(),WA)))),d=u(ne(t,KA),107),m4t((!t.a&&(t.a=new Jt(wi,t,10,11)),t.a)),T=xge((!t.a&&(t.a=new Jt(wi,t,10,11)),t.a),j,h),!t.a&&(t.a=new Jt(wi,t,10,11)),k=new J(T);k.a0&&(t.a=m+(j-1)*o,e.c.b+=t.a,e.f.b+=t.a)),U.a.gc()!=0&&(N=new Bit(1,o),j=Bkt(N,e,U,W,e.f.b+m-e.c.b),j>0&&(e.f.b+=m+(j-1)*o))}function Age(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt;for(T=Rt(Ht(K(t,(Me(),_v)))),r=Rt(Ht(K(t,nAt))),N=new ZM,Zt(N,_v,T+r),k=e,ct=k.d,W=k.c.i,Tt=k.d.i,tt=omt(W.c),St=omt(Tt.c),s=new ge,A=tt;A<=St;A++)d=new Lg(t),C(d,(Un(),ha)),Zt(d,(ae(),Di),k),Zt(d,ms,(xa(),lu)),Zt(d,qG,N),j=u(Oe(t.b,A),30),A==tt?Xy(d,j.a.c.length-n,j):Ca(d,j),Bt=Rt(Ht(K(k,zp))),Bt<0&&(Bt=0,Zt(k,zp,Bt)),d.o.b=Bt,U=b.Math.floor(Bt/2),h=new Kc,Qs(h,(ve(),Gn)),uc(h,d),h.n.b=U,m=new Kc,Qs(m,Jn),uc(m,d),m.n.b=U,ya(k,h),o=new Pm,Yo(o,k),Zt(o,qo,null),Ya(o,m),ya(o,ct),cvn(d,k,o),In(s.c,o),k=o;return s}function vct(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St;for(m=u(Op(t,(ve(),Gn)).Kc().Pb(),12).e,j=u(Op(t,Jn).Kc().Pb(),12).g,d=m.c.length,St=Q1(u(Oe(t.j,0),12));d-- >0;){for(W=(mn(0,m.c.length),u(m.c[0],18)),s=(mn(0,j.c.length),u(j.c[0],18)),Tt=s.d.e,o=Wo(Tt,s,0),Hfn(W,s.d,o),Ya(s,null),ya(s,null),U=W.a,e&&Zr(U,new eo(St)),r=_r(s.a,0);r.b!=r.d.c;)n=u(Tr(r),8),Zr(U,new eo(n));for(ct=W.b,N=new J(s.b);N.ah)&&qs(t.b,u(tt.b,18));++d}o=h}}}function Pkt(t,e){var n;if(e==null||hn(e,Hu)||e.length==0&&t.k!=(Pp(),Wk))return null;switch(t.k.g){case 1:return wH(e,aT)?(Nn(),dT):wH(e,Dlt)?(Nn(),Yb):null;case 2:try{return fe(oh(e,Va,ki))}catch(r){if(r=is(r),At(r,130))return null;throw nt(r)}case 4:try{return Jy(e)}catch(r){if(r=is(r),At(r,130))return null;throw nt(r)}case 3:return e;case 5:return Wce(t),c1e(t,e);case 6:return Wce(t),yxn(t,t.a,e);case 7:try{return n=D5n(t),n.cg(e),n}catch(r){if(r=is(r),At(r,33))return null;throw nt(r)}default:throw nt(new Fo("Invalid type set for this layout option."))}}function Nkt(t){var e;switch(t.d){case 1:{if(t.Sj())return t.o!=-2;break}case 2:{if(t.Sj())return t.o==-2;break}case 3:case 5:case 4:case 6:case 7:return t.o>-2;default:return!1}switch(e=t.Rj(),t.p){case 0:return e!=null&&Ie(De(e))!=a_(t.k,0);case 1:return e!=null&&u(e,222).a!=qr(t.k)<<24>>24;case 2:return e!=null&&u(e,180).a!=(qr(t.k)&js);case 6:return e!=null&&a_(u(e,168).a,t.k);case 5:return e!=null&&u(e,17).a!=qr(t.k);case 7:return e!=null&&u(e,191).a!=qr(t.k)<<16>>16;case 3:return e!=null&&Rt(Ht(e))!=t.j;case 4:return e!=null&&u(e,161).a!=t.j;default:return e==null?t.n!=null:!Ci(e,t.n)}}function UO(t,e,n){var r,s,o,h;return t.ol()&&t.nl()&&(h=Dit(t,u(n,58)),$t(h)!==$t(n))?(t.xj(e),t.Dj(e,Dse(t,e,h)),t.al()&&(o=(s=u(n,54),t.ml()?t.kl()?s.Th(t.b,wo(u(Tn(ju(t.b),t.Lj()),19)).n,u(Tn(ju(t.b),t.Lj()).Hk(),29).kk(),null):s.Th(t.b,ss(s.Dh(),wo(u(Tn(ju(t.b),t.Lj()),19))),null,null):s.Th(t.b,-1-t.Lj(),null,null)),!u(h,54).Ph()&&(o=(r=u(h,54),t.ml()?t.kl()?r.Rh(t.b,wo(u(Tn(ju(t.b),t.Lj()),19)).n,u(Tn(ju(t.b),t.Lj()).Hk(),29).kk(),o):r.Rh(t.b,ss(r.Dh(),wo(u(Tn(ju(t.b),t.Lj()),19))),null,o):r.Rh(t.b,-1-t.Lj(),null,o))),o&&o.oj()),zl(t.b)&&t.Jj(t.Ij(9,n,h,e,!1)),h):n}function Lge(t){var e,n,r,s,o,h,d,m,k,T;for(r=new ge,h=new J(t.e.a);h.a0&&(h=b.Math.max(h,Ooe(t.C.b+r.d.b,s))),T=r,A=s,N=o;t.C&&t.C.c>0&&(j=N+t.C.c,k&&(j+=T.d.c),h=b.Math.max(h,(K1(),$f(cd),b.Math.abs(A-1)<=cd||A==1||isNaN(A)&&isNaN(1)?0:j/(1-A)))),n.n.b=0,n.a.a=h}function Dge(t,e){var n,r,s,o,h,d,m,k,T,A,N,j;if(n=u(Mo(t.b,e),127),m=u(u(Mi(t.r,e),21),87),m.dc()){n.n.d=0,n.n.a=0;return}for(k=t.u.Hc((wl(),$g)),h=0,t.A.Hc((Kl(),Fw))&&a0e(t,e),d=m.Kc(),T=null,N=0,A=0;d.Ob();)r=u(d.Pb(),117),o=Rt(Ht(r.b.of((az(),NU)))),s=r.b.Mf().b,T?(j=A+T.d.a+t.w+r.d.d,h=b.Math.max(h,(K1(),$f(cd),b.Math.abs(N-o)<=cd||N==o||isNaN(N)&&isNaN(o)?0:j/(o-N)))):t.C&&t.C.d>0&&(h=b.Math.max(h,Ooe(t.C.d+r.d.d,o))),T=r,N=o,A=s;t.C&&t.C.a>0&&(j=A+t.C.a,k&&(j+=T.d.a),h=b.Math.max(h,(K1(),$f(cd),b.Math.abs(N-1)<=cd||N==1||isNaN(N)&&isNaN(1)?0:j/(1-N)))),n.n.d=0,n.a.b=h}function kTn(t,e,n,r,s,o,h,d){var m,k,T,A,N,j,U,W,tt,ct;if(U=!1,k=q6t(n.q,e.f+e.b-n.q.f),j=r.f>e.b&&d,ct=s-(n.q.e+k-h),A=(m=SS(r,ct,!1),m.a),j&&A>r.f)return!1;if(j){for(N=0,tt=new J(e.d);tt.a=(mn(o,t.c.length),u(t.c[o],186)).e,!j&&A>e.b&&!T)?!1:((T||j||A<=e.b)&&(T&&A>e.b?(n.d=A,PI(n,bfe(n,A))):(Phe(n.q,k),n.c=!0),PI(r,s-(n.s+n.r)),bO(r,n.q.e+n.q.d,e.f),Fq(e,r),t.c.length>o&&(vO((mn(o,t.c.length),u(t.c[o],186)),r),(mn(o,t.c.length),u(t.c[o],186)).a.c.length==0&&xp(t,o)),U=!0),U)}function Ige(t,e,n){var r,s,o,h,d,m;for(this.g=t,d=e.d.length,m=n.d.length,this.d=Vt(z0,Bp,10,d+m,0,1),h=0;h0?Vst(this,this.f/this.a):W1(e.g,e.d[0]).a!=null&&W1(n.g,n.d[0]).a!=null?Vst(this,(Rt(W1(e.g,e.d[0]).a)+Rt(W1(n.g,n.d[0]).a))/2):W1(e.g,e.d[0]).a!=null?Vst(this,W1(e.g,e.d[0]).a):W1(n.g,n.d[0]).a!=null&&Vst(this,W1(n.g,n.d[0]).a)}function ETn(t,e){var n,r,s,o,h,d,m,k,T,A;for(t.a=new lee(spn(iL)),r=new J(e.a);r.a=1&&(tt-h>0&&A>=0?(m.n.a+=W,m.n.b+=o*h):tt-h<0&&T>=0&&(m.n.a+=W*tt,m.n.b+=o));t.o.a=e.a,t.o.b=e.b,Zt(t,(Me(),Sw),(Kl(),r=u(m1(hL),9),new Eh(r,u(Ff(r,r.length),9),0)))}function _Tn(t,e,n,r,s,o){var h;if(!(e==null||!Bat(e,TIt,CIt)))throw nt(new zn("invalid scheme: "+e));if(!t&&!(n!=null&&Fd(n,qu(35))==-1&&n.length>0&&(qn(0,n.length),n.charCodeAt(0)!=47)))throw nt(new zn("invalid opaquePart: "+n));if(t&&!(e!=null&&DD(HK,e.toLowerCase()))&&!(n==null||!Bat(n,pL,bL)))throw nt(new zn(gme+n));if(t&&e!=null&&DD(HK,e.toLowerCase())&&!syn(n))throw nt(new zn(gme+n));if(!h2n(r))throw nt(new zn("invalid device: "+r));if(!Ypn(s))throw h=s==null?"invalid segments: null":"invalid segment: "+Upn(s),nt(new zn(h));if(!(o==null||Fd(o,qu(35))==-1))throw nt(new zn("invalid query: "+o))}function STn(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct;if(n.Ug("Network simplex layering",1),t.b=e,ct=u(K(e,(Me(),MA)),17).a*4,tt=t.b.a,tt.c.length<1){n.Vg();return}for(o=C8n(t,tt),W=null,s=_r(o,0);s.b!=s.d.c;){for(r=u(Tr(s),15),d=ct*Xs(b.Math.sqrt(r.gc())),h=$8n(r),ect(nwt(Snn(rwt(lit(h),d),W),!0),n.eh(1)),N=t.b.b,U=new J(h.a);U.a1)for(W=Vt(Or,ii,28,t.b.b.c.length,15,1),A=0,k=new J(t.b.b);k.a0){mH(t,n,0),n.a+=String.fromCharCode(r),s=Y2n(e,o),mH(t,n,s),o+=s-1;continue}r==39?o+10&&U.a<=0){m.c.length=0,In(m.c,U);break}j=U.i-U.d,j>=d&&(j>d&&(m.c.length=0,d=j),In(m.c,U))}m.c.length!=0&&(h=u(Oe(m,_H(s,m.c.length)),118),St.a.Bc(h)!=null,h.g=T++,Ekt(h,e,n,r),m.c.length=0)}for(tt=t.c.length+1,N=new J(t);N.aVs||e.o==Mw&&T=d&&s<=m)d<=s&&o<=m?(n[T++]=s,n[T++]=o,r+=2):d<=s?(n[T++]=s,n[T++]=m,t.b[r]=m+1,h+=2):o<=m?(n[T++]=d,n[T++]=o,r+=2):(n[T++]=d,n[T++]=m,t.b[r]=m+1);else if(mqb)&&d<10);swt(t.c,new Hx),Fge(t),kun(t.c),wTn(t.f)}function FTn(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W;for(n=u(K(t,(Me(),ms)),101),h=t.f,o=t.d,d=h.a+o.b+o.c,m=0-o.d-t.c.b,T=h.b+o.d+o.a-t.c.b,k=new ge,A=new ge,s=new J(e);s.a=2){for(m=_r(n,0),h=u(Tr(m),8),d=u(Tr(m),8);d.a0&&tO(k,!0,(Rs(),Jo)),d.k==(Un(),Ds)&&vee(k),di(t.f,d,e)}}function jTn(t){var e,n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt;for(s=u(K(t,(zi(),qA)),27),k=ki,T=ki,d=Va,m=Va,St=_r(t.b,0);St.b!=St.d.c;)ct=u(Tr(St),39),j=ct.e,U=ct.f,k=b.Math.min(k,j.a-U.a/2),T=b.Math.min(T,j.b-U.b/2),d=b.Math.max(d,j.a+U.a/2),m=b.Math.max(m,j.b+U.b/2);for(N=u(ne(s,(xc(),dLt)),107),Tt=_r(t.b,0);Tt.b!=Tt.d.c;)ct=u(Tr(Tt),39),A=K(ct,qA),At(A,207)&&(o=u(A,27),xh(o,ct.e.a,ct.e.b),PO(o,ct));for(tt=_r(t.a,0);tt.b!=tt.d.c;)W=u(Tr(tt),65),r=u(K(W,qA),74),r&&(e=W.a,n=d5(r,!0,!0),zO(e,n));Bt=d-k+(N.b+N.c),h=m-T+(N.d+N.a),Ie(De(ne(s,(si(),R3))))||nv(s,Bt,h,!1,!1),Oi(s,ix,Bt-(N.b+N.c)),Oi(s,rx,h-(N.d+N.a))}function Rge(t,e){var n,r,s,o,h,d,m,k,T,A;for(m=!0,s=0,k=t.g[e.p],T=e.o.b+t.o,n=t.d[e.p][2],Sh(t.b,k,fe(u(Oe(t.b,k),17).a-1+n)),Sh(t.c,k,Rt(Ht(Oe(t.c,k)))-T+n*t.f),++k,k>=t.j?(++t.j,pe(t.b,fe(1)),pe(t.c,T)):(r=t.d[e.p][1],Sh(t.b,k,fe(u(Oe(t.b,k),17).a+1-r)),Sh(t.c,k,Rt(Ht(Oe(t.c,k)))+T-r*t.f)),(t.r==(sf(),nN)&&(u(Oe(t.b,k),17).a>t.k||u(Oe(t.b,k-1),17).a>t.k)||t.r==rN&&(Rt(Ht(Oe(t.c,k)))>t.n||Rt(Ht(Oe(t.c,k-1)))>t.n))&&(m=!1),h=new nr(ir(ca(e).a.Kc(),new q));Sr(h);)o=u(lr(h),18),d=o.c.i,t.g[d.p]==k&&(A=Rge(t,d),s=s+u(A.a,17).a,m=m&&Ie(De(A.b)));return t.g[e.p]=k,s=s+t.d[e.p][0],new Ys(fe(s),(Nn(),!!m))}function jge(t,e){var n,r,s,o,h;n=Rt(Ht(K(e,(Me(),Yf)))),n<2&&Zt(e,Yf,2),r=u(K(e,fh),88),r==(Rs(),wd)&&Zt(e,fh,oH(e)),s=u(K(e,n6e),17),s.a==0?Zt(e,(ae(),Vk),new jat):Zt(e,(ae(),Vk),new lq(s.a)),o=De(K(e,SA)),o==null&&Zt(e,SA,(Nn(),$t(K(e,Rg))===$t((_g(),UT)))),xs(new ln(null,new gn(e.a,16)),new cp(t)),xs(lc(new ln(null,new gn(e.b,16)),new d4),new Xj(t)),h=new Oge(e),Zt(e,(ae(),H5),h),wI(t.a),x1(t.a,(Ha(),Wf),u(K(e,Tw),188)),x1(t.a,$0,u(K(e,_w),188)),x1(t.a,Yc,u(K(e,_A),188)),x1(t.a,ou,u(K(e,$G),188)),x1(t.a,Qo,jgn(u(K(e,Rg),223))),umt(t.a,PCn(e)),Zt(e,zft,VO(t.a,e))}function Bkt(t,e,n,r,s){var o,h,d,m,k,T,A,N,j,U,W,tt,ct;for(A=new Er,h=new ge,Bfe(t,n,t.d.Ag(),h,A),Bfe(t,r,t.d.Bg(),h,A),t.b=.2*(W=H1e(lc(new ln(null,new gn(h,16)),new vZ)),tt=H1e(lc(new ln(null,new gn(h,16)),new yZ)),b.Math.min(W,tt)),o=0,d=0;d=2&&(ct=cde(h,!0,N),!t.e&&(t.e=new mUt(t)),U2n(t.e,ct,h,t.b)),Vhe(h,N),UTn(h),j=-1,T=new J(h);T.ad)}function $ge(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt;for(k=ns,T=ns,d=Vs,m=Vs,N=new J(e.i);N.a-1){for(s=_r(d,0);s.b!=s.d.c;)r=u(Tr(s),131),r.v=h;for(;d.b!=0;)for(r=u(bot(d,0),131),n=new J(r.i);n.a-1){for(o=new J(d);o.a0)&&(lt(m,b.Math.min(m.o,s.o-1)),it(m,m.i-1),m.i==0&&In(d.c,m))}}function qge(t,e,n,r,s){var o,h,d,m;return m=ns,h=!1,d=Akt(t,ra(new se(e.a,e.b),t),Ei(new se(n.a,n.b),s),ra(new se(r.a,r.b),n)),o=!!d&&!(b.Math.abs(d.a-t.a)<=uv&&b.Math.abs(d.b-t.b)<=uv||b.Math.abs(d.a-e.a)<=uv&&b.Math.abs(d.b-e.b)<=uv),d=Akt(t,ra(new se(e.a,e.b),t),n,s),d&&((b.Math.abs(d.a-t.a)<=uv&&b.Math.abs(d.b-t.b)<=uv)==(b.Math.abs(d.a-e.a)<=uv&&b.Math.abs(d.b-e.b)<=uv)||o?m=b.Math.min(m,A_(ra(d,n))):h=!0),d=Akt(t,ra(new se(e.a,e.b),t),r,s),d&&(h||(b.Math.abs(d.a-t.a)<=uv&&b.Math.abs(d.b-t.b)<=uv)==(b.Math.abs(d.a-e.a)<=uv&&b.Math.abs(d.b-e.b)<=uv)||o)&&(m=b.Math.min(m,A_(ra(d,r)))),m}function Hge(t){bm(t,new ow(l$(dm(lm(fm(hm(new cg,Vb),$be),"Minimizes the stress within a layout using stress majorization. Stress exists if the euclidean distance between a pair of nodes doesn't match their graph theoretic distance, that is, the shortest path between the two nodes. The method allows to specify individual edge lengths."),new q1),Lu))),he(t,Vb,jS,_e(uCt)),he(t,Vb,AV,(Nn(),!0)),he(t,Vb,T5,_e(C3e)),he(t,Vb,Lk,_e(_3e)),he(t,Vb,Ak,_e(S3e)),he(t,Vb,Z7,_e(T3e)),he(t,Vb,$S,_e(hCt)),he(t,Vb,tT,_e(A3e)),he(t,Vb,P8t,_e(cCt)),he(t,Vb,F8t,_e(aCt)),he(t,Vb,B8t,_e(oCt)),he(t,Vb,R8t,_e(lCt)),he(t,Vb,N8t,_e(VU))}function GTn(t){var e,n,r,s,o,h,d,m;for(e=null,r=new J(t);r.a0&&n.c==0&&(!e&&(e=new ge),In(e.c,n));if(e)for(;e.c.length!=0;){if(n=u(xp(e,0),239),n.b&&n.b.c.length>0){for(o=(!n.b&&(n.b=new ge),new J(n.b));o.aWo(t,n,0))return new Ys(s,n)}else if(Rt(W1(s.g,s.d[0]).a)>Rt(W1(n.g,n.d[0]).a))return new Ys(s,n)}for(d=(!n.e&&(n.e=new ge),n.e).Kc();d.Ob();)h=u(d.Pb(),239),m=(!h.b&&(h.b=new ge),h.b),Fy(0,m.c.length),YC(m.c,0,n),h.c==m.c.length&&In(e.c,h)}return null}function KTn(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct;for(e.Ug("Interactive crossing minimization",1),h=0,o=new J(t.b);o.a0&&(n+=m.n.a+m.o.a/2,++A),U=new J(m.j);U.a0&&(n/=A),ct=Vt(wa,Io,28,r.a.c.length,15,1),d=0,k=new J(r.a);k.a=d&&s<=m)d<=s&&o<=m?r+=2:d<=s?(t.b[r]=m+1,h+=2):o<=m?(n[T++]=s,n[T++]=d-1,r+=2):(n[T++]=s,n[T++]=d-1,t.b[r]=m+1,h+=2);else if(m2?(T=new ge,Hs(T,new vp(ct,1,ct.b)),o=Mpe(T,St+t.a),Tt=new $ot(o),Yo(Tt,e),In(n.c,Tt)):r?Tt=u(tr(t.b,M0(e)),272):Tt=u(tr(t.b,Bb(e)),272),m=M0(e),r&&(m=Bb(e)),h=G3n(tt,m),k=St+t.a,h.a?(k+=b.Math.abs(tt.b-A.b),W=new se(A.a,(A.b+tt.b)/2)):(k+=b.Math.abs(tt.a-A.a),W=new se((A.a+tt.a)/2,A.b)),r?di(t.d,e,new nxt(Tt,h,W,k)):di(t.c,e,new nxt(Tt,h,W,k)),di(t.b,e,Tt),U=(!e.n&&(e.n=new Jt(Oo,e,1,7)),e.n),j=new Zn(U);j.e!=j.i.gc();)N=u(sr(j),135),s=BO(t,N,!0,0,0),In(n.c,s)}function WTn(t){var e,n,r,s,o,h,d;if(!t.A.dc()){if(t.A.Hc((Kl(),IN))&&(u(Mo(t.b,(ve(),Hn)),127).k=!0,u(Mo(t.b,vr),127).k=!0,e=t.q!=(xa(),G0)&&t.q!=lu,mD(u(Mo(t.b,Jn),127),e),mD(u(Mo(t.b,Gn),127),e),mD(t.g,e),t.A.Hc(Fw)&&(u(Mo(t.b,Hn),127).j=!0,u(Mo(t.b,vr),127).j=!0,u(Mo(t.b,Jn),127).k=!0,u(Mo(t.b,Gn),127).k=!0,t.g.k=!0)),t.A.Hc(DN))for(t.a.j=!0,t.a.k=!0,t.g.j=!0,t.g.k=!0,d=t.B.Hc((Dl(),fL)),s=Wat(),o=0,h=s.length;o0),u(T.a.Xb(T.c=--T.b),18));o!=r&&T.b>0;)t.a[o.p]=!0,t.a[r.p]=!0,o=(cr(T.b>0),u(T.a.Xb(T.c=--T.b),18));T.b>0&&Ul(T)}}function Uge(t,e,n){var r,s,o,h,d,m,k,T,A,N,j;if(!t.b)return!1;for(h=null,N=null,m=new Mst(null,null),s=1,m.a[1]=t.b,A=m;A.a[s];)k=s,d=N,N=A,A=A.a[s],r=t.a.Ne(e,A.d),s=r<0?0:1,r==0&&(!n.c||Ic(A.e,n.d))&&(h=A),!(A&&A.b)&&!vy(A.a[s])&&(vy(A.a[1-s])?N=N.a[k]=Hq(A,s):vy(A.a[1-s])||(j=N.a[1-k],j&&(!vy(j.a[1-k])&&!vy(j.a[k])?(N.b=!1,j.b=!0,A.b=!0):(o=d.a[1]==N?1:0,vy(j.a[k])?d.a[o]=yre(N,k):vy(j.a[1-k])&&(d.a[o]=Hq(N,k)),A.b=d.a[o].b=!0,d.a[o].a[0].b=!1,d.a[o].a[1].b=!1))));return h&&(n.b=!0,n.d=h.e,A!=h&&(T=new Mst(A.d,A.e),Qyn(t,m,h,T),N==h&&(N=T)),N.a[N.a[1]==A?1:0]=A.a[A.a[0]?0:1],--t.c),t.b=m.a[1],t.b&&(t.b.b=!1),n.b}function QTn(t){var e,n,r,s,o,h,d,m,k,T,A,N;for(s=new J(t.a.a.b);s.a0?s-=864e5:s+=864e5,m=new Kmt(Xa(Oc(e.q.getTime()),s))),T=new L4,k=t.a.length,o=0;o=97&&r<=122||r>=65&&r<=90){for(h=o+1;h=k)throw nt(new zn("Missing trailing '"));h+1=14&&T<=16))?e.a._b(r)?(n.a?ni(n.a,n.b):n.a=new Jl(n.d),c_(n.a,"[...]")):(d=X2(r),k=new v_(e),yg(n,Kge(d,k))):At(r,183)?yg(n,L4n(u(r,183))):At(r,195)?yg(n,gyn(u(r,195))):At(r,201)?yg(n,T3n(u(r,201))):At(r,2111)?yg(n,pyn(u(r,2111))):At(r,53)?yg(n,A4n(u(r,53))):At(r,376)?yg(n,G4n(u(r,376))):At(r,846)?yg(n,S4n(u(r,846))):At(r,109)&&yg(n,_4n(u(r,109))):yg(n,r==null?Hu:ec(r));return n.a?n.e.length==0?n.a.a:n.a.a+(""+n.e):n.c}function j7(t,e){var n,r,s,o;o=t.F,e==null?(t.F=null,f7(t,null)):(t.F=(Wn(e),e),r=Fd(e,qu(60)),r!=-1?(s=(Sa(0,r,e.length),e.substr(0,r)),Fd(e,qu(46))==-1&&!hn(s,vk)&&!hn(s,tA)&&!hn(s,fU)&&!hn(s,eA)&&!hn(s,nA)&&!hn(s,rA)&&!hn(s,iA)&&!hn(s,sA)&&(s=Sme),n=rz(e,qu(62)),n!=-1&&(s+=""+(qn(n+1,e.length+1),e.substr(n+1))),f7(t,s)):(s=e,Fd(e,qu(46))==-1&&(r=Fd(e,qu(91)),r!=-1&&(s=(Sa(0,r,e.length),e.substr(0,r))),!hn(s,vk)&&!hn(s,tA)&&!hn(s,fU)&&!hn(s,eA)&&!hn(s,nA)&&!hn(s,rA)&&!hn(s,iA)&&!hn(s,sA)?(s=Sme,r!=-1&&(s+=""+(qn(r,e.length+1),e.substr(r)))):s=e),f7(t,s),s==e&&(t.F=t.D))),t.Db&4&&!(t.Db&1)&&Ti(t,new la(t,1,5,o,e))}function Wge(t,e){var n,r,s,o,h,d,m,k,T,A;if(m=e.length-1,d=(qn(m,e.length),e.charCodeAt(m)),d==93){if(h=Fd(e,qu(91)),h>=0)return s=n2n(t,(Sa(1,h,e.length),e.substr(1,h-1))),T=(Sa(h+1,m,e.length),e.substr(h+1,m-(h+1))),ACn(t,T,s)}else{if(n=-1,JTt==null&&(JTt=new RegExp("\\d")),JTt.test(String.fromCharCode(d))&&(n=hvt(e,qu(46),m-1),n>=0)){r=u(Tst(t,Nae(t,(Sa(1,n,e.length),e.substr(1,n-1))),!1),61),k=0;try{k=oh((qn(n+1,e.length+1),e.substr(n+1)),Va,ki)}catch(N){throw N=is(N),At(N,130)?(o=N,nt(new kq(o))):nt(N)}if(k>16==-10?n=u(t.Cb,291).Yk(e,n):t.Db>>16==-15&&(!e&&(e=(bn(),yd)),!k&&(k=(bn(),yd)),t.Cb.Yh()&&(m=new xg(t.Cb,1,13,k,e,Ip(Al(u(t.Cb,62)),t),!1),n?n.nj(m):n=m));else if(At(t.Cb,90))t.Db>>16==-23&&(At(e,90)||(e=(bn(),mf)),At(k,90)||(k=(bn(),mf)),t.Cb.Yh()&&(m=new xg(t.Cb,1,10,k,e,Ip(Gc(u(t.Cb,29)),t),!1),n?n.nj(m):n=m));else if(At(t.Cb,456))for(d=u(t.Cb,850),h=(!d.b&&(d.b=new t$(new Rnt)),d.b),o=(r=new Z2(new ps(h.a).a),new e$(r));o.a.b;)s=u(Vm(o.a).ld(),89),n=$7(s,GH(s,d),n)}return n}function n9n(t,e){var n,r,s,o,h,d,m,k,T,A,N;for(h=Ie(De(ne(t,(Me(),L3)))),N=u(ne(t,D3),21),m=!1,k=!1,A=new Zn((!t.c&&(t.c=new Jt(kl,t,9,9)),t.c));A.e!=A.i.gc()&&(!m||!k);){for(o=u(sr(A),123),d=0,s=C0(rh(ot(st(hh,1),Ln,20,0,[(!o.d&&(o.d=new En(Cs,o,8,5)),o.d),(!o.e&&(o.e=new En(Cs,o,7,4)),o.e)])));Sr(s)&&(r=u(lr(s),74),T=h&&Jm(r)&&Ie(De(ne(r,Cw))),n=_ge((!r.b&&(r.b=new En(gr,r,4,7)),r.b),o)?t==es(Xo(u(Lt((!r.c&&(r.c=new En(gr,r,5,8)),r.c),0),84))):t==es(Xo(u(Lt((!r.b&&(r.b=new En(gr,r,4,7)),r.b),0),84))),!((T||n)&&(++d,d>1))););(d>0||N.Hc((wl(),$g))&&(!o.n&&(o.n=new Jt(Oo,o,1,7)),o.n).i>0)&&(m=!0),d>1&&(k=!0)}m&&e.Fc((ko(),zh)),k&&e.Fc((ko(),vA))}function Yge(t){var e,n,r,s,o,h,d,m,k,T,A,N;if(N=u(ne(t,(si(),Ow)),21),N.dc())return null;if(d=0,h=0,N.Hc((Kl(),IN))){for(T=u(ne(t,nL),101),r=2,n=2,s=2,o=2,e=es(t)?u(ne(es(t),Iw),88):u(ne(t,Iw),88),k=new Zn((!t.c&&(t.c=new Jt(kl,t,9,9)),t.c));k.e!=k.i.gc();)if(m=u(sr(k),123),A=u(ne(m,cx),64),A==(ve(),gc)&&(A=kkt(m,e),Oi(m,cx,A)),T==(xa(),lu))switch(A.g){case 1:r=b.Math.max(r,m.i+m.g);break;case 2:n=b.Math.max(n,m.j+m.f);break;case 3:s=b.Math.max(s,m.i+m.g);break;case 4:o=b.Math.max(o,m.j+m.f)}else switch(A.g){case 1:r+=m.g+2;break;case 2:n+=m.f+2;break;case 3:s+=m.g+2;break;case 4:o+=m.f+2}d=b.Math.max(r,s),h=b.Math.max(n,o)}return nv(t,d,h,!0,!0)}function yct(t,e,n,r,s){var o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt;for(Tt=u(tc(Mq(Ai(new ln(null,new gn(e.d,16)),new RVt(n)),new jVt(n)),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[(bl(),rc)]))),15),A=ki,T=Va,m=new J(e.b.j);m.a0,k?k&&(N=ct.p,h?++N:--N,A=u(Oe(ct.c.a,N),10),r=mce(A),j=!(Vot(r,ie,n[0])||qte(r,ie,n[0]))):j=!0),U=!1,Kt=e.D.i,Kt&&Kt.c&&d.e&&(T=h&&Kt.p>0||!h&&Kt.p=0){for(m=null,d=new _a(T.a,k+1);d.bh?1:vm(isNaN(0),isNaN(h)))<0&&($f(e0),(b.Math.abs(h-1)<=e0||h==1||isNaN(h)&&isNaN(1)?0:h<1?-1:h>1?1:vm(isNaN(h),isNaN(1)))<0)&&($f(e0),(b.Math.abs(0-d)<=e0||d==0||isNaN(0)&&isNaN(d)?0:0d?1:vm(isNaN(0),isNaN(d)))<0)&&($f(e0),(b.Math.abs(d-1)<=e0||d==1||isNaN(d)&&isNaN(1)?0:d<1?-1:d>1?1:vm(isNaN(d),isNaN(1)))<0)),o)}function c9n(t){var e,n,r,s;if(n=t.D!=null?t.D:t.B,e=Fd(n,qu(91)),e!=-1){r=(Sa(0,e,n.length),n.substr(0,e)),s=new hp;do s.a+="[";while((e=xE(n,91,++e))!=-1);hn(r,vk)?s.a+="Z":hn(r,tA)?s.a+="B":hn(r,fU)?s.a+="C":hn(r,eA)?s.a+="D":hn(r,nA)?s.a+="F":hn(r,rA)?s.a+="I":hn(r,iA)?s.a+="J":hn(r,sA)?s.a+="S":(s.a+="L",s.a+=""+r,s.a+=";");try{return null}catch(o){if(o=is(o),!At(o,63))throw nt(o)}}else if(Fd(n,qu(46))==-1){if(hn(n,vk))return Fl;if(hn(n,tA))return cl;if(hn(n,fU))return Uh;if(hn(n,eA))return wa;if(hn(n,nA))return Y3;if(hn(n,rA))return Or;if(hn(n,iA))return b2;if(hn(n,sA))return gx}return null}function u9n(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce;for(t.e=e,d=u5n(e),ie=new ge,r=new J(d);r.a=0&&W=k.c.c.length?T=u3t((Un(),Ts),ha):T=u3t((Un(),ha),ha),T*=2,o=n.a.g,n.a.g=b.Math.max(o,o+(T-o)),h=n.b.g,n.b.g=b.Math.max(h,h+(T-h)),s=e}}function d9n(t){var e,n,r,s;for(xs(Ai(new ln(null,new gn(t.a.b,16)),new tJ),new eJ),Wvn(t),xs(Ai(new ln(null,new gn(t.a.b,16)),new nJ),new rJ),t.c==(_g(),Jk)&&(xs(Ai(lc(new ln(null,new gn(new ui(t.f),1)),new iJ),new sJ),new DVt(t)),xs(Ai(Go(lc(lc(new ln(null,new gn(t.d.b,16)),new XB),new aJ),new QB),new oJ),new OVt(t))),s=new se(ns,ns),e=new se(Vs,Vs),r=new J(t.a.b);r.a0&&(e.a+=ro),fV(u(sr(d),167),e);for(e.a+=Lut,m=new F6((!r.c&&(r.c=new En(gr,r,5,8)),r.c));m.e!=m.i.gc();)m.e>0&&(e.a+=ro),fV(u(sr(m),167),e);e.a+=")"}}function g9n(t,e,n){var r,s,o,h,d,m,k,T;for(m=new Zn((!t.a&&(t.a=new Jt(wi,t,10,11)),t.a));m.e!=m.i.gc();)for(d=u(sr(m),27),s=new nr(ir(Mg(d).a.Kc(),new q));Sr(s);){if(r=u(lr(s),74),!r.b&&(r.b=new En(gr,r,4,7)),!(r.b.i<=1&&(!r.c&&(r.c=new En(gr,r,5,8)),r.c.i<=1)))throw nt(new _6("Graph must not contain hyperedges."));if(!bS(r)&&d!=Xo(u(Lt((!r.c&&(r.c=new En(gr,r,5,8)),r.c),0),84)))for(k=new XJt,Yo(k,r),Zt(k,(Mb(),Bk),r),b6(k,u(Uo(yo(n.f,d)),153)),x(k,u(tr(n,Xo(u(Lt((!r.c&&(r.c=new En(gr,r,5,8)),r.c),0),84))),153)),pe(e.c,k),h=new Zn((!r.n&&(r.n=new Jt(Oo,r,1,7)),r.n));h.e!=h.i.gc();)o=u(sr(h),135),T=new Jre(k,o.a),Yo(T,o),Zt(T,Bk,o),T.e.a=b.Math.max(o.g,1),T.e.b=b.Math.max(o.f,1),Skt(T),pe(e.d,T)}}function p9n(t,e,n){var r,s,o,h,d,m,k,T,A,N;switch(n.Ug("Node promotion heuristic",1),t.i=e,t.r=u(K(e,(Me(),e2)),243),t.r!=(sf(),Av)&&t.r!=P3?q9n(t):gkn(t),T=u(K(t.i,qSt),17).a,o=new OB,t.r.g){case 2:case 1:R7(t,o);break;case 3:for(t.r=YG,R7(t,o),m=0,d=new J(t.b);d.at.k&&(t.r=nN,R7(t,o));break;case 4:for(t.r=YG,R7(t,o),k=0,s=new J(t.c);s.at.n&&(t.r=rN,R7(t,o));break;case 6:N=Xs(b.Math.ceil(t.g.length*T/100)),R7(t,new vVt(N));break;case 5:A=Xs(b.Math.ceil(t.e*T/100)),R7(t,new yVt(A));break;case 8:Ope(t,!0);break;case 9:Ope(t,!1);break;default:R7(t,o)}t.r!=Av&&t.r!=P3?R6n(t,e):i8n(t,e),n.Vg()}function b9n(t){var e,n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St;for(A=t.b,T=new _a(A,0),Ly(T,new tu(t)),Tt=!1,h=1;T.b0&&(N.d+=T.n.d,N.d+=T.d),N.a>0&&(N.a+=T.n.a,N.a+=T.d),N.b>0&&(N.b+=T.n.b,N.b+=T.d),N.c>0&&(N.c+=T.n.c,N.c+=T.d),N}function Qge(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U;for(N=n.d,A=n.c,o=new se(n.f.a+n.d.b+n.d.c,n.f.b+n.d.d+n.d.a),h=o.b,k=new J(t.a);k.a0&&(t.c[e.c.p][e.p].d+=Ml(t.i,24)*iP*.07000000029802322-.03500000014901161,t.c[e.c.p][e.p].a=t.c[e.c.p][e.p].d/t.c[e.c.p][e.p].b)}}function v9n(t){var e,n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt;for(U=new J(t);U.ar.d,r.d=b.Math.max(r.d,e),d&&n&&(r.d=b.Math.max(r.d,r.a),r.a=r.d+s);break;case 3:n=e>r.a,r.a=b.Math.max(r.a,e),d&&n&&(r.a=b.Math.max(r.a,r.d),r.d=r.a+s);break;case 2:n=e>r.c,r.c=b.Math.max(r.c,e),d&&n&&(r.c=b.Math.max(r.b,r.c),r.b=r.c+s);break;case 4:n=e>r.b,r.b=b.Math.max(r.b,e),d&&n&&(r.b=b.Math.max(r.b,r.c),r.c=r.b+s)}}}function Zge(t,e){var n,r,s,o,h,d,m,k,T;return k="",e.length==0?t.ne(r8t,Ict,-1,-1):(T=Zy(e),hn(T.substr(0,3),"at ")&&(T=(qn(3,T.length+1),T.substr(3))),T=T.replace(/\[.*?\]/g,""),h=T.indexOf("("),h==-1?(h=T.indexOf("@"),h==-1?(k=T,T=""):(k=Zy((qn(h+1,T.length+1),T.substr(h+1))),T=Zy((Sa(0,h,T.length),T.substr(0,h))))):(n=T.indexOf(")",h),k=(Sa(h+1,n,T.length),T.substr(h+1,n-(h+1))),T=Zy((Sa(0,h,T.length),T.substr(0,h)))),h=Fd(T,qu(46)),h!=-1&&(T=(qn(h+1,T.length+1),T.substr(h+1))),(T.length==0||hn(T,"Anonymous function"))&&(T=Ict),d=rz(k,qu(58)),s=hvt(k,qu(58),d-1),m=-1,r=-1,o=r8t,d!=-1&&s!=-1&&(o=(Sa(0,s,k.length),k.substr(0,s)),m=pJt((Sa(s+1,d,k.length),k.substr(s+1,d-(s+1)))),r=pJt((qn(d+1,k.length+1),k.substr(d+1)))),t.ne(o,T,m,r))}function k9n(t){var e,n,r,s,o,h,d,m,k,T,A;for(k=new J(t);k.a0||T.j==Gn&&T.e.c.length-T.g.c.length<0)){e=!1;break}for(s=new J(T.g);s.a=k&&Kt>=tt&&(N+=U.n.b+W.n.b+W.a.b-Bt,++d));if(n)for(h=new J(Tt.e);h.a=k&&Kt>=tt&&(N+=U.n.b+W.n.b+W.a.b-Bt,++d))}d>0&&(ie+=N/d,++j)}j>0?(e.a=s*ie/j,e.g=j):(e.a=0,e.g=0)}function T9n(t){var e,n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce;for(o=t.f.b,N=o.a,T=o.b,U=t.e.g,j=t.e.f,$4(t.e,o.a,o.b),ie=N/U,Ce=T/j,k=new Zn(qz(t.e));k.e!=k.i.gc();)m=u(sr(k),135),Cu(m,m.i*ie),_u(m,m.j*Ce);for(Tt=new Zn(Vit(t.e));Tt.e!=Tt.i.gc();)ct=u(sr(Tt),123),Bt=ct.i,Kt=ct.j,Bt>0&&Cu(ct,Bt*ie),Kt>0&&_u(ct,Kt*Ce);for(U_(t.b,new og),e=new ge,d=new Z2(new ps(t.c).a);d.b;)h=Vm(d),r=u(h.ld(),74),n=u(h.md(),407).a,s=d5(r,!1,!1),A=Uhe(M0(r),CO(s),n),zO(A,s),St=ife(r),St&&Wo(e,St,0)==-1&&(In(e.c,St),Oee(St,(cr(A.b!=0),u(A.a.a.c,8)),n));for(tt=new Z2(new ps(t.d).a);tt.b;)W=Vm(tt),r=u(W.ld(),74),n=u(W.md(),407).a,s=d5(r,!1,!1),A=Uhe(Bb(r),nO(CO(s)),n),A=nO(A),zO(A,s),St=sfe(r),St&&Wo(e,St,0)==-1&&(In(e.c,St),Oee(St,(cr(A.b!=0),u(A.c.b.c,8)),n))}function tpe(t,e,n,r){var s,o,h,d,m;return d=new $kt(e),p6n(d,r),s=!0,t&&t.pf((si(),Iw))&&(o=u(t.of((si(),Iw)),88),s=o==(Rs(),wd)||o==Ho||o==Jo),Zde(d,!1),Tu(d.e.Rf(),new mvt(d,!1,s)),rst(d,d.f,(_1(),Tc),(ve(),Hn)),rst(d,d.f,Cc,vr),rst(d,d.g,Tc,Gn),rst(d,d.g,Cc,Jn),Sle(d,Hn),Sle(d,vr),Mee(d,Jn),Mee(d,Gn),Ay(),h=d.A.Hc((Kl(),z3))&&d.B.Hc((Dl(),PN))?Uue(d):null,h&&Tnn(d.a,h),x9n(d),kmn(d),Emn(d),WTn(d),k8n(d),Ymn(d),Gat(d,Hn),Gat(d,vr),Zkn(d),k7n(d),n&&(r2n(d),Xmn(d),Gat(d,Jn),Gat(d,Gn),m=d.B.Hc((Dl(),fL)),Ufe(d,m,Hn),Ufe(d,m,vr),Gfe(d,m,Jn),Gfe(d,m,Gn),xs(new ln(null,new gn(new li(d.i),0)),new bc),xs(Ai(new ln(null,byt(d.r).a.oc()),new oa),new va),lyn(d),d.e.Pf(d.o),xs(new ln(null,byt(d.r).a.oc()),new na)),d.o}function C9n(t){var e,n,r,s,o,h,d,m,k,T,A,N,j,U,W;for(k=ns,r=new J(t.a.b);r.a1)for(j=new Dkt(U,St,r),Oa(St,new uXt(t,j)),In(h.c,j),A=St.a.ec().Kc();A.Ob();)T=u(A.Pb(),42),$u(o,T.b);if(d.a.gc()>1)for(j=new Dkt(U,d,r),Oa(d,new lXt(t,j)),In(h.c,j),A=d.a.ec().Kc();A.Ob();)T=u(A.Pb(),42),$u(o,T.b)}}function L9n(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct;if(W=t.n,tt=t.o,N=t.d,A=Rt(Ht(Wy(t,(Me(),e1t)))),e){for(T=A*(e.gc()-1),j=0,m=e.Kc();m.Ob();)h=u(m.Pb(),10),T+=h.o.a,j=b.Math.max(j,h.o.b);for(ct=W.a-(T-tt.a)/2,o=W.b-N.d+j,r=tt.a/(e.gc()+1),s=r,d=e.Kc();d.Ob();)h=u(d.Pb(),10),h.n.a=ct,h.n.b=o-h.o.b,ct+=h.o.a+A,k=ude(h),k.n.a=h.o.a/2-k.a.a,k.n.b=h.o.b,U=u(K(h,(ae(),EG)),12),U.e.c.length+U.g.c.length==1&&(U.n.a=s-U.a.a,U.n.b=0,uc(U,t)),s+=r}if(n){for(T=A*(n.gc()-1),j=0,m=n.Kc();m.Ob();)h=u(m.Pb(),10),T+=h.o.a,j=b.Math.max(j,h.o.b);for(ct=W.a-(T-tt.a)/2,o=W.b+tt.b+N.a-j,r=tt.a/(n.gc()+1),s=r,d=n.Kc();d.Ob();)h=u(d.Pb(),10),h.n.a=ct,h.n.b=o,ct+=h.o.a+A,k=ude(h),k.n.a=h.o.a/2-k.a.a,k.n.b=0,U=u(K(h,(ae(),EG)),12),U.e.c.length+U.g.c.length==1&&(U.n.a=s-U.a.a,U.n.b=tt.b,uc(U,t)),s+=r}}function M9n(t,e){var n,r,s,o,h,d;if(u(K(e,(ae(),uu)),21).Hc((ko(),zh))){for(d=new J(e.a);d.a=0&&h0&&(u(Mo(t.b,e),127).a.b=n)}function N9n(t,e,n,r){var s,o,h,d,m,k,T,A,N,j,U,W;if(N=Rt(Ht(K(t,(Me(),OT)))),j=Rt(Ht(K(t,PT))),A=Rt(Ht(K(t,O3))),d=t.o,o=u(Oe(t.j,0),12),h=o.n,W=J3n(o,A),!!W){if(e.Hc((wl(),$g)))switch(u(K(t,(ae(),_c)),64).g){case 1:W.c=(d.a-W.b)/2-h.a,W.d=j;break;case 3:W.c=(d.a-W.b)/2-h.a,W.d=-j-W.a;break;case 2:n&&o.e.c.length==0&&o.g.c.length==0?(T=r?W.a:u(Oe(o.f,0),72).o.b,W.d=(d.b-T)/2-h.b):W.d=d.b+j-h.b,W.c=-N-W.b;break;case 4:n&&o.e.c.length==0&&o.g.c.length==0?(T=r?W.a:u(Oe(o.f,0),72).o.b,W.d=(d.b-T)/2-h.b):W.d=d.b+j-h.b,W.c=N}else if(e.Hc(u2))switch(u(K(t,(ae(),_c)),64).g){case 1:case 3:W.c=h.a+N;break;case 2:case 4:n&&!o.c?(T=r?W.a:u(Oe(o.f,0),72).o.b,W.d=(d.b-T)/2-h.b):W.d=h.b+j}for(s=W.d,k=new J(o.f);k.a=e.length)return{done:!0};var s=e[r++];return{value:[s,n.get(s)],done:!1}}}},Ikn()||(t.prototype.createObject=function(){return{}},t.prototype.get=function(e){return this.obj[":"+e]},t.prototype.set=function(e,n){this.obj[":"+e]=n},t.prototype[iut]=function(e){delete this.obj[":"+e]},t.prototype.keys=function(){var e=[];for(var n in this.obj)n.charCodeAt(0)==58&&e.push(n.substring(1));return e}),t}function zi(){zi=V,qA=new Ni(O8t),new os("DEPTH",fe(0)),L1t=new os("FAN",fe(0)),eLt=new os(_2e,fe(0)),i2=new os("ROOT",(Nn(),!1)),I1t=new os("LEFTNEIGHBOR",null),Cke=new os("RIGHTNEIGHBOR",null),nK=new os("LEFTSIBLING",null),O1t=new os("RIGHTSIBLING",null),A1t=new os("DUMMY",!1),new os("LEVEL",fe(0)),iLt=new os("REMOVABLE_EDGES",new Qi),uN=new os("XCOOR",fe(0)),lN=new os("YCOOR",fe(0)),rK=new os("LEVELHEIGHT",0),O1=new os("LEVELMIN",0),Xf=new os("LEVELMAX",0),M1t=new os("GRAPH_XMIN",0),D1t=new os("GRAPH_YMIN",0),nLt=new os("GRAPH_XMAX",0),rLt=new os("GRAPH_YMAX",0),tLt=new os("COMPACT_LEVEL_ASCENSION",!1),S1t=new os("COMPACT_CONSTRAINTS",new ge),zA=new os("ID",""),HA=new os("POSITION",fe(0)),Up=new os("PRELIM",0),jT=new os("MODIFIER",0),RT=new Ni(Rbe),cN=new Ni(jbe)}function j9n(t){xkt();var e,n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt;if(t==null)return null;if(A=t.length*8,A==0)return"";for(d=A%24,j=A/24|0,N=d!=0?j+1:j,o=null,o=Vt(Uh,Yd,28,N*4,15,1),k=0,T=0,e=0,n=0,r=0,h=0,s=0,m=0;m>24,k=(e&3)<<24>>24,U=e&-128?(e>>2^192)<<24>>24:e>>2<<24>>24,W=n&-128?(n>>4^240)<<24>>24:n>>4<<24>>24,tt=r&-128?(r>>6^252)<<24>>24:r>>6<<24>>24,o[h++]=tb[U],o[h++]=tb[W|k<<4],o[h++]=tb[T<<2|tt],o[h++]=tb[r&63];return d==8?(e=t[s],k=(e&3)<<24>>24,U=e&-128?(e>>2^192)<<24>>24:e>>2<<24>>24,o[h++]=tb[U],o[h++]=tb[k<<4],o[h++]=61,o[h++]=61):d==16&&(e=t[s],n=t[s+1],T=(n&15)<<24>>24,k=(e&3)<<24>>24,U=e&-128?(e>>2^192)<<24>>24:e>>2<<24>>24,W=n&-128?(n>>4^240)<<24>>24:n>>4<<24>>24,o[h++]=tb[U],o[h++]=tb[W|k<<4],o[h++]=tb[T<<2],o[h++]=61),nf(o,0,o.length)}function $9n(t,e){var n,r,s,o,h,d,m;if(t.e==0&&t.p>0&&(t.p=-(t.p-1)),t.p>Va&&c3t(e,t.p-Hb),h=e.q.getDate(),EI(e,1),t.k>=0&&Ahn(e,t.k),t.c>=0?EI(e,t.c):t.k>=0?(m=new R4t(e.q.getFullYear()-Hb,e.q.getMonth(),35),r=35-m.q.getDate(),EI(e,b.Math.min(r,h))):EI(e,h),t.f<0&&(t.f=e.q.getHours()),t.b>0&&t.f<12&&(t.f+=12),vin(e,t.f==24&&t.g?0:t.f),t.j>=0&&ldn(e,t.j),t.n>=0&&kdn(e,t.n),t.i>=0&&cQt(e,Xa(Qa(xO(Oc(e.q.getTime()),Fp),Fp),t.i)),t.a&&(s=new b$,c3t(s,s.q.getFullYear()-Hb-80),art(Oc(e.q.getTime()),Oc(s.q.getTime()))&&c3t(e,s.q.getFullYear()-Hb+100)),t.d>=0){if(t.c==-1)n=(7+t.d-e.q.getDay())%7,n>3&&(n-=7),d=e.q.getMonth(),EI(e,e.q.getDate()+n),e.q.getMonth()!=d&&EI(e,e.q.getDate()+(n>0?-7:7));else if(e.q.getDay()!=t.d)return!1}return t.o>Va&&(o=e.q.getTimezoneOffset(),cQt(e,Xa(Oc(e.q.getTime()),(t.o-o)*60*Fp))),!0}function spe(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt;if(s=K(e,(ae(),Di)),!!At(s,207)){for(U=u(s,27),W=e.e,N=new eo(e.c),o=e.d,N.a+=o.b,N.b+=o.d,Bt=u(ne(U,(Me(),zG)),181),Ju(Bt,(Dl(),LK))&&(j=u(ne(U,KSt),107),xnt(j,o.a),p(j,o.d),g2t(j,o.b),y(j,o.c)),n=new ge,T=new J(e.a);T.ar.c.length-1;)pe(r,new Ys(E5,l7t));n=u(K(s,o0),17).a,dg(u(K(t,Mv),88))?(s.e.aRt(Ht((mn(n,r.c.length),u(r.c[n],42)).b))&&ue((mn(n,r.c.length),u(r.c[n],42)),s.e.a+s.f.a)):(s.e.bRt(Ht((mn(n,r.c.length),u(r.c[n],42)).b))&&ue((mn(n,r.c.length),u(r.c[n],42)),s.e.b+s.f.b))}for(o=_r(t.b,0);o.b!=o.d.c;)s=u(Tr(o),39),n=u(K(s,(xc(),o0)),17).a,Zt(s,(zi(),O1),Ht((mn(n,r.c.length),u(r.c[n],42)).a)),Zt(s,Xf,Ht((mn(n,r.c.length),u(r.c[n],42)).b));e.Vg()}function q9n(t){var e,n,r,s,o,h,d,m,k,T,A,N,j,U,W;for(t.o=Rt(Ht(K(t.i,(Me(),Sv)))),t.f=Rt(Ht(K(t.i,Lw))),t.j=t.i.b.c.length,d=t.j-1,N=0,t.k=0,t.n=0,t.b=J1(Vt(Na,le,17,t.j,0,1)),t.c=J1(Vt(zs,le,345,t.j,7,1)),h=new J(t.i.b);h.a0&&pe(t.q,T),pe(t.p,T);e-=r,j=m+e,k+=e*t.f,Sh(t.b,d,fe(j)),Sh(t.c,d,k),t.k=b.Math.max(t.k,j),t.n=b.Math.max(t.n,k),t.e+=e,e+=W}}function ve(){ve=V;var t;gc=new WD(FS,0),Hn=new WD(kV,1),Jn=new WD(gut,2),vr=new WD(put,3),Gn=new WD(but,4),vd=(wn(),new lE((t=u(m1(go),9),new Eh(t,u(Ff(t,t.length),9),0)))),e1=_p(Gi(Hn,ot(st(go,1),$c,64,0,[]))),Hh=_p(Gi(Jn,ot(st(go,1),$c,64,0,[]))),gh=_p(Gi(vr,ot(st(go,1),$c,64,0,[]))),gf=_p(Gi(Gn,ot(st(go,1),$c,64,0,[]))),Uu=_p(Gi(Hn,ot(st(go,1),$c,64,0,[vr]))),Iu=_p(Gi(Jn,ot(st(go,1),$c,64,0,[Gn]))),n1=_p(Gi(Hn,ot(st(go,1),$c,64,0,[Gn]))),yl=_p(Gi(Hn,ot(st(go,1),$c,64,0,[Jn]))),ph=_p(Gi(vr,ot(st(go,1),$c,64,0,[Gn]))),Vh=_p(Gi(Jn,ot(st(go,1),$c,64,0,[vr]))),xl=_p(Gi(Hn,ot(st(go,1),$c,64,0,[Jn,Gn]))),Vu=_p(Gi(Jn,ot(st(go,1),$c,64,0,[vr,Gn]))),Gu=_p(Gi(Hn,ot(st(go,1),$c,64,0,[vr,Gn]))),ol=_p(Gi(Hn,ot(st(go,1),$c,64,0,[Jn,vr]))),hu=_p(Gi(Hn,ot(st(go,1),$c,64,0,[Jn,vr,Gn])))}function H9n(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce;for(e.Ug(s2e,1),W=new ge,ie=new ge,k=new J(t.b);k.a0&&(St-=j),Ikt(h,St),T=0,N=new J(h.a);N.a0),d.a.Xb(d.c=--d.b)),m=.4*r*T,!o&&d.b0&&(m=(qn(0,e.length),e.charCodeAt(0)),m!=64)){if(m==37&&(A=e.lastIndexOf("%"),k=!1,A!=0&&(A==N-1||(k=(qn(A+1,e.length),e.charCodeAt(A+1)==46))))){if(h=(Sa(1,A,e.length),e.substr(1,A-1)),St=hn("%",h)?null:Hkt(h),r=0,k)try{r=oh((qn(A+2,e.length+1),e.substr(A+2)),Va,ki)}catch(Bt){throw Bt=is(Bt),At(Bt,130)?(d=Bt,nt(new kq(d))):nt(Bt)}for(tt=w4t(t.Gh());tt.Ob();)if(U=Xq(tt),At(U,519)&&(s=u(U,598),Tt=s.d,(St==null?Tt==null:hn(St,Tt))&&r--==0))return s;return null}if(T=e.lastIndexOf("."),j=T==-1?e:(Sa(0,T,e.length),e.substr(0,T)),n=0,T!=-1)try{n=oh((qn(T+1,e.length+1),e.substr(T+1)),Va,ki)}catch(Bt){if(Bt=is(Bt),At(Bt,130))j=e;else throw nt(Bt)}for(j=hn("%",j)?null:Hkt(j),W=w4t(t.Gh());W.Ob();)if(U=Xq(W),At(U,197)&&(o=u(U,197),ct=o.xe(),(j==null?ct==null:hn(j,ct))&&n--==0))return o;return null}return Wge(t,e)}function Q9n(t){var e,n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt;for(T=new Er,m=new Nm,r=new J(t.a.a.b);r.ae.d.c){if(j=t.c[e.a.d],tt=t.c[A.a.d],j==tt)continue;Hf(Of(If(Pf(Df(new Qh,1),100),j),tt))}}}}}function J9n(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie;if(N=u(u(Mi(t.r,e),21),87),e==(ve(),Jn)||e==Gn){npe(t,e);return}for(o=e==Hn?(Um(),DP):(Um(),IP),Bt=e==Hn?(zu(),D1):(zu(),Kf),n=u(Mo(t.b,e),127),r=n.i,s=r.c+J4(ot(st(wa,1),Io,28,15,[n.n.b,t.C.b,t.k])),ct=r.c+r.b-J4(ot(st(wa,1),Io,28,15,[n.n.c,t.C.c,t.k])),h=iwt(yvt(o),t.t),Tt=e==Hn?Vs:ns,A=N.Kc();A.Ob();)k=u(A.Pb(),117),!(!k.c||k.c.d.c.length<=0)&&(tt=k.b.Mf(),W=k.e,j=k.c,U=j.i,U.b=(m=j.n,j.e.a+m.b+m.c),U.a=(d=j.n,j.e.b+d.d+d.a),yI(Bt,v8t),j.f=Bt,T1(j,(pl(),Gf)),U.c=W.a-(U.b-tt.a)/2,Kt=b.Math.min(s,W.a),ie=b.Math.max(ct,W.a+tt.a),U.cie&&(U.c=ie-U.b),pe(h.d,new Cit(U,h5t(h,U))),Tt=e==Hn?b.Math.max(Tt,W.b+k.b.Mf().b):b.Math.min(Tt,W.b));for(Tt+=e==Hn?t.t:-t.t,St=M5t((h.e=Tt,h)),St>0&&(u(Mo(t.b,e),127).a.b=St),T=N.Kc();T.Ob();)k=u(T.Pb(),117),!(!k.c||k.c.d.c.length<=0)&&(U=k.c.i,U.c-=k.e.a,U.d-=k.e.b)}function Z9n(t){var e,n,r,s,o,h,d,m,k,T,A,N,j;for(e=new Er,m=new Zn(t);m.e!=m.i.gc();){for(d=u(sr(m),27),n=new Os,di(Vht,d,n),j=new rp,s=u(tc(new ln(null,new Am(new nr(ir(OO(d).a.Kc(),new q)))),Tte(j,gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[(bl(),rc)])))),85),ioe(n,u(s.xc((Nn(),!0)),16),new iy),r=u(tc(Ai(u(s.xc(!1),15).Lc(),new S8),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[rc]))),15),h=r.Kc();h.Ob();)o=u(h.Pb(),74),N=ife(o),N&&(k=u(Uo(yo(e.f,N)),21),k||(k=Ade(N),vu(e.f,N,k)),Aa(n,k));for(s=u(tc(new ln(null,new Am(new nr(ir(Mg(d).a.Kc(),new q)))),Tte(j,gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[rc])))),85),ioe(n,u(s.xc(!0),16),new f4),r=u(tc(Ai(u(s.xc(!1),15).Lc(),new Ql),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[rc]))),15),A=r.Kc();A.Ob();)T=u(A.Pb(),74),N=sfe(T),N&&(k=u(Uo(yo(e.f,N)),21),k||(k=Ade(N),vu(e.f,N,k)),Aa(n,k))}}function tCn(t,e){lct();var n,r,s,o,h,d,m,k,T,A,N,j,U,W;if(m=Rc(t,0)<0,m&&(t=Ep(t)),Rc(t,0)==0)switch(e){case 0:return"0";case 1:return G7;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return j=new pb,e<0?j.a+="0E+":j.a+="0E",j.a+=e==Va?"2147483648":""+-e,j.a}T=18,A=Vt(Uh,Yd,28,T+1,15,1),n=T,W=t;do k=W,W=xO(W,10),A[--n]=qr(Xa(48,ef(k,Qa(W,10))))&js;while(Rc(W,0)!=0);if(s=ef(ef(ef(T,n),e),1),e==0)return m&&(A[--n]=45),nf(A,n,T-n);if(e>0&&Rc(s,-6)>=0){if(Rc(s,0)>=0){for(o=n+qr(s),d=T-1;d>=o;d--)A[d+1]=A[d];return A[++o]=46,m&&(A[--n]=45),nf(A,n,T-n+1)}for(h=2;art(h,Xa(Ep(s),1));h++)A[--n]=48;return A[--n]=46,A[--n]=48,m&&(A[--n]=45),nf(A,n,T-n)}return U=n+1,r=T,N=new L4,m&&(N.a+="-"),r-U>=1?(Cb(N,A[n]),N.a+=".",N.a+=nf(A,n+1,T-n-1)):N.a+=nf(A,n,T-n),N.a+="E",Rc(s,0)>0&&(N.a+="+"),N.a+=""+E_(s),N.a}function nv(t,e,n,r,s){var o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie;if(tt=new se(t.g,t.f),W=a6t(t),W.a=b.Math.max(W.a,e),W.b=b.Math.max(W.b,n),ie=W.a/tt.a,T=W.b/tt.b,Bt=W.a-tt.a,m=W.b-tt.b,r)for(h=es(t)?u(ne(es(t),(si(),Iw)),88):u(ne(t,(si(),Iw)),88),d=$t(ne(t,(si(),nL)))===$t((xa(),lu)),Tt=new Zn((!t.c&&(t.c=new Jt(kl,t,9,9)),t.c));Tt.e!=Tt.i.gc();)switch(ct=u(sr(Tt),123),St=u(ne(ct,cx),64),St==(ve(),gc)&&(St=kkt(ct,h),Oi(ct,cx,St)),St.g){case 1:d||Cu(ct,ct.i*ie);break;case 2:Cu(ct,ct.i+Bt),d||_u(ct,ct.j*T);break;case 3:d||Cu(ct,ct.i*ie),_u(ct,ct.j+m);break;case 4:d||_u(ct,ct.j*T)}if($4(t,W.a,W.b),s)for(N=new Zn((!t.n&&(t.n=new Jt(Oo,t,1,7)),t.n));N.e!=N.i.gc();)A=u(sr(N),135),j=A.i+A.g/2,U=A.j+A.f/2,Kt=j/tt.a,k=U/tt.b,Kt+k>=1&&(Kt-k>0&&U>=0?(Cu(A,A.i+Bt),_u(A,A.j+m*k)):Kt-k<0&&j>=0&&(Cu(A,A.i+Bt*Kt),_u(A,A.j+m)));return Oi(t,(si(),Ow),(Kl(),o=u(m1(hL),9),new Eh(o,u(Ff(o,o.length),9),0))),new se(ie,T)}function upe(t){bm(t,new ow(l$(dm(lm(fm(hm(new cg,Bh),"ELK Radial"),'A radial layout provider which is based on the algorithm of Peter Eades published in "Drawing free trees.", published by International Institute for Advanced Study of Social Information Science, Fujitsu Limited in 1991. The radial layouter takes a tree and places the nodes in radial order around the root. The nodes of the same tree level are placed on the same radius.'),new btt),Bh))),he(t,Bh,KV,_e(x8e)),he(t,Bh,h3,_e(k8e)),he(t,Bh,T5,_e(w8e)),he(t,Bh,Lk,_e(m8e)),he(t,Bh,Ak,_e(v8e)),he(t,Bh,Z7,_e(b8e)),he(t,Bh,$S,_e(OLt)),he(t,Bh,tT,_e(y8e)),he(t,Bh,vlt,_e(G1t)),he(t,Bh,mlt,_e(K1t)),he(t,Bh,tU,_e(NLt)),he(t,Bh,ylt,_e(W1t)),he(t,Bh,xlt,_e(FLt)),he(t,Bh,L7t,_e(BLt)),he(t,Bh,A7t,_e(PLt)),he(t,Bh,T7t,_e(cK)),he(t,Bh,C7t,_e(uK)),he(t,Bh,_7t,_e(hN)),he(t,Bh,S7t,_e(RLt)),he(t,Bh,E7t,_e(ILt))}function dV(t){var e,n,r,s,o,h,d,m,k,T,A;if(t==null)throw nt(new Nd(Hu));if(k=t,o=t.length,m=!1,o>0&&(e=(qn(0,t.length),t.charCodeAt(0)),(e==45||e==43)&&(t=(qn(1,t.length+1),t.substr(1)),--o,m=e==45)),o==0)throw nt(new Nd(sv+k+'"'));for(;t.length>0&&(qn(0,t.length),t.charCodeAt(0)==48);)t=(qn(1,t.length+1),t.substr(1)),--o;if(o>($0e(),Ave)[10])throw nt(new Nd(sv+k+'"'));for(s=0;s0&&(A=-parseInt((Sa(0,r,t.length),t.substr(0,r)),10),t=(qn(r,t.length+1),t.substr(r)),o-=r,n=!1);o>=h;){if(r=parseInt((Sa(0,h,t.length),t.substr(0,h)),10),t=(qn(h,t.length+1),t.substr(h)),o-=h,n)n=!1;else{if(Rc(A,d)<0)throw nt(new Nd(sv+k+'"'));A=Qa(A,T)}A=ef(A,r)}if(Rc(A,0)>0)throw nt(new Nd(sv+k+'"'));if(!m&&(A=Ep(A),Rc(A,0)<0))throw nt(new Nd(sv+k+'"'));return A}function Hkt(t){bct();var e,n,r,s,o,h,d,m;if(t==null)return null;if(s=Fd(t,qu(37)),s<0)return t;for(m=new Jl((Sa(0,s,t.length),t.substr(0,s))),e=Vt(cl,A5,28,4,15,1),d=0,r=0,h=t.length;ss+2&&hat((qn(s+1,t.length),t.charCodeAt(s+1)),kIt,EIt)&&hat((qn(s+2,t.length),t.charCodeAt(s+2)),kIt,EIt))if(n=xcn((qn(s+1,t.length),t.charCodeAt(s+1)),(qn(s+2,t.length),t.charCodeAt(s+2))),s+=2,r>0?(n&192)==128?e[d++]=n<<24>>24:r=0:n>=128&&((n&224)==192?(e[d++]=n<<24>>24,r=2):(n&240)==224?(e[d++]=n<<24>>24,r=3):(n&248)==240&&(e[d++]=n<<24>>24,r=4)),r>0){if(d==r){switch(d){case 2:{Cb(m,((e[0]&31)<<6|e[1]&63)&js);break}case 3:{Cb(m,((e[0]&15)<<12|(e[1]&63)<<6|e[2]&63)&js);break}}d=0,r=0}}else{for(o=0;o=2){if((!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a).i==0)n=(wb(),s=new k4,s),Mr((!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a),n);else if((!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a).i>1)for(N=new F6((!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a));N.e!=N.i.gc();)dS(N);zO(e,u(Lt((!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a),0),166))}if(A)for(r=new Zn((!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a));r.e!=r.i.gc();)for(n=u(sr(r),166),k=new Zn((!n.a&&(n.a=new Ns(bh,n,5)),n.a));k.e!=k.i.gc();)m=u(sr(k),377),d.a=b.Math.max(d.a,m.a),d.b=b.Math.max(d.b,m.b);for(h=new Zn((!t.n&&(t.n=new Jt(Oo,t,1,7)),t.n));h.e!=h.i.gc();)o=u(sr(h),135),T=u(ne(o,sL),8),T&&xh(o,T.a,T.b),A&&(d.a=b.Math.max(d.a,o.i+o.g),d.b=b.Math.max(d.b,o.j+o.f));return d}function hpe(t,e,n,r,s){var o,h,d;if(hae(t,e),h=e[0],o=qa(n.c,0),d=-1,z4t(n))if(r>0){if(h+r>t.length)return!1;d=qH((Sa(0,h+r,t.length),t.substr(0,h+r)),e)}else d=qH(t,e);switch(o){case 71:return d=l5(t,h,ot(st(Ne,1),le,2,6,[Xpe,Qpe]),e),s.e=d,!0;case 77:return bkn(t,e,s,d,h);case 76:return wkn(t,e,s,d,h);case 69:return c4n(t,e,h,s);case 99:return u4n(t,e,h,s);case 97:return d=l5(t,h,ot(st(Ne,1),le,2,6,["AM","PM"]),e),s.b=d,!0;case 121:return mkn(t,e,h,d,n,s);case 100:return d<=0?!1:(s.c=d,!0);case 83:return d<0?!1:T2n(d,h,e[0],s);case 104:d==12&&(d=0);case 75:case 72:return d<0?!1:(s.f=d,s.g=!1,!0);case 107:return d<0?!1:(s.f=d,s.g=!0,!0);case 109:return d<0?!1:(s.j=d,!0);case 115:return d<0?!1:(s.n=d,!0);case 90:if(hen[m]&&(tt=m),A=new J(t.a.b);A.a1;){if(s=u6n(e),A=o.g,U=u(ne(e,KA),107),W=Rt(Ht(ne(e,dK))),(!e.a&&(e.a=new Jt(wi,e,10,11)),e.a).i>1&&Rt(Ht(ne(e,(D0(),ndt))))!=ns&&(o.c+(U.b+U.c))/(o.b+(U.d+U.a))1&&Rt(Ht(ne(e,(D0(),edt))))!=ns&&(o.c+(U.b+U.c))/(o.b+(U.d+U.a))>W&&Oi(s,(D0(),B3),b.Math.max(Rt(Ht(ne(e,GA))),Rt(Ht(ne(s,B3)))-Rt(Ht(ne(e,edt))))),j=new Qwt(r,T),m=Dpe(j,s,N),k=m.g,k>=A&&k==k){for(h=0;h<(!s.a&&(s.a=new Jt(wi,s,10,11)),s.a).i;h++)i1e(t,u(Lt((!s.a&&(s.a=new Jt(wi,s,10,11)),s.a),h),27),u(Lt((!e.a&&(e.a=new Jt(wi,e,10,11)),e.a),h),27));Bae(e,j),dhn(o,m.c),fhn(o,m.b)}--d}Oi(e,(D0(),UA),o.b),Oi(e,$T,o.c),n.Vg()}function iCn(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt;for(e.Ug("Interactive node layering",1),n=new ge,N=new J(t.a);N.a=d){cr(Tt.b>0),Tt.a.Xb(Tt.c=--Tt.b);break}else tt.a>m&&(r?(Hs(r.b,tt.b),r.a=b.Math.max(r.a,tt.a),Ul(Tt)):(pe(tt.b,T),tt.c=b.Math.min(tt.c,m),tt.a=b.Math.max(tt.a,d),r=tt));r||(r=new sKt,r.c=m,r.a=d,Ly(Tt,r),pe(r.b,T))}for(h=t.b,k=0,ct=new J(n);ct.aj&&(o&&(to(ie,N),to(en,fe(k.b-1))),Jr=n.b,cs+=N+e,N=0,T=b.Math.max(T,n.b+n.c+er)),Cu(d,Jr),_u(d,cs),T=b.Math.max(T,Jr+er+n.c),N=b.Math.max(N,A),Jr+=er+e;if(T=b.Math.max(T,r),Mn=cs+N+n.a,MnJd,Je=b.Math.abs(N.b-U.b)>Jd,(!n&&en&&Je||n&&(en||Je))&&Zr(tt.a,Bt)),Aa(tt.a,r),r.b==0?N=Bt:N=(cr(r.b!=0),u(r.c.b.c,8)),Vgn(j,A,W),Foe(s)==Ce&&(Ia(Ce.i)!=s.a&&(W=new Ea,n6t(W,Ia(Ce.i),Tt)),Zt(tt,Hft,W)),_3n(j,tt,Tt),T.a.zc(j,T);Ya(tt,Kt),ya(tt,Ce)}for(k=T.a.ec().Kc();k.Ob();)m=u(k.Pb(),18),Ya(m,null),ya(m,null);e.Vg()}function oCn(t,e){var n,r,s,o,h,d,m,k,T,A,N;for(s=u(K(t,(xc(),Mv)),88),T=s==(Rs(),Ho)||s==Jo?bd:Jo,n=u(tc(Ai(new ln(null,new gn(t.b,16)),new IZ),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[(bl(),rc)]))),15),m=u(tc(Go(n.Oc(),new _Ut(e)),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[rc]))),15),m.Gc(u(tc(Go(n.Oc(),new SUt(e)),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[rc]))),16)),m.jd(new AUt(T)),N=new dp(new LUt(s)),r=new Er,d=m.Kc();d.Ob();)h=u(d.Pb(),240),k=u(h.a,39),Ie(De(h.c))?(N.a.zc(k,(Nn(),Yb))==null,new b1(N.a.Zc(k,!1)).a.gc()>0&&di(r,k,u(new b1(N.a.Zc(k,!1)).a.Vc(),39)),new b1(N.a.ad(k,!0)).a.gc()>1&&di(r,$ue(N,k),k)):(new b1(N.a.Zc(k,!1)).a.gc()>0&&(o=u(new b1(N.a.Zc(k,!1)).a.Vc(),39),$t(o)===$t(Uo(yo(r.f,k)))&&u(K(k,(zi(),S1t)),15).Fc(o)),new b1(N.a.ad(k,!0)).a.gc()>1&&(A=$ue(N,k),$t(Uo(yo(r.f,A)))===$t(k)&&u(K(A,(zi(),S1t)),15).Fc(k)),N.a.Bc(k)!=null)}function fpe(t){var e,n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt;if(t.gc()==1)return u(t.Xb(0),235);if(t.gc()<=0)return new dq;for(s=t.Kc();s.Ob();){for(n=u(s.Pb(),235),U=0,T=ki,A=ki,m=Va,k=Va,j=new J(n.e);j.ad&&(St=0,Bt+=h+ct,h=0),P8n(W,n,St,Bt),e=b.Math.max(e,St+tt.a),h=b.Math.max(h,tt.b),St+=tt.a+ct;return W}function cCn(t){xkt();var e,n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt;if(t==null||(o=Tq(t),U=Fbn(o),U%4!=0))return null;if(W=U/4|0,W==0)return Vt(cl,A5,28,0,15,1);for(A=null,e=0,n=0,r=0,s=0,h=0,d=0,m=0,k=0,j=0,N=0,T=0,A=Vt(cl,A5,28,W*3,15,1);j>4)<<24>>24,A[N++]=((n&15)<<4|r>>2&15)<<24>>24,A[N++]=(r<<6|s)<<24>>24}return!LD(h=o[T++])||!LD(d=o[T++])?null:(e=xd[h],n=xd[d],m=o[T++],k=o[T++],xd[m]==-1||xd[k]==-1?m==61&&k==61?n&15?null:(tt=Vt(cl,A5,28,j*3+1,15,1),Wc(A,0,tt,0,j*3),tt[N]=(e<<2|n>>4)<<24>>24,tt):m!=61&&k==61?(r=xd[m],r&3?null:(tt=Vt(cl,A5,28,j*3+2,15,1),Wc(A,0,tt,0,j*3),tt[N++]=(e<<2|n>>4)<<24>>24,tt[N]=((n&15)<<4|r>>2&15)<<24>>24,tt)):null:(r=xd[m],s=xd[k],A[N++]=(e<<2|n>>4)<<24>>24,A[N++]=((n&15)<<4|r>>2&15)<<24>>24,A[N++]=(r<<6|s)<<24>>24,A))}function uCn(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt;for(e.Ug(s2e,1),U=u(K(t,(Me(),Rg)),223),s=new J(t.b);s.a=2){for(W=!0,N=new J(o.j),n=u(et(N),12),j=null;N.a0)if(r=A.gc(),k=Xs(b.Math.floor((r+1)/2))-1,s=Xs(b.Math.ceil((r+1)/2))-1,e.o==gd)for(T=s;T>=k;T--)e.a[Bt.p]==Bt&&(W=u(A.Xb(T),42),U=u(W.a,10),!v1(n,W.b)&&j>t.b.e[U.p]&&(e.a[U.p]=Bt,e.g[Bt.p]=e.g[U.p],e.a[Bt.p]=e.g[Bt.p],e.f[e.g[Bt.p].p]=(Nn(),!!(Ie(e.f[e.g[Bt.p].p])&Bt.k==(Un(),ha))),j=t.b.e[U.p]));else for(T=k;T<=s;T++)e.a[Bt.p]==Bt&&(ct=u(A.Xb(T),42),tt=u(ct.a,10),!v1(n,ct.b)&&j0&&(s=u(Oe(tt.c.a,ie-1),10),h=t.i[s.p],en=b.Math.ceil(q4(t.n,s,tt)),o=Kt.a.e-tt.d.d-(h.a.e+s.o.b+s.d.a)-en),k=ns,ie0&&Ce.a.e.e-Ce.a.a-(Ce.b.e.e-Ce.b.a)<0,U=St.a.e.e-St.a.a-(St.b.e.e-St.b.a)<0&&Ce.a.e.e-Ce.a.a-(Ce.b.e.e-Ce.b.a)>0,j=St.a.e.e+St.b.aCe.b.e.e+Ce.a.a,Bt=0,!W&&!U&&(N?o+A>0?Bt=A:k-r>0&&(Bt=r):j&&(o+d>0?Bt=d:k-Tt>0&&(Bt=Tt))),Kt.a.e+=Bt,Kt.b&&(Kt.d.e+=Bt),!1))}function gpe(t,e,n){var r,s,o,h,d,m,k,T,A,N;if(r=new Th(e.Lf().a,e.Lf().b,e.Mf().a,e.Mf().b),s=new P6,t.c)for(h=new J(e.Rf());h.ak&&(r.a+=zQt(Vt(Uh,Yd,28,-k,15,1))),r.a+="Is",Fd(m,qu(32))>=0)for(s=0;s=r.o.b/2}else Tt=!A;Tt?(ct=u(K(r,(ae(),Uk)),15),ct?N?o=ct:(s=u(K(r,$k),15),s?ct.gc()<=s.gc()?o=ct:o=s:(o=new ge,Zt(r,$k,o))):(o=new ge,Zt(r,Uk,o))):(s=u(K(r,(ae(),$k)),15),s?A?o=s:(ct=u(K(r,Uk),15),ct?s.gc()<=ct.gc()?o=s:o=ct:(o=new ge,Zt(r,Uk,o))):(o=new ge,Zt(r,$k,o))),o.Fc(t),Zt(t,(ae(),EG),n),e.d==n?(ya(e,null),n.e.c.length+n.g.c.length==0&&uc(n,null),Spn(n)):(Ya(e,null),n.e.c.length+n.g.c.length==0&&uc(n,null)),Zl(e.a)}function dCn(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On,Mn,er,Jr,cs;for(n.Ug("MinWidth layering",1),j=e.b,Ce=e.a,cs=u(K(e,(Me(),$St)),17).a,d=u(K(e,zSt),17).a,t.b=Rt(Ht(K(e,Yf))),t.d=ns,Bt=new J(Ce);Bt.a0?(k=0,tt&&(k+=d),k+=(Je-1)*h,St&&(k+=d),en&&St&&(k=b.Math.max(k,O6n(St,h,Tt,Ce))),k=t.a&&(r=YEn(t,Tt),T=b.Math.max(T,r.b),Bt=b.Math.max(Bt,r.d),pe(d,new Ys(Tt,r)));for(en=new ge,k=0;k0),tt.a.Xb(tt.c=--tt.b),Je=new tu(t.b),Ly(tt,Je),cr(tt.b0){for(N=T<100?null:new bb(T),k=new T4t(e),U=k.g,ct=Vt(Or,ii,28,T,15,1),r=0,Bt=new jm(T),s=0;s=0;)if(j!=null?Ci(j,U[m]):$t(j)===$t(U[m])){ct.length<=r&&(tt=ct,ct=Vt(Or,ii,28,2*ct.length,15,1),Wc(tt,0,ct,0,r)),ct[r++]=s,Mr(Bt,U[m]);break t}if(j=j,$t(j)===$t(d))break}}if(k=Bt,U=Bt.g,T=r,r>ct.length&&(tt=ct,ct=Vt(Or,ii,28,r,15,1),Wc(tt,0,ct,0,r)),r>0){for(St=!0,o=0;o=0;)fk(t,ct[h]);if(r!=T){for(s=T;--s>=r;)fk(k,s);tt=ct,ct=Vt(Or,ii,28,r,15,1),Wc(tt,0,ct,0,r)}e=k}}}else for(e=Mmn(t,e),s=t.i;--s>=0;)e.Hc(t.g[s])&&(fk(t,s),St=!0);if(St){if(ct!=null){for(n=e.gc(),A=n==1?D_(t,4,e.Kc().Pb(),null,ct[0],W):D_(t,6,e,ct,ct[0],W),N=n<100?null:new bb(n),s=e.Kc();s.Ob();)j=s.Pb(),N=dvt(t,u(j,76),N);N?(N.nj(A),N.oj()):Ti(t.e,A)}else{for(N=Fsn(e.gc()),s=e.Kc();s.Ob();)j=s.Pb(),N=dvt(t,u(j,76),N);N&&N.oj()}return!0}else return!1}function bCn(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St;for(n=new Ile(e),n.a||U8n(e),k=qkn(e),m=new Nm,tt=new Nde,W=new J(e.a);W.a0||n.o==gd&&s=n}function mCn(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On,Mn,er;for(St=e,Tt=new Nm,Bt=new Nm,T=Rm(St,hTt),r=new zee(t,n,Tt,Bt),R3n(r.a,r.b,r.c,r.d,T),m=(Ce=Tt.i,Ce||(Tt.i=new U4(Tt,Tt.c))),Je=m.Kc();Je.Ob();)for(en=u(Je.Pb(),166),s=u(Mi(Tt,en),21),W=s.Kc();W.Ob();)if(U=W.Pb(),Kt=u(Z4(t.d,U),166),Kt)d=(!en.e&&(en.e=new En(Ji,en,10,9)),en.e),Mr(d,Kt);else throw h=wg(St,n0),N=Iwe+U+Owe+h,j=N+uT,nt(new Pd(j));for(k=(ie=Bt.i,ie||(Bt.i=new U4(Bt,Bt.c))),Mn=k.Kc();Mn.Ob();)for(On=u(Mn.Pb(),166),o=u(Mi(Bt,On),21),ct=o.Kc();ct.Ob();)if(tt=ct.Pb(),Kt=u(Z4(t.d,tt),166),Kt)A=(!On.g&&(On.g=new En(Ji,On,9,10)),On.g),Mr(A,Kt);else throw h=wg(St,n0),N=Iwe+tt+Owe+h,j=N+uT,nt(new Pd(j));!n.b&&(n.b=new En(gr,n,4,7)),n.b.i!=0&&(!n.c&&(n.c=new En(gr,n,5,8)),n.c.i!=0)&&(!n.b&&(n.b=new En(gr,n,4,7)),n.b.i<=1&&(!n.c&&(n.c=new En(gr,n,5,8)),n.c.i<=1))&&(!n.a&&(n.a=new Jt(Ji,n,6,6)),n.a).i==1&&(er=u(Lt((!n.a&&(n.a=new Jt(Ji,n,6,6)),n.a),0),166),!tot(er)&&!eot(er)&&(jq(er,u(Lt((!n.b&&(n.b=new En(gr,n,4,7)),n.b),0),84)),$q(er,u(Lt((!n.c&&(n.c=new En(gr,n,5,8)),n.c),0),84))))}function vCn(t){var e,n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On;for(St=t.a,Bt=0,Kt=St.length;Bt0?(A=u(Oe(N.c.a,h-1),10),en=q4(t.b,N,A),tt=N.n.b-N.d.d-(A.n.b+A.o.b+A.d.a+en)):tt=N.n.b-N.d.d,k=b.Math.min(tt,k),h1&&(h=b.Math.min(h,b.Math.abs(u(Nh(d.a,1),8).b-T.b)))));else for(W=new J(e.j);W.as&&(o=N.a-s,h=ki,r.c.length=0,s=N.a),N.a>=s&&(In(r.c,d),d.a.b>1&&(h=b.Math.min(h,b.Math.abs(u(Nh(d.a,d.a.b-2),8).b-N.b)))));if(r.c.length!=0&&o>e.o.a/2&&h>e.o.b/2){for(j=new Kc,uc(j,e),Qs(j,(ve(),Hn)),j.n.a=e.o.a/2,ct=new Kc,uc(ct,e),Qs(ct,vr),ct.n.a=e.o.a/2,ct.n.b=e.o.b,m=new J(r);m.a=k.b?Ya(d,ct):Ya(d,j)):(k=u(lcn(d.a),8),tt=d.a.b==0?Q1(d.c):u(Nf(d.a),8),tt.b>=k.b?ya(d,ct):ya(d,j)),A=u(K(d,(Me(),qo)),75),A&&Ky(A,k,!0);e.n.a=s-e.o.a/2}}function xCn(t,e,n){var r,s,o,h,d,m,k,T,A,N;for(d=_r(t.b,0);d.b!=d.d.c;)if(h=u(Tr(d),39),!hn(h.c,QV))for(k=G5n(h,t),e==(Rs(),Ho)||e==Jo?Ms(k,new YZ):Ms(k,new XZ),m=k.c.length,r=0;r=0?j=ck(d):j=lO(ck(d)),t.qf(DT,j)),k=new Ea,N=!1,t.pf(Cv)?(Bmt(k,u(t.of(Cv),8)),N=!0):Din(k,h.a/2,h.b/2),j.g){case 4:Zt(T,Du,(Ph(),t2)),Zt(T,CG,(ew(),R5)),T.o.b=h.b,W<0&&(T.o.a=-W),Qs(A,(ve(),Jn)),N||(k.a=h.a),k.a-=h.a;break;case 2:Zt(T,Du,(Ph(),_3)),Zt(T,CG,(ew(),TT)),T.o.b=h.b,W<0&&(T.o.a=-W),Qs(A,(ve(),Gn)),N||(k.a=0);break;case 1:Zt(T,kw,(kg(),$5)),T.o.a=h.a,W<0&&(T.o.b=-W),Qs(A,(ve(),vr)),N||(k.b=h.b),k.b-=h.b;break;case 3:Zt(T,kw,(kg(),jk)),T.o.a=h.a,W<0&&(T.o.b=-W),Qs(A,(ve(),Hn)),N||(k.b=0)}if(Bmt(A.n,k),Zt(T,Cv,k),e==Nw||e==G0||e==lu){if(U=0,e==Nw&&t.pf(qp))switch(j.g){case 1:case 2:U=u(t.of(qp),17).a;break;case 3:case 4:U=-u(t.of(qp),17).a}else switch(j.g){case 4:case 2:U=o.b,e==G0&&(U/=s.b);break;case 1:case 3:U=o.a,e==G0&&(U/=s.a)}Zt(T,yv,U)}return Zt(T,_c,j),T}function kCn(){cwt();function t(r){var s=this;this.dispatch=function(o){var h=o.data;switch(h.cmd){case"algorithms":var d=L5t((wn(),new re(new li(h2.b))));r.postMessage({id:h.id,data:d});break;case"categories":var m=L5t((wn(),new re(new li(h2.c))));r.postMessage({id:h.id,data:m});break;case"options":var k=L5t((wn(),new re(new li(h2.d))));r.postMessage({id:h.id,data:k});break;case"register":CTn(h.algorithms),r.postMessage({id:h.id});break;case"layout":t7n(h.graph,h.layoutOptions||{},h.options||{}),r.postMessage({id:h.id,data:h.graph});break}},this.saveDispatch=function(o){try{s.dispatch(o)}catch(h){r.postMessage({id:o.data.id,error:h})}}}function e(r){var s=this;this.dispatcher=new t({postMessage:function(o){s.onmessage({data:o})}}),this.postMessage=function(o){setTimeout(function(){s.dispatcher.saveDispatch({data:o})},0)}}if(typeof document===cut&&typeof self!==cut){var n=new t(self);self.onmessage=n.saveDispatch}else typeof g!==cut&&g.exports&&(Object.defineProperty(w,"__esModule",{value:!0}),g.exports={default:e,Worker:e})}function ype(t,e,n){var r,s,o,h,d,m,k,T,A,N;for(T=new Lg(n),Yo(T,e),Zt(T,(ae(),Di),e),T.o.a=e.g,T.o.b=e.f,T.n.a=e.i,T.n.b=e.j,pe(n.a,T),di(t.a,e,T),((!e.a&&(e.a=new Jt(wi,e,10,11)),e.a).i!=0||Ie(De(ne(e,(Me(),L3)))))&&Zt(T,F_t,(Nn(),!0)),k=u(K(n,uu),21),A=u(K(T,(Me(),ms)),101),A==(xa(),c2)?Zt(T,ms,md):A!=md&&k.Fc((ko(),ST)),N=0,r=u(K(n,fh),88),m=new Zn((!e.c&&(e.c=new Jt(kl,e,9,9)),e.c));m.e!=m.i.gc();)d=u(sr(m),123),s=es(e),($t(ne(s,q0))!==$t((Vd(),Hp))||$t(ne(s,Tw))===$t((Mp(),ET))||$t(ne(s,Tw))===$t((Mp(),kT))||Ie(De(ne(s,kv)))||$t(ne(s,S3))!==$t((iw(),x3))||$t(ne(s,e2))===$t((sf(),Av))||$t(ne(s,e2))===$t((sf(),P3))||$t(ne(s,_w))===$t((Np(),NT))||$t(ne(s,_w))===$t((Np(),FT)))&&!Ie(De(ne(e,IG)))&&Oi(d,Bi,fe(N++)),Ie(De(ne(d,Aw)))||I9n(t,d,T,k,r,A);for(h=new Zn((!e.n&&(e.n=new Jt(Oo,e,1,7)),e.n));h.e!=h.i.gc();)o=u(sr(h),135),!Ie(De(ne(o,Aw)))&&o.a&&pe(T.b,Sat(o));return Ie(De(K(T,CA)))&&k.Fc((ko(),yG)),Ie(De(K(T,FG)))&&(k.Fc((ko(),xG)),k.Fc(vA),Zt(T,ms,md)),T}function Ect(t,e,n,r,s,o,h){var d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On,Mn,er,Jr,cs;for(W=0,On=0,k=new J(t.b);k.aW&&(o&&(to(ie,j),to(en,fe(T.b-1)),pe(t.d,U),d.c.length=0),Jr=n.b,cs+=j+e,j=0,A=b.Math.max(A,n.b+n.c+er)),In(d.c,m),Tle(m,Jr,cs),A=b.Math.max(A,Jr+er+n.c),j=b.Math.max(j,N),Jr+=er+e,U=m;if(Hs(t.a,d),pe(t.d,u(Oe(d,d.c.length-1),163)),A=b.Math.max(A,r),Mn=cs+j+n.a,Mns.d.d+s.d.a?T.f.d=!0:(T.f.d=!0,T.f.a=!0))),r.b!=r.d.c&&(e=n);T&&(o=u(tr(t.f,h.d.i),60),e.bo.d.d+o.d.a?T.f.d=!0:(T.f.d=!0,T.f.a=!0))}for(d=new nr(ir(ca(j).a.Kc(),new q));Sr(d);)h=u(lr(d),18),h.a.b!=0&&(e=u(Nf(h.a),8),h.d.j==(ve(),Hn)&&(tt=new CS(e,new se(e.a,s.d.d),s,h),tt.f.a=!0,tt.a=h.d,In(W.c,tt)),h.d.j==vr&&(tt=new CS(e,new se(e.a,s.d.d+s.d.a),s,h),tt.f.d=!0,tt.a=h.d,In(W.c,tt)))}return W}function ACn(t,e,n){var r,s,o,h,d,m,k,T,A,N;for(m=new ge,A=e.length,h=$4t(n),k=0;k=U&&(Tt>U&&(j.c.length=0,U=Tt),In(j.c,h));j.c.length!=0&&(N=u(Oe(j,_H(e,j.c.length)),131),Mn.a.Bc(N)!=null,N.s=W++,B6t(N,Je,ie),j.c.length=0)}for(Bt=t.c.length+1,d=new J(t);d.aOn.s&&(Ul(n),$u(On.i,r),r.c>0&&(r.a=On,pe(On.t,r),r.b=Ce,pe(Ce.i,r)))}function xpe(t,e,n,r,s){var o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On,Mn;for(W=new bu(e.b),Bt=new bu(e.b),N=new bu(e.b),en=new bu(e.b),tt=new bu(e.b),Ce=_r(e,0);Ce.b!=Ce.d.c;)for(Kt=u(Tr(Ce),12),d=new J(Kt.g);d.a0,ct=Kt.g.c.length>0,k&&ct?In(N.c,Kt):k?In(W.c,Kt):ct&&In(Bt.c,Kt);for(U=new J(W);U.aTt.nh()-k.b&&(N=Tt.nh()-k.b),j>Tt.oh()-k.d&&(j=Tt.oh()-k.d),T0){for(St=_r(t.f,0);St.b!=St.d.c;)Tt=u(Tr(St),10),Tt.p+=N-t.e;r6t(t),Zl(t.f),Q6t(t,r,j)}else{for(Zr(t.f,j),j.p=r,t.e=b.Math.max(t.e,r),o=new nr(ir(ca(j).a.Kc(),new q));Sr(o);)s=u(lr(o),18),!s.c.i.c&&s.c.i.k==(Un(),qc)&&(Zr(t.f,s.c.i),s.c.i.p=r-1);t.c=r}else r6t(t),Zl(t.f),r=0,Sr(new nr(ir(ca(j).a.Kc(),new q)))?(N=0,N=Lle(N,j),r=N+2,Q6t(t,r,j)):(Zr(t.f,j),j.p=0,t.e=b.Math.max(t.e,0),t.b=u(Oe(t.d.b,0),30),t.c=0);for(t.f.b==0||r6t(t),t.d.a.c.length=0,ct=new ge,k=new J(t.d.b);k.a=48&&e<=57){for(r=e-48;s=48&&e<=57;)if(r=r*10+e-48,r<0)throw nt(new Yr(Qr((Ur(),TTt))))}else throw nt(new Yr(Qr((Ur(),sme))));if(n=r,e==44){if(s>=t.j)throw nt(new Yr(Qr((Ur(),ome))));if((e=qa(t.i,s++))>=48&&e<=57){for(n=e-48;s=48&&e<=57;)if(n=n*10+e-48,n<0)throw nt(new Yr(Qr((Ur(),TTt))));if(r>n)throw nt(new Yr(Qr((Ur(),cme))))}else n=-1}if(e!=125)throw nt(new Yr(Qr((Ur(),ame))));t.bm(s)?(o=(xi(),xi(),new By(9,o)),t.d=s+1):(o=(xi(),xi(),new By(3,o)),t.d=s),o.Om(r),o.Nm(n),vi(t)}}return o}function PCn(t){var e,n,r,s,o;switch(n=u(K(t,(ae(),uu)),21),e=J$(M3e),s=u(K(t,(Me(),A3)),346),s==(Cg(),Wp)&&sh(e,D3e),Ie(De(K(t,Jft)))?ri(e,(Ha(),Wf),(Ja(),oft)):ri(e,(Ha(),Yc),(Ja(),oft)),K(t,(wq(),QA))!=null&&sh(e,I3e),(Ie(De(K(t,BSt)))||Ie(De(K(t,OSt))))&&tl(e,(Ha(),Qo),(Ja(),ICt)),u(K(t,fh),88).g){case 2:case 3:case 4:tl(ri(e,(Ha(),Wf),(Ja(),PCt)),Qo,OCt)}switch(n.Hc((ko(),yG))&&tl(ri(ri(e,(Ha(),Wf),(Ja(),DCt)),ou,LCt),Qo,MCt),$t(K(t,e2))!==$t((sf(),WG))&&ri(e,(Ha(),Yc),(Ja(),YCt)),n.Hc(kG)&&(ri(e,(Ha(),Wf),(Ja(),ZCt)),ri(e,$0,QCt),ri(e,Yc,JCt)),$t(K(t,MG))!==$t((A7(),mA))&&$t(K(t,Rg))!==$t((_g(),_N))&&tl(e,(Ha(),Qo),(Ja(),HCt)),Ie(De(K(t,NSt)))&&ri(e,(Ha(),Yc),(Ja(),qCt)),Ie(De(K(t,Wft)))&&ri(e,(Ha(),Yc),(Ja(),t_t)),Kxn(t)&&($t(K(t,A3))===$t(Wp)?r=u(K(t,JP),298):r=u(K(t,Kft),298),o=r==(s7(),Ift)?(Ja(),XCt):(Ja(),r_t),ri(e,(Ha(),ou),o)),u(K(t,uAt),388).g){case 1:ri(e,(Ha(),ou),(Ja(),e_t));break;case 2:tl(ri(ri(e,(Ha(),Yc),(Ja(),CCt)),ou,_Ct),Qo,SCt)}return $t(K(t,q0))!==$t((Vd(),Hp))&&ri(e,(Ha(),Yc),(Ja(),n_t)),e}function Cpe(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St;if(Eu(t.a,e)){if(v1(u(tr(t.a,e),49),n))return 1}else di(t.a,e,new Os);if(Eu(t.a,n)){if(v1(u(tr(t.a,n),49),e))return-1}else di(t.a,n,new Os);if(Eu(t.e,e)){if(v1(u(tr(t.e,e),49),n))return-1}else di(t.e,e,new Os);if(Eu(t.e,n)){if(v1(u(tr(t.a,n),49),e))return 1}else di(t.e,n,new Os);if(t.c==(Vd(),g1t)||!Ui(e,(ae(),Bi))||!Ui(n,(ae(),Bi))){for(A=null,k=new J(e.j);k.ah?N7(t,e,n):N7(t,n,e),sh?1:0}return r=u(K(e,(ae(),Bi)),17).a,o=u(K(n,Bi),17).a,r>o?N7(t,e,n):N7(t,n,e),ro?1:0}function rv(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt;if(n==null)return null;if(t.a!=e.jk())throw nt(new zn(oT+e.xe()+hv));if(At(e,468)){if(tt=Ckn(u(e,685),n),!tt)throw nt(new zn(Nlt+n+"' is not a valid enumerator of '"+e.xe()+"'"));return tt}switch(Sp((rl(),Fa),e).Nl()){case 2:{n=iu(n,!1);break}case 3:{n=iu(n,!0);break}}if(r=Sp(Fa,e).Jl(),r)return r.jk().wi().ti(r,n);if(N=Sp(Fa,e).Ll(),N){for(tt=new ge,k=mat(n),T=0,A=k.length;T1)for(U=new F6((!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a));U.e!=U.i.gc();)dS(U);for(h=u(Lt((!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a),0),166),tt=Jr,Jr>Kt+Bt?tt=Kt+Bt:Jrie+W?ct=ie+W:csKt-Bt&&ttie-W&&ctJr+er?en=Jr+er:Ktcs+Ce?Je=cs+Ce:ieJr-er&&encs-Ce&&Jen&&(N=n-1),j=eb+Ml(e,24)*iP*A-A/2,j<0?j=1:j>r&&(j=r-1),s=(wb(),m=new sC,m),Oq(s,N),Iq(s,j),Mr((!h.a&&(h.a=new Ns(bh,h,5)),h.a),s)}function _pe(t){bm(t,new ow(dm(lm(fm(hm(new cg,Ol),"ELK Rectangle Packing"),"Algorithm for packing of unconnected boxes, i.e. graphs without edges. The given order of the boxes is always preserved and the main reading direction of the boxes is left to right. The algorithm is divided into two phases. One phase approximates the width in which the rectangles can be placed. The next phase places the rectangles in rows using the previously calculated width as bounding width and bundles rectangles with a similar height in blocks. A compaction step reduces the size of the drawing. Finally, the rectangles are expanded to fill their bounding box and eliminate empty unused spaces."),new uy))),he(t,Ol,Sk,1.3),he(t,Ol,J7,(Nn(),!1)),he(t,Ol,av,iMt),he(t,Ol,h3,15),he(t,Ol,GV,_e(H8e)),he(t,Ol,T5,_e(G8e)),he(t,Ol,Lk,_e(W8e)),he(t,Ol,Ak,_e(Y8e)),he(t,Ol,Z7,_e(U8e)),he(t,Ol,$S,_e(eMt)),he(t,Ol,tT,_e(X8e)),he(t,Ol,R7t,_e(cMt)),he(t,Ol,j7t,_e(oMt)),he(t,Ol,B7t,_e(sdt)),he(t,Ol,F7t,_e(uMt)),he(t,Ol,$7t,_e(rMt)),he(t,Ol,z7t,_e(idt)),he(t,Ol,q7t,_e(nMt)),he(t,Ol,H7t,_e(aMt)),he(t,Ol,jS,_e(tMt)),he(t,Ol,WV,_e(V8e)),he(t,Ol,P7t,_e(dN)),he(t,Ol,O7t,_e(ZLt)),he(t,Ol,N7t,_e(gN)),he(t,Ol,I7t,_e(sMt))}function Cct(t,e){lct();var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On,Mn,er,Jr;if(en=t.e,U=t.d,s=t.a,en==0)switch(e){case 0:return"0";case 1:return G7;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return ie=new pb,e<0?ie.a+="0E+":ie.a+="0E",ie.a+=-e,ie.a}if(St=U*10+1+7,Bt=Vt(Uh,Yd,28,St+1,15,1),n=St,U==1)if(d=s[0],d<0){Jr=ia(d,Eo);do W=Jr,Jr=xO(Jr,10),Bt[--n]=48+qr(ef(W,Qa(Jr,10)))&js;while(Rc(Jr,0)!=0)}else{Jr=d;do W=Jr,Jr=Jr/10|0,Bt[--n]=48+(W-Jr*10)&js;while(Jr!=0)}else{On=Vt(Or,ii,28,U,15,1),er=U,Wc(s,0,On,0,er);t:for(;;){for(Ce=0,k=er-1;k>=0;k--)Mn=Xa(Rf(Ce,32),ia(On[k],Eo)),ct=Eyn(Mn),On[k]=qr(ct),Ce=qr(_m(ct,32));Tt=qr(Ce),tt=n;do Bt[--n]=48+Tt%10&js;while((Tt=Tt/10|0)!=0&&n!=0);for(r=9-tt+n,m=0;m0;m++)Bt[--n]=48;for(A=er-1;On[A]==0;A--)if(A==0)break t;er=A+1}for(;Bt[n]==48;)++n}if(j=en<0,h=St-n-e-1,e==0)return j&&(Bt[--n]=45),nf(Bt,n,St-n);if(e>0&&h>=-6){if(h>=0){for(T=n+h,N=St-1;N>=T;N--)Bt[N+1]=Bt[N];return Bt[++T]=46,j&&(Bt[--n]=45),nf(Bt,n,St-n+1)}for(A=2;A<-h+1;A++)Bt[--n]=48;return Bt[--n]=46,Bt[--n]=48,j&&(Bt[--n]=45),nf(Bt,n,St-n)}return Je=n+1,o=St,Kt=new L4,j&&(Kt.a+="-"),o-Je>=1?(Cb(Kt,Bt[n]),Kt.a+=".",Kt.a+=nf(Bt,n+1,St-n-1)):Kt.a+=nf(Bt,n,St-n),Kt.a+="E",h>0&&(Kt.a+="+"),Kt.a+=""+h,Kt.a}function Spe(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie;switch(t.c=e,t.g=new Er,n=(xy(),new my(t.c)),r=new LC(n),_5t(r),St=Gr(ne(t.c,(EO(),AMt))),m=u(ne(t.c,pdt),324),Kt=u(ne(t.c,bdt),437),h=u(ne(t.c,CMt),489),Bt=u(ne(t.c,gdt),438),t.j=Rt(Ht(ne(t.c,lEe))),d=t.a,m.g){case 0:d=t.a;break;case 1:d=t.b;break;case 2:d=t.i;break;case 3:d=t.e;break;case 4:d=t.f;break;default:throw nt(new zn(rU+(m.f!=null?m.f:""+m.g)))}if(t.d=new vne(d,Kt,h),Zt(t.d,(n7(),dA),De(ne(t.c,cEe))),t.d.c=Ie(De(ne(t.c,_Mt))),Kz(t.c).i==0)return t.d;for(A=new Zn(Kz(t.c));A.e!=A.i.gc();){for(T=u(sr(A),27),j=T.g/2,N=T.f/2,ie=new se(T.i+j,T.j+N);Eu(t.g,ie);)Em(ie,(b.Math.random()-.5)*Jd,(b.Math.random()-.5)*Jd);W=u(ne(T,(si(),qT)),140),tt=new One(ie,new Th(ie.a-j-t.j/2-W.b,ie.b-N-t.j/2-W.d,T.g+t.j+(W.b+W.c),T.f+t.j+(W.d+W.a))),pe(t.d.i,tt),di(t.g,ie,new Ys(tt,T))}switch(Bt.g){case 0:if(St==null)t.d.d=u(Oe(t.d.i,0),68);else for(Tt=new J(t.d.i);Tt.a0?er+1:1);for(h=new J(ie.g);h.a0?er+1:1)}t.c[k]==0?Zr(t.e,W):t.a[k]==0&&Zr(t.f,W),++k}for(U=-1,j=1,A=new ge,t.d=u(K(e,(ae(),Vk)),234);wh>0;){for(;t.e.b!=0;)cs=u(bit(t.e),10),t.b[cs.p]=U--,gkt(t,cs),--wh;for(;t.f.b!=0;)El=u(bit(t.f),10),t.b[El.p]=j++,gkt(t,El),--wh;if(wh>0){for(N=Va,Tt=new J(St);Tt.a=N&&(Bt>N&&(A.c.length=0,N=Bt),In(A.c,W)));T=t.sg(A),t.b[T.p]=j++,gkt(t,T),--wh}}for(Jr=St.c.length+1,k=0;kt.b[Vo]&&(ev(r,!0),Zt(e,WP,(Nn(),!0)));t.a=null,t.c=null,t.b=null,Zl(t.f),Zl(t.e),n.Vg()}function Ape(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie;for(Kt=u(Lt((!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a),0),166),T=new Xu,Bt=new Er,ie=B0e(Kt),vu(Bt.f,Kt,ie),N=new Er,r=new Qi,U=C0(rh(ot(st(hh,1),Ln,20,0,[(!e.d&&(e.d=new En(Cs,e,8,5)),e.d),(!e.e&&(e.e=new En(Cs,e,7,4)),e.e)])));Sr(U);){if(j=u(lr(U),74),(!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a).i!=1)throw nt(new zn(gwe+(!t.a&&(t.a=new Jt(Ji,t,6,6)),t.a).i));j!=t&&(tt=u(Lt((!j.a&&(j.a=new Jt(Ji,j,6,6)),j.a),0),166),fs(r,tt,r.c.b,r.c),W=u(Uo(yo(Bt.f,tt)),13),W||(W=B0e(tt),vu(Bt.f,tt,W)),A=n?ra(new eo(u(Oe(ie,ie.c.length-1),8)),u(Oe(W,W.c.length-1),8)):ra(new eo((mn(0,ie.c.length),u(ie.c[0],8))),(mn(0,W.c.length),u(W.c[0],8))),vu(N.f,tt,A))}if(r.b!=0)for(ct=u(Oe(ie,n?ie.c.length-1:0),8),k=1;k1&&fs(T,ct,T.c.b,T.c),Hst(s)));ct=Tt}return T}function Lpe(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On;for(n.Ug(L2e,1),On=u(tc(Ai(new ln(null,new gn(e,16)),new ntt),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[(bl(),rc)]))),15),T=u(tc(Ai(new ln(null,new gn(e,16)),new DUt(e)),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[rc]))),15),U=u(tc(Ai(new ln(null,new gn(e,16)),new MUt(e)),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[rc]))),15),W=Vt(eK,JV,39,e.gc(),0,1),h=0;h=0&&Je=0&&!W[j]){W[j]=s,T.gd(d),--d;break}if(j=Je-N,j=0&&!W[j]){W[j]=s,T.gd(d),--d;break}}for(U.jd(new rtt),m=W.length-1;m>=0;m--)!W[m]&&!U.dc()&&(W[m]=u(U.Xb(0),39),U.gd(0));for(k=0;k=0;m--)Zr(n,(mn(m,h.c.length),u(h.c[m],8)));return n}function Dpe(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt;for(St=Rt(Ht(ne(e,(D0(),B3)))),j=Rt(Ht(ne(e,GA))),N=Rt(Ht(ne(e,hK))),m4t((!e.a&&(e.a=new Jt(wi,e,10,11)),e.a)),ct=xge((!e.a&&(e.a=new Jt(wi,e,10,11)),e.a),St,t.b),tt=0;ttN&&vO((mn(N,e.c.length),u(e.c[N],186)),T),T=null;e.c.length>N&&(mn(N,e.c.length),u(e.c[N],186)).a.c.length==0;)$u(e,(mn(N,e.c.length),e.c[N]));if(!T){--h;continue}if(!Ie(De(u(Oe(T.b,0),27).of((ad(),gN))))&&iEn(e,U,o,T,tt,n,N,r)){W=!0;continue}if(tt){if(j=U.b,A=T.f,!Ie(De(u(Oe(T.b,0),27).of(gN)))&&kTn(e,U,o,T,n,N,r,s)){if(W=!0,j=t.j){t.a=-1,t.c=1;return}if(e=qa(t.i,t.d++),t.a=e,t.b==1){switch(e){case 92:if(r=10,t.d>=t.j)throw nt(new Yr(Qr((Ur(),lU))));t.a=qa(t.i,t.d++);break;case 45:(t.e&512)==512&&t.d=t.j||qa(t.i,t.d)!=63)break;if(++t.d>=t.j)throw nt(new Yr(Qr((Ur(),Wlt))));switch(e=qa(t.i,t.d++),e){case 58:r=13;break;case 61:r=14;break;case 33:r=15;break;case 91:r=19;break;case 62:r=18;break;case 60:if(t.d>=t.j)throw nt(new Yr(Qr((Ur(),Wlt))));if(e=qa(t.i,t.d++),e==61)r=16;else if(e==33)r=17;else throw nt(new Yr(Qr((Ur(),zwe))));break;case 35:for(;t.d=t.j)throw nt(new Yr(Qr((Ur(),lU))));t.a=qa(t.i,t.d++);break;default:r=0}t.c=r}function VCn(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt;if(n.Ug("Process compaction",1),!!Ie(De(K(e,(xc(),cLt))))){for(s=u(K(e,Mv),88),j=Rt(Ht(K(e,N1t))),w7n(t,e,s),oCn(e,j/2/2),U=e.b,Q2(U,new EUt(s)),k=_r(U,0);k.b!=k.d.c;)if(m=u(Tr(k),39),!Ie(De(K(m,(zi(),i2))))){if(r=Hkn(m,s),W=REn(m,e),A=0,N=0,r)switch(tt=r.e,s.g){case 2:A=tt.a-j-m.f.a,W.e.a-j-m.f.aA&&(A=W.e.a+W.f.a+j),N=A+m.f.a;break;case 4:A=tt.b-j-m.f.b,W.e.b-j-m.f.bA&&(A=W.e.b+W.f.b+j),N=A+m.f.b}else if(W)switch(s.g){case 2:A=W.e.a-j-m.f.a,N=A+m.f.a;break;case 1:A=W.e.a+W.f.a+j,N=A+m.f.a;break;case 4:A=W.e.b-j-m.f.b,N=A+m.f.b;break;case 3:A=W.e.b+W.f.b+j,N=A+m.f.b}$t(K(e,P1t))===$t((Y_(),oN))?(o=A,h=N,d=u7(Ai(new ln(null,new gn(t.a,16)),new fXt(o,h))),d.a!=null?s==(Rs(),Ho)||s==Jo?m.e.a=A:m.e.b=A:(s==(Rs(),Ho)||s==qh?d=u7(Ai(qae(new ln(null,new gn(t.a,16))),new TUt(o))):d=u7(Ai(qae(new ln(null,new gn(t.a,16))),new CUt(o))),d.a!=null&&(s==Ho||s==Jo?m.e.a=Rt(Ht((cr(d.a!=null),u(d.a,42)).a)):m.e.b=Rt(Ht((cr(d.a!=null),u(d.a,42)).a)))),d.a!=null&&(T=Wo(t.a,(cr(d.a!=null),d.a),0),T>0&&T!=u(K(m,o0),17).a&&(Zt(m,tLt,(Nn(),!0)),Zt(m,o0,fe(T))))):s==(Rs(),Ho)||s==Jo?m.e.a=A:m.e.b=A}n.Vg()}}function Ipe(t){var e,n,r,s,o,h,d,m,k;for(t.b=1,vi(t),e=null,t.c==0&&t.a==94?(vi(t),e=(xi(),xi(),new eh(4)),ru(e,0,hT),d=new eh(4)):d=(xi(),xi(),new eh(4)),s=!0;(k=t.c)!=1;){if(k==0&&t.a==93&&!s){e&&(MS(e,d),d=e);break}if(n=t.a,r=!1,k==10)switch(n){case 100:case 68:case 119:case 87:case 115:case 83:a3(d,F7(n)),r=!0;break;case 105:case 73:case 99:case 67:n=(a3(d,F7(n)),-1),n<0&&(r=!0);break;case 112:case 80:if(m=m6t(t,n),!m)throw nt(new Yr(Qr((Ur(),Ylt))));a3(d,m),r=!0;break;default:n=Z6t(t)}else if(k==24&&!s){if(e&&(MS(e,d),d=e),o=Ipe(t),MS(d,o),t.c!=0||t.a!=93)throw nt(new Yr(Qr((Ur(),Qwe))));break}if(vi(t),!r){if(k==0){if(n==91)throw nt(new Yr(Qr((Ur(),kTt))));if(n==93)throw nt(new Yr(Qr((Ur(),ETt))));if(n==45&&!s&&t.a!=93)throw nt(new Yr(Qr((Ur(),Xlt))))}if(t.c!=0||t.a!=45||n==45&&s)ru(d,n,n);else{if(vi(t),(k=t.c)==1)throw nt(new Yr(Qr((Ur(),hU))));if(k==0&&t.a==93)ru(d,n,n),ru(d,45,45);else{if(k==0&&t.a==93||k==24)throw nt(new Yr(Qr((Ur(),Xlt))));if(h=t.a,k==0){if(h==91)throw nt(new Yr(Qr((Ur(),kTt))));if(h==93)throw nt(new Yr(Qr((Ur(),ETt))));if(h==45)throw nt(new Yr(Qr((Ur(),Xlt))))}else k==10&&(h=Z6t(t));if(vi(t),n>h)throw nt(new Yr(Qr((Ur(),tme))));ru(d,n,h)}}}s=!1}if(t.c==1)throw nt(new Yr(Qr((Ur(),hU))));return h5(d),AS(d),t.b=0,vi(t),d}function UCn(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt;if(n.Ug("Coffman-Graham Layering",1),e.a.c.length==0){n.Vg();return}for(Kt=u(K(e,(Me(),jSt)),17).a,m=0,h=0,N=new J(e.a);N.a=Kt||!j2n(ct,r))&&(r=Lee(e,T)),Ca(ct,r),o=new nr(ir(ca(ct).a.Kc(),new q));Sr(o);)s=u(lr(o),18),!t.a[s.p]&&(W=s.c.i,--t.e[W.p],t.e[W.p]==0&&z6(S7(j,W),K7));for(k=T.c.length-1;k>=0;--k)pe(e.b,(mn(k,T.c.length),u(T.c[k],30)));e.a.c.length=0,n.Vg()}function Ope(t,e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt;Bt=!1;do for(Bt=!1,o=e?new ui(t.a.b).a.gc()-2:1;e?o>=0:ou(K(tt,Bi),17).a)&&(St=!1);if(St){for(m=e?o+1:o-1,d=s3t(t.a,fe(m)),h=!1,Tt=!0,r=!1,T=_r(d,0);T.b!=T.d.c;)k=u(Tr(T),10),Ui(k,Bi)?k.p!=A.p&&(h=h|(e?u(K(k,Bi),17).au(K(A,Bi),17).a),Tt=!1):!h&&Tt&&k.k==(Un(),qc)&&(r=!0,e?N=u(lr(new nr(ir(ca(k).a.Kc(),new q))),18).c.i:N=u(lr(new nr(ir(As(k).a.Kc(),new q))),18).d.i,N==A&&(e?n=u(lr(new nr(ir(As(k).a.Kc(),new q))),18).d.i:n=u(lr(new nr(ir(ca(k).a.Kc(),new q))),18).c.i,(e?u(_y(t.a,n),17).a-u(_y(t.a,N),17).a:u(_y(t.a,N),17).a-u(_y(t.a,n),17).a)<=2&&(Tt=!1)));if(r&&Tt&&(e?n=u(lr(new nr(ir(As(A).a.Kc(),new q))),18).d.i:n=u(lr(new nr(ir(ca(A).a.Kc(),new q))),18).c.i,(e?u(_y(t.a,n),17).a-u(_y(t.a,A),17).a:u(_y(t.a,A),17).a-u(_y(t.a,n),17).a)<=2&&n.k==(Un(),Ts)&&(Tt=!1)),h||Tt){for(W=lde(t,A,e);W.a.gc()!=0;)U=u(W.a.ec().Kc().Pb(),10),W.a.Bc(U)!=null,Aa(W,lde(t,U,e));--j,Bt=!0}}}while(Bt)}function GCn(t){zr(t.c,ti,ot(st(Ne,1),le,2,6,[Ua,"http://www.w3.org/2001/XMLSchema#decimal"])),zr(t.d,ti,ot(st(Ne,1),le,2,6,[Ua,"http://www.w3.org/2001/XMLSchema#integer"])),zr(t.e,ti,ot(st(Ne,1),le,2,6,[Ua,"http://www.w3.org/2001/XMLSchema#boolean"])),zr(t.f,ti,ot(st(Ne,1),le,2,6,[Ua,"EBoolean",bi,"EBoolean:Object"])),zr(t.i,ti,ot(st(Ne,1),le,2,6,[Ua,"http://www.w3.org/2001/XMLSchema#byte"])),zr(t.g,ti,ot(st(Ne,1),le,2,6,[Ua,"http://www.w3.org/2001/XMLSchema#hexBinary"])),zr(t.j,ti,ot(st(Ne,1),le,2,6,[Ua,"EByte",bi,"EByte:Object"])),zr(t.n,ti,ot(st(Ne,1),le,2,6,[Ua,"EChar",bi,"EChar:Object"])),zr(t.t,ti,ot(st(Ne,1),le,2,6,[Ua,"http://www.w3.org/2001/XMLSchema#double"])),zr(t.u,ti,ot(st(Ne,1),le,2,6,[Ua,"EDouble",bi,"EDouble:Object"])),zr(t.F,ti,ot(st(Ne,1),le,2,6,[Ua,"http://www.w3.org/2001/XMLSchema#float"])),zr(t.G,ti,ot(st(Ne,1),le,2,6,[Ua,"EFloat",bi,"EFloat:Object"])),zr(t.I,ti,ot(st(Ne,1),le,2,6,[Ua,"http://www.w3.org/2001/XMLSchema#int"])),zr(t.J,ti,ot(st(Ne,1),le,2,6,[Ua,"EInt",bi,"EInt:Object"])),zr(t.N,ti,ot(st(Ne,1),le,2,6,[Ua,"http://www.w3.org/2001/XMLSchema#long"])),zr(t.O,ti,ot(st(Ne,1),le,2,6,[Ua,"ELong",bi,"ELong:Object"])),zr(t.Z,ti,ot(st(Ne,1),le,2,6,[Ua,"http://www.w3.org/2001/XMLSchema#short"])),zr(t.$,ti,ot(st(Ne,1),le,2,6,[Ua,"EShort",bi,"EShort:Object"])),zr(t._,ti,ot(st(Ne,1),le,2,6,[Ua,"http://www.w3.org/2001/XMLSchema#string"]))}function KCn(t,e,n,r,s,o,h){var d,m,k,T,A,N,j,U;return N=u(r.a,17).a,j=u(r.b,17).a,A=t.b,U=t.c,d=0,T=0,e==(Rs(),Ho)||e==Jo?(T=zD(kue(Py(Go(new ln(null,new gn(n.b,16)),new stt),new xR))),A.e.b+A.f.b/2>T?(k=++j,d=Rt(Ht(ql(Dy(Go(new ln(null,new gn(n.b,16)),new pXt(s,k)),new VZ))))):(m=++N,d=Rt(Ht(ql(H6(Go(new ln(null,new gn(n.b,16)),new bXt(s,m)),new UZ)))))):(T=zD(kue(Py(Go(new ln(null,new gn(n.b,16)),new WZ),new HZ))),A.e.a+A.f.a/2>T?(k=++j,d=Rt(Ht(ql(Dy(Go(new ln(null,new gn(n.b,16)),new dXt(s,k)),new GM))))):(m=++N,d=Rt(Ht(ql(H6(Go(new ln(null,new gn(n.b,16)),new gXt(s,m)),new GZ)))))),e==Ho?(to(t.a,new se(Rt(Ht(K(A,(zi(),O1))))-s,d)),to(t.a,new se(U.e.a+U.f.a+s+o,d)),to(t.a,new se(U.e.a+U.f.a+s+o,U.e.b+U.f.b/2)),to(t.a,new se(U.e.a+U.f.a,U.e.b+U.f.b/2))):e==Jo?(to(t.a,new se(Rt(Ht(K(A,(zi(),Xf))))+s,A.e.b+A.f.b/2)),to(t.a,new se(A.e.a+A.f.a+s,d)),to(t.a,new se(U.e.a-s-o,d)),to(t.a,new se(U.e.a-s-o,U.e.b+U.f.b/2)),to(t.a,new se(U.e.a,U.e.b+U.f.b/2))):e==qh?(to(t.a,new se(d,Rt(Ht(K(A,(zi(),O1))))-s)),to(t.a,new se(d,U.e.b+U.f.b+s+o)),to(t.a,new se(U.e.a+U.f.a/2,U.e.b+U.f.b+s+o)),to(t.a,new se(U.e.a+U.f.a/2,U.e.b+U.f.b+s))):(t.a.b==0||(u(Nf(t.a),8).b=Rt(Ht(K(A,(zi(),Xf))))+s*u(h.b,17).a),to(t.a,new se(d,Rt(Ht(K(A,(zi(),Xf))))+s*u(h.b,17).a)),to(t.a,new se(d,U.e.b-s*u(h.a,17).a-o))),new Ys(fe(N),fe(j))}function WCn(t){var e,n,r,s,o,h,d,m,k,T,A,N,j;if(h=!0,A=null,r=null,s=null,e=!1,j=K7e,k=null,o=null,d=0,m=Kat(t,d,TIt,CIt),m=0&&hn(t.substr(d,2),"//")?(d+=2,m=Kat(t,d,pL,bL),r=(Sa(d,m,t.length),t.substr(d,m-d)),d=m):A!=null&&(d==t.length||(qn(d,t.length),t.charCodeAt(d)!=47))&&(h=!1,m=Lmt(t,qu(35),d),m==-1&&(m=t.length),r=(Sa(d,m,t.length),t.substr(d,m-d)),d=m);if(!n&&d0&&qa(T,T.length-1)==58&&(s=T,d=m)),dqot(o))&&(A=o);for(!A&&(A=(mn(0,tt.c.length),u(tt.c[0],185))),W=new J(e.b);W.aA&&(Mn=0,er+=T+Ce,T=0),E0e(Kt,h,Mn,er),e=b.Math.max(e,Mn+ie.a),T=b.Math.max(T,ie.b),Mn+=ie.a+Ce;for(Bt=new Er,n=new Er,Je=new J(t);Je.a=-1900?1:0,n>=4?ni(t,ot(st(Ne,1),le,2,6,[Xpe,Qpe])[d]):ni(t,ot(st(Ne,1),le,2,6,["BC","AD"])[d]);break;case 121:gwn(t,n,r);break;case 77:O8n(t,n,r);break;case 107:m=s.q.getHours(),m==0?A0(t,24,n):A0(t,m,n);break;case 83:Gxn(t,n,s);break;case 69:T=r.q.getDay(),n==5?ni(t,ot(st(Ne,1),le,2,6,["S","M","T","W","T","F","S"])[T]):n==4?ni(t,ot(st(Ne,1),le,2,6,[Uct,Gct,Kct,Wct,Yct,Xct,Qct])[T]):ni(t,ot(st(Ne,1),le,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[T]);break;case 97:s.q.getHours()>=12&&s.q.getHours()<24?ni(t,ot(st(Ne,1),le,2,6,["AM","PM"])[1]):ni(t,ot(st(Ne,1),le,2,6,["AM","PM"])[0]);break;case 104:A=s.q.getHours()%12,A==0?A0(t,12,n):A0(t,A,n);break;case 75:N=s.q.getHours()%12,A0(t,N,n);break;case 72:j=s.q.getHours(),A0(t,j,n);break;case 99:U=r.q.getDay(),n==5?ni(t,ot(st(Ne,1),le,2,6,["S","M","T","W","T","F","S"])[U]):n==4?ni(t,ot(st(Ne,1),le,2,6,[Uct,Gct,Kct,Wct,Yct,Xct,Qct])[U]):n==3?ni(t,ot(st(Ne,1),le,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[U]):A0(t,U,1);break;case 76:W=r.q.getMonth(),n==5?ni(t,ot(st(Ne,1),le,2,6,["J","F","M","A","M","J","J","A","S","O","N","D"])[W]):n==4?ni(t,ot(st(Ne,1),le,2,6,[Pct,Nct,Fct,Bct,xk,Rct,jct,$ct,zct,qct,Hct,Vct])[W]):n==3?ni(t,ot(st(Ne,1),le,2,6,["Jan","Feb","Mar","Apr",xk,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"])[W]):A0(t,W+1,n);break;case 81:tt=r.q.getMonth()/3|0,n<4?ni(t,ot(st(Ne,1),le,2,6,["Q1","Q2","Q3","Q4"])[tt]):ni(t,ot(st(Ne,1),le,2,6,["1st quarter","2nd quarter","3rd quarter","4th quarter"])[tt]);break;case 100:ct=r.q.getDate(),A0(t,ct,n);break;case 109:k=s.q.getMinutes(),A0(t,k,n);break;case 115:h=s.q.getSeconds(),A0(t,h,n);break;case 122:n<4?ni(t,o.c[0]):ni(t,o.c[1]);break;case 118:ni(t,o.b);break;case 90:n<3?ni(t,j4n(o)):n==3?ni(t,V4n(o)):ni(t,U4n(o.a));break;default:return!1}return!0}function Kkt(t,e,n,r){var s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On,Mn,er,Jr;if(f0e(e),m=u(Lt((!e.b&&(e.b=new En(gr,e,4,7)),e.b),0),84),T=u(Lt((!e.c&&(e.c=new En(gr,e,5,8)),e.c),0),84),d=Xo(m),k=Xo(T),h=(!e.a&&(e.a=new Jt(Ji,e,6,6)),e.a).i==0?null:u(Lt((!e.a&&(e.a=new Jt(Ji,e,6,6)),e.a),0),166),Ce=u(tr(t.a,d),10),Mn=u(tr(t.a,k),10),en=null,er=null,At(m,193)&&(ie=u(tr(t.a,m),304),At(ie,12)?en=u(ie,12):At(ie,10)&&(Ce=u(ie,10),en=u(Oe(Ce.j,0),12))),At(T,193)&&(On=u(tr(t.a,T),304),At(On,12)?er=u(On,12):At(On,10)&&(Mn=u(On,10),er=u(Oe(Mn.j,0),12))),!Ce||!Mn)throw nt(new _6("The source or the target of edge "+e+" could not be found. This usually happens when an edge connects a node laid out by ELK Layered to a node in another level of hierarchy laid out by either another instance of ELK Layered or another layout algorithm alltogether. The former can be solved by setting the hierarchyHandling option to INCLUDE_CHILDREN."));for(W=new Pm,Yo(W,e),Zt(W,(ae(),Di),e),Zt(W,(Me(),qo),null),j=u(K(r,uu),21),Ce==Mn&&j.Fc((ko(),yA)),en||(Kt=(xo(),xu),Je=null,h&&R4(u(K(Ce,ms),101))&&(Je=new se(h.j,h.k),eie(Je,kI(e)),Lie(Je,n),qy(k,d)&&(Kt=vl,Ei(Je,Ce.n))),en=dge(Ce,Je,Kt,r)),er||(Kt=(xo(),vl),Jr=null,h&&R4(u(K(Mn,ms),101))&&(Jr=new se(h.b,h.c),eie(Jr,kI(e)),Lie(Jr,n)),er=dge(Mn,Jr,Kt,Ia(Mn))),Ya(W,en),ya(W,er),(en.e.c.length>1||en.g.c.length>1||er.e.c.length>1||er.g.c.length>1)&&j.Fc((ko(),vA)),N=new Zn((!e.n&&(e.n=new Jt(Oo,e,1,7)),e.n));N.e!=N.i.gc();)if(A=u(sr(N),135),!Ie(De(ne(A,Aw)))&&A.a)switch(tt=Sat(A),pe(W.b,tt),u(K(tt,a0),278).g){case 1:case 2:j.Fc((ko(),_T));break;case 0:j.Fc((ko(),CT)),Zt(tt,a0,(nd(),HT))}if(o=u(K(r,_A),322),ct=u(K(r,$G),323),s=o==(z_(),UP)||ct==(oS(),f1t),h&&(!h.a&&(h.a=new Ns(bh,h,5)),h.a).i!=0&&s){for(Tt=CO(h),U=new Xu,Bt=_r(Tt,0);Bt.b!=Bt.d.c;)St=u(Tr(Bt),8),Zr(U,new eo(St));Zt(W,z_t,U)}return W}function JCn(t,e,n,r){var s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On,Mn,er,Jr,cs;for(Je=0,On=0,Ce=new Er,Kt=u(ql(Dy(Go(new ln(null,new gn(t.b,16)),new KZ),new ttt)),17).a+1,en=Vt(Or,ii,28,Kt,15,1),tt=Vt(Or,ii,28,Kt,15,1),W=0;W1)for(d=er+1;dk.b.e.b*(1-ct)+k.c.e.b*ct));U++);if(ie.gc()>0&&(Jr=k.a.b==0?Ma(k.b.e):u(Nf(k.a),8),St=Ei(Ma(u(ie.Xb(ie.gc()-1),39).e),u(ie.Xb(ie.gc()-1),39).f),N=Ei(Ma(u(ie.Xb(0),39).e),u(ie.Xb(0),39).f),U>=ie.gc()-1&&Jr.b>St.b&&k.c.e.b>St.b||U<=0&&Jr.bk.b.e.a*(1-ct)+k.c.e.a*ct));U++);if(ie.gc()>0&&(Jr=k.a.b==0?Ma(k.b.e):u(Nf(k.a),8),St=Ei(Ma(u(ie.Xb(ie.gc()-1),39).e),u(ie.Xb(ie.gc()-1),39).f),N=Ei(Ma(u(ie.Xb(0),39).e),u(ie.Xb(0),39).f),U>=ie.gc()-1&&Jr.a>St.a&&k.c.e.a>St.a||U<=0&&Jr.a=Rt(Ht(K(t,(zi(),rLt))))&&++On):(j.f&&j.d.e.a<=Rt(Ht(K(t,(zi(),M1t))))&&++Je,j.g&&j.c.e.a+j.c.f.a>=Rt(Ht(K(t,(zi(),nLt))))&&++On)}else Bt==0?p6t(k):Bt<0&&(++en[er],++tt[cs],Mn=KCn(k,e,t,new Ys(fe(Je),fe(On)),n,r,new Ys(fe(tt[cs]),fe(en[er]))),Je=u(Mn.a,17).a,On=u(Mn.b,17).a)}function ZCn(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt;if(r=e,m=n,t.b&&r.j==(ve(),Gn)&&m.j==(ve(),Gn)&&(Tt=r,r=m,m=Tt),Eu(t.a,r)){if(v1(u(tr(t.a,r),49),m))return 1}else di(t.a,r,new Os);if(Eu(t.a,m)){if(v1(u(tr(t.a,m),49),r))return-1}else di(t.a,m,new Os);if(Eu(t.d,r)){if(v1(u(tr(t.d,r),49),m))return-1}else di(t.d,r,new Os);if(Eu(t.d,m)){if(v1(u(tr(t.a,m),49),r))return 1}else di(t.d,m,new Os);if(r.j!=m.j)return ct=zrn(r.j,m.j),ct==-1?Fh(t,m,r):Fh(t,r,m),ct;if(r.e.c.length!=0&&m.e.c.length!=0){if(t.b&&(ct=Xce(r,m),ct!=0))return ct==-1?Fh(t,m,r):ct==1&&Fh(t,r,m),ct;if(o=u(Oe(r.e,0),18).c.i,T=u(Oe(m.e,0),18).c.i,o==T)return s=u(K(u(Oe(r.e,0),18),(ae(),Bi)),17).a,k=u(K(u(Oe(m.e,0),18),Bi),17).a,s>k?Fh(t,r,m):Fh(t,m,r),sk?1:0;for(U=t.c,W=0,tt=U.length;Wk?Fh(t,r,m):Fh(t,m,r),sk?1:0):t.b&&(ct=Xce(r,m),ct!=0)?(ct==-1?Fh(t,m,r):ct==1&&Fh(t,r,m),ct):(h=0,A=0,Ui(u(Oe(r.g,0),18),Bi)&&(h=u(K(u(Oe(r.g,0),18),Bi),17).a),Ui(u(Oe(m.g,0),18),Bi)&&(A=u(K(u(Oe(r.g,0),18),Bi),17).a),d&&d==N?Ie(De(K(u(Oe(r.g,0),18),dd)))&&!Ie(De(K(u(Oe(m.g,0),18),dd)))?(Fh(t,r,m),1):!Ie(De(K(u(Oe(r.g,0),18),dd)))&&Ie(De(K(u(Oe(m.g,0),18),dd)))?(Fh(t,m,r),-1):(h>A?Fh(t,r,m):Fh(t,m,r),hA?1:0):(t.f&&(t.f._b(d)&&(h=u(t.f.xc(d),17).a),t.f._b(N)&&(A=u(t.f.xc(N),17).a)),h>A?Fh(t,r,m):Fh(t,m,r),hA?1:0))):r.e.c.length!=0&&m.g.c.length!=0?(Fh(t,r,m),1):r.g.c.length!=0&&m.e.c.length!=0?(Fh(t,m,r),-1):Ui(r,(ae(),Bi))&&Ui(m,Bi)?(s=u(K(r,Bi),17).a,k=u(K(m,Bi),17).a,s>k?Fh(t,r,m):Fh(t,m,r),sk?1:0):(Fh(t,m,r),-1)}function t_n(t){t.gb||(t.gb=!0,t.b=yc(t,0),ds(t.b,18),Ki(t.b,19),t.a=yc(t,1),ds(t.a,1),Ki(t.a,2),Ki(t.a,3),Ki(t.a,4),Ki(t.a,5),t.o=yc(t,2),ds(t.o,8),ds(t.o,9),Ki(t.o,10),Ki(t.o,11),Ki(t.o,12),Ki(t.o,13),Ki(t.o,14),Ki(t.o,15),Ki(t.o,16),Ki(t.o,17),Ki(t.o,18),Ki(t.o,19),Ki(t.o,20),Ki(t.o,21),Ki(t.o,22),Ki(t.o,23),jo(t.o),jo(t.o),jo(t.o),jo(t.o),jo(t.o),jo(t.o),jo(t.o),jo(t.o),jo(t.o),jo(t.o),t.p=yc(t,3),ds(t.p,2),ds(t.p,3),ds(t.p,4),ds(t.p,5),Ki(t.p,6),Ki(t.p,7),jo(t.p),jo(t.p),t.q=yc(t,4),ds(t.q,8),t.v=yc(t,5),Ki(t.v,9),jo(t.v),jo(t.v),jo(t.v),t.w=yc(t,6),ds(t.w,2),ds(t.w,3),ds(t.w,4),Ki(t.w,5),t.B=yc(t,7),Ki(t.B,1),jo(t.B),jo(t.B),jo(t.B),t.Q=yc(t,8),Ki(t.Q,0),jo(t.Q),t.R=yc(t,9),ds(t.R,1),t.S=yc(t,10),jo(t.S),jo(t.S),jo(t.S),jo(t.S),jo(t.S),jo(t.S),jo(t.S),jo(t.S),jo(t.S),jo(t.S),jo(t.S),jo(t.S),jo(t.S),jo(t.S),jo(t.S),t.T=yc(t,11),Ki(t.T,10),Ki(t.T,11),Ki(t.T,12),Ki(t.T,13),Ki(t.T,14),jo(t.T),jo(t.T),t.U=yc(t,12),ds(t.U,2),ds(t.U,3),Ki(t.U,4),Ki(t.U,5),Ki(t.U,6),Ki(t.U,7),jo(t.U),t.V=yc(t,13),Ki(t.V,10),t.W=yc(t,14),ds(t.W,18),ds(t.W,19),ds(t.W,20),Ki(t.W,21),Ki(t.W,22),Ki(t.W,23),t.bb=yc(t,15),ds(t.bb,10),ds(t.bb,11),ds(t.bb,12),ds(t.bb,13),ds(t.bb,14),ds(t.bb,15),ds(t.bb,16),Ki(t.bb,17),jo(t.bb),jo(t.bb),t.eb=yc(t,16),ds(t.eb,2),ds(t.eb,3),ds(t.eb,4),ds(t.eb,5),ds(t.eb,6),ds(t.eb,7),Ki(t.eb,8),Ki(t.eb,9),t.ab=yc(t,17),ds(t.ab,0),ds(t.ab,1),t.H=yc(t,18),Ki(t.H,0),Ki(t.H,1),Ki(t.H,2),Ki(t.H,3),Ki(t.H,4),Ki(t.H,5),jo(t.H),t.db=yc(t,19),Ki(t.db,2),t.c=pi(t,20),t.d=pi(t,21),t.e=pi(t,22),t.f=pi(t,23),t.i=pi(t,24),t.g=pi(t,25),t.j=pi(t,26),t.k=pi(t,27),t.n=pi(t,28),t.r=pi(t,29),t.s=pi(t,30),t.t=pi(t,31),t.u=pi(t,32),t.fb=pi(t,33),t.A=pi(t,34),t.C=pi(t,35),t.D=pi(t,36),t.F=pi(t,37),t.G=pi(t,38),t.I=pi(t,39),t.J=pi(t,40),t.L=pi(t,41),t.M=pi(t,42),t.N=pi(t,43),t.O=pi(t,44),t.P=pi(t,45),t.X=pi(t,46),t.Y=pi(t,47),t.Z=pi(t,48),t.$=pi(t,49),t._=pi(t,50),t.cb=pi(t,51),t.K=pi(t,52))}function e_n(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On,Mn,er;for(h=new Qi,ie=u(K(n,(Me(),fh)),88),W=0,Aa(h,(!e.a&&(e.a=new Jt(wi,e,10,11)),e.a));h.b!=0;)T=u(h.b==0?null:(cr(h.b!=0),Lh(h,h.a.a)),27),k=es(T),($t(ne(k,q0))!==$t((Vd(),Hp))||$t(ne(k,Tw))===$t((Mp(),ET))||$t(ne(k,Tw))===$t((Mp(),kT))||Ie(De(ne(k,kv)))||$t(ne(k,S3))!==$t((iw(),x3))||$t(ne(k,e2))===$t((sf(),Av))||$t(ne(k,e2))===$t((sf(),P3))||$t(ne(k,_w))===$t((Np(),NT))||$t(ne(k,_w))===$t((Np(),FT)))&&!Ie(De(ne(T,IG)))&&Oi(T,(ae(),Bi),fe(W++)),ct=!Ie(De(ne(T,Aw))),ct&&(N=(!T.a&&(T.a=new Jt(wi,T,10,11)),T.a).i!=0,U=Myn(T),j=$t(ne(T,A3))===$t((Cg(),Wp)),er=!td(T,(si(),zT))||Bie(Gr(ne(T,zT))),Bt=null,er&&j&&(N||U)&&(Bt=K0e(T),Zt(Bt,fh,ie),Ui(Bt,ZP)&&KKt(new D5t(Rt(Ht(K(Bt,ZP)))),Bt),u(ne(T,Sw),181).gc()!=0&&(A=Bt,xs(new ln(null,(!T.c&&(T.c=new Jt(kl,T,9,9)),new gn(T.c,16))),new tVt(A)),jde(T,Bt))),Ce=n,en=u(tr(t.a,es(T)),10),en&&(Ce=en.e),St=ype(t,T,Ce),Bt&&(St.e=Bt,Bt.e=St,Aa(h,(!T.a&&(T.a=new Jt(wi,T,10,11)),T.a))));for(W=0,fs(h,e,h.c.b,h.c);h.b!=0;){for(o=u(h.b==0?null:(cr(h.b!=0),Lh(h,h.a.a)),27),m=new Zn((!o.b&&(o.b=new Jt(Cs,o,12,3)),o.b));m.e!=m.i.gc();)d=u(sr(m),74),f0e(d),($t(ne(e,q0))!==$t((Vd(),Hp))||$t(ne(e,Tw))===$t((Mp(),ET))||$t(ne(e,Tw))===$t((Mp(),kT))||Ie(De(ne(e,kv)))||$t(ne(e,S3))!==$t((iw(),x3))||$t(ne(e,e2))===$t((sf(),Av))||$t(ne(e,e2))===$t((sf(),P3))||$t(ne(e,_w))===$t((Np(),NT))||$t(ne(e,_w))===$t((Np(),FT)))&&Oi(d,(ae(),Bi),fe(W++)),On=Xo(u(Lt((!d.b&&(d.b=new En(gr,d,4,7)),d.b),0),84)),Mn=Xo(u(Lt((!d.c&&(d.c=new En(gr,d,5,8)),d.c),0),84)),!(Ie(De(ne(d,Aw)))||Ie(De(ne(On,Aw)))||Ie(De(ne(Mn,Aw))))&&(tt=Jm(d)&&Ie(De(ne(On,L3)))&&Ie(De(ne(d,Cw))),Kt=o,tt||qy(Mn,On)?Kt=On:qy(On,Mn)&&(Kt=Mn),Ce=n,en=u(tr(t.a,Kt),10),en&&(Ce=en.e),Tt=Kkt(t,d,Kt,Ce),Zt(Tt,(ae(),B_t),ekn(t,d,e,n)));if(j=$t(ne(o,A3))===$t((Cg(),Wp)),j)for(s=new Zn((!o.a&&(o.a=new Jt(wi,o,10,11)),o.a));s.e!=s.i.gc();)r=u(sr(s),27),er=!td(r,(si(),zT))||Bie(Gr(ne(r,zT))),Je=$t(ne(r,A3))===$t(Wp),er&&Je&&fs(h,r,h.c.b,h.c)}}function ae(){ae=V;var t,e;Di=new Ni(O8t),B_t=new Ni("coordinateOrigin"),zft=new Ni("processors"),F_t=new os("compoundNode",(Nn(),!1)),YP=new os("insideConnections",!1),z_t=new Ni("originalBendpoints"),q_t=new Ni("originalDummyNodePosition"),H_t=new Ni("originalLabelEdge"),kA=new Ni("representedLabels"),xA=new Ni("endLabels"),zk=new Ni("endLabel.origin"),Hk=new os("labelSide",(ah(),AN)),z5=new os("maxEdgeThickness",0),dd=new os("reversed",!1),Vk=new Ni(Bbe),I1=new os("longEdgeSource",null),hf=new os("longEdgeTarget",null),C3=new os("longEdgeHasLabelDummies",!1),XP=new os("longEdgeBeforeLabelDummy",!1),CG=new os("edgeConstraint",(ew(),Tft)),vv=new Ni("inLayerLayoutUnit"),kw=new os("inLayerConstraint",(kg(),KP)),qk=new os("inLayerSuccessorConstraint",new ge),$_t=new os("inLayerSuccessorConstraintBetweenNonDummies",!1),ml=new Ni("portDummy"),TG=new os("crossingHint",fe(0)),uu=new os("graphProperties",(e=u(m1(Dft),9),new Eh(e,u(Ff(e,e.length),9),0))),_c=new os("externalPortSide",(ve(),gc)),j_t=new os("externalPortSize",new Ea),Fft=new Ni("externalPortReplacedDummies"),_G=new Ni("externalPortReplacedDummy"),Bg=new os("externalPortConnections",(t=u(m1(go),9),new Eh(t,u(Ff(t,t.length),9),0))),yv=new os(Abe,0),N_t=new Ni("barycenterAssociates"),Uk=new Ni("TopSideComments"),$k=new Ni("BottomSideComments"),EG=new Ni("CommentConnectionPort"),Rft=new os("inputCollect",!1),$ft=new os("outputCollect",!1),WP=new os("cyclic",!1),R_t=new Ni("crossHierarchyMap"),Hft=new Ni("targetOffset"),new os("splineLabelSize",new Ea),H5=new Ni("spacings"),SG=new os("partitionConstraint",!1),mv=new Ni("breakingPoint.info"),G_t=new Ni("splines.survivingEdge"),Ew=new Ni("splines.route.start"),V5=new Ni("splines.edgeChain"),U_t=new Ni("originalPortConstraints"),xv=new Ni("selfLoopHolder"),AT=new Ni("splines.nsPortY"),Bi=new Ni("modelOrder"),jft=new Ni("longEdgeTargetNode"),Zb=new os(u2e,!1),q5=new os(u2e,!1),Bft=new Ni("layerConstraints.hiddenNodes"),V_t=new Ni("layerConstraints.opposidePort"),qft=new Ni("targetNode.modelOrder")}function n_n(t,e,n,r){var s,o,h,d,m,k,T,A,N,j,U;for(A=_r(t.b,0);A.b!=A.d.c;)if(T=u(Tr(A),39),!hn(T.c,QV))for(o=u(tc(new ln(null,new gn(h5n(T,t),16)),gl(new Pr,new oe,new An,ot(st(zo,1),te,108,0,[(bl(),rc)]))),15),e==(Rs(),Ho)||e==Jo?o.jd(new kR):o.jd(new QZ),U=o.gc(),s=0;s0&&(d=u(Nf(u(o.Xb(s),65).a),8).a,N=T.e.a+T.f.a/2,m=u(Nf(u(o.Xb(s),65).a),8).b,j=T.e.b+T.f.b/2,r>0&&b.Math.abs(m-j)/(b.Math.abs(d-N)/40)>50&&(j>m?to(u(o.Xb(s),65).a,new se(T.e.a+T.f.a+r/5.3,T.e.b+T.f.b*h-r/2)):to(u(o.Xb(s),65).a,new se(T.e.a+T.f.a+r/5.3,T.e.b+T.f.b*h+r/2)))),to(u(o.Xb(s),65).a,new se(T.e.a+T.f.a,T.e.b+T.f.b*h))):e==Jo?(k=Rt(Ht(K(T,(zi(),O1)))),T.e.a-r>k?to(u(o.Xb(s),65).a,new se(k-n,T.e.b+T.f.b*h)):u(o.Xb(s),65).a.b>0&&(d=u(Nf(u(o.Xb(s),65).a),8).a,N=T.e.a+T.f.a/2,m=u(Nf(u(o.Xb(s),65).a),8).b,j=T.e.b+T.f.b/2,r>0&&b.Math.abs(m-j)/(b.Math.abs(d-N)/40)>50&&(j>m?to(u(o.Xb(s),65).a,new se(T.e.a-r/5.3,T.e.b+T.f.b*h-r/2)):to(u(o.Xb(s),65).a,new se(T.e.a-r/5.3,T.e.b+T.f.b*h+r/2)))),to(u(o.Xb(s),65).a,new se(T.e.a,T.e.b+T.f.b*h))):e==qh?(k=Rt(Ht(K(T,(zi(),Xf)))),T.e.b+T.f.b+r0&&(d=u(Nf(u(o.Xb(s),65).a),8).a,N=T.e.a+T.f.a/2,m=u(Nf(u(o.Xb(s),65).a),8).b,j=T.e.b+T.f.b/2,r>0&&b.Math.abs(d-N)/(b.Math.abs(m-j)/40)>50&&(N>d?to(u(o.Xb(s),65).a,new se(T.e.a+T.f.a*h-r/2,T.e.b+r/5.3+T.f.b)):to(u(o.Xb(s),65).a,new se(T.e.a+T.f.a*h+r/2,T.e.b+r/5.3+T.f.b)))),to(u(o.Xb(s),65).a,new se(T.e.a+T.f.a*h,T.e.b+T.f.b))):(k=Rt(Ht(K(T,(zi(),O1)))),Fce(u(o.Xb(s),65),t)?to(u(o.Xb(s),65).a,new se(T.e.a+T.f.a*h,u(Nf(u(o.Xb(s),65).a),8).b)):T.e.b-r>k?to(u(o.Xb(s),65).a,new se(T.e.a+T.f.a*h,k-n)):u(o.Xb(s),65).a.b>0&&(d=u(Nf(u(o.Xb(s),65).a),8).a,N=T.e.a+T.f.a/2,m=u(Nf(u(o.Xb(s),65).a),8).b,j=T.e.b+T.f.b/2,r>0&&b.Math.abs(d-N)/(b.Math.abs(m-j)/40)>50&&(N>d?to(u(o.Xb(s),65).a,new se(T.e.a+T.f.a*h-r/2,T.e.b-r/5.3)):to(u(o.Xb(s),65).a,new se(T.e.a+T.f.a*h+r/2,T.e.b-r/5.3)))),to(u(o.Xb(s),65).a,new se(T.e.a+T.f.a*h,T.e.b)))}function si(){si=V;var t,e;zT=new Ni(W2e),ux=new Ni(Y2e),tDt=(L0(),vdt),$Ee=new un(zEt,tDt),nx=new un(Sk,null),zEe=new Ni(tTt),nDt=(aw(),Gi(kdt,ot(st(Edt,1),te,297,0,[xdt]))),vN=new un(GV,nDt),yN=new un(mP,(Nn(),!1)),rDt=(Rs(),wd),Iw=new un(clt,rDt),aDt=(_g(),Fdt),sDt=new un(wP,aDt),VEe=new un(J7t,!1),uDt=(Cg(),SK),sx=new un(UV,uDt),mDt=new ym(12),Kp=new un(av,mDt),kN=new un(jS,!1),Sdt=new un(WV,!1),EN=new un($S,!1),EDt=(xa(),c2),nL=new un(Aut,EDt),Yk=new Ni(KV),TN=new Ni(cP),Pdt=new Ni(SV),Ndt=new Ni(RS),lDt=new Xu,Dv=new un(JEt,lDt),HEe=new un(e7t,!1),UEe=new un(n7t,!1),hDt=new OC,qT=new un(i7t,hDt),EK=new un(jEt,!1),YEe=new un(X2e,1),ix=new Ni(Q2e),rx=new Ni(J2e),rL=new un(uP,!1),new un(Z2e,!0),fe(0),new un(twe,fe(100)),new un(ewe,!1),fe(0),new un(nwe,fe(4e3)),fe(0),new un(rwe,fe(400)),new un(iwe,!1),new un(swe,!1),new un(awe,!0),new un(owe,!1),eDt=(lH(),$dt),qEe=new un(Z7t,eDt),XEe=new un(AEt,10),QEe=new un(LEt,10),SDt=new un(xut,20),JEe=new un(MEt,10),ADt=new un(Sut,2),LDt=new un(olt,10),MDt=new un(DEt,0),TK=new un(PEt,5),DDt=new un(IEt,1),IDt=new un(OEt,1),Pw=new un(h3,20),ZEe=new un(NEt,10),NDt=new un(FEt,10),Xk=new Ni(BEt),PDt=new dQt,ODt=new un(s7t,PDt),KEe=new Ni(llt),vDt=!1,GEe=new un(ult,vDt),dDt=new ym(5),fDt=new un(VEt,dDt),gDt=(e3(),e=u(m1(_o),9),new Eh(e,u(Ff(e,e.length),9),0)),ax=new un(Z7,gDt),xDt=(i5(),o2),yDt=new un(KEt,xDt),Ldt=new Ni(WEt),Mdt=new Ni(YEt),Ddt=new Ni(XEt),Adt=new Ni(QEt),pDt=(t=u(m1(hL),9),new Eh(t,u(Ff(t,t.length),9),0)),Ow=new un(T5,pDt),wDt=Ze((Dl(),KT)),s2=new un(Ak,wDt),bDt=new se(0,0),ox=new un(Lk,bDt),R3=new un(J7,!1),iDt=(nd(),HT),Cdt=new un(ZEt,iDt),Tdt=new un(AV,!1),fe(1),new un(cwe,null),kDt=new Ni(r7t),Idt=new Ni(t7t),_Dt=(ve(),gc),cx=new un($Et,_Dt),Nl=new Ni(REt),TDt=(wl(),Ze(u2)),j3=new un(tT,TDt),Odt=new un(UEt,!1),CDt=new un(GEt,!0),_K=new un(lP,1),FDt=new un(eTt,null),CN=new un(hP,150),CK=new un(fP,1.414),Qk=new un(ov,null),t7e=new un(nTt,1),xN=new un(qEt,!1),_dt=new un(HEt,!1),oDt=new un(kut,1),cDt=(RH(),Rdt),new un(uwe,cDt),WEe=!0,n7e=(ok(),q3),r7e=q3,e7e=q3}function Ja(){Ja=V,PCt=new Ps("DIRECTION_PREPROCESSOR",0),DCt=new Ps("COMMENT_PREPROCESSOR",1),P5=new Ps("EDGE_AND_LAYER_CONSTRAINT_EDGE_REVERSER",2),aft=new Ps("INTERACTIVE_EXTERNAL_PORT_POSITIONER",3),ZCt=new Ps("PARTITION_PREPROCESSOR",4),QU=new Ps("LABEL_DUMMY_INSERTER",5),oG=new Ps("SELF_LOOP_PREPROCESSOR",6),E3=new Ps("LAYER_CONSTRAINT_PREPROCESSOR",7),QCt=new Ps("PARTITION_MIDPROCESSOR",8),qCt=new Ps("HIGH_DEGREE_NODE_LAYER_PROCESSOR",9),YCt=new Ps("NODE_PROMOTION",10),k3=new Ps("LAYER_CONSTRAINT_POSTPROCESSOR",11),JCt=new Ps("PARTITION_POSTPROCESSOR",12),jCt=new Ps("HIERARCHICAL_PORT_CONSTRAINT_PROCESSOR",13),t_t=new Ps("SEMI_INTERACTIVE_CROSSMIN_PROCESSOR",14),CCt=new Ps("BREAKING_POINT_INSERTER",15),eG=new Ps("LONG_EDGE_SPLITTER",16),oft=new Ps("PORT_SIDE_PROCESSOR",17),YU=new Ps("INVERTED_PORT_PROCESSOR",18),iG=new Ps("PORT_LIST_SORTER",19),n_t=new Ps("SORT_BY_INPUT_ORDER_OF_MODEL",20),rG=new Ps("NORTH_SOUTH_PORT_PREPROCESSOR",21),_Ct=new Ps("BREAKING_POINT_PROCESSOR",22),XCt=new Ps(e2e,23),r_t=new Ps(n2e,24),sG=new Ps("SELF_LOOP_PORT_RESTORER",25),e_t=new Ps("SINGLE_EDGE_GRAPH_WRAPPER",26),XU=new Ps("IN_LAYER_CONSTRAINT_PROCESSOR",27),FCt=new Ps("END_NODE_PORT_LABEL_MANAGEMENT_PROCESSOR",28),KCt=new Ps("LABEL_AND_NODE_SIZE_PROCESSOR",29),GCt=new Ps("INNERMOST_NODE_MARGIN_CALCULATOR",30),cG=new Ps("SELF_LOOP_ROUTER",31),LCt=new Ps("COMMENT_NODE_MARGIN_CALCULATOR",32),WU=new Ps("END_LABEL_PREPROCESSOR",33),ZU=new Ps("LABEL_DUMMY_SWITCHER",34),ACt=new Ps("CENTER_LABEL_MANAGEMENT_PROCESSOR",35),bT=new Ps("LABEL_SIDE_SELECTOR",36),VCt=new Ps("HYPEREDGE_DUMMY_MERGER",37),$Ct=new Ps("HIERARCHICAL_PORT_DUMMY_SIZE_PROCESSOR",38),WCt=new Ps("LAYER_SIZE_AND_GRAPH_HEIGHT_CALCULATOR",39),pA=new Ps("HIERARCHICAL_PORT_POSITION_PROCESSOR",40),ICt=new Ps("CONSTRAINTS_POSTPROCESSOR",41),MCt=new Ps("COMMENT_POSTPROCESSOR",42),UCt=new Ps("HYPERNODE_PROCESSOR",43),zCt=new Ps("HIERARCHICAL_PORT_ORTHOGONAL_EDGE_ROUTER",44),tG=new Ps("LONG_EDGE_JOINER",45),aG=new Ps("SELF_LOOP_POSTPROCESSOR",46),SCt=new Ps("BREAKING_POINT_REMOVER",47),nG=new Ps("NORTH_SOUTH_PORT_POSTPROCESSOR",48),HCt=new Ps("HORIZONTAL_COMPACTOR",49),JU=new Ps("LABEL_DUMMY_REMOVER",50),BCt=new Ps("FINAL_SPLINE_BENDPOINTS_CALCULATOR",51),NCt=new Ps("END_LABEL_SORTER",52),qP=new Ps("REVERSED_EDGE_RESTORER",53),KU=new Ps("END_LABEL_POSTPROCESSOR",54),RCt=new Ps("HIERARCHICAL_NODE_RESIZER",55),OCt=new Ps("DIRECTION_POSTPROCESSOR",56)}function Wkt(){Wkt=V,rSt=(HI(),bG),p5e=new un(H8t,rSt),S5e=new un(V8t,(Nn(),!1)),uSt=(oq(),Nft),I5e=new un(IV,uSt),K5e=new un(U8t,!1),W5e=new un(G8t,!0),z4e=new un(K8t,!1),wSt=(zI(),b1t),uxe=new un(W8t,wSt),fe(1),wxe=new un(Y8t,fe(7)),mxe=new un(X8t,!1),A5e=new un(Q8t,!1),nSt=(Mp(),kft),g5e=new un(Nut,nSt),fSt=(Np(),c1t),G5e=new un(bP,fSt),lSt=(Ph(),QP),R5e=new un(J8t,lSt),fe(-1),B5e=new un(Z8t,null),fe(-1),j5e=new un(tEt,fe(-1)),fe(-1),$5e=new un(Fut,fe(4)),fe(-1),q5e=new un(But,fe(2)),hSt=(sf(),WG),U5e=new un(Rut,hSt),fe(0),V5e=new un(jut,fe(0)),N5e=new un($ut,fe(ki)),eSt=(z_(),wA),d5e=new un(HS,eSt),J4e=new un(eEt,!1),s5e=new un(zut,.1),h5e=new un(qut,!1),o5e=new un(nEt,null),c5e=new un(rEt,null),fe(-1),u5e=new un(iEt,null),fe(-1),l5e=new un(sEt,fe(-1)),fe(0),Z4e=new un(aEt,fe(40)),tSt=(s7(),Oft),r5e=new un(Hut,tSt),Z_t=GP,t5e=new un(OV,Z_t),bSt=(oS(),DA),cxe=new un(C5,bSt),Z5e=new Ni(PV),dSt=(FI(),mG),Y5e=new un(Vut,dSt),gSt=(kO(),vG),Q5e=new un(Uut,gSt),nxe=new un(Gut,.3),ixe=new Ni(Kut),pSt=(Yy(),KG),sxe=new un(Wut,pSt),aSt=(Yq(),m1t),y5e=new un(oEt,aSt),oSt=(W_(),y1t),x5e=new un(cEt,oSt),cSt=(d7(),PA),k5e=new un(NV,cSt),T5e=new un(FV,.2),m5e=new un(Yut,2),dxe=new un(uEt,null),pxe=new un(lEt,10),gxe=new un(hEt,10),bxe=new un(fEt,20),fe(0),lxe=new un(dEt,fe(0)),fe(0),hxe=new un(gEt,fe(0)),fe(0),fxe=new un(pEt,fe(0)),q4e=new un(Xut,!1),Y_t=(A7(),mA),V4e=new un(bEt,Y_t),W_t=(mq(),yft),H4e=new un(wEt,W_t),M5e=new un(BV,!1),fe(0),L5e=new un(Qut,fe(16)),fe(0),D5e=new un(Jut,fe(5)),ySt=(Zq(),E1t),Rxe=new un(Pg,ySt),vxe=new un(RV,10),kxe=new un(jV,1),vSt=(Nq(),pG),Lxe=new un(VS,vSt),Cxe=new Ni(Zut),mSt=fe(1),fe(0),Sxe=new un(tlt,mSt),xSt=(Pq(),k1t),qxe=new un($V,xSt),jxe=new Ni(zV),Pxe=new un(qV,!0),Ixe=new un(HV,2),Fxe=new un(elt,!0),sSt=($H(),wG),w5e=new un(mEt,sSt),iSt=(gk(),yT),b5e=new un(vEt,iSt),J_t=(Vd(),Hp),Q4e=new un(VV,J_t),X4e=new un(yEt,!1),Y4e=new un(xEt,!1),X_t=(iw(),x3),U4e=new un(nlt,X_t),Q_t=(Q_(),u1t),W4e=new un(kEt,Q_t),G4e=new un(rlt,0),K4e=new un(ilt,0),P5e=Eft,O5e=UP,z5e=UG,H5e=UG,F5e=o1t,a5e=(Cg(),Wp),f5e=wA,i5e=wA,e5e=wA,n5e=Wp,txe=IA,exe=DA,X5e=DA,J5e=DA,rxe=d1t,oxe=IA,axe=IA,E5e=(_g(),Jk),C5e=Jk,_5e=PA,v5e=_N,yxe=BT,xxe=N3,Exe=BT,Txe=N3,Mxe=BT,Dxe=N3,_xe=xft,Axe=pG,Hxe=BT,Vxe=N3,$xe=BT,zxe=N3,Nxe=N3,Oxe=N3,Bxe=N3}function r_n(t,e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On,Mn,er,Jr,cs,El,Vo,wh,px,eb,r1,i1,Rw,i8,w2,s8,u0,Y0,Fv,a8,bx,l0,jw,qg,VTe,sOt,Bv,TL,r0t,o8,CL,X3,_L,i0t,UTe;for(sOt=0,Jr=e,Vo=0,eb=Jr.length;Vo0&&(t.a[u0.p]=sOt++)}for(CL=0,cs=n,wh=0,r1=cs.length;wh0;){for(u0=(cr(bx.b>0),u(bx.a.Xb(bx.c=--bx.b),12)),a8=0,d=new J(u0.e);d.a0&&(u0.j==(ve(),Hn)?(t.a[u0.p]=CL,++CL):(t.a[u0.p]=CL+i1+i8,++i8))}CL+=i8}for(Fv=new Er,U=new Bd,er=e,El=0,px=er.length;Elk.b&&(k.b=l0)):u0.i.c==VTe&&(l0k.c&&(k.c=l0));for(HE(W,0,W.length,null),o8=Vt(Or,ii,28,W.length,15,1),r=Vt(Or,ii,28,CL+1,15,1),ct=0;ct0;)Ce%2>0&&(s+=i0t[Ce+1]),Ce=(Ce-1)/2|0,++i0t[Ce];for(Je=Vt(q6e,Ln,374,W.length*2,0,1),Bt=0;Bt0&&xI(El.f),ne(ct,FDt)!=null&&(d=u(ne(ct,FDt),347),Fv=d.Tg(ct),$4(ct,b.Math.max(ct.g,Fv.a),b.Math.max(ct.f,Fv.b)));if(r1=u(ne(e,Kp),107),j=e.g-(r1.b+r1.c),N=e.f-(r1.d+r1.a),l0.bh("Available Child Area: ("+j+"|"+N+")"),Oi(e,nx,j/N),ble(e,s,r.eh(px)),u(ne(e,Qk),280)==OK&&(Vkt(e),$4(e,r1.b+Rt(Ht(ne(e,ix)))+r1.c,r1.d+Rt(Ht(ne(e,rx)))+r1.a)),l0.bh("Executed layout algorithm: "+Gr(ne(e,zT))+" on node "+e.k),u(ne(e,Qk),280)==q3){if(j<0||N<0)throw nt(new lp("The size defined by the parent parallel node is too small for the space provided by the paddings of the child hierarchical node. "+e.k));for(td(e,ix)||td(e,rx)||Vkt(e),W=Rt(Ht(ne(e,ix))),U=Rt(Ht(ne(e,rx))),l0.bh("Desired Child Area: ("+W+"|"+U+")"),Rw=j/W,i8=N/U,i1=b.Math.min(Rw,b.Math.min(i8,Rt(Ht(ne(e,t7e))))),Oi(e,_K,i1),l0.bh(e.k+" -- Local Scale Factor (X|Y): ("+Rw+"|"+i8+")"),Bt=u(ne(e,vN),21),o=0,h=0,i1'?":hn(zwe,t)?"'(?<' or '(? toIndex: ",h8t=", toIndex: ",f8t="Index: ",d8t=", Size: ",W7="org.eclipse.elk.alg.common",Xr={50:1},lbe="org.eclipse.elk.alg.common.compaction",hbe="Scanline/EventHandler",F0="org.eclipse.elk.alg.common.compaction.oned",fbe="CNode belongs to another CGroup.",dbe="ISpacingsHandler/1",uut="The ",lut=" instance has been finished already.",gbe="The direction ",pbe=" is not supported by the CGraph instance.",bbe="OneDimensionalCompactor",wbe="OneDimensionalCompactor/lambda$0$Type",mbe="Quadruplet",vbe="ScanlineConstraintCalculator",ybe="ScanlineConstraintCalculator/ConstraintsScanlineHandler",xbe="ScanlineConstraintCalculator/ConstraintsScanlineHandler/lambda$0$Type",kbe="ScanlineConstraintCalculator/Timestamp",Ebe="ScanlineConstraintCalculator/lambda$0$Type",Xd={178:1,46:1},hut="org.eclipse.elk.alg.common.compaction.options",dc="org.eclipse.elk.core.data",g8t="org.eclipse.elk.polyomino.traversalStrategy",p8t="org.eclipse.elk.polyomino.lowLevelSort",b8t="org.eclipse.elk.polyomino.highLevelSort",w8t="org.eclipse.elk.polyomino.fill",af={134:1},fut="polyomino",NS="org.eclipse.elk.alg.common.networksimplex",B0={183:1,3:1,4:1},Tbe="org.eclipse.elk.alg.common.nodespacing",hw="org.eclipse.elk.alg.common.nodespacing.cellsystem",Y7="CENTER",Cbe={217:1,336:1},m8t={3:1,4:1,5:1,603:1},Tk="LEFT",Ck="RIGHT",v8t="Vertical alignment cannot be null",y8t="BOTTOM",xV="org.eclipse.elk.alg.common.nodespacing.internal",FS="UNDEFINED",cd=.01,sP="org.eclipse.elk.alg.common.nodespacing.internal.algorithm",_be="LabelPlacer/lambda$0$Type",Sbe="LabelPlacer/lambda$1$Type",Abe="portRatioOrPosition",X7="org.eclipse.elk.alg.common.overlaps",dut="DOWN",Qd="org.eclipse.elk.alg.common.polyomino",kV="NORTH",gut="EAST",put="SOUTH",but="WEST",EV="org.eclipse.elk.alg.common.polyomino.structures",x8t="Direction",wut="Grid is only of size ",mut=". Requested point (",vut=") is out of bounds.",TV=" Given center based coordinates were (",aP="org.eclipse.elk.graph.properties",Lbe="IPropertyHolder",k8t={3:1,96:1,137:1},_k="org.eclipse.elk.alg.common.spore",Mbe="org.eclipse.elk.alg.common.utils",fw={205:1},x5="org.eclipse.elk.core",Dbe="Connected Components Compaction",Ibe="org.eclipse.elk.alg.disco",CV="org.eclipse.elk.alg.disco.graph",yut="org.eclipse.elk.alg.disco.options",E8t="CompactionStrategy",T8t="org.eclipse.elk.disco.componentCompaction.strategy",C8t="org.eclipse.elk.disco.componentCompaction.componentLayoutAlgorithm",_8t="org.eclipse.elk.disco.debug.discoGraph",S8t="org.eclipse.elk.disco.debug.discoPolys",Obe="componentCompaction",dw="org.eclipse.elk.disco",xut="org.eclipse.elk.spacing.componentComponent",kut="org.eclipse.elk.edge.thickness",Sk="org.eclipse.elk.aspectRatio",av="org.eclipse.elk.padding",k5="org.eclipse.elk.alg.disco.transform",Eut=1.5707963267948966,E5=17976931348623157e292,l3={3:1,4:1,5:1,198:1},Pbe={3:1,6:1,4:1,5:1,100:1,115:1},Tut="org.eclipse.elk.alg.force",A8t="ComponentsProcessor",Nbe="ComponentsProcessor/1",L8t="ElkGraphImporter/lambda$0$Type",oP="org.eclipse.elk.alg.force.graph",Fbe="Component Layout",M8t="org.eclipse.elk.alg.force.model",_V="org.eclipse.elk.force.model",D8t="org.eclipse.elk.force.iterations",I8t="org.eclipse.elk.force.repulsivePower",Cut="org.eclipse.elk.force.temperature",Jd=.001,_ut="org.eclipse.elk.force.repulsion",BS="org.eclipse.elk.alg.force.options",Q7=1.600000023841858,Lu="org.eclipse.elk.force",cP="org.eclipse.elk.priority",h3="org.eclipse.elk.spacing.nodeNode",Sut="org.eclipse.elk.spacing.edgeLabel",SV="org.eclipse.elk.randomSeed",RS="org.eclipse.elk.separateConnectedComponents",jS="org.eclipse.elk.interactive",Aut="org.eclipse.elk.portConstraints",AV="org.eclipse.elk.edgeLabels.inline",$S="org.eclipse.elk.omitNodeMicroLayout",J7="org.eclipse.elk.nodeSize.fixedGraphSize",Ak="org.eclipse.elk.nodeSize.options",T5="org.eclipse.elk.nodeSize.constraints",Z7="org.eclipse.elk.nodeLabels.placement",tT="org.eclipse.elk.portLabels.placement",uP="org.eclipse.elk.topdownLayout",lP="org.eclipse.elk.topdown.scaleFactor",hP="org.eclipse.elk.topdown.hierarchicalNodeWidth",fP="org.eclipse.elk.topdown.hierarchicalNodeAspectRatio",ov="org.eclipse.elk.topdown.nodeType",O8t="origin",Bbe="random",Rbe="boundingBox.upLeft",jbe="boundingBox.lowRight",P8t="org.eclipse.elk.stress.fixed",N8t="org.eclipse.elk.stress.desiredEdgeLength",F8t="org.eclipse.elk.stress.dimension",B8t="org.eclipse.elk.stress.epsilon",R8t="org.eclipse.elk.stress.iterationLimit",Vb="org.eclipse.elk.stress",$be="ELK Stress",Lk="org.eclipse.elk.nodeSize.minimum",LV="org.eclipse.elk.alg.force.stress",zbe="Layered layout",Mk="org.eclipse.elk.alg.layered",dP="org.eclipse.elk.alg.layered.compaction.components",zS="org.eclipse.elk.alg.layered.compaction.oned",MV="org.eclipse.elk.alg.layered.compaction.oned.algs",gw="org.eclipse.elk.alg.layered.compaction.recthull",ud="org.eclipse.elk.alg.layered.components",Zd="NONE",j8t="MODEL_ORDER",$c={3:1,6:1,4:1,9:1,5:1,126:1},qbe={3:1,6:1,4:1,5:1,150:1,100:1,115:1},DV="org.eclipse.elk.alg.layered.compound",Vi={47:1},su="org.eclipse.elk.alg.layered.graph",Lut=" -> ",Hbe="Not supported by LGraph",$8t="Port side is undefined",Mut={3:1,6:1,4:1,5:1,482:1,150:1,100:1,115:1},Bp={3:1,6:1,4:1,5:1,150:1,199:1,210:1,100:1,115:1},Vbe={3:1,6:1,4:1,5:1,150:1,2042:1,210:1,100:1,115:1},Ube=`([{"' \r +`,Gbe=`)]}"' \r +`,Kbe="The given string contains parts that cannot be parsed as numbers.",gP="org.eclipse.elk.core.math",Wbe={3:1,4:1,140:1,214:1,423:1},Ybe={3:1,4:1,107:1,214:1,423:1},Rp="org.eclipse.elk.alg.layered.graph.transform",Xbe="ElkGraphImporter",Qbe="ElkGraphImporter/lambda$1$Type",Jbe="ElkGraphImporter/lambda$2$Type",Zbe="ElkGraphImporter/lambda$4$Type",Yn="org.eclipse.elk.alg.layered.intermediate",t2e="Node margin calculation",e2e="ONE_SIDED_GREEDY_SWITCH",n2e="TWO_SIDED_GREEDY_SWITCH",Dut="No implementation is available for the layout processor ",Iut="IntermediateProcessorStrategy",Out="Node '",r2e="FIRST_SEPARATE",i2e="LAST_SEPARATE",s2e="Odd port side processing",Gs="org.eclipse.elk.alg.layered.intermediate.compaction",qS="org.eclipse.elk.alg.layered.intermediate.greedyswitch",R0="org.eclipse.elk.alg.layered.p3order.counting",pP={230:1},Dk="org.eclipse.elk.alg.layered.intermediate.loops",lh="org.eclipse.elk.alg.layered.intermediate.loops.ordering",Ub="org.eclipse.elk.alg.layered.intermediate.loops.routing",z8t="org.eclipse.elk.alg.layered.intermediate.preserveorder",t0="org.eclipse.elk.alg.layered.intermediate.wrapping",zc="org.eclipse.elk.alg.layered.options",Put="INTERACTIVE",q8t="GREEDY",a2e="DEPTH_FIRST",o2e="EDGE_LENGTH",c2e="SELF_LOOPS",u2e="firstTryWithInitialOrder",H8t="org.eclipse.elk.layered.directionCongruency",V8t="org.eclipse.elk.layered.feedbackEdges",IV="org.eclipse.elk.layered.interactiveReferencePoint",U8t="org.eclipse.elk.layered.mergeEdges",G8t="org.eclipse.elk.layered.mergeHierarchyEdges",K8t="org.eclipse.elk.layered.allowNonFlowPortsToSwitchSides",W8t="org.eclipse.elk.layered.portSortingStrategy",Y8t="org.eclipse.elk.layered.thoroughness",X8t="org.eclipse.elk.layered.unnecessaryBendpoints",Q8t="org.eclipse.elk.layered.generatePositionAndLayerIds",Nut="org.eclipse.elk.layered.cycleBreaking.strategy",bP="org.eclipse.elk.layered.layering.strategy",J8t="org.eclipse.elk.layered.layering.layerConstraint",Z8t="org.eclipse.elk.layered.layering.layerChoiceConstraint",tEt="org.eclipse.elk.layered.layering.layerId",Fut="org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth",But="org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor",Rut="org.eclipse.elk.layered.layering.nodePromotion.strategy",jut="org.eclipse.elk.layered.layering.nodePromotion.maxIterations",$ut="org.eclipse.elk.layered.layering.coffmanGraham.layerBound",HS="org.eclipse.elk.layered.crossingMinimization.strategy",eEt="org.eclipse.elk.layered.crossingMinimization.forceNodeModelOrder",zut="org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness",qut="org.eclipse.elk.layered.crossingMinimization.semiInteractive",nEt="org.eclipse.elk.layered.crossingMinimization.inLayerPredOf",rEt="org.eclipse.elk.layered.crossingMinimization.inLayerSuccOf",iEt="org.eclipse.elk.layered.crossingMinimization.positionChoiceConstraint",sEt="org.eclipse.elk.layered.crossingMinimization.positionId",aEt="org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold",Hut="org.eclipse.elk.layered.crossingMinimization.greedySwitch.type",OV="org.eclipse.elk.layered.crossingMinimization.greedySwitchHierarchical.type",C5="org.eclipse.elk.layered.nodePlacement.strategy",PV="org.eclipse.elk.layered.nodePlacement.favorStraightEdges",Vut="org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening",Uut="org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment",Gut="org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening",Kut="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility",Wut="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default",oEt="org.eclipse.elk.layered.edgeRouting.selfLoopDistribution",cEt="org.eclipse.elk.layered.edgeRouting.selfLoopOrdering",NV="org.eclipse.elk.layered.edgeRouting.splines.mode",FV="org.eclipse.elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor",Yut="org.eclipse.elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth",uEt="org.eclipse.elk.layered.spacing.baseValue",lEt="org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers",hEt="org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers",fEt="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers",dEt="org.eclipse.elk.layered.priority.direction",gEt="org.eclipse.elk.layered.priority.shortness",pEt="org.eclipse.elk.layered.priority.straightness",Xut="org.eclipse.elk.layered.compaction.connectedComponents",bEt="org.eclipse.elk.layered.compaction.postCompaction.strategy",wEt="org.eclipse.elk.layered.compaction.postCompaction.constraints",BV="org.eclipse.elk.layered.highDegreeNodes.treatment",Qut="org.eclipse.elk.layered.highDegreeNodes.threshold",Jut="org.eclipse.elk.layered.highDegreeNodes.treeHeight",Pg="org.eclipse.elk.layered.wrapping.strategy",RV="org.eclipse.elk.layered.wrapping.additionalEdgeSpacing",jV="org.eclipse.elk.layered.wrapping.correctionFactor",VS="org.eclipse.elk.layered.wrapping.cutting.strategy",Zut="org.eclipse.elk.layered.wrapping.cutting.cuts",tlt="org.eclipse.elk.layered.wrapping.cutting.msd.freedom",$V="org.eclipse.elk.layered.wrapping.validify.strategy",zV="org.eclipse.elk.layered.wrapping.validify.forbiddenIndices",qV="org.eclipse.elk.layered.wrapping.multiEdge.improveCuts",HV="org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty",elt="org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges",mEt="org.eclipse.elk.layered.edgeLabels.sideSelection",vEt="org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy",VV="org.eclipse.elk.layered.considerModelOrder.strategy",yEt="org.eclipse.elk.layered.considerModelOrder.portModelOrder",xEt="org.eclipse.elk.layered.considerModelOrder.noModelOrder",nlt="org.eclipse.elk.layered.considerModelOrder.components",kEt="org.eclipse.elk.layered.considerModelOrder.longEdgeStrategy",rlt="org.eclipse.elk.layered.considerModelOrder.crossingCounterNodeInfluence",ilt="org.eclipse.elk.layered.considerModelOrder.crossingCounterPortInfluence",slt="layering",l2e="layering.minWidth",h2e="layering.nodePromotion",eT="crossingMinimization",UV="org.eclipse.elk.hierarchyHandling",f2e="crossingMinimization.greedySwitch",d2e="nodePlacement",g2e="nodePlacement.bk",p2e="edgeRouting",wP="org.eclipse.elk.edgeRouting",ld="spacing",EEt="priority",TEt="compaction",b2e="compaction.postCompaction",w2e="Specifies whether and how post-process compaction is applied.",CEt="highDegreeNodes",_Et="wrapping",m2e="wrapping.cutting",v2e="wrapping.validify",SEt="wrapping.multiEdge",alt="edgeLabels",US="considerModelOrder",AEt="org.eclipse.elk.spacing.commentComment",LEt="org.eclipse.elk.spacing.commentNode",MEt="org.eclipse.elk.spacing.edgeEdge",olt="org.eclipse.elk.spacing.edgeNode",DEt="org.eclipse.elk.spacing.labelLabel",IEt="org.eclipse.elk.spacing.labelPortHorizontal",OEt="org.eclipse.elk.spacing.labelPortVertical",PEt="org.eclipse.elk.spacing.labelNode",NEt="org.eclipse.elk.spacing.nodeSelfLoop",FEt="org.eclipse.elk.spacing.portPort",BEt="org.eclipse.elk.spacing.individual",REt="org.eclipse.elk.port.borderOffset",jEt="org.eclipse.elk.noLayout",$Et="org.eclipse.elk.port.side",mP="org.eclipse.elk.debugMode",zEt="org.eclipse.elk.alignment",qEt="org.eclipse.elk.insideSelfLoops.activate",HEt="org.eclipse.elk.insideSelfLoops.yo",clt="org.eclipse.elk.direction",VEt="org.eclipse.elk.nodeLabels.padding",UEt="org.eclipse.elk.portLabels.nextToPortIfPossible",GEt="org.eclipse.elk.portLabels.treatAsGroup",KEt="org.eclipse.elk.portAlignment.default",WEt="org.eclipse.elk.portAlignment.north",YEt="org.eclipse.elk.portAlignment.south",XEt="org.eclipse.elk.portAlignment.west",QEt="org.eclipse.elk.portAlignment.east",GV="org.eclipse.elk.contentAlignment",JEt="org.eclipse.elk.junctionPoints",ZEt="org.eclipse.elk.edgeLabels.placement",t7t="org.eclipse.elk.port.index",e7t="org.eclipse.elk.commentBox",n7t="org.eclipse.elk.hypernode",r7t="org.eclipse.elk.port.anchor",ult="org.eclipse.elk.partitioning.activate",llt="org.eclipse.elk.partitioning.partition",KV="org.eclipse.elk.position",i7t="org.eclipse.elk.margins",s7t="org.eclipse.elk.spacing.portsSurrounding",WV="org.eclipse.elk.interactiveLayout",Ec="org.eclipse.elk.core.util",a7t={3:1,4:1,5:1,601:1},y2e="NETWORK_SIMPLEX",o7t="SIMPLE",To={106:1,47:1},YV="org.eclipse.elk.alg.layered.p1cycles",Ng="org.eclipse.elk.alg.layered.p2layers",c7t={413:1,230:1},x2e={846:1,3:1,4:1},sl="org.eclipse.elk.alg.layered.p3order",Co="org.eclipse.elk.alg.layered.p4nodes",k2e={3:1,4:1,5:1,854:1},e0=1e-5,Gb="org.eclipse.elk.alg.layered.p4nodes.bk",hlt="org.eclipse.elk.alg.layered.p5edges",L1="org.eclipse.elk.alg.layered.p5edges.orthogonal",flt="org.eclipse.elk.alg.layered.p5edges.orthogonal.direction",dlt=1e-6,f3="org.eclipse.elk.alg.layered.p5edges.splines",glt=.09999999999999998,XV=1e-8,E2e=4.71238898038469,u7t=3.141592653589793,Fg="org.eclipse.elk.alg.mrtree",plt=.10000000149011612,QV="SUPER_ROOT",GS="org.eclipse.elk.alg.mrtree.graph",l7t=-17976931348623157e292,au="org.eclipse.elk.alg.mrtree.intermediate",T2e="Processor compute fanout",JV={3:1,6:1,4:1,5:1,534:1,100:1,115:1},C2e="Set neighbors in level",vP="org.eclipse.elk.alg.mrtree.options",_2e="DESCENDANTS",h7t="org.eclipse.elk.mrtree.compaction",f7t="org.eclipse.elk.mrtree.edgeEndTextureLength",d7t="org.eclipse.elk.mrtree.treeLevel",g7t="org.eclipse.elk.mrtree.positionConstraint",p7t="org.eclipse.elk.mrtree.weighting",b7t="org.eclipse.elk.mrtree.edgeRoutingMode",w7t="org.eclipse.elk.mrtree.searchOrder",S2e="Position Constraint",Mu="org.eclipse.elk.mrtree",A2e="org.eclipse.elk.tree",L2e="Processor arrange level",nT="org.eclipse.elk.alg.mrtree.p2order",Wl="org.eclipse.elk.alg.mrtree.p4route",m7t="org.eclipse.elk.alg.radial",pw=6.283185307179586,v7t="Before",y7t=5e-324,ZV="After",x7t="org.eclipse.elk.alg.radial.intermediate",M2e="COMPACTION",blt="org.eclipse.elk.alg.radial.intermediate.compaction",D2e={3:1,4:1,5:1,100:1},k7t="org.eclipse.elk.alg.radial.intermediate.optimization",wlt="No implementation is available for the layout option ",KS="org.eclipse.elk.alg.radial.options",E7t="org.eclipse.elk.radial.centerOnRoot",T7t="org.eclipse.elk.radial.orderId",C7t="org.eclipse.elk.radial.radius",tU="org.eclipse.elk.radial.rotate",mlt="org.eclipse.elk.radial.compactor",vlt="org.eclipse.elk.radial.compactionStepSize",_7t="org.eclipse.elk.radial.sorter",S7t="org.eclipse.elk.radial.wedgeCriteria",A7t="org.eclipse.elk.radial.optimizationCriteria",ylt="org.eclipse.elk.radial.rotation.targetAngle",xlt="org.eclipse.elk.radial.rotation.computeAdditionalWedgeSpace",L7t="org.eclipse.elk.radial.rotation.outgoingEdgeAngles",I2e="Compaction",M7t="rotation",Bh="org.eclipse.elk.radial",O2e="org.eclipse.elk.alg.radial.p1position.wedge",D7t="org.eclipse.elk.alg.radial.sorting",P2e=5.497787143782138,N2e=3.9269908169872414,F2e=2.356194490192345,B2e="org.eclipse.elk.alg.rectpacking",eU="org.eclipse.elk.alg.rectpacking.intermediate",klt="org.eclipse.elk.alg.rectpacking.options",I7t="org.eclipse.elk.rectpacking.trybox",O7t="org.eclipse.elk.rectpacking.currentPosition",P7t="org.eclipse.elk.rectpacking.desiredPosition",N7t="org.eclipse.elk.rectpacking.inNewRow",F7t="org.eclipse.elk.rectpacking.widthApproximation.strategy",B7t="org.eclipse.elk.rectpacking.widthApproximation.targetWidth",R7t="org.eclipse.elk.rectpacking.widthApproximation.optimizationGoal",j7t="org.eclipse.elk.rectpacking.widthApproximation.lastPlaceShift",$7t="org.eclipse.elk.rectpacking.packing.strategy",z7t="org.eclipse.elk.rectpacking.packing.compaction.rowHeightReevaluation",q7t="org.eclipse.elk.rectpacking.packing.compaction.iterations",H7t="org.eclipse.elk.rectpacking.whiteSpaceElimination.strategy",Elt="widthApproximation",R2e="Compaction Strategy",j2e="packing.compaction",Ol="org.eclipse.elk.rectpacking",rT="org.eclipse.elk.alg.rectpacking.p1widthapproximation",nU="org.eclipse.elk.alg.rectpacking.p2packing",$2e="No Compaction",V7t="org.eclipse.elk.alg.rectpacking.p3whitespaceelimination",yP="org.eclipse.elk.alg.rectpacking.util",rU="No implementation available for ",d3="org.eclipse.elk.alg.spore",g3="org.eclipse.elk.alg.spore.options",cv="org.eclipse.elk.sporeCompaction",Tlt="org.eclipse.elk.underlyingLayoutAlgorithm",U7t="org.eclipse.elk.processingOrder.treeConstruction",G7t="org.eclipse.elk.processingOrder.spanningTreeCostFunction",Clt="org.eclipse.elk.processingOrder.preferredRoot",_lt="org.eclipse.elk.processingOrder.rootSelection",Slt="org.eclipse.elk.structure.structureExtractionStrategy",K7t="org.eclipse.elk.compaction.compactionStrategy",W7t="org.eclipse.elk.compaction.orthogonal",Y7t="org.eclipse.elk.overlapRemoval.maxIterations",X7t="org.eclipse.elk.overlapRemoval.runScanline",Alt="processingOrder",z2e="overlapRemoval",iT="org.eclipse.elk.sporeOverlap",q2e="org.eclipse.elk.alg.spore.p1structure",Llt="org.eclipse.elk.alg.spore.p2processingorder",Mlt="org.eclipse.elk.alg.spore.p3execution",H2e="Topdown Layout",V2e="Invalid index: ",sT="org.eclipse.elk.core.alg",_5={341:1},p3={294:1},U2e="Make sure its type is registered with the ",Q7t=" utility class.",aT="true",Dlt="false",G2e="Couldn't clone property '",uv=.05,Pl="org.eclipse.elk.core.options",K2e=1.2999999523162842,lv="org.eclipse.elk.box",J7t="org.eclipse.elk.expandNodes",Z7t="org.eclipse.elk.box.packingMode",W2e="org.eclipse.elk.algorithm",Y2e="org.eclipse.elk.resolvedAlgorithm",tTt="org.eclipse.elk.bendPoints",c_n="org.eclipse.elk.labelManager",X2e="org.eclipse.elk.scaleFactor",Q2e="org.eclipse.elk.childAreaWidth",J2e="org.eclipse.elk.childAreaHeight",Z2e="org.eclipse.elk.animate",twe="org.eclipse.elk.animTimeFactor",ewe="org.eclipse.elk.layoutAncestors",nwe="org.eclipse.elk.maxAnimTime",rwe="org.eclipse.elk.minAnimTime",iwe="org.eclipse.elk.progressBar",swe="org.eclipse.elk.validateGraph",awe="org.eclipse.elk.validateOptions",owe="org.eclipse.elk.zoomToFit",u_n="org.eclipse.elk.font.name",cwe="org.eclipse.elk.font.size",eTt="org.eclipse.elk.topdown.sizeApproximator",nTt="org.eclipse.elk.topdown.scaleCap",uwe="org.eclipse.elk.edge.type",lwe="partitioning",hwe="nodeLabels",iU="portAlignment",Ilt="nodeSize",Olt="port",rTt="portLabels",xP="topdown",fwe="insideSelfLoops",WS="org.eclipse.elk.fixed",sU="org.eclipse.elk.random",iTt={3:1,34:1,22:1,347:1},dwe="port must have a parent node to calculate the port side",gwe="The edge needs to have exactly one edge section. Found: ",YS="org.eclipse.elk.core.util.adapters",Rh="org.eclipse.emf.ecore",S5="org.eclipse.elk.graph",pwe="EMapPropertyHolder",bwe="ElkBendPoint",wwe="ElkGraphElement",mwe="ElkConnectableShape",sTt="ElkEdge",vwe="ElkEdgeSection",ywe="EModelElement",xwe="ENamedElement",aTt="ElkLabel",oTt="ElkNode",cTt="ElkPort",kwe={94:1,93:1},Ik="org.eclipse.emf.common.notify.impl",Kb="The feature '",XS="' is not a valid changeable feature",Ewe="Expecting null",Plt="' is not a valid feature",Twe="The feature ID",Cwe=" is not a valid feature ID",Pc=32768,_we={110:1,94:1,93:1,58:1,54:1,99:1},jn="org.eclipse.emf.ecore.impl",bw="org.eclipse.elk.graph.impl",QS="Recursive containment not allowed for ",oT="The datatype '",hv="' is not a valid classifier",Nlt="The value '",A5={195:1,3:1,4:1},Flt="The class '",cT="http://www.eclipse.org/elk/ElkGraph",uTt="property",JS="value",Blt="source",Swe="properties",Awe="identifier",Rlt="height",jlt="width",$lt="parent",zlt="text",qlt="children",Lwe="hierarchical",lTt="sources",Hlt="targets",hTt="sections",aU="bendPoints",fTt="outgoingShape",dTt="incomingShape",gTt="outgoingSections",pTt="incomingSections",io="org.eclipse.emf.common.util",bTt="Severe implementation error in the Json to ElkGraph importer.",n0="id",Pa="org.eclipse.elk.graph.json",wTt="Unhandled parameter types: ",Mwe="startPoint",Dwe="An edge must have at least one source and one target (edge id: '",uT="').",Iwe="Referenced edge section does not exist: ",Owe=" (edge id: '",mTt="target",Pwe="sourcePoint",Nwe="targetPoint",oU="group",bi="name",Fwe="connectableShape cannot be null",Bwe="edge cannot be null",Vlt="Passed edge is not 'simple'.",cU="org.eclipse.elk.graph.util",kP="The 'no duplicates' constraint is violated",Ult="targetIndex=",ww=", size=",Glt="sourceIndex=",r0={3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,66:1,61:1},Klt={3:1,4:1,20:1,31:1,56:1,16:1,51:1,15:1,59:1,70:1,66:1,61:1,596:1},uU="logging",Rwe="measureExecutionTime",jwe="parser.parse.1",$we="parser.parse.2",lU="parser.next.1",Wlt="parser.next.2",zwe="parser.next.3",qwe="parser.next.4",mw="parser.factor.1",vTt="parser.factor.2",Hwe="parser.factor.3",Vwe="parser.factor.4",Uwe="parser.factor.5",Gwe="parser.factor.6",Kwe="parser.atom.1",Wwe="parser.atom.2",Ywe="parser.atom.3",yTt="parser.atom.4",Ylt="parser.atom.5",xTt="parser.cc.1",hU="parser.cc.2",Xwe="parser.cc.3",Qwe="parser.cc.5",kTt="parser.cc.6",ETt="parser.cc.7",Xlt="parser.cc.8",Jwe="parser.ope.1",Zwe="parser.ope.2",tme="parser.ope.3",jp="parser.descape.1",eme="parser.descape.2",nme="parser.descape.3",rme="parser.descape.4",ime="parser.descape.5",jh="parser.process.1",sme="parser.quantifier.1",ame="parser.quantifier.2",ome="parser.quantifier.3",cme="parser.quantifier.4",TTt="parser.quantifier.5",ume="org.eclipse.emf.common.notify",CTt={424:1,686:1},lme={3:1,4:1,20:1,31:1,56:1,16:1,15:1,70:1,61:1},EP={378:1,152:1},ZS="index=",Qlt={3:1,4:1,5:1,129:1},hme={3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,61:1},_Tt={3:1,6:1,4:1,5:1,198:1},fme={3:1,4:1,5:1,173:1,379:1},dme=";/?:@&=+$,",gme="invalid authority: ",pme="EAnnotation",bme="ETypedElement",wme="EStructuralFeature",mme="EAttribute",vme="EClassifier",yme="EEnumLiteral",xme="EGenericType",kme="EOperation",Eme="EParameter",Tme="EReference",Cme="ETypeParameter",Zi="org.eclipse.emf.ecore.util",Jlt={79:1},STt={3:1,20:1,16:1,15:1,61:1,597:1,79:1,71:1,97:1},_me="org.eclipse.emf.ecore.util.FeatureMap$Entry",al=8192,b3=2048,tA="byte",fU="char",eA="double",nA="float",rA="int",iA="long",sA="short",Sme="java.lang.Object",L5={3:1,4:1,5:1,254:1},ATt={3:1,4:1,5:1,688:1},Ame={3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,66:1,61:1,71:1},nc={3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,66:1,61:1,79:1,71:1,97:1},TP="mixed",ti="http:///org/eclipse/emf/ecore/util/ExtendedMetaData",of="kind",Lme={3:1,4:1,5:1,689:1},LTt={3:1,4:1,20:1,31:1,56:1,16:1,15:1,70:1,61:1,79:1,71:1,97:1},dU={20:1,31:1,56:1,16:1,15:1,61:1,71:1},gU={51:1,128:1,287:1},pU={76:1,343:1},bU="The value of type '",wU="' must be of type '",M5=1352,cf="http://www.eclipse.org/emf/2002/Ecore",mU=-32768,fv="constraints",Ua="baseType",Mme="getEStructuralFeature",Dme="getFeatureID",aA="feature",Ime="getOperationID",MTt="operation",Ome="defaultValue",Pme="eTypeParameters",Nme="isInstance",Fme="getEEnumLiteral",Bme="eContainingClass",fi={57:1},Rme={3:1,4:1,5:1,124:1},jme="org.eclipse.emf.ecore.resource",$me={94:1,93:1,599:1,2034:1},Zlt="org.eclipse.emf.ecore.resource.impl",DTt="unspecified",CP="simple",vU="attribute",zme="attributeWildcard",yU="element",tht="elementWildcard",M1="collapse",eht="itemType",xU="namespace",_P="##targetNamespace",uf="whiteSpace",ITt="wildcards",vw="http://www.eclipse.org/emf/2003/XMLType",nht="##any",lT="uninitialized",SP="The multiplicity constraint is violated",kU="org.eclipse.emf.ecore.xml.type",qme="ProcessingInstruction",Hme="SimpleAnyType",Vme="XMLTypeDocumentRoot",$s="org.eclipse.emf.ecore.xml.type.impl",AP="INF",Ume="processing",Gme="ENTITIES_._base",OTt="minLength",PTt="ENTITY",EU="NCName",Kme="IDREFS_._base",NTt="integer",rht="token",iht="pattern",Wme="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",FTt="\\i\\c*",Yme="[\\i-[:]][\\c-[:]]*",Xme="nonPositiveInteger",LP="maxInclusive",BTt="NMTOKEN",Qme="NMTOKENS_._base",RTt="nonNegativeInteger",MP="minInclusive",Jme="normalizedString",Zme="unsignedByte",tve="unsignedInt",eve="18446744073709551615",nve="unsignedShort",rve="processingInstruction",$p="org.eclipse.emf.ecore.xml.type.internal",hT=1114111,ive="Internal Error: shorthands: \\u",oA="xml:isDigit",sht="xml:isWord",aht="xml:isSpace",oht="xml:isNameChar",cht="xml:isInitialNameChar",sve="09٠٩۰۹०९০৯੦੯૦૯୦୯௧௯౦౯೦೯൦൯๐๙໐໙༠༩",ave="AZazÀÖØöøıĴľŁňŊžƀǃǍǰǴǵǺȗɐʨʻˁΆΆΈΊΌΌΎΡΣώϐϖϚϚϜϜϞϞϠϠϢϳЁЌЎяёќўҁҐӄӇӈӋӌӐӫӮӵӸӹԱՖՙՙաֆאתװײءغفيٱڷںھۀێېۓەەۥۦअहऽऽक़ॡঅঌএঐওনপরললশহড়ঢ়য়ৡৰৱਅਊਏਐਓਨਪਰਲਲ਼ਵਸ਼ਸਹਖ਼ੜਫ਼ਫ਼ੲੴઅઋઍઍએઑઓનપરલળવહઽઽૠૠଅଌଏଐଓନପରଲଳଶହଽଽଡ଼ଢ଼ୟୡஅஊஎஐஒகஙசஜஜஞடணதநபமவஷஹఅఌఎఐఒనపళవహౠౡಅಌಎಐಒನಪಳವಹೞೞೠೡഅഌഎഐഒനപഹൠൡกฮะะาำเๅກຂຄຄງຈຊຊຍຍດທນຟມຣລລວວສຫອຮະະາຳຽຽເໄཀཇཉཀྵႠჅაჶᄀᄀᄂᄃᄅᄇᄉᄉᄋᄌᄎᄒᄼᄼᄾᄾᅀᅀᅌᅌᅎᅎᅐᅐᅔᅕᅙᅙᅟᅡᅣᅣᅥᅥᅧᅧᅩᅩᅭᅮᅲᅳᅵᅵᆞᆞᆨᆨᆫᆫᆮᆯᆷᆸᆺᆺᆼᇂᇫᇫᇰᇰᇹᇹḀẛẠỹἀἕἘἝἠὅὈὍὐὗὙὙὛὛὝὝὟώᾀᾴᾶᾼιιῂῄῆῌῐΐῖΊῠῬῲῴῶῼΩΩKÅ℮℮ↀↂ〇〇〡〩ぁゔァヺㄅㄬ一龥가힣",ove="Private Use",uht="ASSIGNED",lht="\0€ÿĀſƀɏɐʯʰ˿̀ͯͰϿЀӿ԰֏֐׿؀ۿ܀ݏހ޿ऀॿঀ৿਀੿઀૿଀୿஀௿ఀ౿ಀ೿ഀൿ඀෿฀๿຀໿ༀ࿿က႟Ⴀჿᄀᇿሀ፿Ꭰ᏿᐀ᙿ ᚟ᚠ᛿ក៿᠀᢯Ḁỿἀ῿ ⁰₟₠⃏⃐⃿℀⅏⅐↏←⇿∀⋿⌀⏿␀␿⑀⑟①⓿─╿▀▟■◿☀⛿✀➿⠀⣿⺀⻿⼀⿟⿰⿿ 〿぀ゟ゠ヿ㄀ㄯ㄰㆏㆐㆟ㆠㆿ㈀㋿㌀㏿㐀䶵一鿿ꀀ꒏꒐꓏가힣豈﫿ffﭏﭐ﷿︠︯︰﹏﹐﹯ﹰ﻾\uFEFF\uFEFF＀￯",jTt="UNASSIGNED",fT={3:1,122:1},cve="org.eclipse.emf.ecore.xml.type.util",TU={3:1,4:1,5:1,381:1},$Tt="org.eclipse.xtext.xbase.lib",uve="Cannot add elements to a Range",lve="Cannot set elements in a Range",hve="Cannot remove elements from a Range",fve="user.agent",l,CU,hht;b.goog=b.goog||{},b.goog.global=b.goog.global||b,CU={},M(1,null,{},_),l.Fb=function(e){return uQt(this,e)},l.Gb=function(){return this.Rm},l.Hb=function(){return km(this)},l.Ib=function(){var e;return R2(Gl(this))+"@"+(e=Hi(this)>>>0,e.toString(16))},l.equals=function(t){return this.Fb(t)},l.hashCode=function(){return this.Hb()},l.toString=function(){return this.Ib()};var dve,gve,pve;M(296,1,{296:1,2124:1},F4t),l.ve=function(e){var n;return n=new F4t,n.i=4,e>1?n.c=Dne(this,e-1):n.c=this,n},l.we=function(){return gg(this),this.b},l.xe=function(){return R2(this)},l.ye=function(){return gg(this),this.k},l.ze=function(){return(this.i&4)!=0},l.Ae=function(){return(this.i&1)!=0},l.Ib=function(){return K3t(this)},l.i=0;var sa=D(kc,"Object",1),zTt=D(kc,"Class",296);M(2096,1,WO),D(YO,"Optional",2096),M(1191,2096,WO,S),l.Fb=function(e){return e===this},l.Hb=function(){return 2040732332},l.Ib=function(){return"Optional.absent()"},l.Jb=function(e){return Hr(e),NC(),fht};var fht;D(YO,"Absent",1191),M(636,1,{},Knt),D(YO,"Joiner",636);var l_n=us(YO,"Predicate");M(589,1,{178:1,589:1,3:1,46:1},Mj),l.Mb=function(e){return Dce(this,e)},l.Lb=function(e){return Dce(this,e)},l.Fb=function(e){var n;return At(e,589)?(n=u(e,589),I6t(this.a,n.a)):!1},l.Hb=function(){return q4t(this.a)+306654252},l.Ib=function(){return X3n(this.a)},D(YO,"Predicates/AndPredicate",589),M(419,2096,{419:1,3:1},CC),l.Fb=function(e){var n;return At(e,419)?(n=u(e,419),Ci(this.a,n.a)):!1},l.Hb=function(){return 1502476572+Hi(this.a)},l.Ib=function(){return $pe+this.a+")"},l.Jb=function(e){return new CC(Gz(e.Kb(this.a),"the Function passed to Optional.transform() must not return null."))},D(YO,"Present",419),M(204,1,z7),l.Nb=function(e){Da(this,e)},l.Qb=function(){JKt()},D(on,"UnmodifiableIterator",204),M(2076,204,q7),l.Qb=function(){JKt()},l.Rb=function(e){throw nt(new Vr)},l.Wb=function(e){throw nt(new Vr)},D(on,"UnmodifiableListIterator",2076),M(399,2076,q7),l.Ob=function(){return this.c0},l.Pb=function(){if(this.c>=this.d)throw nt(new ac);return this.Xb(this.c++)},l.Tb=function(){return this.c},l.Ub=function(){if(this.c<=0)throw nt(new ac);return this.Xb(--this.c)},l.Vb=function(){return this.c-1},l.c=0,l.d=0,D(on,"AbstractIndexedListIterator",399),M(713,204,z7),l.Ob=function(){return Yst(this)},l.Pb=function(){return z3t(this)},l.e=1,D(on,"AbstractIterator",713),M(2084,1,{229:1}),l.Zb=function(){var e;return e=this.f,e||(this.f=this.ac())},l.Fb=function(e){return wat(this,e)},l.Hb=function(){return Hi(this.Zb())},l.dc=function(){return this.gc()==0},l.ec=function(){return q6(this)},l.Ib=function(){return ec(this.Zb())},D(on,"AbstractMultimap",2084),M(742,2084,uw),l.$b=function(){Bq(this)},l._b=function(e){return wWt(this,e)},l.ac=function(){return new bE(this,this.c)},l.ic=function(e){return this.hc()},l.bc=function(){return new U4(this,this.c)},l.jc=function(){return this.mc(this.hc())},l.kc=function(){return new FKt(this)},l.lc=function(){return _ot(this.c.vc().Nc(),new B,64,this.d)},l.cc=function(e){return Mi(this,e)},l.fc=function(e){return sO(this,e)},l.gc=function(){return this.d},l.mc=function(e){return wn(),new re(e)},l.nc=function(){return new NKt(this)},l.oc=function(){return _ot(this.c.Cc().Nc(),new I,64,this.d)},l.pc=function(e,n){return new pq(this,e,n,null)},l.d=0,D(on,"AbstractMapBasedMultimap",742),M(1696,742,uw),l.hc=function(){return new bu(this.a)},l.jc=function(){return wn(),wn(),so},l.cc=function(e){return u(Mi(this,e),15)},l.fc=function(e){return u(sO(this,e),15)},l.Zb=function(){return W6(this)},l.Fb=function(e){return wat(this,e)},l.qc=function(e){return u(Mi(this,e),15)},l.rc=function(e){return u(sO(this,e),15)},l.mc=function(e){return Jit(u(e,15))},l.pc=function(e,n){return Rre(this,e,u(n,15),null)},D(on,"AbstractListMultimap",1696),M(748,1,ba),l.Nb=function(e){Da(this,e)},l.Ob=function(){return this.c.Ob()||this.e.Ob()},l.Pb=function(){var e;return this.e.Ob()||(e=u(this.c.Pb(),44),this.b=e.ld(),this.a=u(e.md(),16),this.e=this.a.Kc()),this.sc(this.b,this.e.Pb())},l.Qb=function(){this.e.Qb(),u(Zh(this.a),16).dc()&&this.c.Qb(),--this.d.d},D(on,"AbstractMapBasedMultimap/Itr",748),M(1129,748,ba,NKt),l.sc=function(e,n){return n},D(on,"AbstractMapBasedMultimap/1",1129),M(1130,1,{},I),l.Kb=function(e){return u(e,16).Nc()},D(on,"AbstractMapBasedMultimap/1methodref$spliterator$Type",1130),M(1131,748,ba,FKt),l.sc=function(e,n){return new pm(e,n)},D(on,"AbstractMapBasedMultimap/2",1131);var qTt=us(mr,"Map");M(2065,1,iv),l.wc=function(e){U_(this,e)},l.yc=function(e,n,r){return Fat(this,e,n,r)},l.$b=function(){this.vc().$b()},l.tc=function(e){return cot(this,e)},l._b=function(e){return!!Dxt(this,e,!1)},l.uc=function(e){var n,r,s;for(r=this.vc().Kc();r.Ob();)if(n=u(r.Pb(),44),s=n.md(),$t(e)===$t(s)||e!=null&&Ci(e,s))return!0;return!1},l.Fb=function(e){var n,r,s;if(e===this)return!0;if(!At(e,85)||(s=u(e,85),this.gc()!=s.gc()))return!1;for(r=s.vc().Kc();r.Ob();)if(n=u(r.Pb(),44),!this.tc(n))return!1;return!0},l.xc=function(e){return Uo(Dxt(this,e,!1))},l.Hb=function(){return I4t(this.vc())},l.dc=function(){return this.gc()==0},l.ec=function(){return new ui(this)},l.zc=function(e,n){throw nt(new up("Put not supported on this map"))},l.Ac=function(e){V_(this,e)},l.Bc=function(e){return Uo(Dxt(this,e,!0))},l.gc=function(){return this.vc().gc()},l.Ib=function(){return Hhe(this)},l.Cc=function(){return new li(this)},D(mr,"AbstractMap",2065),M(2085,2065,iv),l.bc=function(){return new g$(this)},l.vc=function(){return Pte(this)},l.ec=function(){var e;return e=this.g,e||(this.g=this.bc())},l.Cc=function(){var e;return e=this.i,e||(this.i=new oYt(this))},D(on,"Maps/ViewCachingAbstractMap",2085),M(402,2085,iv,bE),l.xc=function(e){return p0n(this,e)},l.Bc=function(e){return Rpn(this,e)},l.$b=function(){this.d==this.e.c?this.e.$b():Ez(new Vvt(this))},l._b=function(e){return pue(this.d,e)},l.Ec=function(){return new hnt(this)},l.Dc=function(){return this.Ec()},l.Fb=function(e){return this===e||Ci(this.d,e)},l.Hb=function(){return Hi(this.d)},l.ec=function(){return this.e.ec()},l.gc=function(){return this.d.gc()},l.Ib=function(){return ec(this.d)},D(on,"AbstractMapBasedMultimap/AsMap",402);var hh=us(kc,"Iterable");M(31,1,o3),l.Jc=function(e){Oa(this,e)},l.Lc=function(){return this.Oc()},l.Nc=function(){return new gn(this,0)},l.Oc=function(){return new ln(null,this.Nc())},l.Fc=function(e){throw nt(new up("Add not supported on this collection"))},l.Gc=function(e){return Aa(this,e)},l.$b=function(){Myt(this)},l.Hc=function(e){return Ky(this,e,!1)},l.Ic=function(e){return QI(this,e)},l.dc=function(){return this.gc()==0},l.Mc=function(e){return Ky(this,e,!0)},l.Pc=function(){return tyt(this)},l.Qc=function(e){return uS(this,e)},l.Ib=function(){return Rb(this)},D(mr,"AbstractCollection",31);var lf=us(mr,"Set");M(od,31,il),l.Nc=function(){return new gn(this,1)},l.Fb=function(e){return ale(this,e)},l.Hb=function(){return I4t(this)},D(mr,"AbstractSet",od),M(2068,od,il),D(on,"Sets/ImprovedAbstractSet",2068),M(2069,2068,il),l.$b=function(){this.Rc().$b()},l.Hc=function(e){return Vue(this,e)},l.dc=function(){return this.Rc().dc()},l.Mc=function(e){var n;return this.Hc(e)&&At(e,44)?(n=u(e,44),this.Rc().ec().Mc(n.ld())):!1},l.gc=function(){return this.Rc().gc()},D(on,"Maps/EntrySet",2069),M(1127,2069,il,hnt),l.Hc=function(e){return s5t(this.a.d.vc(),e)},l.Kc=function(){return new Vvt(this.a)},l.Rc=function(){return this.a},l.Mc=function(e){var n;return s5t(this.a.d.vc(),e)?(n=u(Zh(u(e,44)),44),rdn(this.a.e,n.ld()),!0):!1},l.Nc=function(){return uI(this.a.d.vc().Nc(),new Dj(this.a))},D(on,"AbstractMapBasedMultimap/AsMap/AsMapEntries",1127),M(1128,1,{},Dj),l.Kb=function(e){return Fie(this.a,u(e,44))},D(on,"AbstractMapBasedMultimap/AsMap/AsMapEntries/0methodref$wrapEntry$Type",1128),M(746,1,ba,Vvt),l.Nb=function(e){Da(this,e)},l.Pb=function(){var e;return e=u(this.b.Pb(),44),this.a=u(e.md(),16),Fie(this.c,e)},l.Ob=function(){return this.b.Ob()},l.Qb=function(){CE(!!this.a),this.b.Qb(),this.c.e.d-=this.a.gc(),this.a.$b(),this.a=null},D(on,"AbstractMapBasedMultimap/AsMap/AsMapIterator",746),M(542,2068,il,g$),l.$b=function(){this.b.$b()},l.Hc=function(e){return this.b._b(e)},l.Jc=function(e){Hr(e),this.b.wc(new Rj(e))},l.dc=function(){return this.b.dc()},l.Kc=function(){return new FC(this.b.vc().Kc())},l.Mc=function(e){return this.b._b(e)?(this.b.Bc(e),!0):!1},l.gc=function(){return this.b.gc()},D(on,"Maps/KeySet",542),M(327,542,il,U4),l.$b=function(){var e;Ez((e=this.b.vc().Kc(),new gwt(this,e)))},l.Ic=function(e){return this.b.ec().Ic(e)},l.Fb=function(e){return this===e||Ci(this.b.ec(),e)},l.Hb=function(){return Hi(this.b.ec())},l.Kc=function(){var e;return e=this.b.vc().Kc(),new gwt(this,e)},l.Mc=function(e){var n,r;return r=0,n=u(this.b.Bc(e),16),n&&(r=n.gc(),n.$b(),this.a.d-=r),r>0},l.Nc=function(){return this.b.ec().Nc()},D(on,"AbstractMapBasedMultimap/KeySet",327),M(747,1,ba,gwt),l.Nb=function(e){Da(this,e)},l.Ob=function(){return this.c.Ob()},l.Pb=function(){return this.a=u(this.c.Pb(),44),this.a.ld()},l.Qb=function(){var e;CE(!!this.a),e=u(this.a.md(),16),this.c.Qb(),this.b.a.d-=e.gc(),e.$b(),this.a=null},D(on,"AbstractMapBasedMultimap/KeySet/1",747),M(502,402,{85:1,133:1},nI),l.bc=function(){return this.Sc()},l.ec=function(){return this.Uc()},l.Sc=function(){return new MD(this.c,this.Wc())},l.Tc=function(){return this.Wc().Tc()},l.Uc=function(){var e;return e=this.b,e||(this.b=this.Sc())},l.Vc=function(){return this.Wc().Vc()},l.Wc=function(){return u(this.d,133)},D(on,"AbstractMapBasedMultimap/SortedAsMap",502),M(446,502,Jkt,b_),l.bc=function(){return new pE(this.a,u(u(this.d,133),139))},l.Sc=function(){return new pE(this.a,u(u(this.d,133),139))},l.ec=function(){var e;return e=this.b,u(e||(this.b=new pE(this.a,u(u(this.d,133),139))),277)},l.Uc=function(){var e;return e=this.b,u(e||(this.b=new pE(this.a,u(u(this.d,133),139))),277)},l.Wc=function(){return u(u(this.d,133),139)},l.Xc=function(e){return u(u(this.d,133),139).Xc(e)},l.Yc=function(e){return u(u(this.d,133),139).Yc(e)},l.Zc=function(e,n){return new b_(this.a,u(u(this.d,133),139).Zc(e,n))},l.$c=function(e){return u(u(this.d,133),139).$c(e)},l._c=function(e){return u(u(this.d,133),139)._c(e)},l.ad=function(e,n){return new b_(this.a,u(u(this.d,133),139).ad(e,n))},D(on,"AbstractMapBasedMultimap/NavigableAsMap",446),M(501,327,zpe,MD),l.Nc=function(){return this.b.ec().Nc()},D(on,"AbstractMapBasedMultimap/SortedKeySet",501),M(401,501,Zkt,pE),D(on,"AbstractMapBasedMultimap/NavigableKeySet",401),M(551,31,o3,pq),l.Fc=function(e){var n,r;return Ll(this),r=this.d.dc(),n=this.d.Fc(e),n&&(++this.f.d,r&&aI(this)),n},l.Gc=function(e){var n,r,s;return e.dc()?!1:(s=(Ll(this),this.d.gc()),n=this.d.Gc(e),n&&(r=this.d.gc(),this.f.d+=r-s,s==0&&aI(this)),n)},l.$b=function(){var e;e=(Ll(this),this.d.gc()),e!=0&&(this.d.$b(),this.f.d-=e,Lz(this))},l.Hc=function(e){return Ll(this),this.d.Hc(e)},l.Ic=function(e){return Ll(this),this.d.Ic(e)},l.Fb=function(e){return e===this?!0:(Ll(this),Ci(this.d,e))},l.Hb=function(){return Ll(this),Hi(this.d)},l.Kc=function(){return Ll(this),new Svt(this)},l.Mc=function(e){var n;return Ll(this),n=this.d.Mc(e),n&&(--this.f.d,Lz(this)),n},l.gc=function(){return YXt(this)},l.Nc=function(){return Ll(this),this.d.Nc()},l.Ib=function(){return Ll(this),ec(this.d)},D(on,"AbstractMapBasedMultimap/WrappedCollection",551);var $h=us(mr,"List");M(744,551,{20:1,31:1,16:1,15:1},ryt),l.jd=function(e){Q2(this,e)},l.Nc=function(){return Ll(this),this.d.Nc()},l.bd=function(e,n){var r;Ll(this),r=this.d.dc(),u(this.d,15).bd(e,n),++this.a.d,r&&aI(this)},l.cd=function(e,n){var r,s,o;return n.dc()?!1:(o=(Ll(this),this.d.gc()),r=u(this.d,15).cd(e,n),r&&(s=this.d.gc(),this.a.d+=s-o,o==0&&aI(this)),r)},l.Xb=function(e){return Ll(this),u(this.d,15).Xb(e)},l.dd=function(e){return Ll(this),u(this.d,15).dd(e)},l.ed=function(){return Ll(this),new CQt(this)},l.fd=function(e){return Ll(this),new Wee(this,e)},l.gd=function(e){var n;return Ll(this),n=u(this.d,15).gd(e),--this.a.d,Lz(this),n},l.hd=function(e,n){return Ll(this),u(this.d,15).hd(e,n)},l.kd=function(e,n){return Ll(this),Rre(this.a,this.e,u(this.d,15).kd(e,n),this.b?this.b:this)},D(on,"AbstractMapBasedMultimap/WrappedList",744),M(1126,744,{20:1,31:1,16:1,15:1,59:1},gJt),D(on,"AbstractMapBasedMultimap/RandomAccessWrappedList",1126),M(628,1,ba,Svt),l.Nb=function(e){Da(this,e)},l.Ob=function(){return FE(this),this.b.Ob()},l.Pb=function(){return FE(this),this.b.Pb()},l.Qb=function(){JQt(this)},D(on,"AbstractMapBasedMultimap/WrappedCollection/WrappedIterator",628),M(745,628,I0,CQt,Wee),l.Qb=function(){JQt(this)},l.Rb=function(e){var n;n=YXt(this.a)==0,(FE(this),u(this.b,128)).Rb(e),++this.a.a.d,n&&aI(this.a)},l.Sb=function(){return(FE(this),u(this.b,128)).Sb()},l.Tb=function(){return(FE(this),u(this.b,128)).Tb()},l.Ub=function(){return(FE(this),u(this.b,128)).Ub()},l.Vb=function(){return(FE(this),u(this.b,128)).Vb()},l.Wb=function(e){(FE(this),u(this.b,128)).Wb(e)},D(on,"AbstractMapBasedMultimap/WrappedList/WrappedListIterator",745),M(743,551,zpe,Gmt),l.Nc=function(){return Ll(this),this.d.Nc()},D(on,"AbstractMapBasedMultimap/WrappedSortedSet",743),M(1125,743,Zkt,yQt),D(on,"AbstractMapBasedMultimap/WrappedNavigableSet",1125),M(1124,551,il,NJt),l.Nc=function(){return Ll(this),this.d.Nc()},D(on,"AbstractMapBasedMultimap/WrappedSet",1124),M(1133,1,{},B),l.Kb=function(e){return ddn(u(e,44))},D(on,"AbstractMapBasedMultimap/lambda$1$Type",1133),M(1132,1,{},gnt),l.Kb=function(e){return new pm(this.a,e)},D(on,"AbstractMapBasedMultimap/lambda$2$Type",1132);var yw=us(mr,"Map/Entry");M(358,1,Act),l.Fb=function(e){var n;return At(e,44)?(n=u(e,44),zd(this.ld(),n.ld())&&zd(this.md(),n.md())):!1},l.Hb=function(){var e,n;return e=this.ld(),n=this.md(),(e==null?0:Hi(e))^(n==null?0:Hi(n))},l.nd=function(e){throw nt(new Vr)},l.Ib=function(){return this.ld()+"="+this.md()},D(on,qpe,358),M(2086,31,o3),l.$b=function(){this.od().$b()},l.Hc=function(e){var n;return At(e,44)?(n=u(e,44),Pfn(this.od(),n.ld(),n.md())):!1},l.Mc=function(e){var n;return At(e,44)?(n=u(e,44),vre(this.od(),n.ld(),n.md())):!1},l.gc=function(){return this.od().d},D(on,"Multimaps/Entries",2086),M(749,2086,o3,Ij),l.Kc=function(){return this.a.kc()},l.od=function(){return this.a},l.Nc=function(){return this.a.lc()},D(on,"AbstractMultimap/Entries",749),M(750,749,il,U2t),l.Nc=function(){return this.a.lc()},l.Fb=function(e){return Qxt(this,e)},l.Hb=function(){return Moe(this)},D(on,"AbstractMultimap/EntrySet",750),M(751,31,o3,Oj),l.$b=function(){this.a.$b()},l.Hc=function(e){return Ipn(this.a,e)},l.Kc=function(){return this.a.nc()},l.gc=function(){return this.a.d},l.Nc=function(){return this.a.oc()},D(on,"AbstractMultimap/Values",751),M(2087,31,{849:1,20:1,31:1,16:1}),l.Jc=function(e){Hr(e),K4(this).Jc(new zj(e))},l.Nc=function(){var e;return e=K4(this).Nc(),_ot(e,new pt,64|e.yd()&1296,this.a.d)},l.Fc=function(e){return Z2t(),!0},l.Gc=function(e){return Hr(this),Hr(e),At(e,552)?Bfn(u(e,849)):!e.dc()&&$st(this,e.Kc())},l.Hc=function(e){var n;return n=u(Gy(W6(this.a),e),16),(n?n.gc():0)>0},l.Fb=function(e){return sxn(this,e)},l.Hb=function(){return Hi(K4(this))},l.dc=function(){return K4(this).dc()},l.Mc=function(e){return r1e(this,e,1)>0},l.Ib=function(){return ec(K4(this))},D(on,"AbstractMultiset",2087),M(2089,2068,il),l.$b=function(){Bq(this.a.a)},l.Hc=function(e){var n,r;return At(e,503)?(r=u(e,425),u(r.a.md(),16).gc()<=0?!1:(n=Gne(this.a,r.a.ld()),n==u(r.a.md(),16).gc())):!1},l.Mc=function(e){var n,r,s,o;return At(e,503)&&(r=u(e,425),n=r.a.ld(),s=u(r.a.md(),16).gc(),s!=0)?(o=this.a,Y4n(o,n,s)):!1},D(on,"Multisets/EntrySet",2089),M(1139,2089,il,pnt),l.Kc=function(){return new zKt(Pte(W6(this.a.a)).Kc())},l.gc=function(){return W6(this.a.a).gc()},D(on,"AbstractMultiset/EntrySet",1139),M(627,742,uw),l.hc=function(){return this.pd()},l.jc=function(){return this.qd()},l.cc=function(e){return this.rd(e)},l.fc=function(e){return this.sd(e)},l.Zb=function(){var e;return e=this.f,e||(this.f=this.ac())},l.qd=function(){return wn(),wn(),DU},l.Fb=function(e){return wat(this,e)},l.rd=function(e){return u(Mi(this,e),21)},l.sd=function(e){return u(sO(this,e),21)},l.mc=function(e){return wn(),new lE(u(e,21))},l.pc=function(e,n){return new NJt(this,e,u(n,21))},D(on,"AbstractSetMultimap",627),M(1723,627,uw),l.hc=function(){return new dp(this.b)},l.pd=function(){return new dp(this.b)},l.jc=function(){return Tyt(new dp(this.b))},l.qd=function(){return Tyt(new dp(this.b))},l.cc=function(e){return u(u(Mi(this,e),21),87)},l.rd=function(e){return u(u(Mi(this,e),21),87)},l.fc=function(e){return u(u(sO(this,e),21),87)},l.sd=function(e){return u(u(sO(this,e),21),87)},l.mc=function(e){return At(e,277)?Tyt(u(e,277)):(wn(),new Dmt(u(e,87)))},l.Zb=function(){var e;return e=this.f,e||(this.f=At(this.c,139)?new b_(this,u(this.c,139)):At(this.c,133)?new nI(this,u(this.c,133)):new bE(this,this.c))},l.pc=function(e,n){return At(n,277)?new yQt(this,e,u(n,277)):new Gmt(this,e,u(n,87))},D(on,"AbstractSortedSetMultimap",1723),M(1724,1723,uw),l.Zb=function(){var e;return e=this.f,u(u(e||(this.f=At(this.c,139)?new b_(this,u(this.c,139)):At(this.c,133)?new nI(this,u(this.c,133)):new bE(this,this.c)),133),139)},l.ec=function(){var e;return e=this.i,u(u(e||(this.i=At(this.c,139)?new pE(this,u(this.c,139)):At(this.c,133)?new MD(this,u(this.c,133)):new U4(this,this.c)),87),277)},l.bc=function(){return At(this.c,139)?new pE(this,u(this.c,139)):At(this.c,133)?new MD(this,u(this.c,133)):new U4(this,this.c)},D(on,"AbstractSortedKeySortedSetMultimap",1724),M(2109,1,{2046:1}),l.Fb=function(e){return Mvn(this,e)},l.Hb=function(){var e;return I4t((e=this.g,e||(this.g=new eE(this))))},l.Ib=function(){var e;return Hhe((e=this.f,e||(this.f=new Smt(this))))},D(on,"AbstractTable",2109),M(679,od,il,eE),l.$b=function(){ZKt()},l.Hc=function(e){var n,r;return At(e,478)?(n=u(e,697),r=u(Gy(iee(this.a),yb(n.c.e,n.b)),85),!!r&&s5t(r.vc(),new pm(yb(n.c.c,n.a),ek(n.c,n.b,n.a)))):!1},l.Kc=function(){return Pln(this.a)},l.Mc=function(e){var n,r;return At(e,478)?(n=u(e,697),r=u(Gy(iee(this.a),yb(n.c.e,n.b)),85),!!r&&hbn(r.vc(),new pm(yb(n.c.c,n.a),ek(n.c,n.b,n.a)))):!1},l.gc=function(){return ote(this.a)},l.Nc=function(){return $fn(this.a)},D(on,"AbstractTable/CellSet",679),M(2025,31,o3,im),l.$b=function(){ZKt()},l.Hc=function(e){return kyn(this.a,e)},l.Kc=function(){return Nln(this.a)},l.gc=function(){return ote(this.a)},l.Nc=function(){return mre(this.a)},D(on,"AbstractTable/Values",2025),M(1697,1696,uw),D(on,"ArrayListMultimapGwtSerializationDependencies",1697),M(520,1697,uw,Xnt,Gyt),l.hc=function(){return new bu(this.a)},l.a=0,D(on,"ArrayListMultimap",520),M(678,2109,{678:1,2046:1,3:1},b1e),D(on,"ArrayTable",678),M(2021,399,q7,ZQt),l.Xb=function(e){return new B4t(this.a,e)},D(on,"ArrayTable/1",2021),M(2022,1,{},fnt),l.td=function(e){return new B4t(this.a,e)},D(on,"ArrayTable/1methodref$getCell$Type",2022),M(2110,1,{697:1}),l.Fb=function(e){var n;return e===this?!0:At(e,478)?(n=u(e,697),zd(yb(this.c.e,this.b),yb(n.c.e,n.b))&&zd(yb(this.c.c,this.a),yb(n.c.c,n.a))&&zd(ek(this.c,this.b,this.a),ek(n.c,n.b,n.a))):!1},l.Hb=function(){return iO(ot(st(sa,1),Ln,1,5,[yb(this.c.e,this.b),yb(this.c.c,this.a),ek(this.c,this.b,this.a)]))},l.Ib=function(){return"("+yb(this.c.e,this.b)+","+yb(this.c.c,this.a)+")="+ek(this.c,this.b,this.a)},D(on,"Tables/AbstractCell",2110),M(478,2110,{478:1,697:1},B4t),l.a=0,l.b=0,l.d=0,D(on,"ArrayTable/2",478),M(2024,1,{},dnt),l.td=function(e){return Hse(this.a,e)},D(on,"ArrayTable/2methodref$getValue$Type",2024),M(2023,399,q7,tJt),l.Xb=function(e){return Hse(this.a,e)},D(on,"ArrayTable/3",2023),M(2077,2065,iv),l.$b=function(){Ez(this.kc())},l.vc=function(){return new wD(this)},l.lc=function(){return new Ree(this.kc(),this.gc())},D(on,"Maps/IteratorBasedAbstractMap",2077),M(842,2077,iv),l.$b=function(){throw nt(new Vr)},l._b=function(e){return mWt(this.c,e)},l.kc=function(){return new eJt(this,this.c.b.c.gc())},l.lc=function(){return vit(this.c.b.c.gc(),16,new O2(this))},l.xc=function(e){var n;return n=u(w_(this.c,e),17),n?this.vd(n.a):null},l.dc=function(){return this.c.b.c.dc()},l.ec=function(){return Sit(this.c)},l.zc=function(e,n){var r;if(r=u(w_(this.c,e),17),!r)throw nt(new zn(this.ud()+" "+e+" not in "+Sit(this.c)));return this.wd(r.a,n)},l.Bc=function(e){throw nt(new Vr)},l.gc=function(){return this.c.b.c.gc()},D(on,"ArrayTable/ArrayMap",842),M(2020,1,{},O2),l.td=function(e){return aee(this.a,e)},D(on,"ArrayTable/ArrayMap/0methodref$getEntry$Type",2020),M(2018,358,Act,VWt),l.ld=function(){return Win(this.a,this.b)},l.md=function(){return this.a.vd(this.b)},l.nd=function(e){return this.a.wd(this.b,e)},l.b=0,D(on,"ArrayTable/ArrayMap/1",2018),M(2019,399,q7,eJt),l.Xb=function(e){return aee(this.a,e)},D(on,"ArrayTable/ArrayMap/2",2019),M(2017,842,iv,Kte),l.ud=function(){return"Column"},l.vd=function(e){return ek(this.b,this.a,e)},l.wd=function(e,n){return bce(this.b,this.a,e,n)},l.a=0,D(on,"ArrayTable/Row",2017),M(843,842,iv,Smt),l.vd=function(e){return new Kte(this.a,e)},l.zc=function(e,n){return u(n,85),pnn()},l.wd=function(e,n){return u(n,85),bnn()},l.ud=function(){return"Row"},D(on,"ArrayTable/RowMap",843),M(1157,1,uh,UWt),l.Ad=function(e){return(this.a.yd()&-262&e)!=0},l.yd=function(){return this.a.yd()&-262},l.zd=function(){return this.a.zd()},l.Nb=function(e){this.a.Nb(new KWt(e,this.b))},l.Bd=function(e){return this.a.Bd(new GWt(e,this.b))},D(on,"CollectSpliterators/1",1157),M(1158,1,rr,GWt),l.Cd=function(e){this.a.Cd(this.b.Kb(e))},D(on,"CollectSpliterators/1/lambda$0$Type",1158),M(1159,1,rr,KWt),l.Cd=function(e){this.a.Cd(this.b.Kb(e))},D(on,"CollectSpliterators/1/lambda$1$Type",1159),M(1154,1,uh,bZt),l.Ad=function(e){return((16464|this.b)&e)!=0},l.yd=function(){return 16464|this.b},l.zd=function(){return this.a.zd()},l.Nb=function(e){this.a.Qe(new YWt(e,this.c))},l.Bd=function(e){return this.a.Re(new WWt(e,this.c))},l.b=0,D(on,"CollectSpliterators/1WithCharacteristics",1154),M(1155,1,XO,WWt),l.Dd=function(e){this.a.Cd(this.b.td(e))},D(on,"CollectSpliterators/1WithCharacteristics/lambda$0$Type",1155),M(1156,1,XO,YWt),l.Dd=function(e){this.a.Cd(this.b.td(e))},D(on,"CollectSpliterators/1WithCharacteristics/lambda$1$Type",1156),M(1150,1,uh),l.Ad=function(e){return(this.a&e)!=0},l.yd=function(){return this.a},l.zd=function(){return this.e&&(this.b=pmt(this.b,this.e.zd())),pmt(this.b,0)},l.Nb=function(e){this.e&&(this.e.Nb(e),this.e=null),this.c.Nb(new XWt(this,e)),this.b=0},l.Bd=function(e){for(;;){if(this.e&&this.e.Bd(e))return a_(this.b,QO)&&(this.b=ef(this.b,1)),!0;if(this.e=null,!this.c.Bd(new Pj(this)))return!1}},l.a=0,l.b=0,D(on,"CollectSpliterators/FlatMapSpliterator",1150),M(1152,1,rr,Pj),l.Cd=function(e){Gsn(this.a,e)},D(on,"CollectSpliterators/FlatMapSpliterator/lambda$0$Type",1152),M(1153,1,rr,XWt),l.Cd=function(e){wln(this.a,this.b,e)},D(on,"CollectSpliterators/FlatMapSpliterator/lambda$1$Type",1153),M(1151,1150,uh,Fre),D(on,"CollectSpliterators/FlatMapSpliteratorOfObject",1151),M(253,1,Lct),l.Fd=function(e){return this.Ed(u(e,253))},l.Ed=function(e){var n;return e==($nt(),ght)?1:e==(jnt(),dht)?-1:(n=(mz(),GI(this.a,e.a)),n!=0?n:At(this,526)==At(e,526)?0:At(this,526)?1:-1)},l.Id=function(){return this.a},l.Fb=function(e){return rxt(this,e)},D(on,"Cut",253),M(1823,253,Lct,PKt),l.Ed=function(e){return e==this?0:1},l.Gd=function(e){throw nt(new _2t)},l.Hd=function(e){e.a+="+∞)"},l.Id=function(){throw nt(new Fo(Vpe))},l.Hb=function(){return fg(),q5t(this)},l.Jd=function(e){return!1},l.Ib=function(){return"+∞"};var dht;D(on,"Cut/AboveAll",1823),M(526,253,{253:1,526:1,3:1,34:1},oJt),l.Gd=function(e){Zc((e.a+="(",e),this.a)},l.Hd=function(e){Cb(Zc(e,this.a),93)},l.Hb=function(){return~Hi(this.a)},l.Jd=function(e){return mz(),GI(this.a,e)<0},l.Ib=function(){return"/"+this.a+"\\"},D(on,"Cut/AboveValue",526),M(1822,253,Lct,OKt),l.Ed=function(e){return e==this?0:-1},l.Gd=function(e){e.a+="(-∞"},l.Hd=function(e){throw nt(new _2t)},l.Id=function(){throw nt(new Fo(Vpe))},l.Hb=function(){return fg(),q5t(this)},l.Jd=function(e){return!0},l.Ib=function(){return"-∞"};var ght;D(on,"Cut/BelowAll",1822),M(1824,253,Lct,cJt),l.Gd=function(e){Zc((e.a+="[",e),this.a)},l.Hd=function(e){Cb(Zc(e,this.a),41)},l.Hb=function(){return Hi(this.a)},l.Jd=function(e){return mz(),GI(this.a,e)<=0},l.Ib=function(){return"\\"+this.a+"/"},D(on,"Cut/BelowValue",1824),M(547,1,O0),l.Jc=function(e){Oa(this,e)},l.Ib=function(){return Ibn(u(Gz(this,"use Optional.orNull() instead of Optional.or(null)"),20).Kc())},D(on,"FluentIterable",547),M(442,547,O0,u_),l.Kc=function(){return new nr(ir(this.a.Kc(),new q))},D(on,"FluentIterable/2",442),M(1059,547,O0,bQt),l.Kc=function(){return C0(this)},D(on,"FluentIterable/3",1059),M(724,399,q7,Amt),l.Xb=function(e){return this.a[e].Kc()},D(on,"FluentIterable/3/1",724),M(2070,1,{}),l.Ib=function(){return ec(this.Kd().b)},D(on,"ForwardingObject",2070),M(2071,2070,Upe),l.Kd=function(){return this.Ld()},l.Jc=function(e){Oa(this,e)},l.Lc=function(){return this.Oc()},l.Nc=function(){return new gn(this,0)},l.Oc=function(){return new ln(null,this.Nc())},l.Fc=function(e){return this.Ld(),yWt()},l.Gc=function(e){return this.Ld(),xWt()},l.$b=function(){this.Ld(),kWt()},l.Hc=function(e){return this.Ld().Hc(e)},l.Ic=function(e){return this.Ld().Ic(e)},l.dc=function(){return this.Ld().b.dc()},l.Kc=function(){return this.Ld().Kc()},l.Mc=function(e){return this.Ld(),EWt()},l.gc=function(){return this.Ld().b.gc()},l.Pc=function(){return this.Ld().Pc()},l.Qc=function(e){return this.Ld().Qc(e)},D(on,"ForwardingCollection",2071),M(2078,31,t8t),l.Kc=function(){return this.Od()},l.Fc=function(e){throw nt(new Vr)},l.Gc=function(e){throw nt(new Vr)},l.Md=function(){var e;return e=this.c,e||(this.c=this.Nd())},l.$b=function(){throw nt(new Vr)},l.Hc=function(e){return e!=null&&Ky(this,e,!1)},l.Nd=function(){switch(this.gc()){case 0:return Lm(),Lm(),pht;case 1:return Lm(),new yit(Hr(this.Od().Pb()));default:return new oyt(this,this.Pc())}},l.Mc=function(e){throw nt(new Vr)},D(on,"ImmutableCollection",2078),M(727,2078,t8t,T2t),l.Kc=function(){return nk(this.a.Kc())},l.Hc=function(e){return e!=null&&this.a.Hc(e)},l.Ic=function(e){return this.a.Ic(e)},l.dc=function(){return this.a.dc()},l.Od=function(){return nk(this.a.Kc())},l.gc=function(){return this.a.gc()},l.Pc=function(){return this.a.Pc()},l.Qc=function(e){return this.a.Qc(e)},l.Ib=function(){return ec(this.a)},D(on,"ForwardingImmutableCollection",727),M(306,2078,H7),l.Kc=function(){return this.Od()},l.ed=function(){return this.Pd(0)},l.fd=function(e){return this.Pd(e)},l.jd=function(e){Q2(this,e)},l.Nc=function(){return new gn(this,16)},l.kd=function(e,n){return this.Qd(e,n)},l.bd=function(e,n){throw nt(new Vr)},l.cd=function(e,n){throw nt(new Vr)},l.Md=function(){return this},l.Fb=function(e){return K5n(this,e)},l.Hb=function(){return zgn(this)},l.dd=function(e){return e==null?-1:lmn(this,e)},l.Od=function(){return this.Pd(0)},l.Pd=function(e){return Jrt(this,e)},l.gd=function(e){throw nt(new Vr)},l.hd=function(e,n){throw nt(new Vr)},l.Qd=function(e,n){var r;return iH((r=new aYt(this),new vp(r,e,n)))};var pht;D(on,"ImmutableList",306),M(2105,306,H7),l.Kc=function(){return nk(this.Rd().Kc())},l.kd=function(e,n){return iH(this.Rd().kd(e,n))},l.Hc=function(e){return e!=null&&this.Rd().Hc(e)},l.Ic=function(e){return this.Rd().Ic(e)},l.Fb=function(e){return Ci(this.Rd(),e)},l.Xb=function(e){return yb(this,e)},l.Hb=function(){return Hi(this.Rd())},l.dd=function(e){return this.Rd().dd(e)},l.dc=function(){return this.Rd().dc()},l.Od=function(){return nk(this.Rd().Kc())},l.gc=function(){return this.Rd().gc()},l.Qd=function(e,n){return iH(this.Rd().kd(e,n))},l.Pc=function(){return this.Rd().Qc(Vt(sa,Ln,1,this.Rd().gc(),5,1))},l.Qc=function(e){return this.Rd().Qc(e)},l.Ib=function(){return ec(this.Rd())},D(on,"ForwardingImmutableList",2105),M(729,1,V7),l.vc=function(){return z2(this)},l.wc=function(e){U_(this,e)},l.ec=function(){return Sit(this)},l.yc=function(e,n,r){return Fat(this,e,n,r)},l.Cc=function(){return this.Vd()},l.$b=function(){throw nt(new Vr)},l._b=function(e){return this.xc(e)!=null},l.uc=function(e){return this.Vd().Hc(e)},l.Td=function(){return new qGt(this)},l.Ud=function(){return new HGt(this)},l.Fb=function(e){return Opn(this,e)},l.Hb=function(){return z2(this).Hb()},l.dc=function(){return this.gc()==0},l.zc=function(e,n){return gnn()},l.Bc=function(e){throw nt(new Vr)},l.Ib=function(){return y3n(this)},l.Vd=function(){return this.e?this.e:this.e=this.Ud()},l.c=null,l.d=null,l.e=null;var bve;D(on,"ImmutableMap",729),M(730,729,V7),l._b=function(e){return mWt(this,e)},l.uc=function(e){return fYt(this.b,e)},l.Sd=function(){return fue(new bnt(this))},l.Td=function(){return fue(Aee(this.b))},l.Ud=function(){return $d(),new T2t(See(this.b))},l.Fb=function(e){return dYt(this.b,e)},l.xc=function(e){return w_(this,e)},l.Hb=function(){return Hi(this.b.c)},l.dc=function(){return this.b.c.dc()},l.gc=function(){return this.b.c.gc()},l.Ib=function(){return ec(this.b.c)},D(on,"ForwardingImmutableMap",730),M(2072,2071,Mct),l.Kd=function(){return this.Wd()},l.Ld=function(){return this.Wd()},l.Nc=function(){return new gn(this,1)},l.Fb=function(e){return e===this||this.Wd().Fb(e)},l.Hb=function(){return this.Wd().Hb()},D(on,"ForwardingSet",2072),M(1085,2072,Mct,bnt),l.Kd=function(){return PE(this.a.b)},l.Ld=function(){return PE(this.a.b)},l.Hc=function(e){if(At(e,44)&&u(e,44).ld()==null)return!1;try{return hYt(PE(this.a.b),e)}catch(n){if(n=is(n),At(n,212))return!1;throw nt(n)}},l.Wd=function(){return PE(this.a.b)},l.Qc=function(e){var n;return n=fne(PE(this.a.b),e),PE(this.a.b).b.gc()=0?"+":"")+(r/60|0),n=Q$(b.Math.abs(r)%60),(efe(),Nve)[this.q.getDay()]+" "+Fve[this.q.getMonth()]+" "+Q$(this.q.getDate())+" "+Q$(this.q.getHours())+":"+Q$(this.q.getMinutes())+":"+Q$(this.q.getSeconds())+" GMT"+e+n+" "+this.q.getFullYear()};var AU=D(mr,"Date",206);M(2015,206,tbe,The),l.a=!1,l.b=0,l.c=0,l.d=0,l.e=0,l.f=0,l.g=!1,l.i=0,l.j=0,l.k=0,l.n=0,l.o=0,l.p=0,D("com.google.gwt.i18n.shared.impl","DateRecord",2015),M(2064,1,{}),l.pe=function(){return null},l.qe=function(){return null},l.re=function(){return null},l.se=function(){return null},l.te=function(){return null},D(kk,"JSONValue",2064),M(221,2064,{221:1},lg,Hj),l.Fb=function(e){return At(e,221)?Wyt(this.a,u(e,221).a):!1},l.oe=function(){return jen},l.Hb=function(){return Byt(this.a)},l.pe=function(){return this},l.Ib=function(){var e,n,r;for(r=new Jl("["),n=0,e=this.a.length;n0&&(r.a+=","),Zc(r,$y(this,n));return r.a+="]",r.a},D(kk,"JSONArray",221),M(492,2064,{492:1},Vj),l.oe=function(){return $en},l.qe=function(){return this},l.Ib=function(){return Nn(),""+this.a},l.a=!1;var Eve,Tve;D(kk,"JSONBoolean",492),M(997,63,Ig,qKt),D(kk,"JSONException",997),M(1036,2064,{},Y),l.oe=function(){return zen},l.Ib=function(){return Hu};var Cve;D(kk,"JSONNull",1036),M(263,2064,{263:1},_C),l.Fb=function(e){return At(e,263)?this.a==u(e,263).a:!1},l.oe=function(){return Ben},l.Hb=function(){return O6(this.a)},l.re=function(){return this},l.Ib=function(){return this.a+""},l.a=0,D(kk,"JSONNumber",263),M(190,2064,{190:1},T6,g6),l.Fb=function(e){return At(e,190)?Wyt(this.a,u(e,190).a):!1},l.oe=function(){return Ren},l.Hb=function(){return Byt(this.a)},l.se=function(){return this},l.Ib=function(){var e,n,r,s,o,h,d;for(d=new Jl("{"),e=!0,h=tat(this,Vt(Ne,le,2,0,6,1)),r=h,s=0,o=r.length;s=0?":"+this.c:"")+")"},l.c=0;var s9t=D(kc,"StackTraceElement",319);pve={3:1,483:1,34:1,2:1};var Ne=D(kc,e8t,2);M(111,427,{483:1},hp,jC,Jh),D(kc,"StringBuffer",111),M(104,427,{483:1},pb,L4,Jl),D(kc,"StringBuilder",104),M(702,77,Zct,twt),D(kc,"StringIndexOutOfBoundsException",702),M(2145,1,{});var Lve;M(48,63,{3:1,103:1,63:1,82:1,48:1},Vr,up),D(kc,"UnsupportedOperationException",48),M(247,242,{3:1,34:1,242:1,247:1},cO,hwt),l.Fd=function(e){return Y0e(this,u(e,247))},l.ue=function(){return Jy(Ege(this))},l.Fb=function(e){var n;return this===e?!0:At(e,247)?(n=u(e,247),this.e==n.e&&Y0e(this,n)==0):!1},l.Hb=function(){var e;return this.b!=0?this.b:this.a<54?(e=Oc(this.f),this.b=qr(ia(e,-1)),this.b=33*this.b+qr(ia(_m(e,32),-1)),this.b=17*this.b+Xs(this.e),this.b):(this.b=17*oue(this.c)+Xs(this.e),this.b)},l.Ib=function(){return Ege(this)},l.a=0,l.b=0,l.d=0,l.e=0,l.f=0;var Mve,xw,a9t,o9t,c9t,u9t,l9t,h9t,Eht=D("java.math","BigDecimal",247);M(92,242,{3:1,34:1,242:1,92:1},vg,Zne,H2,cle,xb),l.Fd=function(e){return ile(this,u(e,92))},l.ue=function(){return Jy(Cct(this,0))},l.Fb=function(e){return C5t(this,e)},l.Hb=function(){return oue(this)},l.Ib=function(){return Cct(this,0)},l.b=-2,l.c=0,l.d=0,l.e=0;var Dve,LU,Ive,Tht,MU,lA,D5=D("java.math","BigInteger",92),Ove,Pve,Pk,hA;M(497,2065,iv),l.$b=function(){dl(this)},l._b=function(e){return Eu(this,e)},l.uc=function(e){return qce(this,e,this.i)||qce(this,e,this.f)},l.vc=function(){return new ps(this)},l.xc=function(e){return tr(this,e)},l.zc=function(e,n){return di(this,e,n)},l.Bc=function(e){return tk(this,e)},l.gc=function(){return zC(this)},l.g=0,D(mr,"AbstractHashMap",497),M(267,od,il,ps),l.$b=function(){this.a.$b()},l.Hc=function(e){return Lre(this,e)},l.Kc=function(){return new Z2(this.a)},l.Mc=function(e){var n;return Lre(this,e)?(n=u(e,44).ld(),this.a.Bc(n),!0):!1},l.gc=function(){return this.a.gc()},D(mr,"AbstractHashMap/EntrySet",267),M(268,1,ba,Z2),l.Nb=function(e){Da(this,e)},l.Pb=function(){return Vm(this)},l.Ob=function(){return this.b},l.Qb=function(){iae(this)},l.b=!1,l.d=0,D(mr,"AbstractHashMap/EntrySetIterator",268),M(426,1,ba,$r),l.Nb=function(e){Da(this,e)},l.Ob=function(){return irt(this)},l.Pb=function(){return Iyt(this)},l.Qb=function(){Ul(this)},l.b=0,l.c=-1,D(mr,"AbstractList/IteratorImpl",426),M(98,426,I0,_a),l.Qb=function(){Ul(this)},l.Rb=function(e){Ly(this,e)},l.Sb=function(){return this.b>0},l.Tb=function(){return this.b},l.Ub=function(){return cr(this.b>0),this.a.Xb(this.c=--this.b)},l.Vb=function(){return this.b-1},l.Wb=function(e){Sy(this.c!=-1),this.a.hd(this.c,e)},D(mr,"AbstractList/ListIteratorImpl",98),M(244,56,U7,vp),l.bd=function(e,n){Fy(e,this.b),this.c.bd(this.a+e,n),++this.b},l.Xb=function(e){return mn(e,this.b),this.c.Xb(this.a+e)},l.gd=function(e){var n;return mn(e,this.b),n=this.c.gd(this.a+e),--this.b,n},l.hd=function(e,n){return mn(e,this.b),this.c.hd(this.a+e,n)},l.gc=function(){return this.b},l.a=0,l.b=0,D(mr,"AbstractList/SubList",244),M(266,od,il,ui),l.$b=function(){this.a.$b()},l.Hc=function(e){return this.a._b(e)},l.Kc=function(){var e;return e=this.a.vc().Kc(),new Xi(e)},l.Mc=function(e){return this.a._b(e)?(this.a.Bc(e),!0):!1},l.gc=function(){return this.a.gc()},D(mr,"AbstractMap/1",266),M(541,1,ba,Xi),l.Nb=function(e){Da(this,e)},l.Ob=function(){return this.a.Ob()},l.Pb=function(){var e;return e=u(this.a.Pb(),44),e.ld()},l.Qb=function(){this.a.Qb()},D(mr,"AbstractMap/1/1",541),M(231,31,o3,li),l.$b=function(){this.a.$b()},l.Hc=function(e){return this.a.uc(e)},l.Kc=function(){var e;return e=this.a.vc().Kc(),new qi(e)},l.gc=function(){return this.a.gc()},D(mr,"AbstractMap/2",231),M(300,1,ba,qi),l.Nb=function(e){Da(this,e)},l.Ob=function(){return this.a.Ob()},l.Pb=function(){var e;return e=u(this.a.Pb(),44),e.md()},l.Qb=function(){this.a.Qb()},D(mr,"AbstractMap/2/1",300),M(493,1,{493:1,44:1}),l.Fb=function(e){var n;return At(e,44)?(n=u(e,44),Ic(this.d,n.ld())&&Ic(this.e,n.md())):!1},l.ld=function(){return this.d},l.md=function(){return this.e},l.Hb=function(){return z4(this.d)^z4(this.e)},l.nd=function(e){return Zmt(this,e)},l.Ib=function(){return this.d+"="+this.e},D(mr,"AbstractMap/AbstractEntry",493),M(397,493,{493:1,397:1,44:1},S$),D(mr,"AbstractMap/SimpleEntry",397),M(2082,1,nut),l.Fb=function(e){var n;return At(e,44)?(n=u(e,44),Ic(this.ld(),n.ld())&&Ic(this.md(),n.md())):!1},l.Hb=function(){return z4(this.ld())^z4(this.md())},l.Ib=function(){return this.ld()+"="+this.md()},D(mr,qpe,2082),M(2090,2065,Jkt),l.Xc=function(e){return Qnt(this.Ee(e))},l.tc=function(e){return Nie(this,e)},l._b=function(e){return tvt(this,e)},l.vc=function(){return new Ws(this)},l.Tc=function(){return Yte(this.Ge())},l.Yc=function(e){return Qnt(this.He(e))},l.xc=function(e){var n;return n=e,Uo(this.Fe(n))},l.$c=function(e){return Qnt(this.Ie(e))},l.ec=function(){return new Ao(this)},l.Vc=function(){return Yte(this.Je())},l._c=function(e){return Qnt(this.Ke(e))},D(mr,"AbstractNavigableMap",2090),M(629,od,il,Ws),l.Hc=function(e){return At(e,44)&&Nie(this.b,u(e,44))},l.Kc=function(){return this.b.De()},l.Mc=function(e){var n;return At(e,44)?(n=u(e,44),this.b.Le(n)):!1},l.gc=function(){return this.b.gc()},D(mr,"AbstractNavigableMap/EntrySet",629),M(1146,od,Zkt,Ao),l.Nc=function(){return new C$(this)},l.$b=function(){this.a.$b()},l.Hc=function(e){return tvt(this.a,e)},l.Kc=function(){var e;return e=this.a.vc().b.De(),new Ka(e)},l.Mc=function(e){return tvt(this.a,e)?(this.a.Bc(e),!0):!1},l.gc=function(){return this.a.gc()},D(mr,"AbstractNavigableMap/NavigableKeySet",1146),M(1147,1,ba,Ka),l.Nb=function(e){Da(this,e)},l.Ob=function(){return irt(this.a.a)},l.Pb=function(){var e;return e=mJt(this.a),e.ld()},l.Qb=function(){TZt(this.a)},D(mr,"AbstractNavigableMap/NavigableKeySet/1",1147),M(2103,31,o3),l.Fc=function(e){return z6(S7(this,e),K7),!0},l.Gc=function(e){return Wn(e),hI(e!=this,"Can't add a queue to itself"),Aa(this,e)},l.$b=function(){for(;zst(this)!=null;);},D(mr,"AbstractQueue",2103),M(310,31,{4:1,20:1,31:1,16:1},V4,Tre),l.Fc=function(e){return i3t(this,e),!0},l.$b=function(){l3t(this)},l.Hc=function(e){return lce(new M_(this),e)},l.dc=function(){return RC(this)},l.Kc=function(){return new M_(this)},l.Mc=function(e){return khn(new M_(this),e)},l.gc=function(){return this.c-this.b&this.a.length-1},l.Nc=function(){return new gn(this,272)},l.Qc=function(e){var n;return n=this.c-this.b&this.a.length-1,e.lengthn&&hs(e,n,null),e},l.b=0,l.c=0,D(mr,"ArrayDeque",310),M(458,1,ba,M_),l.Nb=function(e){Da(this,e)},l.Ob=function(){return this.a!=this.b},l.Pb=function(){return rH(this)},l.Qb=function(){aoe(this)},l.a=0,l.b=0,l.c=-1,D(mr,"ArrayDeque/IteratorImpl",458),M(13,56,rbe,ge,bu,fl),l.bd=function(e,n){Cm(this,e,n)},l.Fc=function(e){return pe(this,e)},l.cd=function(e,n){return Q4t(this,e,n)},l.Gc=function(e){return Hs(this,e)},l.$b=function(){wy(this.c,0)},l.Hc=function(e){return Wo(this,e,0)!=-1},l.Jc=function(e){Tu(this,e)},l.Xb=function(e){return Oe(this,e)},l.dd=function(e){return Wo(this,e,0)},l.dc=function(){return this.c.length==0},l.Kc=function(){return new J(this)},l.gd=function(e){return xp(this,e)},l.Mc=function(e){return $u(this,e)},l.ce=function(e,n){Kne(this,e,n)},l.hd=function(e,n){return Sh(this,e,n)},l.gc=function(){return this.c.length},l.jd=function(e){Ms(this,e)},l.Pc=function(){return vz(this.c)},l.Qc=function(e){return id(this,e)};var h_n=D(mr,"ArrayList",13);M(7,1,ba,J),l.Nb=function(e){Da(this,e)},l.Ob=function(){return cc(this)},l.Pb=function(){return et(this)},l.Qb=function(){C_(this)},l.a=0,l.b=-1,D(mr,"ArrayList/1",7),M(2112,b.Function,{},Dt),l.Me=function(e,n){return ji(e,n)},M(151,56,ibe,hl),l.Hc=function(e){return ooe(this,e)!=-1},l.Jc=function(e){var n,r,s,o;for(Wn(e),r=this.a,s=0,o=r.length;s0)throw nt(new zn(u8t+e+" greater than "+this.e));return this.f.Te()?bne(this.c,this.b,this.a,e,n):Wne(this.c,e,n)},l.zc=function(e,n){if(!pot(this.c,this.f,e,this.b,this.a,this.e,this.d))throw nt(new zn(e+" outside the range "+this.b+" to "+this.e));return Sce(this.c,e,n)},l.Bc=function(e){var n;return n=e,pot(this.c,this.f,n,this.b,this.a,this.e,this.d)?wne(this.c,n):null},l.Le=function(e){return jz(this,e.ld())&&L3t(this.c,e)},l.gc=function(){var e,n,r;if(this.f.Te()?this.a?n=y7(this.c,this.b,!0):n=y7(this.c,this.b,!1):n=j3t(this.c),!(n&&jz(this,n.d)&&n))return 0;for(e=0,r=new eat(this.c,this.f,this.b,this.a,this.e,this.d);irt(r.a);r.b=u(Iyt(r.a),44))++e;return e},l.ad=function(e,n){if(this.f.Te()&&this.c.a.Ne(e,this.b)<0)throw nt(new zn(u8t+e+obe+this.b));return this.f.Ue()?bne(this.c,e,n,this.e,this.d):Yne(this.c,e,n)},l.a=!1,l.d=!1,D(mr,"TreeMap/SubMap",631),M(303,22,aut,_$),l.Te=function(){return!1},l.Ue=function(){return!1};var Sht,Aht,Lht,Mht,IU=Cr(mr,"TreeMap/SubMapType",303,Ir,Yfn,san);M(1143,303,aut,kQt),l.Ue=function(){return!0},Cr(mr,"TreeMap/SubMapType/1",1143,IU,null,null),M(1144,303,aut,DQt),l.Te=function(){return!0},l.Ue=function(){return!0},Cr(mr,"TreeMap/SubMapType/2",1144,IU,null,null),M(1145,303,aut,xQt),l.Te=function(){return!0},Cr(mr,"TreeMap/SubMapType/3",1145,IU,null,null);var qve;M(157,od,{3:1,20:1,31:1,16:1,277:1,21:1,87:1,157:1},L2t,dp,b1),l.Nc=function(){return new C$(this)},l.Fc=function(e){return gI(this,e)},l.$b=function(){this.a.$b()},l.Hc=function(e){return this.a._b(e)},l.Kc=function(){return this.a.ec().Kc()},l.Mc=function(e){return Yrt(this,e)},l.gc=function(){return this.a.gc()};var w_n=D(mr,"TreeSet",157);M(1082,1,{},db),l.Ve=function(e,n){return ksn(this.a,e,n)},D(out,"BinaryOperator/lambda$0$Type",1082),M(1083,1,{},w1),l.Ve=function(e,n){return Esn(this.a,e,n)},D(out,"BinaryOperator/lambda$1$Type",1083),M(952,1,{},Fe),l.Kb=function(e){return e},D(out,"Function/lambda$0$Type",952),M(395,1,Kr,Mf),l.Mb=function(e){return!this.a.Mb(e)},D(out,"Predicate/lambda$2$Type",395),M(581,1,{581:1});var Hve=D(PS,"Handler",581);M(2107,1,WO),l.xe=function(){return"DUMMY"},l.Ib=function(){return this.xe()};var m9t;D(PS,"Level",2107),M(1706,2107,WO,Qt),l.xe=function(){return"INFO"},D(PS,"Level/LevelInfo",1706),M(1843,1,{},XGt);var Dht;D(PS,"LogManager",1843),M(1896,1,WO,EZt),l.b=null,D(PS,"LogRecord",1896),M(525,1,{525:1},yst),l.e=!1;var Vve=!1,Uve=!1,hd=!1,Gve=!1,Kve=!1;D(PS,"Logger",525),M(835,581,{581:1},Ae),D(PS,"SimpleConsoleLogHandler",835),M(108,22,{3:1,34:1,22:1,108:1},ort);var v9t,rc,w3,zo=Cr(Us,"Collector/Characteristics",108,Ir,Fhn,aan),Wve;M(758,1,{},hyt),D(Us,"CollectorImpl",758),M(1074,1,{},Se),l.Ve=function(e,n){return bbn(u(e,213),u(n,213))},D(Us,"Collectors/10methodref$merge$Type",1074),M(1075,1,{},Dn),l.Kb=function(e){return Cre(u(e,213))},D(Us,"Collectors/11methodref$toString$Type",1075),M(1076,1,{},Od),l.Kb=function(e){return Nn(),!!smt(e)},D(Us,"Collectors/12methodref$test$Type",1076),M(144,1,{},oe),l.Yd=function(e,n){u(e,16).Fc(n)},D(Us,"Collectors/20methodref$add$Type",144),M(146,1,{},Pr),l.Xe=function(){return new ge},D(Us,"Collectors/21methodref$ctor$Type",146),M(359,1,{},we),l.Xe=function(){return new Os},D(Us,"Collectors/23methodref$ctor$Type",359),M(360,1,{},Ri),l.Yd=function(e,n){qs(u(e,49),n)},D(Us,"Collectors/24methodref$add$Type",360),M(1069,1,{},yi),l.Ve=function(e,n){return bYt(u(e,15),u(n,16))},D(Us,"Collectors/4methodref$addAll$Type",1069),M(1073,1,{},da),l.Yd=function(e,n){yg(u(e,213),u(n,483))},D(Us,"Collectors/9methodref$add$Type",1073),M(1072,1,{},$Zt),l.Xe=function(){return new tw(this.a,this.b,this.c)},D(Us,"Collectors/lambda$15$Type",1072),M(1077,1,{},Ss),l.Xe=function(){var e;return e=new yp,Dp(e,(Nn(),!1),new ge),Dp(e,!0,new ge),e},D(Us,"Collectors/lambda$22$Type",1077),M(1078,1,{},om),l.Xe=function(){return ot(st(sa,1),Ln,1,5,[this.a])},D(Us,"Collectors/lambda$25$Type",1078),M(1079,1,{},by),l.Yd=function(e,n){qcn(this.a,X2(e))},D(Us,"Collectors/lambda$26$Type",1079),M(1080,1,{},w6),l.Ve=function(e,n){return bun(this.a,X2(e),X2(n))},D(Us,"Collectors/lambda$27$Type",1080),M(1081,1,{},Ra),l.Kb=function(e){return X2(e)[0]},D(Us,"Collectors/lambda$28$Type",1081),M(728,1,{},fr),l.Ve=function(e,n){return Uvt(e,n)},D(Us,"Collectors/lambda$4$Type",728),M(145,1,{},An),l.Ve=function(e,n){return Qnn(u(e,16),u(n,16))},D(Us,"Collectors/lambda$42$Type",145),M(361,1,{},Pn),l.Ve=function(e,n){return Jnn(u(e,49),u(n,49))},D(Us,"Collectors/lambda$50$Type",361),M(362,1,{},Bn),l.Kb=function(e){return u(e,49)},D(Us,"Collectors/lambda$51$Type",362),M(1068,1,{},_4),l.Yd=function(e,n){kpn(this.a,u(e,85),n)},D(Us,"Collectors/lambda$7$Type",1068),M(1070,1,{},Te),l.Ve=function(e,n){return Jgn(u(e,85),u(n,85),new yi)},D(Us,"Collectors/lambda$8$Type",1070),M(1071,1,{},m6),l.Kb=function(e){return Ybn(this.a,u(e,85))},D(Us,"Collectors/lambda$9$Type",1071),M(550,1,{}),l.$e=function(){L_(this)},l.d=!1,D(Us,"TerminatableStream",550),M(827,550,l8t,Vmt),l.$e=function(){L_(this)},D(Us,"DoubleStreamImpl",827),M(1847,736,uh,zZt),l.Re=function(e){return Jwn(this,u(e,189))},l.a=null,D(Us,"DoubleStreamImpl/2",1847),M(1848,1,rP,SC),l.Pe=function(e){Urn(this.a,e)},D(Us,"DoubleStreamImpl/2/lambda$0$Type",1848),M(1845,1,rP,S4),l.Pe=function(e){Vrn(this.a,e)},D(Us,"DoubleStreamImpl/lambda$0$Type",1845),M(1846,1,rP,y0),l.Pe=function(e){zue(this.a,e)},D(Us,"DoubleStreamImpl/lambda$2$Type",1846),M(1397,735,uh,Mie),l.Re=function(e){return Rfn(this,u(e,202))},l.a=0,l.b=0,l.c=0,D(Us,"IntStream/5",1397),M(806,550,l8t,Umt),l.$e=function(){L_(this)},l._e=function(){return _b(this),this.a},D(Us,"IntStreamImpl",806),M(807,550,l8t,bwt),l.$e=function(){L_(this)},l._e=function(){return _b(this),_mt(),zve},D(Us,"IntStreamImpl/Empty",807),M(1687,1,XO,G1),l.Dd=function(e){Qoe(this.a,e)},D(Us,"IntStreamImpl/lambda$4$Type",1687);var m_n=us(Us,"Stream");M(26,550,{533:1,687:1,848:1},ln),l.$e=function(){L_(this)};var Nk;D(Us,"StreamImpl",26),M(1102,499,uh,pZt),l.Bd=function(e){for(;zdn(this);){if(this.a.Bd(e))return!0;L_(this.b),this.b=null,this.a=null}return!1},D(Us,"StreamImpl/1",1102),M(1103,1,rr,x0),l.Cd=function(e){gcn(this.a,u(e,848))},D(Us,"StreamImpl/1/lambda$0$Type",1103),M(1104,1,Kr,AC),l.Mb=function(e){return qs(this.a,e)},D(Us,"StreamImpl/1methodref$add$Type",1104),M(1105,499,uh,Yee),l.Bd=function(e){var n;return this.a||(n=new ge,this.b.a.Nb(new P2(n)),wn(),Ms(n,this.c),this.a=new gn(n,16)),Iae(this.a,e)},l.a=null,D(Us,"StreamImpl/5",1105),M(1106,1,rr,P2),l.Cd=function(e){pe(this.a,e)},D(Us,"StreamImpl/5/2methodref$add$Type",1106),M(737,499,uh,$3t),l.Bd=function(e){for(this.b=!1;!this.b&&this.c.Bd(new OYt(this,e)););return this.b},l.b=!1,D(Us,"StreamImpl/FilterSpliterator",737),M(1096,1,rr,OYt),l.Cd=function(e){lun(this.a,this.b,e)},D(Us,"StreamImpl/FilterSpliterator/lambda$0$Type",1096),M(1091,736,uh,zie),l.Re=function(e){return Vsn(this,u(e,189))},D(Us,"StreamImpl/MapToDoubleSpliterator",1091),M(1095,1,rr,PYt),l.Cd=function(e){grn(this.a,this.b,e)},D(Us,"StreamImpl/MapToDoubleSpliterator/lambda$0$Type",1095),M(1090,735,uh,qie),l.Re=function(e){return Usn(this,u(e,202))},D(Us,"StreamImpl/MapToIntSpliterator",1090),M(1094,1,rr,NYt),l.Cd=function(e){prn(this.a,this.b,e)},D(Us,"StreamImpl/MapToIntSpliterator/lambda$0$Type",1094),M(734,499,uh,C3t),l.Bd=function(e){return fZt(this,e)},D(Us,"StreamImpl/MapToObjSpliterator",734),M(1093,1,rr,FYt),l.Cd=function(e){brn(this.a,this.b,e)},D(Us,"StreamImpl/MapToObjSpliterator/lambda$0$Type",1093),M(1092,499,uh,woe),l.Bd=function(e){for(;srt(this.b,0);){if(!this.a.Bd(new be))return!1;this.b=ef(this.b,1)}return this.a.Bd(e)},l.b=0,D(Us,"StreamImpl/SkipSpliterator",1092),M(1097,1,rr,be),l.Cd=function(e){},D(Us,"StreamImpl/SkipSpliterator/lambda$0$Type",1097),M(626,1,rr,Qe),l.Cd=function(e){Uj(this,e)},D(Us,"StreamImpl/ValueConsumer",626),M(1098,1,rr,rn),l.Cd=function(e){j2()},D(Us,"StreamImpl/lambda$0$Type",1098),M(1099,1,rr,yn),l.Cd=function(e){j2()},D(Us,"StreamImpl/lambda$1$Type",1099),M(1100,1,{},Kj),l.Ve=function(e,n){return Ean(this.a,e,n)},D(Us,"StreamImpl/lambda$4$Type",1100),M(1101,1,rr,BYt),l.Cd=function(e){Lsn(this.b,this.a,e)},D(Us,"StreamImpl/lambda$5$Type",1101),M(1107,1,rr,knt),l.Cd=function(e){$gn(this.a,u(e,380))},D(Us,"TerminatableStream/lambda$0$Type",1107),M(2142,1,{}),M(2014,1,{},ja),D("javaemul.internal","ConsoleLogger",2014);var v_n=0;M(2134,1,{}),M(1830,1,rr,mo),l.Cd=function(e){u(e,317)},D(W7,"BowyerWatsonTriangulation/lambda$0$Type",1830),M(1831,1,rr,Ent),l.Cd=function(e){Aa(this.a,u(e,317).e)},D(W7,"BowyerWatsonTriangulation/lambda$1$Type",1831),M(1832,1,rr,vo),l.Cd=function(e){u(e,177)},D(W7,"BowyerWatsonTriangulation/lambda$2$Type",1832),M(1827,1,Xr,Tnt),l.Ne=function(e,n){return E1n(this.a,u(e,177),u(n,177))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(W7,"NaiveMinST/lambda$0$Type",1827),M(506,1,{},iE),D(W7,"NodeMicroLayout",506),M(177,1,{177:1},M6),l.Fb=function(e){var n;return At(e,177)?(n=u(e,177),Ic(this.a,n.a)&&Ic(this.b,n.b)||Ic(this.a,n.b)&&Ic(this.b,n.a)):!1},l.Hb=function(){return z4(this.a)+z4(this.b)};var y_n=D(W7,"TEdge",177);M(317,1,{317:1},Tkt),l.Fb=function(e){var n;return At(e,317)?(n=u(e,317),Eq(this,n.a)&&Eq(this,n.b)&&Eq(this,n.c)):!1},l.Hb=function(){return z4(this.a)+z4(this.b)+z4(this.c)},D(W7,"TTriangle",317),M(225,1,{225:1},Z$),D(W7,"Tree",225),M(1218,1,{},Pne),D(lbe,"Scanline",1218);var Yve=us(lbe,hbe);M(1758,1,{},Lae),D(F0,"CGraph",1758),M(316,1,{316:1},Bne),l.b=0,l.c=0,l.d=0,l.g=0,l.i=0,l.k=Vs,D(F0,"CGroup",316),M(830,1,{},I2t),D(F0,"CGroup/CGroupBuilder",830),M(60,1,{60:1},YJt),l.Ib=function(){var e;return this.j?Gr(this.j.Kb(this)):(gg(OU),OU.o+"@"+(e=km(this)>>>0,e.toString(16)))},l.f=0,l.i=Vs;var OU=D(F0,"CNode",60);M(829,1,{},O2t),D(F0,"CNode/CNodeBuilder",829);var Xve;M(1590,1,{},ma),l.ff=function(e,n){return 0},l.gf=function(e,n){return 0},D(F0,dbe,1590),M(1853,1,{},$a),l.cf=function(e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt;for(T=ns,s=new J(e.a.b);s.as.d.c||s.d.c==h.d.c&&s.d.b0?e+this.n.d+this.n.a:0},l.kf=function(){var e,n,r,s,o;if(o=0,this.e)this.b?o=this.b.a:this.a[1][1]&&(o=this.a[1][1].kf());else if(this.g)o=E5t(this,wot(this,null,!0));else for(n=(_1(),ot(st(m3,1),te,237,0,[Tc,yu,Cc])),r=0,s=n.length;r0?o+this.n.b+this.n.c:0},l.lf=function(){var e,n,r,s,o;if(this.g)for(e=wot(this,null,!1),r=(_1(),ot(st(m3,1),te,237,0,[Tc,yu,Cc])),s=0,o=r.length;s0&&(s[0]+=this.d,r-=s[0]),s[2]>0&&(s[2]+=this.d,r-=s[2]),this.c.a=b.Math.max(0,r),this.c.d=n.d+e.d+(this.c.a-r)/2,s[1]=b.Math.max(s[1],r),x3t(this,yu,n.d+e.d+s[0]-(s[1]-r)/2,s)},l.b=null,l.d=0,l.e=!1,l.f=!1,l.g=!1;var Fht=0,PU=0;D(hw,"GridContainerCell",1538),M(470,22,{3:1,34:1,22:1,470:1},urt);var Xb,i0,Gf,aye=Cr(hw,"HorizontalLabelAlignment",470,Ir,Rhn,han),oye;M(314,217,{217:1,314:1},yne,Dae,dne),l.jf=function(){return tte(this)},l.kf=function(){return jvt(this)},l.a=0,l.c=!1;var x_n=D(hw,"LabelCell",314);M(252,336,{217:1,336:1,252:1},sS),l.jf=function(){return LO(this)},l.kf=function(){return MO(this)},l.lf=function(){sct(this)},l.mf=function(){act(this)},l.b=0,l.c=0,l.d=!1,D(hw,"StripContainerCell",252),M(1691,1,Kr,Ac),l.Mb=function(e){return hnn(u(e,217))},D(hw,"StripContainerCell/lambda$0$Type",1691),M(1692,1,{},pc),l.Ye=function(e){return u(e,217).kf()},D(hw,"StripContainerCell/lambda$1$Type",1692),M(1693,1,Kr,ka),l.Mb=function(e){return fnn(u(e,217))},D(hw,"StripContainerCell/lambda$2$Type",1693),M(1694,1,{},du),l.Ye=function(e){return u(e,217).jf()},D(hw,"StripContainerCell/lambda$3$Type",1694),M(471,22,{3:1,34:1,22:1,471:1},lrt);var Kf,Qb,D1,cye=Cr(hw,"VerticalLabelAlignment",471,Ir,Bhn,fan),uye;M(800,1,{},$kt),l.c=0,l.d=0,l.k=0,l.s=0,l.t=0,l.v=!1,l.w=0,l.D=!1,D(xV,"NodeContext",800),M(1536,1,Xr,ea),l.Ne=function(e,n){return fQt(u(e,64),u(n,64))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(xV,"NodeContext/0methodref$comparePortSides$Type",1536),M(1537,1,Xr,co),l.Ne=function(e,n){return zyn(u(e,117),u(n,117))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(xV,"NodeContext/1methodref$comparePortContexts$Type",1537),M(164,22,{3:1,34:1,22:1,164:1},Mh);var lye,hye,fye,dye,gye,pye,bye,wye,mye,vye,yye,xye,kye,Eye,Tye,Cye,_ye,Sye,Aye,Lye,Mye,Bht,Dye=Cr(xV,"NodeLabelLocation",164,Ir,Wat,dan),Iye;M(117,1,{117:1},y1e),l.a=!1,D(xV,"PortContext",117),M(1541,1,rr,bc),l.Cd=function(e){DWt(u(e,314))},D(sP,_be,1541),M(1542,1,Kr,oa),l.Mb=function(e){return!!u(e,117).c},D(sP,Sbe,1542),M(1543,1,rr,va),l.Cd=function(e){DWt(u(e,117).c)},D(sP,"LabelPlacer/lambda$2$Type",1543);var z9t;M(1540,1,rr,na),l.Cd=function(e){Ay(),Ven(u(e,117))},D(sP,"NodeLabelAndSizeUtilities/lambda$0$Type",1540),M(801,1,rr,mvt),l.Cd=function(e){irn(this.b,this.c,this.a,u(e,187))},l.a=!1,l.c=!1,D(sP,"NodeLabelCellCreator/lambda$0$Type",801),M(1539,1,rr,sE),l.Cd=function(e){Ken(this.a,u(e,187))},D(sP,"PortContextCreator/lambda$0$Type",1539);var NU;M(1902,1,{},Xl),D(X7,"GreedyRectangleStripOverlapRemover",1902),M(1903,1,Xr,Hc),l.Ne=function(e,n){return Fin(u(e,226),u(n,226))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(X7,"GreedyRectangleStripOverlapRemover/0methodref$compareByYCoordinate$Type",1903),M(1849,1,{},tKt),l.a=5,l.e=0,D(X7,"RectangleStripOverlapRemover",1849),M(1850,1,Xr,Zw),l.Ne=function(e,n){return Bin(u(e,226),u(n,226))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(X7,"RectangleStripOverlapRemover/0methodref$compareLeftRectangleBorders$Type",1850),M(1852,1,Xr,mh),l.Ne=function(e,n){return _un(u(e,226),u(n,226))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(X7,"RectangleStripOverlapRemover/1methodref$compareRightRectangleBorders$Type",1852),M(417,22,{3:1,34:1,22:1,417:1},A$);var DP,Rht,jht,IP,Oye=Cr(X7,"RectangleStripOverlapRemover/OverlapRemovalDirection",417,Ir,Jfn,gan),Pye;M(226,1,{226:1},Cit),D(X7,"RectangleStripOverlapRemover/RectangleNode",226),M(1851,1,rr,vD),l.Cd=function(e){dmn(this.a,u(e,226))},D(X7,"RectangleStripOverlapRemover/lambda$1$Type",1851),M(1323,1,Xr,_d),l.Ne=function(e,n){return O7n(u(e,176),u(n,176))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Qd,"PolyominoCompactor/CornerCasesGreaterThanRestComparator",1323),M(1326,1,{},b0),l.Kb=function(e){return u(e,334).a},D(Qd,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$0$Type",1326),M(1327,1,Kr,Sd),l.Mb=function(e){return u(e,332).a},D(Qd,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$1$Type",1327),M(1328,1,Kr,w0),l.Mb=function(e){return u(e,332).a},D(Qd,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$2$Type",1328),M(1321,1,Xr,ag),l.Ne=function(e,n){return u8n(u(e,176),u(n,176))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Qd,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator",1321),M(1324,1,{},Yi),l.Kb=function(e){return u(e,334).a},D(Qd,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator/lambda$0$Type",1324),M(781,1,Xr,cn),l.Ne=function(e,n){return Ugn(u(e,176),u(n,176))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Qd,"PolyominoCompactor/MinNumOfExtensionsComparator",781),M(1319,1,Xr,Dr),l.Ne=function(e,n){return Z0n(u(e,330),u(n,330))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Qd,"PolyominoCompactor/MinPerimeterComparator",1319),M(1320,1,Xr,Si),l.Ne=function(e,n){return Bwn(u(e,330),u(n,330))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Qd,"PolyominoCompactor/MinPerimeterComparatorWithShape",1320),M(1322,1,Xr,wc),l.Ne=function(e,n){return M8n(u(e,176),u(n,176))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Qd,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator",1322),M(1325,1,{},Fc),l.Kb=function(e){return u(e,334).a},D(Qd,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator/lambda$0$Type",1325),M(782,1,{},Lwt),l.Ve=function(e,n){return Vfn(this,u(e,42),u(n,176))},D(Qd,"SuccessorCombination",782),M(649,1,{},vh),l.Ve=function(e,n){var r;return a5n((r=u(e,42),u(n,176),r))},D(Qd,"SuccessorJitter",649),M(648,1,{},Qc),l.Ve=function(e,n){var r;return G6n((r=u(e,42),u(n,176),r))},D(Qd,"SuccessorLineByLine",648),M(573,1,{},Wh),l.Ve=function(e,n){var r;return axn((r=u(e,42),u(n,176),r))},D(Qd,"SuccessorManhattan",573),M(1344,1,{},Ad),l.Ve=function(e,n){var r;return b6n((r=u(e,42),u(n,176),r))},D(Qd,"SuccessorMaxNormWindingInMathPosSense",1344),M(409,1,{},N2),l.Ve=function(e,n){return uyt(this,e,n)},l.c=!1,l.d=!1,l.e=!1,l.f=!1,D(Qd,"SuccessorQuadrantsGeneric",409),M(1345,1,{},ls),l.Kb=function(e){return u(e,334).a},D(Qd,"SuccessorQuadrantsGeneric/lambda$0$Type",1345),M(332,22,{3:1,34:1,22:1,332:1},L$),l.a=!1;var OP,PP,NP,FP,Nye=Cr(EV,x8t,332,Ir,Xfn,pan),Fye;M(1317,1,{}),l.Ib=function(){var e,n,r,s,o,h;for(r=" ",e=fe(0),o=0;o=0?"b"+e+"["+vst(this.a)+"]":"b["+vst(this.a)+"]"):"b_"+km(this)},D(oP,"FBendpoint",250),M(289,137,{3:1,289:1,96:1,137:1},XJt),l.Ib=function(){return vst(this)},D(oP,"FEdge",289),M(235,137,{3:1,235:1,96:1,137:1},dq);var E_n=D(oP,"FGraph",235);M(453,309,{3:1,453:1,309:1,96:1,137:1},Jre),l.Ib=function(){return this.b==null||this.b.length==0?"l["+vst(this.a)+"]":"l_"+this.b},D(oP,"FLabel",453),M(153,309,{3:1,153:1,309:1,96:1,137:1},MQt),l.Ib=function(){return Xyt(this)},l.a=0,D(oP,"FNode",153),M(2100,1,{}),l.vf=function(e){vkt(this,e)},l.wf=function(){Zle(this)},l.d=0,D(M8t,"AbstractForceModel",2100),M(641,2100,{641:1},Xoe),l.uf=function(e,n){var r,s,o,h,d;return Sge(this.f,e,n),o=ra(Ma(n.d),e.d),d=b.Math.sqrt(o.a*o.a+o.b*o.b),s=b.Math.max(0,d-A_(e.e)/2-A_(n.e)/2),r=u1e(this.e,e,n),r>0?h=-Eun(s,this.c)*r:h=Jin(s,this.b)*u(K(e,(Vf(),Fk)),17).a,Rd(o,h/d),o},l.vf=function(e){vkt(this,e),this.a=u(K(e,(Vf(),zU)),17).a,this.c=Rt(Ht(K(e,qU))),this.b=Rt(Ht(K(e,Ght)))},l.xf=function(e){return e0&&(h-=onn(s,this.a)*r),Rd(o,h*this.b/d),o},l.vf=function(e){var n,r,s,o,h,d,m;for(vkt(this,e),this.b=Rt(Ht(K(e,(Vf(),Kht)))),this.c=this.b/u(K(e,zU),17).a,s=e.e.c.length,h=0,o=0,m=new J(e.e);m.a0},l.a=0,l.b=0,l.c=0,D(M8t,"FruchtermanReingoldModel",642),M(860,1,af,kj),l.hf=function(e){Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,_V),""),"Force Model"),"Determines the model for force calculation."),X9t),(Pp(),rs)),Q9t),Ze((A1(),_n))))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,D8t),""),"Iterations"),"The number of iterations on the force model."),fe(300)),ic),Na),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,I8t),""),"Repulsive Power"),"Determines how many bend points are added to the edge; such bend points are regarded as repelling particles in the force model"),fe(0)),ic),Na),Ze(c0)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Cut),""),"FR Temperature"),"The temperature is used as a scaling factor for particle displacements."),Jd),Ga),zs),Ze(_n)))),Bs(e,Cut,_V,n3e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,_ut),""),"Eades Repulsion"),"Factor for repulsive forces in Eades' model."),5),Ga),zs),Ze(_n)))),Bs(e,_ut,_V,Zye),ppe((new l6,e))};var Xye,Qye,X9t,Jye,Zye,t3e,e3e,n3e;D(BS,"ForceMetaDataProvider",860),M(432,22,{3:1,34:1,22:1,432:1},Dwt);var Uht,$U,Q9t=Cr(BS,"ForceModelStrategy",432,Ir,Vln,man),r3e;M(Fp,1,af,l6),l.hf=function(e){ppe(e)};var i3e,s3e,J9t,zU,Z9t,a3e,o3e,c3e,u3e,tCt,l3e,eCt,nCt,h3e,Fk,f3e,Ght,rCt,d3e,g3e,qU,Kht,p3e,b3e,w3e,iCt,m3e;D(BS,"ForceOptions",Fp),M(1001,1,{},Md),l.sf=function(){var e;return e=new D2t,e},l.tf=function(e){},D(BS,"ForceOptions/ForceFactory",1001);var jP,gA,Bk,HU;M(861,1,af,rm),l.hf=function(e){Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,P8t),""),"Fixed Position"),"Prevent that the node is moved by the layout algorithm."),(Nn(),!1)),(Pp(),aa)),Es),Ze((A1(),Js))))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,N8t),""),"Desired Edge Length"),"Either specified for parent nodes or for individual edges, where the latter takes higher precedence."),100),Ga),zs),Gi(_n,ot(st(H0,1),te,170,0,[c0]))))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,F8t),""),"Layout Dimension"),"Dimensions that are permitted to be altered during layout."),sCt),rs),fCt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,B8t),""),"Stress Epsilon"),"Termination criterion for the iterative process."),Jd),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,R8t),""),"Iteration Limit"),"Maximum number of performed iterations. Takes higher precedence than 'epsilon'."),fe(ki)),ic),Na),Ze(_n)))),Hge((new J8,e))};var v3e,y3e,sCt,x3e,k3e,E3e;D(BS,"StressMetaDataProvider",861),M(1004,1,af,J8),l.hf=function(e){Hge(e)};var VU,aCt,oCt,cCt,uCt,lCt,T3e,C3e,_3e,S3e,hCt,A3e;D(BS,"StressOptions",1004),M(1005,1,{},q1),l.sf=function(){var e;return e=new QJt,e},l.tf=function(e){},D(BS,"StressOptions/StressFactory",1005),M(1110,205,fw,QJt),l.rf=function(e,n){var r,s,o,h,d;for(n.Ug($be,1),Ie(De(ne(e,(mO(),uCt))))?Ie(De(ne(e,hCt)))||tq((r=new iE((xy(),new my(e))),r)):ade(new D2t,e,n.eh(1)),o=yce(e),s=J0e(this.a,o),d=s.Kc();d.Ob();)h=u(d.Pb(),235),!(h.e.c.length<=1)&&(M7n(this.b,h),exn(this.b),Tu(h.d,new Ld));o=fpe(s),kpe(o),n.Vg()},D(LV,"StressLayoutProvider",1110),M(1111,1,rr,Ld),l.Cd=function(e){Skt(u(e,453))},D(LV,"StressLayoutProvider/lambda$0$Type",1111),M(1002,1,{},YGt),l.c=0,l.e=0,l.g=0,D(LV,"StressMajorization",1002),M(391,22,{3:1,34:1,22:1,391:1},hrt);var Wht,Yht,Xht,fCt=Cr(LV,"StressMajorization/Dimension",391,Ir,$hn,van),L3e;M(1003,1,Xr,xD),l.Ne=function(e,n){return Ksn(this.a,u(e,153),u(n,153))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(LV,"StressMajorization/lambda$0$Type",1003),M(1192,1,{},rre),D(Mk,"ElkLayered",1192),M(1193,1,rr,Yj),l.Cd=function(e){M4n(this.a,u(e,36))},D(Mk,"ElkLayered/lambda$0$Type",1193),M(1194,1,rr,aE),l.Cd=function(e){Wsn(this.a,u(e,36))},D(Mk,"ElkLayered/lambda$1$Type",1194),M(1281,1,{},$Qt);var M3e,D3e,I3e;D(Mk,"GraphConfigurator",1281),M(770,1,rr,cp),l.Cd=function(e){ffe(this.a,u(e,10))},D(Mk,"GraphConfigurator/lambda$0$Type",770),M(771,1,{},d4),l.Kb=function(e){return wxt(),new ln(null,new gn(u(e,30).a,16))},D(Mk,"GraphConfigurator/lambda$1$Type",771),M(772,1,rr,Xj),l.Cd=function(e){ffe(this.a,u(e,10))},D(Mk,"GraphConfigurator/lambda$2$Type",772),M(1109,205,fw,eKt),l.rf=function(e,n){var r;r=l7n(new rKt,e),$t(ne(e,(Me(),A3)))===$t((Cg(),Wp))?qbn(this.a,r,n):Q5n(this.a,r,n),n.$g()||spe(new Ej,r)},D(Mk,"LayeredLayoutProvider",1109),M(367,22,{3:1,34:1,22:1,367:1},FD);var Wf,$0,Yc,ou,Qo,dCt=Cr(Mk,"LayeredPhases",367,Ir,V1n,yan),O3e;M(1717,1,{},goe),l.i=0;var P3e;D(dP,"ComponentsToCGraphTransformer",1717);var N3e;M(1718,1,{},A2),l.yf=function(e,n){return b.Math.min(e.a!=null?Rt(e.a):e.c.i,n.a!=null?Rt(n.a):n.c.i)},l.zf=function(e,n){return b.Math.min(e.a!=null?Rt(e.a):e.c.i,n.a!=null?Rt(n.a):n.c.i)},D(dP,"ComponentsToCGraphTransformer/1",1718),M(86,1,{86:1}),l.i=0,l.k=!0,l.o=Vs;var Qht=D(zS,"CNode",86);M(469,86,{469:1,86:1},Nmt,U5t),l.Ib=function(){return""},D(dP,"ComponentsToCGraphTransformer/CRectNode",469),M(1688,1,{},L8);var Jht,Zht;D(dP,"OneDimensionalComponentsCompaction",1688),M(1689,1,{},tm),l.Kb=function(e){return Dhn(u(e,42))},l.Fb=function(e){return this===e},D(dP,"OneDimensionalComponentsCompaction/lambda$0$Type",1689),M(1690,1,{},Hx),l.Kb=function(e){return Vbn(u(e,42))},l.Fb=function(e){return this===e},D(dP,"OneDimensionalComponentsCompaction/lambda$1$Type",1690),M(1720,1,{},lee),D(zS,"CGraph",1720),M(194,1,{194:1},Uat),l.b=0,l.c=0,l.e=0,l.g=!0,l.i=Vs,D(zS,"CGroup",194),M(1719,1,{},cb),l.yf=function(e,n){return b.Math.max(e.a!=null?Rt(e.a):e.c.i,n.a!=null?Rt(n.a):n.c.i)},l.zf=function(e,n){return b.Math.max(e.a!=null?Rt(e.a):e.c.i,n.a!=null?Rt(n.a):n.c.i)},D(zS,dbe,1719),M(1721,1,{},h1e),l.d=!1;var F3e,tft=D(zS,bbe,1721);M(1722,1,{},Vx),l.Kb=function(e){return mwt(),Nn(),u(u(e,42).a,86).d.e!=0},l.Fb=function(e){return this===e},D(zS,wbe,1722),M(833,1,{},Gvt),l.a=!1,l.b=!1,l.c=!1,l.d=!1,D(zS,mbe,833),M(1898,1,{},_te),D(MV,vbe,1898);var $P=us(gw,hbe);M(1899,1,{382:1},ane),l.bf=function(e){skn(this,u(e,475))},D(MV,ybe,1899),M(Hb,1,Xr,g4),l.Ne=function(e,n){return gln(u(e,86),u(n,86))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(MV,xbe,Hb),M(475,1,{475:1},Owt),l.a=!1,D(MV,kbe,475),M(1901,1,Xr,sy),l.Ne=function(e,n){return pvn(u(e,475),u(n,475))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(MV,Ebe,1901),M(148,1,{148:1},vE,Lvt),l.Fb=function(e){var n;return e==null||T_n!=Gl(e)?!1:(n=u(e,148),Ic(this.c,n.c)&&Ic(this.d,n.d))},l.Hb=function(){return iO(ot(st(sa,1),Ln,1,5,[this.c,this.d]))},l.Ib=function(){return"("+this.c+ro+this.d+(this.a?"cx":"")+this.b+")"},l.a=!0,l.c=0,l.d=0;var T_n=D(gw,"Point",148);M(416,22,{3:1,34:1,22:1,416:1},D$);var pv,v3,O5,y3,B3e=Cr(gw,"Point/Quadrant",416,Ir,Zfn,xan),R3e;M(1708,1,{},ZGt),l.b=null,l.c=null,l.d=null,l.e=null,l.f=null;var j3e,$3e,z3e,q3e,H3e;D(gw,"RectilinearConvexHull",1708),M(583,1,{382:1},kH),l.bf=function(e){Hdn(this,u(e,148))},l.b=0;var gCt;D(gw,"RectilinearConvexHull/MaximalElementsEventHandler",583),M(1710,1,Xr,ip),l.Ne=function(e,n){return pln(Ht(e),Ht(n))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(gw,"RectilinearConvexHull/MaximalElementsEventHandler/lambda$0$Type",1710),M(1709,1,{382:1},Mae),l.bf=function(e){y6n(this,u(e,148))},l.a=0,l.b=null,l.c=null,l.d=null,l.e=null,D(gw,"RectilinearConvexHull/RectangleEventHandler",1709),M(1711,1,Xr,LM),l.Ne=function(e,n){return Efn(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(gw,"RectilinearConvexHull/lambda$0$Type",1711),M(1712,1,Xr,PX),l.Ne=function(e,n){return Tfn(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(gw,"RectilinearConvexHull/lambda$1$Type",1712),M(1713,1,Xr,L2),l.Ne=function(e,n){return kfn(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(gw,"RectilinearConvexHull/lambda$2$Type",1713),M(1714,1,Xr,Vc),l.Ne=function(e,n){return Cfn(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(gw,"RectilinearConvexHull/lambda$3$Type",1714),M(1715,1,Xr,NX),l.Ne=function(e,n){return n3n(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(gw,"RectilinearConvexHull/lambda$4$Type",1715),M(1716,1,{},Nne),D(gw,"Scanline",1716),M(2104,1,{}),D(ud,"AbstractGraphPlacer",2104),M(335,1,{335:1},kJt),l.Ff=function(e){return this.Gf(e)?(dn(this.b,u(K(e,(ae(),Bg)),21),e),!0):!1},l.Gf=function(e){var n,r,s,o;for(n=u(K(e,(ae(),Bg)),21),o=u(Mi($i,n),21),s=o.Kc();s.Ob();)if(r=u(s.Pb(),21),!u(Mi(this.b,r),15).dc())return!1;return!0};var $i;D(ud,"ComponentGroup",335),M(779,2104,{},P2t),l.Hf=function(e){var n,r;for(r=new J(this.a);r.ar&&(A=0,N+=m+s,m=0),k=h.c,P7(h,A+k.a,N+k.b),y1(k),o=b.Math.max(o,A+T.a),m=b.Math.max(m,T.b),A+=T.a+s;n.f.a=o,n.f.b=N+m},l.Jf=function(e,n){var r,s,o,h,d;if($t(K(n,(Me(),S3)))===$t((iw(),x3))){for(s=e.Kc();s.Ob();){for(r=u(s.Pb(),36),d=0,h=new J(r.a);h.ar&&!u(K(h,(ae(),Bg)),21).Hc((ve(),Hn))||k&&u(K(k,(ae(),Bg)),21).Hc((ve(),Jn))||u(K(h,(ae(),Bg)),21).Hc((ve(),Gn)))&&(j=N,U+=m+s,m=0),T=h.c,u(K(h,(ae(),Bg)),21).Hc((ve(),Hn))&&(j=o+s),P7(h,j+T.a,U+T.b),o=b.Math.max(o,j+A.a),u(K(h,Bg),21).Hc(vr)&&(N=b.Math.max(N,j+A.a+s)),y1(T),m=b.Math.max(m,A.b),j+=A.a+s,k=h;n.f.a=o,n.f.b=U+m},l.Jf=function(e,n){},D(ud,"ModelOrderRowGraphPlacer",1313),M(1311,1,Xr,EB),l.Ne=function(e,n){return qgn(u(e,36),u(n,36))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(ud,"SimpleRowGraphPlacer/1",1311);var U3e;M(1280,1,Xd,f1),l.Lb=function(e){var n;return n=u(K(u(e,249).b,(Me(),qo)),75),!!n&&n.b!=0},l.Fb=function(e){return this===e},l.Mb=function(e){var n;return n=u(K(u(e,249).b,(Me(),qo)),75),!!n&&n.b!=0},D(DV,"CompoundGraphPostprocessor/1",1280),M(1279,1,Vi,iKt),l.Kf=function(e,n){Ole(this,u(e,36),n)},D(DV,"CompoundGraphPreprocessor",1279),M(452,1,{452:1},Eue),l.c=!1,D(DV,"CompoundGraphPreprocessor/ExternalPort",452),M(249,1,{249:1},fz),l.Ib=function(){return tit(this.c)+":"+s1e(this.b)},D(DV,"CrossHierarchyEdge",249),M(777,1,Xr,w2t),l.Ne=function(e,n){return Hmn(this,u(e,249),u(n,249))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(DV,"CrossHierarchyEdgeComparator",777),M(304,137,{3:1,304:1,96:1,137:1}),l.p=0,D(su,"LGraphElement",304),M(18,304,{3:1,18:1,304:1,96:1,137:1},Pm),l.Ib=function(){return s1e(this)};var rft=D(su,"LEdge",18);M(36,304,{3:1,20:1,36:1,304:1,96:1,137:1},o4t),l.Jc=function(e){Oa(this,e)},l.Kc=function(){return new J(this.b)},l.Ib=function(){return this.b.c.length==0?"G-unlayered"+Rb(this.a):this.a.c.length==0?"G-layered"+Rb(this.b):"G[layerless"+Rb(this.a)+", layers"+Rb(this.b)+"]"};var G3e=D(su,"LGraph",36),K3e;M(666,1,{}),l.Lf=function(){return this.e.n},l.of=function(e){return K(this.e,e)},l.Mf=function(){return this.e.o},l.Nf=function(){return this.e.p},l.pf=function(e){return Ui(this.e,e)},l.Of=function(e){this.e.n.a=e.a,this.e.n.b=e.b},l.Pf=function(e){this.e.o.a=e.a,this.e.o.b=e.b},l.Qf=function(e){this.e.p=e},D(su,"LGraphAdapters/AbstractLShapeAdapter",666),M(473,1,{853:1},MC),l.Rf=function(){var e,n;if(!this.b)for(this.b=k0(this.a.b.c.length),n=new J(this.a.b);n.a0&&tue((qn(n-1,e.length),e.charCodeAt(n-1)),Gbe);)--n;if(h> ",e),IH(r)),ni(Zc((e.a+="[",e),r.i),"]")),e.a},l.c=!0,l.d=!1;var vCt,yCt,xCt,kCt,ECt,TCt,Y3e=D(su,"LPort",12);M(408,1,O0,oE),l.Jc=function(e){Oa(this,e)},l.Kc=function(){var e;return e=new J(this.a.e),new JHt(e)},D(su,"LPort/1",408),M(1309,1,ba,JHt),l.Nb=function(e){Da(this,e)},l.Pb=function(){return u(et(this.a),18).c},l.Ob=function(){return cc(this.a)},l.Qb=function(){C_(this.a)},D(su,"LPort/1/1",1309),M(369,1,O0,v6),l.Jc=function(e){Oa(this,e)},l.Kc=function(){var e;return e=new J(this.a.g),new m2t(e)},D(su,"LPort/2",369),M(776,1,ba,m2t),l.Nb=function(e){Da(this,e)},l.Pb=function(){return u(et(this.a),18).d},l.Ob=function(){return cc(this.a)},l.Qb=function(){C_(this.a)},D(su,"LPort/2/1",776),M(1302,1,O0,zYt),l.Jc=function(e){Oa(this,e)},l.Kc=function(){return new Z1(this)},D(su,"LPort/CombineIter",1302),M(208,1,ba,Z1),l.Nb=function(e){Da(this,e)},l.Qb=function(){vWt()},l.Ob=function(){return g_(this)},l.Pb=function(){return cc(this.a)?et(this.a):et(this.b)},D(su,"LPort/CombineIter/1",208),M(1303,1,Xd,ub),l.Lb=function(e){return $te(e)},l.Fb=function(e){return this===e},l.Mb=function(e){return nl(),u(e,12).g.c.length!=0},D(su,"LPort/lambda$0$Type",1303),M(1304,1,Xd,oy),l.Lb=function(e){return zte(e)},l.Fb=function(e){return this===e},l.Mb=function(e){return nl(),u(e,12).e.c.length!=0},D(su,"LPort/lambda$1$Type",1304),M(1305,1,Xd,BX),l.Lb=function(e){return nl(),u(e,12).j==(ve(),Hn)},l.Fb=function(e){return this===e},l.Mb=function(e){return nl(),u(e,12).j==(ve(),Hn)},D(su,"LPort/lambda$2$Type",1305),M(1306,1,Xd,M2),l.Lb=function(e){return nl(),u(e,12).j==(ve(),Jn)},l.Fb=function(e){return this===e},l.Mb=function(e){return nl(),u(e,12).j==(ve(),Jn)},D(su,"LPort/lambda$3$Type",1306),M(1307,1,Xd,RX),l.Lb=function(e){return nl(),u(e,12).j==(ve(),vr)},l.Fb=function(e){return this===e},l.Mb=function(e){return nl(),u(e,12).j==(ve(),vr)},D(su,"LPort/lambda$4$Type",1307),M(1308,1,Xd,jX),l.Lb=function(e){return nl(),u(e,12).j==(ve(),Gn)},l.Fb=function(e){return this===e},l.Mb=function(e){return nl(),u(e,12).j==(ve(),Gn)},D(su,"LPort/lambda$5$Type",1308),M(30,304,{3:1,20:1,304:1,30:1,96:1,137:1},tu),l.Jc=function(e){Oa(this,e)},l.Kc=function(){return new J(this.a)},l.Ib=function(){return"L_"+Wo(this.b.b,this,0)+Rb(this.a)},D(su,"Layer",30),M(1330,1,{},rKt),D(Rp,Xbe,1330),M(1334,1,{},Ux),l.Kb=function(e){return Xo(u(e,84))},D(Rp,"ElkGraphImporter/0methodref$connectableShapeToNode$Type",1334),M(1337,1,{},H9),l.Kb=function(e){return Xo(u(e,84))},D(Rp,"ElkGraphImporter/1methodref$connectableShapeToNode$Type",1337),M(1331,1,rr,ZHt),l.Cd=function(e){k1e(this.a,u(e,123))},D(Rp,L8t,1331),M(1332,1,rr,tVt),l.Cd=function(e){k1e(this.a,u(e,123))},D(Rp,Qbe,1332),M(1333,1,{},CB),l.Kb=function(e){return new ln(null,new gn(Ayt(u(e,74)),16))},D(Rp,Jbe,1333),M(1335,1,Kr,eVt),l.Mb=function(e){return Grn(this.a,u(e,27))},D(Rp,Zbe,1335),M(1336,1,{},M8),l.Kb=function(e){return new ln(null,new gn(uln(u(e,74)),16))},D(Rp,"ElkGraphImporter/lambda$5$Type",1336),M(1338,1,Kr,nVt),l.Mb=function(e){return Krn(this.a,u(e,27))},D(Rp,"ElkGraphImporter/lambda$7$Type",1338),M(1339,1,Kr,$X),l.Mb=function(e){return Eln(u(e,74))},D(Rp,"ElkGraphImporter/lambda$8$Type",1339),M(1297,1,{},Ej);var X3e;D(Rp,"ElkGraphLayoutTransferrer",1297),M(1298,1,Kr,rVt),l.Mb=function(e){return Nsn(this.a,u(e,18))},D(Rp,"ElkGraphLayoutTransferrer/lambda$0$Type",1298),M(1299,1,rr,iVt),l.Cd=function(e){PD(),pe(this.a,u(e,18))},D(Rp,"ElkGraphLayoutTransferrer/lambda$1$Type",1299),M(1300,1,Kr,sVt),l.Mb=function(e){return ysn(this.a,u(e,18))},D(Rp,"ElkGraphLayoutTransferrer/lambda$2$Type",1300),M(1301,1,rr,aVt),l.Cd=function(e){PD(),pe(this.a,u(e,18))},D(Rp,"ElkGraphLayoutTransferrer/lambda$3$Type",1301),M(819,1,{},ivt),D(Yn,"BiLinkedHashMultiMap",819),M(1550,1,Vi,D8),l.Kf=function(e,n){cgn(u(e,36),n)},D(Yn,"CommentNodeMarginCalculator",1550),M(1551,1,{},zX),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},D(Yn,"CommentNodeMarginCalculator/lambda$0$Type",1551),M(1552,1,rr,qX),l.Cd=function(e){c7n(u(e,10))},D(Yn,"CommentNodeMarginCalculator/lambda$1$Type",1552),M(1553,1,Vi,HX),l.Kf=function(e,n){fkn(u(e,36),n)},D(Yn,"CommentPostprocessor",1553),M(1554,1,Vi,VX),l.Kf=function(e,n){P9n(u(e,36),n)},D(Yn,"CommentPreprocessor",1554),M(1555,1,Vi,UX),l.Kf=function(e,n){L6n(u(e,36),n)},D(Yn,"ConstraintsPostprocessor",1555),M(1556,1,Vi,GX),l.Kf=function(e,n){Fgn(u(e,36),n)},D(Yn,"EdgeAndLayerConstraintEdgeReverser",1556),M(1557,1,Vi,KX),l.Kf=function(e,n){_2n(u(e,36),n)},D(Yn,"EndLabelPostprocessor",1557),M(1558,1,{},WX),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},D(Yn,"EndLabelPostprocessor/lambda$0$Type",1558),M(1559,1,Kr,YX),l.Mb=function(e){return z1n(u(e,10))},D(Yn,"EndLabelPostprocessor/lambda$1$Type",1559),M(1560,1,rr,XX),l.Cd=function(e){bvn(u(e,10))},D(Yn,"EndLabelPostprocessor/lambda$2$Type",1560),M(1561,1,Vi,QX),l.Kf=function(e,n){i4n(u(e,36),n)},D(Yn,"EndLabelPreprocessor",1561),M(1562,1,{},MM),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},D(Yn,"EndLabelPreprocessor/lambda$0$Type",1562),M(1563,1,rr,AZt),l.Cd=function(e){srn(this.a,this.b,this.c,u(e,10))},l.a=0,l.b=0,l.c=!1,D(Yn,"EndLabelPreprocessor/lambda$1$Type",1563),M(1564,1,Kr,JX),l.Mb=function(e){return $t(K(u(e,72),(Me(),a0)))===$t((nd(),VT))},D(Yn,"EndLabelPreprocessor/lambda$2$Type",1564),M(1565,1,rr,oVt),l.Cd=function(e){Zr(this.a,u(e,72))},D(Yn,"EndLabelPreprocessor/lambda$3$Type",1565),M(1566,1,Kr,ZX),l.Mb=function(e){return $t(K(u(e,72),(Me(),a0)))===$t((nd(),$3))},D(Yn,"EndLabelPreprocessor/lambda$4$Type",1566),M(1567,1,rr,cVt),l.Cd=function(e){Zr(this.a,u(e,72))},D(Yn,"EndLabelPreprocessor/lambda$5$Type",1567),M(1615,1,Vi,yj),l.Kf=function(e,n){Cbn(u(e,36),n)};var Q3e;D(Yn,"EndLabelSorter",1615),M(1616,1,Xr,V9),l.Ne=function(e,n){return iwn(u(e,465),u(n,465))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Yn,"EndLabelSorter/1",1616),M(465,1,{465:1},tne),D(Yn,"EndLabelSorter/LabelGroup",465),M(1617,1,{},_B),l.Kb=function(e){return OD(),new ln(null,new gn(u(e,30).a,16))},D(Yn,"EndLabelSorter/lambda$0$Type",1617),M(1618,1,Kr,Gx),l.Mb=function(e){return OD(),u(e,10).k==(Un(),Ts)},D(Yn,"EndLabelSorter/lambda$1$Type",1618),M(1619,1,rr,tQ),l.Cd=function(e){m3n(u(e,10))},D(Yn,"EndLabelSorter/lambda$2$Type",1619),M(1620,1,Kr,eQ),l.Mb=function(e){return OD(),$t(K(u(e,72),(Me(),a0)))===$t((nd(),$3))},D(Yn,"EndLabelSorter/lambda$3$Type",1620),M(1621,1,Kr,nQ),l.Mb=function(e){return OD(),$t(K(u(e,72),(Me(),a0)))===$t((nd(),VT))},D(Yn,"EndLabelSorter/lambda$4$Type",1621),M(1568,1,Vi,rQ),l.Kf=function(e,n){E7n(this,u(e,36))},l.b=0,l.c=0,D(Yn,"FinalSplineBendpointsCalculator",1568),M(1569,1,{},iQ),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},D(Yn,"FinalSplineBendpointsCalculator/lambda$0$Type",1569),M(1570,1,{},U9),l.Kb=function(e){return new ln(null,new Am(new nr(ir(As(u(e,10)).a.Kc(),new q))))},D(Yn,"FinalSplineBendpointsCalculator/lambda$1$Type",1570),M(1571,1,Kr,DM),l.Mb=function(e){return!ho(u(e,18))},D(Yn,"FinalSplineBendpointsCalculator/lambda$2$Type",1571),M(1572,1,Kr,SB),l.Mb=function(e){return Ui(u(e,18),(ae(),Ew))},D(Yn,"FinalSplineBendpointsCalculator/lambda$3$Type",1572),M(1573,1,rr,uVt),l.Cd=function(e){I8n(this.a,u(e,131))},D(Yn,"FinalSplineBendpointsCalculator/lambda$4$Type",1573),M(1574,1,rr,p4),l.Cd=function(e){_O(u(e,18).a)},D(Yn,"FinalSplineBendpointsCalculator/lambda$5$Type",1574),M(803,1,Vi,v2t),l.Kf=function(e,n){bTn(this,u(e,36),n)},D(Yn,"GraphTransformer",803),M(517,22,{3:1,34:1,22:1,517:1},Iwt);var sft,zP,J3e=Cr(Yn,"GraphTransformer/Mode",517,Ir,Uln,_on),Z3e;M(1575,1,Vi,b4),l.Kf=function(e,n){Rxn(u(e,36),n)},D(Yn,"HierarchicalNodeResizingProcessor",1575),M(1576,1,Vi,sQ),l.Kf=function(e,n){rgn(u(e,36),n)},D(Yn,"HierarchicalPortConstraintProcessor",1576),M(1577,1,Xr,_f),l.Ne=function(e,n){return Cwn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Yn,"HierarchicalPortConstraintProcessor/NodeComparator",1577),M(1578,1,Vi,Kx),l.Kf=function(e,n){_En(u(e,36),n)},D(Yn,"HierarchicalPortDummySizeProcessor",1578),M(1579,1,Vi,aQ),l.Kf=function(e,n){Fkn(this,u(e,36),n)},l.a=0,D(Yn,"HierarchicalPortOrthogonalEdgeRouter",1579),M(1580,1,Xr,I8),l.Ne=function(e,n){return Rin(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Yn,"HierarchicalPortOrthogonalEdgeRouter/1",1580),M(1581,1,Xr,m0),l.Ne=function(e,n){return Vdn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Yn,"HierarchicalPortOrthogonalEdgeRouter/2",1581),M(1582,1,Vi,oQ),l.Kf=function(e,n){Zyn(u(e,36),n)},D(Yn,"HierarchicalPortPositionProcessor",1582),M(1583,1,Vi,Ret),l.Kf=function(e,n){pCn(this,u(e,36))},l.a=0,l.c=0;var UU,GU;D(Yn,"HighDegreeNodeLayeringProcessor",1583),M(580,1,{580:1},cQ),l.b=-1,l.d=-1,D(Yn,"HighDegreeNodeLayeringProcessor/HighDegreeNodeInformation",580),M(1584,1,{},uQ),l.Kb=function(e){return cI(),ca(u(e,10))},l.Fb=function(e){return this===e},D(Yn,"HighDegreeNodeLayeringProcessor/lambda$0$Type",1584),M(1585,1,{},lQ),l.Kb=function(e){return cI(),As(u(e,10))},l.Fb=function(e){return this===e},D(Yn,"HighDegreeNodeLayeringProcessor/lambda$1$Type",1585),M(1591,1,Vi,G9),l.Kf=function(e,n){mEn(this,u(e,36),n)},D(Yn,"HyperedgeDummyMerger",1591),M(804,1,{},vvt),l.a=!1,l.b=!1,l.c=!1,D(Yn,"HyperedgeDummyMerger/MergeState",804),M(1592,1,{},IM),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},D(Yn,"HyperedgeDummyMerger/lambda$0$Type",1592),M(1593,1,{},AB),l.Kb=function(e){return new ln(null,new gn(u(e,10).j,16))},D(Yn,"HyperedgeDummyMerger/lambda$1$Type",1593),M(1594,1,rr,OM),l.Cd=function(e){u(e,12).p=-1},D(Yn,"HyperedgeDummyMerger/lambda$2$Type",1594),M(1595,1,Vi,Wx),l.Kf=function(e,n){bEn(u(e,36),n)},D(Yn,"HypernodesProcessor",1595),M(1596,1,Vi,hQ),l.Kf=function(e,n){CEn(u(e,36),n)},D(Yn,"InLayerConstraintProcessor",1596),M(1597,1,Vi,LB),l.Kf=function(e,n){mgn(u(e,36),n)},D(Yn,"InnermostNodeMarginCalculator",1597),M(1598,1,Vi,MB),l.Kf=function(e,n){M9n(this,u(e,36))},l.a=Vs,l.b=Vs,l.c=ns,l.d=ns;var C_n=D(Yn,"InteractiveExternalPortPositioner",1598);M(1599,1,{},fQ),l.Kb=function(e){return u(e,18).d.i},l.Fb=function(e){return this===e},D(Yn,"InteractiveExternalPortPositioner/lambda$0$Type",1599),M(1600,1,{},lVt),l.Kb=function(e){return jin(this.a,Ht(e))},l.Fb=function(e){return this===e},D(Yn,"InteractiveExternalPortPositioner/lambda$1$Type",1600),M(1601,1,{},dQ),l.Kb=function(e){return u(e,18).c.i},l.Fb=function(e){return this===e},D(Yn,"InteractiveExternalPortPositioner/lambda$2$Type",1601),M(1602,1,{},hVt),l.Kb=function(e){return $in(this.a,Ht(e))},l.Fb=function(e){return this===e},D(Yn,"InteractiveExternalPortPositioner/lambda$3$Type",1602),M(1603,1,{},fVt),l.Kb=function(e){return Bsn(this.a,Ht(e))},l.Fb=function(e){return this===e},D(Yn,"InteractiveExternalPortPositioner/lambda$4$Type",1603),M(1604,1,{},dVt),l.Kb=function(e){return Rsn(this.a,Ht(e))},l.Fb=function(e){return this===e},D(Yn,"InteractiveExternalPortPositioner/lambda$5$Type",1604),M(81,22,{3:1,34:1,22:1,81:1,196:1},Ps),l.dg=function(){switch(this.g){case 15:return new CJ;case 22:return new _J;case 47:return new LJ;case 28:case 35:return new w4;case 32:return new D8;case 42:return new HX;case 1:return new VX;case 41:return new UX;case 56:return new v2t((t7(),zP));case 0:return new v2t((t7(),sft));case 2:return new GX;case 54:return new KX;case 33:return new QX;case 51:return new rQ;case 55:return new b4;case 13:return new sQ;case 38:return new Kx;case 44:return new aQ;case 40:return new oQ;case 9:return new Ret;case 49:return new dJt;case 37:return new G9;case 43:return new Wx;case 27:return new hQ;case 30:return new LB;case 3:return new MB;case 18:return new pQ;case 29:return new bQ;case 5:return new Tj;case 50:return new gQ;case 34:return new h6;case 36:return new O8;case 52:return new yj;case 11:return new PM;case 7:return new fD;case 39:return new cy;case 45:return new P8;case 16:return new yQ;case 10:return new sXt;case 48:return new NM;case 21:return new N8;case 23:return new qnt((qm(),NA));case 8:return new PB;case 12:return new BM;case 4:return new kQ;case 19:return new dD;case 17:return new SQ;case 53:return new AQ;case 6:return new zB;case 25:return new aKt;case 46:return new IQ;case 31:return new eZt;case 14:return new jM;case 26:return new IJ;case 20:return new $Q;case 24:return new qnt((qm(),XG));default:throw nt(new zn(Dut+(this.f!=null?this.f:""+this.g)))}};var CCt,_Ct,SCt,ACt,LCt,MCt,DCt,ICt,OCt,PCt,P5,KU,WU,NCt,FCt,BCt,RCt,jCt,$Ct,zCt,pA,qCt,HCt,VCt,UCt,GCt,aft,YU,XU,KCt,QU,JU,ZU,bT,k3,E3,WCt,tG,eG,YCt,nG,rG,XCt,QCt,JCt,ZCt,iG,oft,qP,sG,aG,oG,cG,t_t,e_t,n_t,r_t,__n=Cr(Yn,Iut,81,Ir,pde,Can),t4e;M(1605,1,Vi,pQ),l.Kf=function(e,n){A9n(u(e,36),n)},D(Yn,"InvertedPortProcessor",1605),M(1606,1,Vi,bQ),l.Kf=function(e,n){T8n(u(e,36),n)},D(Yn,"LabelAndNodeSizeProcessor",1606),M(1607,1,Kr,wQ),l.Mb=function(e){return u(e,10).k==(Un(),Ts)},D(Yn,"LabelAndNodeSizeProcessor/lambda$0$Type",1607),M(1608,1,Kr,v0),l.Mb=function(e){return u(e,10).k==(Un(),Ds)},D(Yn,"LabelAndNodeSizeProcessor/lambda$1$Type",1608),M(1609,1,rr,LZt),l.Cd=function(e){arn(this.b,this.a,this.c,u(e,10))},l.a=!1,l.c=!1,D(Yn,"LabelAndNodeSizeProcessor/lambda$2$Type",1609),M(1610,1,Vi,Tj),l.Kf=function(e,n){t9n(u(e,36),n)};var e4e;D(Yn,"LabelDummyInserter",1610),M(1611,1,Xd,em),l.Lb=function(e){return $t(K(u(e,72),(Me(),a0)))===$t((nd(),HT))},l.Fb=function(e){return this===e},l.Mb=function(e){return $t(K(u(e,72),(Me(),a0)))===$t((nd(),HT))},D(Yn,"LabelDummyInserter/1",1611),M(1612,1,Vi,gQ),l.Kf=function(e,n){qTn(u(e,36),n)},D(Yn,"LabelDummyRemover",1612),M(1613,1,Kr,mQ),l.Mb=function(e){return Ie(De(K(u(e,72),(Me(),Yft))))},D(Yn,"LabelDummyRemover/lambda$0$Type",1613),M(1378,1,Vi,h6),l.Kf=function(e,n){PTn(this,u(e,36),n)},l.a=null;var cft;D(Yn,"LabelDummySwitcher",1378),M(292,1,{292:1},g0e),l.c=0,l.d=null,l.f=0,D(Yn,"LabelDummySwitcher/LabelDummyInfo",292),M(1379,1,{},DB),l.Kb=function(e){return ik(),new ln(null,new gn(u(e,30).a,16))},D(Yn,"LabelDummySwitcher/lambda$0$Type",1379),M(1380,1,Kr,IB),l.Mb=function(e){return ik(),u(e,10).k==(Un(),qc)},D(Yn,"LabelDummySwitcher/lambda$1$Type",1380),M(1381,1,{},gVt),l.Kb=function(e){return xsn(this.a,u(e,10))},D(Yn,"LabelDummySwitcher/lambda$2$Type",1381),M(1382,1,rr,pVt),l.Cd=function(e){zun(this.a,u(e,292))},D(Yn,"LabelDummySwitcher/lambda$3$Type",1382),M(1383,1,Xr,vQ),l.Ne=function(e,n){return hun(u(e,292),u(n,292))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Yn,"LabelDummySwitcher/lambda$4$Type",1383),M(802,1,Vi,w4),l.Kf=function(e,n){Edn(u(e,36),n)},D(Yn,"LabelManagementProcessor",802),M(1614,1,Vi,O8),l.Kf=function(e,n){tkn(u(e,36),n)},D(Yn,"LabelSideSelector",1614),M(1622,1,Vi,PM),l.Kf=function(e,n){zEn(u(e,36),n)},D(Yn,"LayerConstraintPostprocessor",1622),M(1623,1,Vi,fD),l.Kf=function(e,n){F5n(u(e,36),n)};var i_t;D(Yn,"LayerConstraintPreprocessor",1623),M(371,22,{3:1,34:1,22:1,371:1},O$);var HP,uG,lG,uft,n4e=Cr(Yn,"LayerConstraintPreprocessor/HiddenNodeConnections",371,Ir,e1n,_an),r4e;M(1624,1,Vi,cy),l.Kf=function(e,n){iTn(u(e,36),n)},D(Yn,"LayerSizeAndGraphHeightCalculator",1624),M(1625,1,Vi,P8),l.Kf=function(e,n){jxn(u(e,36),n)},D(Yn,"LongEdgeJoiner",1625),M(1626,1,Vi,yQ),l.Kf=function(e,n){P7n(u(e,36),n)},D(Yn,"LongEdgeSplitter",1626),M(1627,1,Vi,sXt),l.Kf=function(e,n){p9n(this,u(e,36),n)},l.e=0,l.f=0,l.j=0,l.k=0,l.n=0,l.o=0;var i4e,s4e;D(Yn,"NodePromotion",1627),M(1628,1,Xr,K9),l.Ne=function(e,n){return Apn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Yn,"NodePromotion/1",1628),M(1629,1,Xr,Dd),l.Ne=function(e,n){return Lpn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Yn,"NodePromotion/2",1629),M(1630,1,{},OB),l.Kb=function(e){return u(e,42),gz(),Nn(),!0},l.Fb=function(e){return this===e},D(Yn,"NodePromotion/lambda$0$Type",1630),M(1631,1,{},vVt),l.Kb=function(e){return Thn(this.a,u(e,42))},l.Fb=function(e){return this===e},l.a=0,D(Yn,"NodePromotion/lambda$1$Type",1631),M(1632,1,{},yVt),l.Kb=function(e){return Ehn(this.a,u(e,42))},l.Fb=function(e){return this===e},l.a=0,D(Yn,"NodePromotion/lambda$2$Type",1632),M(1633,1,Vi,NM),l.Kf=function(e,n){uCn(u(e,36),n)},D(Yn,"NorthSouthPortPostprocessor",1633),M(1634,1,Vi,N8),l.Kf=function(e,n){H9n(u(e,36),n)},D(Yn,"NorthSouthPortPreprocessor",1634),M(1635,1,Xr,FM),l.Ne=function(e,n){return Hgn(u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Yn,"NorthSouthPortPreprocessor/lambda$0$Type",1635),M(1636,1,Vi,PB),l.Kf=function(e,n){sEn(u(e,36),n)},D(Yn,"PartitionMidprocessor",1636),M(1637,1,Kr,xQ),l.Mb=function(e){return Ui(u(e,10),(Me(),MT))},D(Yn,"PartitionMidprocessor/lambda$0$Type",1637),M(1638,1,rr,xVt),l.Cd=function(e){Tln(this.a,u(e,10))},D(Yn,"PartitionMidprocessor/lambda$1$Type",1638),M(1639,1,Vi,BM),l.Kf=function(e,n){a6n(u(e,36),n)},D(Yn,"PartitionPostprocessor",1639),M(1640,1,Vi,kQ),l.Kf=function(e,n){y5n(u(e,36),n)},D(Yn,"PartitionPreprocessor",1640),M(1641,1,Kr,EQ),l.Mb=function(e){return Ui(u(e,10),(Me(),MT))},D(Yn,"PartitionPreprocessor/lambda$0$Type",1641),M(1642,1,{},NB),l.Kb=function(e){return new ln(null,new Am(new nr(ir(As(u(e,10)).a.Kc(),new q))))},D(Yn,"PartitionPreprocessor/lambda$1$Type",1642),M(1643,1,Kr,Yx),l.Mb=function(e){return lwn(u(e,18))},D(Yn,"PartitionPreprocessor/lambda$2$Type",1643),M(1644,1,rr,FB),l.Cd=function(e){apn(u(e,18))},D(Yn,"PartitionPreprocessor/lambda$3$Type",1644),M(1645,1,Vi,dD),l.Kf=function(e,n){j8n(u(e,36),n)};var s_t,a4e,o4e,c4e,a_t,o_t;D(Yn,"PortListSorter",1645),M(1648,1,Xr,Xx),l.Ne=function(e,n){return iie(u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Yn,"PortListSorter/lambda$0$Type",1648),M(1650,1,Xr,TQ),l.Ne=function(e,n){return R0e(u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Yn,"PortListSorter/lambda$1$Type",1650),M(1646,1,{},RM),l.Kb=function(e){return h7(),u(e,12).e},D(Yn,"PortListSorter/lambda$2$Type",1646),M(1647,1,{},CQ),l.Kb=function(e){return h7(),u(e,12).g},D(Yn,"PortListSorter/lambda$3$Type",1647),M(1649,1,Xr,_Q),l.Ne=function(e,n){return Pmn(u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Yn,"PortListSorter/lambda$4$Type",1649),M(1651,1,Vi,SQ),l.Kf=function(e,n){Y5n(u(e,36),n)},D(Yn,"PortSideProcessor",1651),M(1652,1,Vi,AQ),l.Kf=function(e,n){Xkn(u(e,36),n)},D(Yn,"ReversedEdgeRestorer",1652),M(1657,1,Vi,aKt),l.Kf=function(e,n){bmn(this,u(e,36),n)},D(Yn,"SelfLoopPortRestorer",1657),M(1658,1,{},BB),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},D(Yn,"SelfLoopPortRestorer/lambda$0$Type",1658),M(1659,1,Kr,LQ),l.Mb=function(e){return u(e,10).k==(Un(),Ts)},D(Yn,"SelfLoopPortRestorer/lambda$1$Type",1659),M(1660,1,Kr,MQ),l.Mb=function(e){return Ui(u(e,10),(ae(),xv))},D(Yn,"SelfLoopPortRestorer/lambda$2$Type",1660),M(1661,1,{},DQ),l.Kb=function(e){return u(K(u(e,10),(ae(),xv)),337)},D(Yn,"SelfLoopPortRestorer/lambda$3$Type",1661),M(1662,1,rr,wVt),l.Cd=function(e){D3n(this.a,u(e,337))},D(Yn,"SelfLoopPortRestorer/lambda$4$Type",1662),M(805,1,rr,RB),l.Cd=function(e){V3n(u(e,105))},D(Yn,"SelfLoopPortRestorer/lambda$5$Type",805),M(1663,1,Vi,IQ),l.Kf=function(e,n){kwn(u(e,36),n)},D(Yn,"SelfLoopPostProcessor",1663),M(1664,1,{},OQ),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},D(Yn,"SelfLoopPostProcessor/lambda$0$Type",1664),M(1665,1,Kr,PQ),l.Mb=function(e){return u(e,10).k==(Un(),Ts)},D(Yn,"SelfLoopPostProcessor/lambda$1$Type",1665),M(1666,1,Kr,jB),l.Mb=function(e){return Ui(u(e,10),(ae(),xv))},D(Yn,"SelfLoopPostProcessor/lambda$2$Type",1666),M(1667,1,rr,NQ),l.Cd=function(e){Ovn(u(e,10))},D(Yn,"SelfLoopPostProcessor/lambda$3$Type",1667),M(1668,1,{},FQ),l.Kb=function(e){return new ln(null,new gn(u(e,105).f,1))},D(Yn,"SelfLoopPostProcessor/lambda$4$Type",1668),M(1669,1,rr,bVt),l.Cd=function(e){s1n(this.a,u(e,340))},D(Yn,"SelfLoopPostProcessor/lambda$5$Type",1669),M(1670,1,Kr,$B),l.Mb=function(e){return!!u(e,105).i},D(Yn,"SelfLoopPostProcessor/lambda$6$Type",1670),M(1671,1,rr,mVt),l.Cd=function(e){snn(this.a,u(e,105))},D(Yn,"SelfLoopPostProcessor/lambda$7$Type",1671),M(1653,1,Vi,zB),l.Kf=function(e,n){Txn(u(e,36),n)},D(Yn,"SelfLoopPreProcessor",1653),M(1654,1,{},qB),l.Kb=function(e){return new ln(null,new gn(u(e,105).f,1))},D(Yn,"SelfLoopPreProcessor/lambda$0$Type",1654),M(1655,1,{},BQ),l.Kb=function(e){return u(e,340).a},D(Yn,"SelfLoopPreProcessor/lambda$1$Type",1655),M(1656,1,rr,RQ),l.Cd=function(e){cin(u(e,18))},D(Yn,"SelfLoopPreProcessor/lambda$2$Type",1656),M(1672,1,Vi,eZt),l.Kf=function(e,n){f3n(this,u(e,36),n)},D(Yn,"SelfLoopRouter",1672),M(1673,1,{},F8),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},D(Yn,"SelfLoopRouter/lambda$0$Type",1673),M(1674,1,Kr,Qx),l.Mb=function(e){return u(e,10).k==(Un(),Ts)},D(Yn,"SelfLoopRouter/lambda$1$Type",1674),M(1675,1,Kr,W9),l.Mb=function(e){return Ui(u(e,10),(ae(),xv))},D(Yn,"SelfLoopRouter/lambda$2$Type",1675),M(1676,1,{},jQ),l.Kb=function(e){return u(K(u(e,10),(ae(),xv)),337)},D(Yn,"SelfLoopRouter/lambda$3$Type",1676),M(1677,1,rr,jYt),l.Cd=function(e){mln(this.a,this.b,u(e,337))},D(Yn,"SelfLoopRouter/lambda$4$Type",1677),M(1678,1,Vi,jM),l.Kf=function(e,n){q6n(u(e,36),n)},D(Yn,"SemiInteractiveCrossMinProcessor",1678),M(1679,1,Kr,Y9),l.Mb=function(e){return u(e,10).k==(Un(),Ts)},D(Yn,"SemiInteractiveCrossMinProcessor/lambda$0$Type",1679),M(1680,1,Kr,$M),l.Mb=function(e){return mte(u(e,10))._b((Me(),I3))},D(Yn,"SemiInteractiveCrossMinProcessor/lambda$1$Type",1680),M(1681,1,Xr,HB),l.Ne=function(e,n){return sgn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Yn,"SemiInteractiveCrossMinProcessor/lambda$2$Type",1681),M(1682,1,{},VB),l.Ve=function(e,n){return Cln(u(e,10),u(n,10))},D(Yn,"SemiInteractiveCrossMinProcessor/lambda$3$Type",1682),M(1684,1,Vi,$Q),l.Kf=function(e,n){f7n(u(e,36),n)},D(Yn,"SortByInputModelProcessor",1684),M(1685,1,Kr,zQ),l.Mb=function(e){return u(e,12).g.c.length!=0},D(Yn,"SortByInputModelProcessor/lambda$0$Type",1685),M(1686,1,rr,kVt),l.Cd=function(e){Y3n(this.a,u(e,12))},D(Yn,"SortByInputModelProcessor/lambda$1$Type",1686),M(1759,817,{},Aoe),l.df=function(e){var n,r,s,o;switch(this.c=e,this.a.g){case 2:n=new ge,xs(Ai(new ln(null,new gn(this.c.a.b,16)),new WB),new WYt(this,n)),SO(this,new UB),Tu(n,new GB),n.c.length=0,xs(Ai(new ln(null,new gn(this.c.a.b,16)),new HQ),new TVt(n)),SO(this,new VQ),Tu(n,new UQ),n.c.length=0,r=LQt(rat(Py(new ln(null,new gn(this.c.a.b,16)),new CVt(this))),new GQ),xs(new ln(null,new gn(this.c.a.a,16)),new qYt(r,n)),SO(this,new KB),Tu(n,new WQ),n.c.length=0;break;case 3:s=new ge,SO(this,new qQ),o=LQt(rat(Py(new ln(null,new gn(this.c.a.b,16)),new EVt(this))),new KQ),xs(Ai(new ln(null,new gn(this.c.a.b,16)),new YQ),new VYt(o,s)),SO(this,new XQ),Tu(s,new QQ),s.c.length=0;break;default:throw nt(new KGt)}},l.b=0,D(Gs,"EdgeAwareScanlineConstraintCalculation",1759),M(1760,1,Xd,qQ),l.Lb=function(e){return At(u(e,60).g,154)},l.Fb=function(e){return this===e},l.Mb=function(e){return At(u(e,60).g,154)},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$0$Type",1760),M(1761,1,{},EVt),l.Ye=function(e){return I4n(this.a,u(e,60))},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$1$Type",1761),M(1769,1,wV,$Yt),l.de=function(){hS(this.a,this.b,-1)},l.b=0,D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$10$Type",1769),M(1771,1,Xd,UB),l.Lb=function(e){return At(u(e,60).g,154)},l.Fb=function(e){return this===e},l.Mb=function(e){return At(u(e,60).g,154)},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$11$Type",1771),M(1772,1,rr,GB),l.Cd=function(e){u(e,380).de()},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$12$Type",1772),M(1773,1,Kr,HQ),l.Mb=function(e){return At(u(e,60).g,10)},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$13$Type",1773),M(1775,1,rr,TVt),l.Cd=function(e){Jbn(this.a,u(e,60))},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$14$Type",1775),M(1774,1,wV,UYt),l.de=function(){hS(this.b,this.a,-1)},l.a=0,D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$15$Type",1774),M(1776,1,Xd,VQ),l.Lb=function(e){return At(u(e,60).g,10)},l.Fb=function(e){return this===e},l.Mb=function(e){return At(u(e,60).g,10)},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$16$Type",1776),M(1777,1,rr,UQ),l.Cd=function(e){u(e,380).de()},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$17$Type",1777),M(1778,1,{},CVt),l.Ye=function(e){return O4n(this.a,u(e,60))},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$18$Type",1778),M(1779,1,{},GQ),l.We=function(){return 0},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$19$Type",1779),M(1762,1,{},KQ),l.We=function(){return 0},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$2$Type",1762),M(1781,1,rr,qYt),l.Cd=function(e){run(this.a,this.b,u(e,316))},l.a=0,D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$20$Type",1781),M(1780,1,wV,HYt),l.de=function(){V1e(this.a,this.b,-1)},l.b=0,D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$21$Type",1780),M(1782,1,Xd,KB),l.Lb=function(e){return u(e,60),!0},l.Fb=function(e){return this===e},l.Mb=function(e){return u(e,60),!0},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$22$Type",1782),M(1783,1,rr,WQ),l.Cd=function(e){u(e,380).de()},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$23$Type",1783),M(1763,1,Kr,YQ),l.Mb=function(e){return At(u(e,60).g,10)},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$3$Type",1763),M(1765,1,rr,VYt),l.Cd=function(e){iun(this.a,this.b,u(e,60))},l.a=0,D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$4$Type",1765),M(1764,1,wV,GYt),l.de=function(){hS(this.b,this.a,-1)},l.a=0,D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$5$Type",1764),M(1766,1,Xd,XQ),l.Lb=function(e){return u(e,60),!0},l.Fb=function(e){return this===e},l.Mb=function(e){return u(e,60),!0},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$6$Type",1766),M(1767,1,rr,QQ),l.Cd=function(e){u(e,380).de()},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$7$Type",1767),M(1768,1,Kr,WB),l.Mb=function(e){return At(u(e,60).g,154)},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$8$Type",1768),M(1770,1,rr,WYt),l.Cd=function(e){k0n(this.a,this.b,u(e,60))},D(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$9$Type",1770),M(1586,1,Vi,dJt),l.Kf=function(e,n){$7n(this,u(e,36),n)};var u4e;D(Gs,"HorizontalGraphCompactor",1586),M(1587,1,{},_Vt),l.ff=function(e,n){var r,s,o;return q3t(e,n)||(r=Y4(e),s=Y4(n),r&&r.k==(Un(),Ds)||s&&s.k==(Un(),Ds))?0:(o=u(K(this.a.a,(ae(),H5)),312),Vin(o,r?r.k:(Un(),ha),s?s.k:(Un(),ha)))},l.gf=function(e,n){var r,s,o;return q3t(e,n)?1:(r=Y4(e),s=Y4(n),o=u(K(this.a.a,(ae(),H5)),312),Omt(o,r?r.k:(Un(),ha),s?s.k:(Un(),ha)))},D(Gs,"HorizontalGraphCompactor/1",1587),M(1588,1,{},X9),l.ef=function(e,n){return HC(),e.a.i==0},D(Gs,"HorizontalGraphCompactor/lambda$0$Type",1588),M(1589,1,{},SVt),l.ef=function(e,n){return Aln(this.a,e,n)},D(Gs,"HorizontalGraphCompactor/lambda$1$Type",1589),M(1730,1,{},rae);var l4e,h4e;D(Gs,"LGraphToCGraphTransformer",1730),M(1738,1,Kr,JQ),l.Mb=function(e){return e!=null},D(Gs,"LGraphToCGraphTransformer/0methodref$nonNull$Type",1738),M(1731,1,{},ZQ),l.Kb=function(e){return Bf(),ec(K(u(u(e,60).g,10),(ae(),Di)))},D(Gs,"LGraphToCGraphTransformer/lambda$0$Type",1731),M(1732,1,{},YB),l.Kb=function(e){return Bf(),gue(u(u(e,60).g,154))},D(Gs,"LGraphToCGraphTransformer/lambda$1$Type",1732),M(1741,1,Kr,tJ),l.Mb=function(e){return Bf(),At(u(e,60).g,10)},D(Gs,"LGraphToCGraphTransformer/lambda$10$Type",1741),M(1742,1,rr,eJ),l.Cd=function(e){Oln(u(e,60))},D(Gs,"LGraphToCGraphTransformer/lambda$11$Type",1742),M(1743,1,Kr,nJ),l.Mb=function(e){return Bf(),At(u(e,60).g,154)},D(Gs,"LGraphToCGraphTransformer/lambda$12$Type",1743),M(1747,1,rr,rJ),l.Cd=function(e){lbn(u(e,60))},D(Gs,"LGraphToCGraphTransformer/lambda$13$Type",1747),M(1744,1,rr,AVt),l.Cd=function(e){Brn(this.a,u(e,8))},l.a=0,D(Gs,"LGraphToCGraphTransformer/lambda$14$Type",1744),M(1745,1,rr,LVt),l.Cd=function(e){jrn(this.a,u(e,116))},l.a=0,D(Gs,"LGraphToCGraphTransformer/lambda$15$Type",1745),M(1746,1,rr,MVt),l.Cd=function(e){Rrn(this.a,u(e,8))},l.a=0,D(Gs,"LGraphToCGraphTransformer/lambda$16$Type",1746),M(1748,1,{},iJ),l.Kb=function(e){return Bf(),new ln(null,new Am(new nr(ir(As(u(e,10)).a.Kc(),new q))))},D(Gs,"LGraphToCGraphTransformer/lambda$17$Type",1748),M(1749,1,Kr,sJ),l.Mb=function(e){return Bf(),ho(u(e,18))},D(Gs,"LGraphToCGraphTransformer/lambda$18$Type",1749),M(1750,1,rr,DVt),l.Cd=function(e){t0n(this.a,u(e,18))},D(Gs,"LGraphToCGraphTransformer/lambda$19$Type",1750),M(1734,1,rr,IVt),l.Cd=function(e){Sfn(this.a,u(e,154))},D(Gs,"LGraphToCGraphTransformer/lambda$2$Type",1734),M(1751,1,{},XB),l.Kb=function(e){return Bf(),new ln(null,new gn(u(e,30).a,16))},D(Gs,"LGraphToCGraphTransformer/lambda$20$Type",1751),M(1752,1,{},aJ),l.Kb=function(e){return Bf(),new ln(null,new Am(new nr(ir(As(u(e,10)).a.Kc(),new q))))},D(Gs,"LGraphToCGraphTransformer/lambda$21$Type",1752),M(1753,1,{},QB),l.Kb=function(e){return Bf(),u(K(u(e,18),(ae(),Ew)),15)},D(Gs,"LGraphToCGraphTransformer/lambda$22$Type",1753),M(1754,1,Kr,oJ),l.Mb=function(e){return Uin(u(e,15))},D(Gs,"LGraphToCGraphTransformer/lambda$23$Type",1754),M(1755,1,rr,OVt),l.Cd=function(e){x4n(this.a,u(e,15))},D(Gs,"LGraphToCGraphTransformer/lambda$24$Type",1755),M(1733,1,rr,YYt),l.Cd=function(e){T1n(this.a,this.b,u(e,154))},D(Gs,"LGraphToCGraphTransformer/lambda$3$Type",1733),M(1735,1,{},cJ),l.Kb=function(e){return Bf(),new ln(null,new gn(u(e,30).a,16))},D(Gs,"LGraphToCGraphTransformer/lambda$4$Type",1735),M(1736,1,{},uJ),l.Kb=function(e){return Bf(),new ln(null,new Am(new nr(ir(As(u(e,10)).a.Kc(),new q))))},D(Gs,"LGraphToCGraphTransformer/lambda$5$Type",1736),M(1737,1,{},Q9),l.Kb=function(e){return Bf(),u(K(u(e,18),(ae(),Ew)),15)},D(Gs,"LGraphToCGraphTransformer/lambda$6$Type",1737),M(1739,1,rr,PVt),l.Cd=function(e){P4n(this.a,u(e,15))},D(Gs,"LGraphToCGraphTransformer/lambda$8$Type",1739),M(1740,1,rr,XYt),l.Cd=function(e){uin(this.a,this.b,u(e,154))},D(Gs,"LGraphToCGraphTransformer/lambda$9$Type",1740),M(1729,1,{},lJ),l.cf=function(e){var n,r,s,o,h;for(this.a=e,this.d=new Ont,this.c=Vt($9t,Ln,125,this.a.a.a.c.length,0,1),this.b=0,r=new J(this.a.a.a);r.a=tt&&(pe(h,fe(A)),St=b.Math.max(St,Bt[A-1]-N),m+=W,ct+=Bt[A-1]-ct,N=Bt[A-1],W=k[A]),W=b.Math.max(W,k[A]),++A;m+=W}U=b.Math.min(1/St,1/n.b/m),U>s&&(s=U,r=h)}return r},l.pg=function(){return!1},D(t0,"MSDCutIndexHeuristic",816),M(1683,1,Vi,IJ),l.Kf=function(e,n){HEn(u(e,36),n)},D(t0,"SingleEdgeGraphWrapper",1683),M(232,22,{3:1,34:1,22:1,232:1},QC);var F5,vT,yT,T3,bA,B5,xT=Cr(zc,"CenterEdgeLabelPlacementStrategy",232,Ir,Adn,Man),E4e;M(431,22,{3:1,34:1,22:1,431:1},Pwt);var u_t,yft,l_t=Cr(zc,"ConstraintCalculationStrategy",431,Ir,Wln,Dan),T4e;M(322,22,{3:1,34:1,22:1,322:1,188:1,196:1},drt),l.dg=function(){return Jfe(this)},l.qg=function(){return Jfe(this)};var UP,wA,h_t,f_t=Cr(zc,"CrossingMinimizationStrategy",322,Ir,qhn,Ian),C4e;M(351,22,{3:1,34:1,22:1,351:1},grt);var d_t,xft,pG,g_t=Cr(zc,"CuttingStrategy",351,Ir,Hhn,Oan),_4e;M(348,22,{3:1,34:1,22:1,348:1,188:1,196:1},RD),l.dg=function(){return q1e(this)},l.qg=function(){return q1e(this)};var p_t,kft,kT,Eft,ET,b_t=Cr(zc,"CycleBreakingStrategy",348,Ir,G1n,Pan),S4e;M(428,22,{3:1,34:1,22:1,428:1},Nwt);var bG,w_t,m_t=Cr(zc,"DirectionCongruency",428,Ir,Kln,Nan),A4e;M(459,22,{3:1,34:1,22:1,459:1},prt);var TT,Tft,R5,L4e=Cr(zc,"EdgeConstraint",459,Ir,Vhn,qan),M4e;M(283,22,{3:1,34:1,22:1,283:1},JC);var Cft,_ft,Sft,Aft,wG,Lft,v_t=Cr(zc,"EdgeLabelSideSelection",283,Ir,Cdn,Han),D4e;M(487,22,{3:1,34:1,22:1,487:1},Fwt);var mG,y_t,x_t=Cr(zc,"EdgeStraighteningStrategy",487,Ir,Gln,Van),I4e;M(281,22,{3:1,34:1,22:1,281:1},ZC);var Mft,k_t,E_t,vG,T_t,C_t,__t=Cr(zc,"FixedAlignment",281,Ir,_dn,zan),O4e;M(282,22,{3:1,34:1,22:1,282:1},t_);var S_t,A_t,L_t,M_t,mA,D_t,I_t=Cr(zc,"GraphCompactionStrategy",282,Ir,Sdn,Fan),P4e;M(259,22,{3:1,34:1,22:1,259:1},ky);var CT,yG,_T,zh,vA,xG,ST,j5,kG,yA,Dft=Cr(zc,"GraphProperties",259,Ir,hgn,Ban),N4e;M(298,22,{3:1,34:1,22:1,298:1},brt);var GP,Ift,Oft,Pft=Cr(zc,"GreedySwitchType",298,Ir,Uhn,Ran),F4e;M(311,22,{3:1,34:1,22:1,311:1},wrt);var jk,KP,$5,B4e=Cr(zc,"InLayerConstraint",311,Ir,Ghn,jan),R4e;M(429,22,{3:1,34:1,22:1,429:1},Bwt);var Nft,O_t,P_t=Cr(zc,"InteractiveReferencePoint",429,Ir,thn,$an),j4e,N_t,$k,mv,EG,F_t,B_t,TG,R_t,WP,CG,xA,zk,Bg,Fft,_G,_c,j_t,Zb,uu,Bft,Rft,YP,kw,vv,qk,$_t,Hk,XP,C3,I1,hf,jft,z5,Bi,Di,z_t,q_t,H_t,V_t,U_t,$ft,SG,ml,yv,zft,Vk,kA,dd,q5,xv,H5,V5,AT,Ew,G_t,qft,Hft,Uk;M(171,22,{3:1,34:1,22:1,171:1},jD);var EA,t2,TA,_3,QP,K_t=Cr(zc,"LayerConstraint",171,Ir,W1n,Uan),$4e;M(859,1,af,Get),l.hf=function(e){Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,H8t),""),"Direction Congruency"),"Specifies how drawings of the same graph with different layout directions compare to each other: either a natural reading direction is preserved or the drawings are rotated versions of each other."),rSt),(Pp(),rs)),m_t),Ze((A1(),_n))))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,V8t),""),"Feedback Edges"),"Whether feedback edges should be highlighted by routing around the nodes."),(Nn(),!1)),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,IV),""),"Interactive Reference Point"),"Determines which point of a node is considered by interactive layout phases."),uSt),rs),P_t),Ze(_n)))),Bs(e,IV,Nut,P5e),Bs(e,IV,HS,O5e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,U8t),""),"Merge Edges"),"Edges that have no ports are merged so they touch the connected nodes at the same points. When this option is disabled, one port is created for each edge directly connected to a node. When it is enabled, all such incoming edges share an input port, and all outgoing edges share an output port."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,G8t),""),"Merge Hierarchy-Crossing Edges"),"If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible. They are broken by the algorithm, with hierarchical ports inserted as required. Usually, one such port is created for each edge at each hierarchy crossing point. With this option set to true, we try to create as few hierarchical ports as possible in the process. In particular, all edges that form a hyperedge can share a port."),!0),aa),Es),Ze(_n)))),Xe(e,new qe(Bnn(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,K8t),""),"Allow Non-Flow Ports To Switch Sides"),"Specifies whether non-flow ports may switch sides if their node's port constraints are either FIXED_SIDE or FIXED_ORDER. A non-flow port is a port on a side that is not part of the currently configured layout flow. For instance, given a left-to-right layout direction, north and south ports would be considered non-flow ports. Further note that the underlying criterium whether to switch sides or not solely relies on the minimization of edge crossings. Hence, edge length and other aesthetics criteria are not addressed."),!1),aa),Es),Ze(Dw)),ot(st(Ne,1),le,2,6,["org.eclipse.elk.layered.northOrSouthPort"])))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,W8t),""),"Port Sorting Strategy"),"Only relevant for nodes with FIXED_SIDE port constraints. Determines the way a node's ports are distributed on the sides of a node if their order is not prescribed. The option is set on parent nodes."),wSt),rs),_At),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Y8t),""),"Thoroughness"),"How much effort should be spent to produce a nice layout."),fe(7)),ic),Na),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,X8t),""),"Add Unnecessary Bendpoints"),"Adds bend points even if an edge does not change direction. If true, each long edge dummy will contribute a bend point to its edges and hierarchy-crossing edges will always get a bend point where they cross hierarchy boundaries. By default, bend points are only added where an edge changes direction."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Q8t),""),"Generate Position and Layer IDs"),"If enabled position id and layer id are generated, which are usually only used internally when setting the interactiveLayout option. This option should be specified on the root node."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Nut),"cycleBreaking"),"Cycle Breaking Strategy"),"Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right)."),nSt),rs),b_t),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,bP),slt),"Node Layering Strategy"),"Strategy for node layering."),fSt),rs),gAt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,J8t),slt),"Layer Constraint"),"Determines a constraint on the placement of the node regarding the layering."),lSt),rs),K_t),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Z8t),slt),"Layer Choice Constraint"),"Allows to set a constraint regarding the layer placement of a node. Let i be the value of teh constraint. Assumed the drawing has n layers and i < n. If set to i, it expresses that the node should be placed in i-th layer. Should i>=n be true then the node is placed in the last layer of the drawing. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),null),ic),Na),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,tEt),slt),"Layer ID"),"Layer identifier that was calculated by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),fe(-1)),ic),Na),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Fut),l2e),"Upper Bound On Width [MinWidth Layerer]"),"Defines a loose upper bound on the width of the MinWidth layerer. If set to '-1' multiple values are tested and the best result is selected."),fe(4)),ic),Na),Ze(_n)))),Bs(e,Fut,bP,z5e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,But),l2e),"Upper Layer Estimation Scaling Factor [MinWidth Layerer]"),"Multiplied with Upper Bound On Width for defining an upper bound on the width of layers which haven't been determined yet, but whose maximum width had been (roughly) estimated by the MinWidth algorithm. Compensates for too high estimations. If set to '-1' multiple values are tested and the best result is selected."),fe(2)),ic),Na),Ze(_n)))),Bs(e,But,bP,H5e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Rut),h2e),"Node Promotion Strategy"),"Reduces number of dummy nodes after layering phase (if possible)."),hSt),rs),EAt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,jut),h2e),"Max Node Promotion Iterations"),"Limits the number of iterations for node promotion."),fe(0)),ic),Na),Ze(_n)))),Bs(e,jut,Rut,null),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,$ut),"layering.coffmanGraham"),"Layer Bound"),"The maximum number of nodes allowed per layer."),fe(ki)),ic),Na),Ze(_n)))),Bs(e,$ut,bP,F5e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,HS),eT),"Crossing Minimization Strategy"),"Strategy for crossing minimization."),eSt),rs),f_t),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,eEt),eT),"Force Node Model Order"),"The node order given by the model does not change to produce a better layout. E.g. if node A is before node B in the model this is not changed during crossing minimization. This assumes that the node model order is already respected before crossing minimization. This can be achieved by setting considerModelOrder.strategy to NODES_AND_EDGES."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,zut),eT),"Hierarchical Sweepiness"),"How likely it is to use cross-hierarchy (1) vs bottom-up (-1)."),.1),Ga),zs),Ze(_n)))),Bs(e,zut,UV,a5e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,qut),eT),"Semi-Interactive Crossing Minimization"),"Preserves the order of nodes within a layer but still minimizes crossings between edges connecting long edge dummies. Derives the desired order from positions specified by the 'org.eclipse.elk.position' layout option. Requires a crossing minimization strategy that is able to process 'in-layer' constraints."),!1),aa),Es),Ze(_n)))),Bs(e,qut,HS,f5e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,nEt),eT),"In Layer Predecessor of"),"Allows to set a constraint which specifies of which node the current node is the predecessor. If set to 's' then the node is the predecessor of 's' and is in the same layer"),null),ex),Ne),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,rEt),eT),"In Layer Successor of"),"Allows to set a constraint which specifies of which node the current node is the successor. If set to 's' then the node is the successor of 's' and is in the same layer"),null),ex),Ne),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,iEt),eT),"Position Choice Constraint"),"Allows to set a constraint regarding the position placement of a node in a layer. Assumed the layer in which the node placed includes n other nodes and i < n. If set to i, it expresses that the node should be placed at the i-th position. Should i>=n be true then the node is placed at the last position in the layer. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),null),ic),Na),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,sEt),eT),"Position ID"),"Position within a layer that was determined by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),fe(-1)),ic),Na),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,aEt),f2e),"Greedy Switch Activation Threshold"),"By default it is decided automatically if the greedy switch is activated or not. The decision is based on whether the size of the input graph (without dummy nodes) is smaller than the value of this option. A '0' enforces the activation."),fe(40)),ic),Na),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Hut),f2e),"Greedy Switch Crossing Minimization"),"Greedy Switch strategy for crossing minimization. The greedy switch heuristic is executed after the regular crossing minimization as a post-processor. Note that if 'hierarchyHandling' is set to 'INCLUDE_CHILDREN', the 'greedySwitchHierarchical.type' option must be used."),tSt),rs),Pft),Ze(_n)))),Bs(e,Hut,HS,i5e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,OV),"crossingMinimization.greedySwitchHierarchical"),"Greedy Switch Crossing Minimization (hierarchical)"),"Activates the greedy switch heuristic in case hierarchical layout is used. The differences to the non-hierarchical case (see 'greedySwitch.type') are: 1) greedy switch is inactive by default, 3) only the option value set on the node at which hierarchical layout starts is relevant, and 2) if it's activated by the user, it properly addresses hierarchy-crossing edges."),Z_t),rs),Pft),Ze(_n)))),Bs(e,OV,HS,e5e),Bs(e,OV,UV,n5e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,C5),d2e),"Node Placement Strategy"),"Strategy for node placement."),bSt),rs),mAt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,PV),d2e),"Favor Straight Edges Over Balancing"),"Favor straight edges over a balanced node placement. The default behavior is determined automatically based on the used 'edgeRouting'. For an orthogonal style it is set to true, for all other styles to false."),aa),Es),Ze(_n)))),Bs(e,PV,C5,txe),Bs(e,PV,C5,exe),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Vut),g2e),"BK Edge Straightening"),"Specifies whether the Brandes Koepf node placer tries to increase the number of straight edges at the expense of diagram size. There is a subtle difference to the 'favorStraightEdges' option, which decides whether a balanced placement of the nodes is desired, or not. In bk terms this means combining the four alignments into a single balanced one, or not. This option on the other hand tries to straighten additional edges during the creation of each of the four alignments."),dSt),rs),x_t),Ze(_n)))),Bs(e,Vut,C5,X5e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Uut),g2e),"BK Fixed Alignment"),"Tells the BK node placer to use a certain alignment (out of its four) instead of the one producing the smallest height, or the combination of all four."),gSt),rs),__t),Ze(_n)))),Bs(e,Uut,C5,J5e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Gut),"nodePlacement.linearSegments"),"Linear Segments Deflection Dampening"),"Dampens the movement of nodes to keep the diagram from getting too large."),.3),Ga),zs),Ze(_n)))),Bs(e,Gut,C5,rxe),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,Kut),"nodePlacement.networkSimplex"),"Node Flexibility"),"Aims at shorter and straighter edges. Two configurations are possible: (a) allow ports to move freely on the side they are assigned to (the order is always defined beforehand), (b) additionally allow to enlarge a node wherever it helps. If this option is not configured for a node, the 'nodeFlexibility.default' value is used, which is specified for the node's parent."),rs),h1t),Ze(Js)))),Bs(e,Kut,C5,oxe),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Wut),"nodePlacement.networkSimplex.nodeFlexibility"),"Node Flexibility Default"),"Default value of the 'nodeFlexibility' option for the children of a hierarchical node."),pSt),rs),h1t),Ze(_n)))),Bs(e,Wut,C5,axe),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,oEt),p2e),"Self-Loop Distribution"),"Alter the distribution of the loops around the node. It only takes effect for PortConstraints.FREE."),aSt),rs),LAt),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,cEt),p2e),"Self-Loop Ordering"),"Alter the ordering of the loops they can either be stacked or sequenced. It only takes effect for PortConstraints.FREE."),oSt),rs),MAt),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,NV),"edgeRouting.splines"),"Spline Routing Mode"),"Specifies the way control points are assembled for each individual edge. CONSERVATIVE ensures that edges are properly routed around the nodes but feels rather orthogonal at times. SLOPPY uses fewer control points to obtain curvier edge routes but may result in edges overlapping nodes."),cSt),rs),IAt),Ze(_n)))),Bs(e,NV,wP,E5e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,FV),"edgeRouting.splines.sloppy"),"Sloppy Spline Layer Spacing Factor"),"Spacing factor for routing area between layers when using sloppy spline routing."),.2),Ga),zs),Ze(_n)))),Bs(e,FV,wP,C5e),Bs(e,FV,NV,_5e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Yut),"edgeRouting.polyline"),"Sloped Edge Zone Width"),"Width of the strip to the left and to the right of each layer where the polyline edge router is allowed to refrain from ensuring that edges are routed horizontally. This prevents awkward bend points for nodes that extent almost to the edge of their layer."),2),Ga),zs),Ze(_n)))),Bs(e,Yut,wP,v5e),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,uEt),ld),"Spacing Base Value"),"An optional base value for all other layout options of the 'spacing' group. It can be used to conveniently alter the overall 'spaciousness' of the drawing. Whenever an explicit value is set for the other layout options, this base value will have no effect. The base value is not inherited, i.e. it must be set for each hierarchical node."),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,lEt),ld),"Edge Node Between Layers Spacing"),"The spacing to be preserved between nodes and edges that are routed next to the node's layer. For the spacing between nodes and edges that cross the node's layer 'spacing.edgeNode' is used."),10),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,hEt),ld),"Edge Edge Between Layer Spacing"),"Spacing to be preserved between pairs of edges that are routed between the same pair of layers. Note that 'spacing.edgeEdge' is used for the spacing between pairs of edges crossing the same layer."),10),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,fEt),ld),"Node Node Between Layers Spacing"),"The spacing to be preserved between any pair of nodes of two adjacent layers. Note that 'spacing.nodeNode' is used for the spacing between nodes within the layer itself."),20),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,dEt),EEt),"Direction Priority"),"Defines how important it is to have a certain edge point into the direction of the overall layout. This option is evaluated during the cycle breaking phase."),fe(0)),ic),Na),Ze(c0)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,gEt),EEt),"Shortness Priority"),"Defines how important it is to keep an edge as short as possible. This option is evaluated during the layering phase."),fe(0)),ic),Na),Ze(c0)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,pEt),EEt),"Straightness Priority"),"Defines how important it is to keep an edge straight, i.e. aligned with one of the two axes. This option is evaluated during node placement."),fe(0)),ic),Na),Ze(c0)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Xut),TEt),Dbe),"Tries to further compact components (disconnected sub-graphs)."),!1),aa),Es),Ze(_n)))),Bs(e,Xut,RS,!0),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,bEt),b2e),"Post Compaction Strategy"),w2e),Y_t),rs),I_t),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,wEt),b2e),"Post Compaction Constraint Calculation"),w2e),W_t),rs),l_t),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,BV),CEt),"High Degree Node Treatment"),"Makes room around high degree nodes to place leafs and trees."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Qut),CEt),"High Degree Node Threshold"),"Whether a node is considered to have a high degree."),fe(16)),ic),Na),Ze(_n)))),Bs(e,Qut,BV,!0),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Jut),CEt),"High Degree Node Maximum Tree Height"),"Maximum height of a subtree connected to a high degree node to be moved to separate layers."),fe(5)),ic),Na),Ze(_n)))),Bs(e,Jut,BV,!0),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Pg),_Et),"Graph Wrapping Strategy"),"For certain graphs and certain prescribed drawing areas it may be desirable to split the laid out graph into chunks that are placed side by side. The edges that connect different chunks are 'wrapped' around from the end of one chunk to the start of the other chunk. The points between the chunks are referred to as 'cuts'."),ySt),rs),FAt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,RV),_Et),"Additional Wrapped Edges Spacing"),"To visually separate edges that are wrapped from regularly routed edges an additional spacing value can be specified in form of this layout option. The spacing is added to the regular edgeNode spacing."),10),Ga),zs),Ze(_n)))),Bs(e,RV,Pg,yxe),Bs(e,RV,Pg,xxe),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,jV),_Et),"Correction Factor for Wrapping"),"At times and for certain types of graphs the executed wrapping may produce results that are consistently biased in the same fashion: either wrapping to often or to rarely. This factor can be used to correct the bias. Internally, it is simply multiplied with the 'aspect ratio' layout option."),1),Ga),zs),Ze(_n)))),Bs(e,jV,Pg,Exe),Bs(e,jV,Pg,Txe),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,VS),m2e),"Cutting Strategy"),"The strategy by which the layer indexes are determined at which the layering crumbles into chunks."),vSt),rs),g_t),Ze(_n)))),Bs(e,VS,Pg,Mxe),Bs(e,VS,Pg,Dxe),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,Zut),m2e),"Manually Specified Cuts"),"Allows the user to specify her own cuts for a certain graph."),pd),$h),Ze(_n)))),Bs(e,Zut,VS,_xe),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,tlt),"wrapping.cutting.msd"),"MSD Freedom"),"The MSD cutting strategy starts with an initial guess on the number of chunks the graph should be split into. The freedom specifies how much the strategy may deviate from this guess. E.g. if an initial number of 3 is computed, a freedom of 1 allows 2, 3, and 4 cuts."),mSt),ic),Na),Ze(_n)))),Bs(e,tlt,VS,Axe),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,$V),v2e),"Validification Strategy"),"When wrapping graphs, one can specify indices that are not allowed as split points. The validification strategy makes sure every computed split point is allowed."),xSt),rs),NAt),Ze(_n)))),Bs(e,$V,Pg,Hxe),Bs(e,$V,Pg,Vxe),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,zV),v2e),"Valid Indices for Wrapping"),null),pd),$h),Ze(_n)))),Bs(e,zV,Pg,$xe),Bs(e,zV,Pg,zxe),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,qV),SEt),"Improve Cuts"),"For general graphs it is important that not too many edges wrap backwards. Thus a compromise between evenly-distributed cuts and the total number of cut edges is sought."),!0),aa),Es),Ze(_n)))),Bs(e,qV,Pg,Nxe),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,HV),SEt),"Distance Penalty When Improving Cuts"),null),2),Ga),zs),Ze(_n)))),Bs(e,HV,Pg,Oxe),Bs(e,HV,qV,!0),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,elt),SEt),"Improve Wrapped Edges"),"The initial wrapping is performed in a very simple way. As a consequence, edges that wrap from one chunk to another may be unnecessarily long. Activating this option tries to shorten such edges."),!0),aa),Es),Ze(_n)))),Bs(e,elt,Pg,Bxe),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,mEt),alt),"Edge Label Side Selection"),"Method to decide on edge label sides."),sSt),rs),v_t),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,vEt),alt),"Edge Center Label Placement Strategy"),"Determines in which layer center labels of long edges should be placed."),iSt),rs),xT),Gi(_n,ot(st(H0,1),te,170,0,[Gp]))))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,VV),US),"Consider Model Order"),"Preserves the order of nodes and edges in the model file if this does not lead to additional edge crossings. Depending on the strategy this is not always possible since the node and edge order might be conflicting."),J_t),rs),CAt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,yEt),US),"Consider Port Order"),"If disabled the port order of output ports is derived from the edge order and input ports are ordered by their incoming connections. If enabled all ports are ordered by the port model order."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,xEt),US),"No Model Order"),"Set on a node to not set a model order for this node even though it is a real node."),!1),aa),Es),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,nlt),US),"Consider Model Order for Components"),"If set to NONE the usual ordering strategy (by cumulative node priority and size of nodes) is used. INSIDE_PORT_SIDES orders the components with external ports only inside the groups with the same port side. FORCE_MODEL_ORDER enforces the mode order on components. This option might produce bad alignments and sub optimal drawings in terms of used area since the ordering should be respected."),X_t),rs),bCt),Ze(_n)))),Bs(e,nlt,RS,null),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,kEt),US),"Long Edge Ordering Strategy"),"Indicates whether long edges are sorted under, over, or equal to nodes that have no connection to a previous layer in a left-to-right or right-to-left layout. Under and over changes to right and left in a vertical layout."),Q_t),rs),bAt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,rlt),US),"Crossing Counter Node Order Influence"),"Indicates with what percentage (1 for 100%) violations of the node model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal node order. Defaults to no influence (0)."),0),Ga),zs),Ze(_n)))),Bs(e,rlt,VV,null),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,ilt),US),"Crossing Counter Port Order Influence"),"Indicates with what percentage (1 for 100%) violations of the port model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal port order. Defaults to no influence (0)."),0),Ga),zs),Ze(_n)))),Bs(e,ilt,VV,null),Fpe((new Ket,e))};var z4e,q4e,H4e,W_t,V4e,Y_t,U4e,X_t,G4e,K4e,W4e,Q_t,Y4e,X4e,Q4e,J_t,J4e,Z4e,t5e,Z_t,e5e,n5e,r5e,tSt,i5e,s5e,a5e,o5e,c5e,u5e,l5e,h5e,f5e,d5e,eSt,g5e,nSt,p5e,rSt,b5e,iSt,w5e,sSt,m5e,v5e,y5e,aSt,x5e,oSt,k5e,cSt,E5e,T5e,C5e,_5e,S5e,A5e,L5e,M5e,D5e,I5e,uSt,O5e,P5e,N5e,F5e,B5e,R5e,lSt,j5e,$5e,z5e,q5e,H5e,V5e,U5e,hSt,G5e,fSt,K5e,W5e,Y5e,dSt,X5e,Q5e,gSt,J5e,Z5e,txe,exe,nxe,rxe,ixe,sxe,pSt,axe,oxe,cxe,bSt,uxe,wSt,lxe,hxe,fxe,dxe,gxe,pxe,bxe,wxe,mxe,vxe,yxe,xxe,kxe,Exe,Txe,Cxe,_xe,Sxe,mSt,Axe,Lxe,vSt,Mxe,Dxe,Ixe,Oxe,Pxe,Nxe,Fxe,Bxe,Rxe,ySt,jxe,$xe,zxe,qxe,xSt,Hxe,Vxe;D(zc,"LayeredMetaDataProvider",859),M(998,1,af,Ket),l.hf=function(e){Fpe(e)};var s0,Vft,AG,CA,LG,kSt,MG,S3,DG,ESt,TSt,IG,Uft,q0,Gft,kv,CSt,JP,Kft,_St,Uxe,Gxe,Kxe,OG,Wft,_A,Tw,Wxe,fh,SSt,ASt,PG,Yft,a0,NG,Rg,LSt,MSt,DSt,Xft,Qft,ISt,zp,Jft,OSt,A3,PSt,NSt,FSt,FG,L3,Cw,BSt,RSt,qo,jSt,Yxe,Du,BG,$St,zSt,qSt,e2,_w,RG,HSt,VSt,jG,Ev,USt,Zft,SA,GSt,Tv,AA,$G,Sw,t1t,LT,zG,Aw,KSt,WSt,YSt,MT,XSt,Xxe,Qxe,Jxe,Zxe,Cv,M3,ms,qp,t6e,D3,QSt,DT,JSt,I3,e6e,IT,ZSt,Gk,n6e,r6e,ZP,e1t,tAt,tN,Yf,U5,G5,_v,Lw,qG,O3,n1t,OT,PT,Sv,K5,r1t,eN,LA,MA,i6e,s6e,a6e,eAt,o6e,i1t,nAt,rAt,iAt,sAt,s1t,aAt,oAt,cAt,uAt,a1t,HG;D(zc,"LayeredOptions",998),M(999,1,{},OJ),l.sf=function(){var e;return e=new eKt,e},l.tf=function(e){},D(zc,"LayeredOptions/LayeredFactory",999),M(1391,1,{}),l.a=0;var c6e;D(Ec,"ElkSpacings/AbstractSpacingsBuilder",1391),M(792,1391,{},D5t);var VG,u6e;D(zc,"LayeredSpacings/LayeredSpacingsBuilder",792),M(265,22,{3:1,34:1,22:1,265:1,188:1,196:1},O4),l.dg=function(){return Qde(this)},l.qg=function(){return Qde(this)};var NT,o1t,FT,lAt,hAt,fAt,UG,c1t,dAt,gAt=Cr(zc,"LayeringStrategy",265,Ir,z0n,Gan),l6e;M(390,22,{3:1,34:1,22:1,390:1},mrt);var u1t,pAt,GG,bAt=Cr(zc,"LongEdgeOrderingStrategy",390,Ir,Khn,Kan),h6e;M(203,22,{3:1,34:1,22:1,203:1},N$);var W5,Y5,KG,l1t,h1t=Cr(zc,"NodeFlexibility",203,Ir,n1n,Wan),f6e;M(323,22,{3:1,34:1,22:1,323:1,188:1,196:1},$D),l.dg=function(){return z1e(this)},l.qg=function(){return z1e(this)};var DA,f1t,d1t,IA,wAt,mAt=Cr(zc,"NodePlacementStrategy",323,Ir,K1n,Yan),d6e;M(243,22,{3:1,34:1,22:1,243:1},Ey);var vAt,Av,P3,nN,yAt,xAt,rN,kAt,WG,YG,EAt=Cr(zc,"NodePromotionStrategy",243,Ir,fgn,Xan),g6e;M(284,22,{3:1,34:1,22:1,284:1},F$);var TAt,Hp,g1t,p1t,CAt=Cr(zc,"OrderingStrategy",284,Ir,r1n,Qan),p6e;M(430,22,{3:1,34:1,22:1,430:1},Rwt);var b1t,w1t,_At=Cr(zc,"PortSortingStrategy",430,Ir,Yln,Jan),b6e;M(462,22,{3:1,34:1,22:1,462:1},vrt);var vl,xu,OA,w6e=Cr(zc,"PortType",462,Ir,Whn,Zan),m6e;M(387,22,{3:1,34:1,22:1,387:1},yrt);var SAt,m1t,AAt,LAt=Cr(zc,"SelfLoopDistributionStrategy",387,Ir,Yhn,ton),v6e;M(349,22,{3:1,34:1,22:1,349:1},xrt);var v1t,iN,y1t,MAt=Cr(zc,"SelfLoopOrderingStrategy",349,Ir,Xhn,eon),y6e;M(312,1,{312:1},Oge),D(zc,"Spacings",312),M(350,22,{3:1,34:1,22:1,350:1},krt);var x1t,DAt,PA,IAt=Cr(zc,"SplineRoutingMode",350,Ir,Qhn,non),x6e;M(352,22,{3:1,34:1,22:1,352:1},Ert);var k1t,OAt,PAt,NAt=Cr(zc,"ValidifyStrategy",352,Ir,Jhn,ron),k6e;M(388,22,{3:1,34:1,22:1,388:1},Trt);var N3,E1t,BT,FAt=Cr(zc,"WrappingStrategy",388,Ir,Zhn,ion),E6e;M(1398,1,To,EC),l.rg=function(e){return u(e,36),T6e},l.Kf=function(e,n){B7n(this,u(e,36),n)};var T6e;D(YV,"DepthFirstCycleBreaker",1398),M(793,1,To,Qvt),l.rg=function(e){return u(e,36),C6e},l.Kf=function(e,n){$Cn(this,u(e,36),n)},l.sg=function(e){return u(Oe(e,_H(this.d,e.c.length)),10)};var C6e;D(YV,"GreedyCycleBreaker",793),M(1401,793,To,QXt),l.sg=function(e){var n,r,s,o;for(o=null,n=ki,s=new J(e);s.a1&&(Ie(De(K(Ia((mn(0,e.c.length),u(e.c[0],10))),(Me(),kv))))?tde(e,this.d,u(this,669)):(wn(),Ms(e,this.d)),tce(this.e,e))},l.lg=function(e,n,r,s){var o,h,d,m,k,T,A;for(n!=wte(r,e.length)&&(h=e[n-(r?1:-1)],_3t(this.f,h,r?(xo(),xu):(xo(),vl))),o=e[n][0],A=!s||o.k==(Un(),Ds),T=J1(e[n]),this.vg(T,A,!1,r),d=0,k=new J(T);k.a"),e0?ist(this.a,e[n-1],e[n]):!r&&n1&&(Ie(De(K(Ia((mn(0,e.c.length),u(e.c[0],10))),(Me(),kv))))?tde(e,this.d,this):(wn(),Ms(e,this.d)),Ie(De(K(Ia((mn(0,e.c.length),u(e.c[0],10))),kv)))||tce(this.e,e))},D(sl,"ModelOrderBarycenterHeuristic",669),M(1866,1,Xr,tUt),l.Ne=function(e,n){return F3n(this.a,u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(sl,"ModelOrderBarycenterHeuristic/lambda$0$Type",1866),M(1423,1,To,Yet),l.rg=function(e){var n;return u(e,36),n=J$(z6e),ri(n,(Ha(),Yc),(Ja(),iG)),n},l.Kf=function(e,n){vln((u(e,36),n))};var z6e;D(sl,"NoCrossingMinimizer",1423),M(809,413,c7t,owt),l.tg=function(e,n,r){var s,o,h,d,m,k,T,A,N,j,U;switch(N=this.g,r.g){case 1:{for(o=0,h=0,A=new J(e.j);A.a1&&(o.j==(ve(),Jn)?this.b[e]=!0:o.j==Gn&&e>0&&(this.b[e-1]=!0))},l.f=0,D(R0,"AllCrossingsCounter",1861),M(595,1,{},Vq),l.b=0,l.d=0,D(R0,"BinaryIndexedTree",595),M(532,1,{},oI);var jAt,QG;D(R0,"CrossingsCounter",532),M(1950,1,Xr,eUt),l.Ne=function(e,n){return Ucn(this.a,u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(R0,"CrossingsCounter/lambda$0$Type",1950),M(1951,1,Xr,nUt),l.Ne=function(e,n){return Gcn(this.a,u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(R0,"CrossingsCounter/lambda$1$Type",1951),M(1952,1,Xr,rUt),l.Ne=function(e,n){return Kcn(this.a,u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(R0,"CrossingsCounter/lambda$2$Type",1952),M(1953,1,Xr,iUt),l.Ne=function(e,n){return Wcn(this.a,u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(R0,"CrossingsCounter/lambda$3$Type",1953),M(1954,1,rr,sUt),l.Cd=function(e){Wdn(this.a,u(e,12))},D(R0,"CrossingsCounter/lambda$4$Type",1954),M(1955,1,Kr,aUt),l.Mb=function(e){return vrn(this.a,u(e,12))},D(R0,"CrossingsCounter/lambda$5$Type",1955),M(1956,1,rr,oUt),l.Cd=function(e){qXt(this,e)},D(R0,"CrossingsCounter/lambda$6$Type",1956),M(1957,1,rr,ZYt),l.Cd=function(e){var n;_E(),Ab(this.b,(n=this.a,u(e,12),n))},D(R0,"CrossingsCounter/lambda$7$Type",1957),M(839,1,Xd,hR),l.Lb=function(e){return _E(),Ui(u(e,12),(ae(),ml))},l.Fb=function(e){return this===e},l.Mb=function(e){return _E(),Ui(u(e,12),(ae(),ml))},D(R0,"CrossingsCounter/lambda$8$Type",839),M(1949,1,{},cUt),D(R0,"HyperedgeCrossingsCounter",1949),M(477,1,{34:1,477:1},nZt),l.Fd=function(e){return K2n(this,u(e,477))},l.b=0,l.c=0,l.e=0,l.f=0;var S_n=D(R0,"HyperedgeCrossingsCounter/Hyperedge",477);M(374,1,{34:1,374:1},Vz),l.Fd=function(e){return oxn(this,u(e,374))},l.b=0,l.c=0;var q6e=D(R0,"HyperedgeCrossingsCounter/HyperedgeCorner",374);M(531,22,{3:1,34:1,22:1,531:1},jwt);var FA,BA,H6e=Cr(R0,"HyperedgeCrossingsCounter/HyperedgeCorner/Type",531,Ir,Xln,aon),V6e;M(1425,1,To,Xet),l.rg=function(e){return u(K(u(e,36),(ae(),uu)),21).Hc((ko(),zh))?U6e:null},l.Kf=function(e,n){mvn(this,u(e,36),n)};var U6e;D(Co,"InteractiveNodePlacer",1425),M(1426,1,To,Qet),l.rg=function(e){return u(K(u(e,36),(ae(),uu)),21).Hc((ko(),zh))?G6e:null},l.Kf=function(e,n){nmn(this,u(e,36),n)};var G6e,JG,ZG;D(Co,"LinearSegmentsNodePlacer",1426),M(261,1,{34:1,261:1},N2t),l.Fd=function(e){return Dnn(this,u(e,261))},l.Fb=function(e){var n;return At(e,261)?(n=u(e,261),this.b==n.b):!1},l.Hb=function(){return this.b},l.Ib=function(){return"ls"+Rb(this.e)},l.a=0,l.b=0,l.c=-1,l.d=-1,l.g=0;var K6e=D(Co,"LinearSegmentsNodePlacer/LinearSegment",261);M(1428,1,To,Ste),l.rg=function(e){return u(K(u(e,36),(ae(),uu)),21).Hc((ko(),zh))?W6e:null},l.Kf=function(e,n){DCn(this,u(e,36),n)},l.b=0,l.g=0;var W6e;D(Co,"NetworkSimplexPlacer",1428),M(1447,1,Xr,zJ),l.Ne=function(e,n){return Bc(u(e,17).a,u(n,17).a)},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Co,"NetworkSimplexPlacer/0methodref$compare$Type",1447),M(1449,1,Xr,qJ),l.Ne=function(e,n){return Bc(u(e,17).a,u(n,17).a)},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Co,"NetworkSimplexPlacer/1methodref$compare$Type",1449),M(655,1,{655:1},tXt);var A_n=D(Co,"NetworkSimplexPlacer/EdgeRep",655);M(412,1,{412:1},Dyt),l.b=!1;var L_n=D(Co,"NetworkSimplexPlacer/NodeRep",412);M(515,13,{3:1,4:1,20:1,31:1,56:1,13:1,16:1,15:1,59:1,515:1},lKt),D(Co,"NetworkSimplexPlacer/Path",515),M(1429,1,{},HJ),l.Kb=function(e){return u(e,18).d.i.k},D(Co,"NetworkSimplexPlacer/Path/lambda$0$Type",1429),M(1430,1,Kr,VJ),l.Mb=function(e){return u(e,273)==(Un(),ha)},D(Co,"NetworkSimplexPlacer/Path/lambda$1$Type",1430),M(1431,1,{},UJ),l.Kb=function(e){return u(e,18).d.i},D(Co,"NetworkSimplexPlacer/Path/lambda$2$Type",1431),M(1432,1,Kr,uUt),l.Mb=function(e){return $Jt(Hue(u(e,10)))},D(Co,"NetworkSimplexPlacer/Path/lambda$3$Type",1432),M(1433,1,Kr,GJ),l.Mb=function(e){return Lcn(u(e,12))},D(Co,"NetworkSimplexPlacer/lambda$0$Type",1433),M(1434,1,rr,eXt),l.Cd=function(e){lin(this.a,this.b,u(e,12))},D(Co,"NetworkSimplexPlacer/lambda$1$Type",1434),M(1443,1,rr,lUt),l.Cd=function(e){F4n(this.a,u(e,18))},D(Co,"NetworkSimplexPlacer/lambda$10$Type",1443),M(1444,1,{},KJ),l.Kb=function(e){return th(),new ln(null,new gn(u(e,30).a,16))},D(Co,"NetworkSimplexPlacer/lambda$11$Type",1444),M(1445,1,rr,hUt),l.Cd=function(e){Mkn(this.a,u(e,10))},D(Co,"NetworkSimplexPlacer/lambda$12$Type",1445),M(1446,1,{},WJ),l.Kb=function(e){return th(),fe(u(e,125).e)},D(Co,"NetworkSimplexPlacer/lambda$13$Type",1446),M(1448,1,{},YJ),l.Kb=function(e){return th(),fe(u(e,125).e)},D(Co,"NetworkSimplexPlacer/lambda$15$Type",1448),M(1450,1,Kr,XJ),l.Mb=function(e){return th(),u(e,412).c.k==(Un(),Ts)},D(Co,"NetworkSimplexPlacer/lambda$17$Type",1450),M(1451,1,Kr,QJ),l.Mb=function(e){return th(),u(e,412).c.j.c.length>1},D(Co,"NetworkSimplexPlacer/lambda$18$Type",1451),M(1452,1,rr,Nee),l.Cd=function(e){p2n(this.c,this.b,this.d,this.a,u(e,412))},l.c=0,l.d=0,D(Co,"NetworkSimplexPlacer/lambda$19$Type",1452),M(1435,1,{},JJ),l.Kb=function(e){return th(),new ln(null,new gn(u(e,30).a,16))},D(Co,"NetworkSimplexPlacer/lambda$2$Type",1435),M(1453,1,rr,fUt),l.Cd=function(e){fin(this.a,u(e,12))},l.a=0,D(Co,"NetworkSimplexPlacer/lambda$20$Type",1453),M(1454,1,{},ZJ),l.Kb=function(e){return th(),new ln(null,new gn(u(e,30).a,16))},D(Co,"NetworkSimplexPlacer/lambda$21$Type",1454),M(1455,1,rr,dUt),l.Cd=function(e){Tin(this.a,u(e,10))},D(Co,"NetworkSimplexPlacer/lambda$22$Type",1455),M(1456,1,Kr,tZ),l.Mb=function(e){return $Jt(e)},D(Co,"NetworkSimplexPlacer/lambda$23$Type",1456),M(1457,1,{},Zx),l.Kb=function(e){return th(),new ln(null,new gn(u(e,30).a,16))},D(Co,"NetworkSimplexPlacer/lambda$24$Type",1457),M(1458,1,Kr,gUt),l.Mb=function(e){return Orn(this.a,u(e,10))},D(Co,"NetworkSimplexPlacer/lambda$25$Type",1458),M(1459,1,rr,nXt),l.Cd=function(e){$3n(this.a,this.b,u(e,10))},D(Co,"NetworkSimplexPlacer/lambda$26$Type",1459),M(1460,1,Kr,fR),l.Mb=function(e){return th(),!ho(u(e,18))},D(Co,"NetworkSimplexPlacer/lambda$27$Type",1460),M(1461,1,Kr,eZ),l.Mb=function(e){return th(),!ho(u(e,18))},D(Co,"NetworkSimplexPlacer/lambda$28$Type",1461),M(1462,1,{},pUt),l.Ve=function(e,n){return hin(this.a,u(e,30),u(n,30))},D(Co,"NetworkSimplexPlacer/lambda$29$Type",1462),M(1436,1,{},nZ),l.Kb=function(e){return th(),new ln(null,new Am(new nr(ir(As(u(e,10)).a.Kc(),new q))))},D(Co,"NetworkSimplexPlacer/lambda$3$Type",1436),M(1437,1,Kr,rZ),l.Mb=function(e){return th(),zfn(u(e,18))},D(Co,"NetworkSimplexPlacer/lambda$4$Type",1437),M(1438,1,rr,bUt),l.Cd=function(e){jEn(this.a,u(e,18))},D(Co,"NetworkSimplexPlacer/lambda$5$Type",1438),M(1439,1,{},dR),l.Kb=function(e){return th(),new ln(null,new gn(u(e,30).a,16))},D(Co,"NetworkSimplexPlacer/lambda$6$Type",1439),M(1440,1,Kr,iZ),l.Mb=function(e){return th(),u(e,10).k==(Un(),Ts)},D(Co,"NetworkSimplexPlacer/lambda$7$Type",1440),M(1441,1,{},tC),l.Kb=function(e){return th(),new ln(null,new Am(new nr(ir(Sg(u(e,10)).a.Kc(),new q))))},D(Co,"NetworkSimplexPlacer/lambda$8$Type",1441),M(1442,1,Kr,sZ),l.Mb=function(e){return th(),Acn(u(e,18))},D(Co,"NetworkSimplexPlacer/lambda$9$Type",1442),M(1424,1,To,Jet),l.rg=function(e){return u(K(u(e,36),(ae(),uu)),21).Hc((ko(),zh))?Y6e:null},l.Kf=function(e,n){v7n(u(e,36),n)};var Y6e;D(Co,"SimpleNodePlacer",1424),M(185,1,{185:1},p5),l.Ib=function(){var e;return e="",this.c==(qd(),Lv)?e+=Ck:this.c==Vp&&(e+=Tk),this.o==(X1(),Mw)?e+=dut:this.o==gd?e+="UP":e+="BALANCED",e},D(Gb,"BKAlignedLayout",185),M(523,22,{3:1,34:1,22:1,523:1},$wt);var Vp,Lv,X6e=Cr(Gb,"BKAlignedLayout/HDirection",523,Ir,Qln,oon),Q6e;M(522,22,{3:1,34:1,22:1,522:1},zwt);var Mw,gd,J6e=Cr(Gb,"BKAlignedLayout/VDirection",522,Ir,Jln,con),Z6e;M(1699,1,{},rXt),D(Gb,"BKAligner",1699),M(1702,1,{},ghe),D(Gb,"BKCompactor",1702),M(663,1,{663:1},aZ),l.a=0,D(Gb,"BKCompactor/ClassEdge",663),M(466,1,{466:1},oKt),l.a=null,l.b=0,D(Gb,"BKCompactor/ClassNode",466),M(1427,1,To,oXt),l.rg=function(e){return u(K(u(e,36),(ae(),uu)),21).Hc((ko(),zh))?tke:null},l.Kf=function(e,n){YCn(this,u(e,36),n)},l.d=!1;var tke;D(Gb,"BKNodePlacer",1427),M(1700,1,{},oZ),l.d=0,D(Gb,"NeighborhoodInformation",1700),M(1701,1,Xr,wUt),l.Ne=function(e,n){return E0n(this,u(e,42),u(n,42))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Gb,"NeighborhoodInformation/NeighborComparator",1701),M(823,1,{}),D(Gb,"ThresholdStrategy",823),M(1825,823,{},cKt),l.wg=function(e,n,r){return this.a.o==(X1(),gd)?ns:Vs},l.xg=function(){},D(Gb,"ThresholdStrategy/NullThresholdStrategy",1825),M(587,1,{587:1},cXt),l.c=!1,l.d=!1,D(Gb,"ThresholdStrategy/Postprocessable",587),M(1826,823,{},uKt),l.wg=function(e,n,r){var s,o,h;return o=n==r,s=this.a.a[r.p]==n,o||s?(h=e,this.a.c==(qd(),Lv)?(o&&(h=fct(this,n,!0)),!isNaN(h)&&!isFinite(h)&&s&&(h=fct(this,r,!1))):(o&&(h=fct(this,n,!0)),!isNaN(h)&&!isFinite(h)&&s&&(h=fct(this,r,!1))),h):e},l.xg=function(){for(var e,n,r,s,o;this.d.b!=0;)o=u(ghn(this.d),587),s=z0e(this,o),s.a&&(e=s.a,r=Ie(this.a.f[this.a.g[o.b.p].p]),!(!r&&!ho(e)&&e.c.i.c==e.d.i.c)&&(n=G1e(this,o),n||Frn(this.e,o)));for(;this.e.a.c.length!=0;)G1e(this,u(Gce(this.e),587))},D(Gb,"ThresholdStrategy/SimpleThresholdStrategy",1826),M(645,1,{645:1,188:1,196:1},cZ),l.dg=function(){return ece(this)},l.qg=function(){return ece(this)};var T1t;D(hlt,"EdgeRouterFactory",645),M(1485,1,To,Zet),l.rg=function(e){return akn(u(e,36))},l.Kf=function(e,n){_7n(u(e,36),n)};var eke,nke,rke,ike,ske,$At,ake,oke;D(hlt,"OrthogonalEdgeRouter",1485),M(1478,1,To,aXt),l.rg=function(e){return Avn(u(e,36))},l.Kf=function(e,n){Y9n(this,u(e,36),n)};var cke,uke,lke,hke,aN,fke;D(hlt,"PolylineEdgeRouter",1478),M(1479,1,Xd,lZ),l.Lb=function(e){return A4t(u(e,10))},l.Fb=function(e){return this===e},l.Mb=function(e){return A4t(u(e,10))},D(hlt,"PolylineEdgeRouter/1",1479),M(1872,1,Kr,hZ),l.Mb=function(e){return u(e,132).c==(E1(),n2)},D(L1,"HyperEdgeCycleDetector/lambda$0$Type",1872),M(1873,1,{},fZ),l.Ze=function(e){return u(e,132).d},D(L1,"HyperEdgeCycleDetector/lambda$1$Type",1873),M(1874,1,Kr,dZ),l.Mb=function(e){return u(e,132).c==(E1(),n2)},D(L1,"HyperEdgeCycleDetector/lambda$2$Type",1874),M(1875,1,{},gZ),l.Ze=function(e){return u(e,132).d},D(L1,"HyperEdgeCycleDetector/lambda$3$Type",1875),M(1876,1,{},t6),l.Ze=function(e){return u(e,132).d},D(L1,"HyperEdgeCycleDetector/lambda$4$Type",1876),M(1877,1,{},uZ),l.Ze=function(e){return u(e,132).d},D(L1,"HyperEdgeCycleDetector/lambda$5$Type",1877),M(118,1,{34:1,118:1},YI),l.Fd=function(e){return Inn(this,u(e,118))},l.Fb=function(e){var n;return At(e,118)?(n=u(e,118),this.g==n.g):!1},l.Hb=function(){return this.g},l.Ib=function(){var e,n,r,s;for(e=new Jl("{"),s=new J(this.n);s.a"+this.b+" ("+Qin(this.c)+")"},l.d=0,D(L1,"HyperEdgeSegmentDependency",132),M(528,22,{3:1,34:1,22:1,528:1},qwt);var n2,F3,dke=Cr(L1,"HyperEdgeSegmentDependency/DependencyType",528,Ir,Zln,uon),gke;M(1878,1,{},mUt),D(L1,"HyperEdgeSegmentSplitter",1878),M(1879,1,{},lWt),l.a=0,l.b=0,D(L1,"HyperEdgeSegmentSplitter/AreaRating",1879),M(339,1,{339:1},fit),l.a=0,l.b=0,l.c=0,D(L1,"HyperEdgeSegmentSplitter/FreeArea",339),M(1880,1,Xr,pZ),l.Ne=function(e,n){return Qsn(u(e,118),u(n,118))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(L1,"HyperEdgeSegmentSplitter/lambda$0$Type",1880),M(1881,1,rr,Fee),l.Cd=function(e){C1n(this.a,this.d,this.c,this.b,u(e,118))},l.b=0,D(L1,"HyperEdgeSegmentSplitter/lambda$1$Type",1881),M(1882,1,{},bZ),l.Kb=function(e){return new ln(null,new gn(u(e,118).e,16))},D(L1,"HyperEdgeSegmentSplitter/lambda$2$Type",1882),M(1883,1,{},wZ),l.Kb=function(e){return new ln(null,new gn(u(e,118).j,16))},D(L1,"HyperEdgeSegmentSplitter/lambda$3$Type",1883),M(1884,1,{},mZ),l.Ye=function(e){return Rt(Ht(e))},D(L1,"HyperEdgeSegmentSplitter/lambda$4$Type",1884),M(664,1,{},Bit),l.a=0,l.b=0,l.c=0,D(L1,"OrthogonalRoutingGenerator",664),M(1703,1,{},vZ),l.Kb=function(e){return new ln(null,new gn(u(e,118).e,16))},D(L1,"OrthogonalRoutingGenerator/lambda$0$Type",1703),M(1704,1,{},yZ),l.Kb=function(e){return new ln(null,new gn(u(e,118).j,16))},D(L1,"OrthogonalRoutingGenerator/lambda$1$Type",1704),M(670,1,{}),D(flt,"BaseRoutingDirectionStrategy",670),M(1870,670,{},dKt),l.yg=function(e,n,r){var s,o,h,d,m,k,T,A,N,j,U,W,tt;if(!(e.r&&!e.q))for(A=n+e.o*r,T=new J(e.n);T.aJd&&(h=A,o=e,s=new se(N,h),Zr(d.a,s),tv(this,d,o,s,!1),j=e.r,j&&(U=Rt(Ht(Nh(j.e,0))),s=new se(U,h),Zr(d.a,s),tv(this,d,o,s,!1),h=n+j.o*r,o=j,s=new se(U,h),Zr(d.a,s),tv(this,d,o,s,!1)),s=new se(tt,h),Zr(d.a,s),tv(this,d,o,s,!1)))},l.zg=function(e){return e.i.n.a+e.n.a+e.a.a},l.Ag=function(){return ve(),vr},l.Bg=function(){return ve(),Hn},D(flt,"NorthToSouthRoutingStrategy",1870),M(1871,670,{},gKt),l.yg=function(e,n,r){var s,o,h,d,m,k,T,A,N,j,U,W,tt;if(!(e.r&&!e.q))for(A=n-e.o*r,T=new J(e.n);T.aJd&&(h=A,o=e,s=new se(N,h),Zr(d.a,s),tv(this,d,o,s,!1),j=e.r,j&&(U=Rt(Ht(Nh(j.e,0))),s=new se(U,h),Zr(d.a,s),tv(this,d,o,s,!1),h=n-j.o*r,o=j,s=new se(U,h),Zr(d.a,s),tv(this,d,o,s,!1)),s=new se(tt,h),Zr(d.a,s),tv(this,d,o,s,!1)))},l.zg=function(e){return e.i.n.a+e.n.a+e.a.a},l.Ag=function(){return ve(),Hn},l.Bg=function(){return ve(),vr},D(flt,"SouthToNorthRoutingStrategy",1871),M(1869,670,{},pKt),l.yg=function(e,n,r){var s,o,h,d,m,k,T,A,N,j,U,W,tt;if(!(e.r&&!e.q))for(A=n+e.o*r,T=new J(e.n);T.aJd&&(h=A,o=e,s=new se(h,N),Zr(d.a,s),tv(this,d,o,s,!0),j=e.r,j&&(U=Rt(Ht(Nh(j.e,0))),s=new se(h,U),Zr(d.a,s),tv(this,d,o,s,!0),h=n+j.o*r,o=j,s=new se(h,U),Zr(d.a,s),tv(this,d,o,s,!0)),s=new se(h,tt),Zr(d.a,s),tv(this,d,o,s,!0)))},l.zg=function(e){return e.i.n.b+e.n.b+e.a.b},l.Ag=function(){return ve(),Jn},l.Bg=function(){return ve(),Gn},D(flt,"WestToEastRoutingStrategy",1869),M(828,1,{},Ckt),l.Ib=function(){return Rb(this.a)},l.b=0,l.c=!1,l.d=!1,l.f=0,D(f3,"NubSpline",828),M(418,1,{418:1},Cde,gne),D(f3,"NubSpline/PolarCP",418),M(1480,1,To,ahe),l.rg=function(e){return wyn(u(e,36))},l.Kf=function(e,n){gCn(this,u(e,36),n)};var pke,bke,wke,mke,vke;D(f3,"SplineEdgeRouter",1480),M(274,1,{274:1},gq),l.Ib=function(){return this.a+" ->("+this.c+") "+this.b},l.c=0,D(f3,"SplineEdgeRouter/Dependency",274),M(464,22,{3:1,34:1,22:1,464:1},Hwt);var r2,X5,yke=Cr(f3,"SplineEdgeRouter/SideToProcess",464,Ir,shn,lon),xke;M(1481,1,Kr,xZ),l.Mb=function(e){return yS(),!u(e,131).o},D(f3,"SplineEdgeRouter/lambda$0$Type",1481),M(1482,1,{},kZ),l.Ze=function(e){return yS(),u(e,131).v+1},D(f3,"SplineEdgeRouter/lambda$1$Type",1482),M(1483,1,rr,uXt),l.Cd=function(e){Icn(this.a,this.b,u(e,42))},D(f3,"SplineEdgeRouter/lambda$2$Type",1483),M(1484,1,rr,lXt),l.Cd=function(e){Ocn(this.a,this.b,u(e,42))},D(f3,"SplineEdgeRouter/lambda$3$Type",1484),M(131,1,{34:1,131:1},Rfe,Dkt),l.Fd=function(e){return Nnn(this,u(e,131))},l.b=0,l.e=!1,l.f=0,l.g=0,l.j=!1,l.k=!1,l.n=0,l.o=!1,l.p=!1,l.q=!1,l.s=0,l.u=0,l.v=0,l.F=0,D(f3,"SplineSegment",131),M(467,1,{467:1},eC),l.a=0,l.b=!1,l.c=!1,l.d=!1,l.e=!1,l.f=0,D(f3,"SplineSegment/EdgeInformation",467),M(1198,1,{},EZ),D(Fg,A8t,1198),M(1199,1,Xr,TZ),l.Ne=function(e,n){return Z4n(u(e,121),u(n,121))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Fg,Nbe,1199),M(1197,1,{},_Wt),D(Fg,"MrTree",1197),M(405,22,{3:1,34:1,22:1,405:1,188:1,196:1},B$),l.dg=function(){return a1e(this)},l.qg=function(){return a1e(this)};var tK,RA,jA,$A,zAt=Cr(Fg,"TreeLayoutPhases",405,Ir,c1n,hon),kke;M(1112,205,fw,tZt),l.rf=function(e,n){var r,s,o,h,d,m,k,T;for(Ie(De(ne(e,(xc(),fLt))))||tq((r=new iE((xy(),new my(e))),r)),d=n.eh(plt),d.Ug("build tGraph",1),m=(k=new MI,Yo(k,e),Zt(k,(zi(),qA),e),T=new Er,G8n(e,k,T),hEn(e,k,T),k),d.Vg(),d=n.eh(plt),d.Ug("Split graph",1),h=J8n(this.a,m),d.Vg(),o=new J(h);o.a"+K2(this.c):"e_"+Hi(this)},D(GS,"TEdge",65),M(121,137,{3:1,121:1,96:1,137:1},MI),l.Ib=function(){var e,n,r,s,o;for(o=null,s=_r(this.b,0);s.b!=s.d.c;)r=u(Tr(s),39),o+=(r.c==null||r.c.length==0?"n_"+r.g:"n_"+r.c)+` +`;for(n=_r(this.a,0);n.b!=n.d.c;)e=u(Tr(n),65),o+=(e.b&&e.c?K2(e.b)+"->"+K2(e.c):"e_"+Hi(e))+` +`;return o};var M_n=D(GS,"TGraph",121);M(643,508,{3:1,508:1,643:1,96:1,137:1}),D(GS,"TShape",643),M(39,643,{3:1,508:1,39:1,643:1,96:1,137:1},pat),l.Ib=function(){return K2(this)};var eK=D(GS,"TNode",39);M(236,1,O0,hg),l.Jc=function(e){Oa(this,e)},l.Kc=function(){var e;return e=_r(this.a.d,0),new A4(e)},D(GS,"TNode/2",236),M(329,1,ba,A4),l.Nb=function(e){Da(this,e)},l.Pb=function(){return u(Tr(this.a),65).c},l.Ob=function(){return _D(this.a)},l.Qb=function(){Hst(this.a)},D(GS,"TNode/2/1",329),M(1923,1,Vi,e6),l.Kf=function(e,n){VCn(this,u(e,121),n)},D(au,"CompactionProcessor",1923),M(1924,1,Xr,EUt),l.Ne=function(e,n){return Dgn(this.a,u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(au,"CompactionProcessor/lambda$0$Type",1924),M(1925,1,Kr,fXt),l.Mb=function(e){return Bln(this.b,this.a,u(e,42))},l.a=0,l.b=0,D(au,"CompactionProcessor/lambda$1$Type",1925),M(1934,1,Xr,gR),l.Ne=function(e,n){return Aun(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(au,"CompactionProcessor/lambda$10$Type",1934),M(1935,1,Xr,DZ),l.Ne=function(e,n){return qin(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(au,"CompactionProcessor/lambda$11$Type",1935),M(1936,1,Xr,UM),l.Ne=function(e,n){return Lun(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(au,"CompactionProcessor/lambda$12$Type",1936),M(1926,1,Kr,TUt),l.Mb=function(e){return Cin(this.a,u(e,42))},l.a=0,D(au,"CompactionProcessor/lambda$2$Type",1926),M(1927,1,Kr,CUt),l.Mb=function(e){return _in(this.a,u(e,42))},l.a=0,D(au,"CompactionProcessor/lambda$3$Type",1927),M(1928,1,Kr,IZ),l.Mb=function(e){return u(e,39).c.indexOf(QV)==-1},D(au,"CompactionProcessor/lambda$4$Type",1928),M(1929,1,{},_Ut),l.Kb=function(e){return jfn(this.a,u(e,39))},l.a=0,D(au,"CompactionProcessor/lambda$5$Type",1929),M(1930,1,{},SUt),l.Kb=function(e){return Kdn(this.a,u(e,39))},l.a=0,D(au,"CompactionProcessor/lambda$6$Type",1930),M(1931,1,Xr,AUt),l.Ne=function(e,n){return idn(this.a,u(e,240),u(n,240))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(au,"CompactionProcessor/lambda$7$Type",1931),M(1932,1,Xr,LUt),l.Ne=function(e,n){return sdn(this.a,u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(au,"CompactionProcessor/lambda$8$Type",1932),M(1933,1,Xr,OZ),l.Ne=function(e,n){return Hin(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(au,"CompactionProcessor/lambda$9$Type",1933),M(1921,1,Vi,PZ),l.Kf=function(e,n){$kn(u(e,121),n)},D(au,"DirectionProcessor",1921),M(1913,1,Vi,ZJt),l.Kf=function(e,n){uEn(this,u(e,121),n)},D(au,"FanProcessor",1913),M(1937,1,Vi,NZ),l.Kf=function(e,n){Akn(u(e,121),n)},D(au,"GraphBoundsProcessor",1937),M(1938,1,{},FZ),l.Ye=function(e){return u(e,39).e.a},D(au,"GraphBoundsProcessor/lambda$0$Type",1938),M(1939,1,{},BZ),l.Ye=function(e){return u(e,39).e.b},D(au,"GraphBoundsProcessor/lambda$1$Type",1939),M(1940,1,{},RZ),l.Ye=function(e){return crn(u(e,39))},D(au,"GraphBoundsProcessor/lambda$2$Type",1940),M(1941,1,{},pR),l.Ye=function(e){return orn(u(e,39))},D(au,"GraphBoundsProcessor/lambda$3$Type",1941),M(262,22,{3:1,34:1,22:1,262:1,196:1},wm),l.dg=function(){switch(this.g){case 0:return new LKt;case 1:return new ZJt;case 2:return new AKt;case 3:return new mR;case 4:return new bR;case 8:return new jZ;case 5:return new PZ;case 6:return new zZ;case 7:return new e6;case 9:return new NZ;case 10:return new qZ;default:throw nt(new zn(Dut+(this.f!=null?this.f:""+this.g)))}};var qAt,HAt,VAt,UAt,GAt,KAt,WAt,YAt,XAt,QAt,C1t,D_n=Cr(au,Iut,262,Ir,Koe,fon),Eke;M(1920,1,Vi,jZ),l.Kf=function(e,n){z9n(u(e,121),n)},D(au,"LevelCoordinatesProcessor",1920),M(1918,1,Vi,bR),l.Kf=function(e,n){c6n(this,u(e,121),n)},l.a=0,D(au,"LevelHeightProcessor",1918),M(1919,1,O0,$Z),l.Jc=function(e){Oa(this,e)},l.Kc=function(){return wn(),wE(),pT},D(au,"LevelHeightProcessor/1",1919),M(1914,1,Vi,AKt),l.Kf=function(e,n){kkn(this,u(e,121),n)},D(au,"LevelProcessor",1914),M(1915,1,Kr,wR),l.Mb=function(e){return Ie(De(K(u(e,39),(zi(),i2))))},D(au,"LevelProcessor/lambda$0$Type",1915),M(1916,1,Vi,mR),l.Kf=function(e,n){s4n(this,u(e,121),n)},l.a=0,D(au,"NeighborsProcessor",1916),M(1917,1,O0,vR),l.Jc=function(e){Oa(this,e)},l.Kc=function(){return wn(),wE(),pT},D(au,"NeighborsProcessor/1",1917),M(1922,1,Vi,zZ),l.Kf=function(e,n){cEn(this,u(e,121),n)},l.a=0,D(au,"NodePositionProcessor",1922),M(1912,1,Vi,LKt),l.Kf=function(e,n){H7n(this,u(e,121),n)},D(au,"RootProcessor",1912),M(1942,1,Vi,qZ),l.Kf=function(e,n){jwn(u(e,121),n)},D(au,"Untreeifyer",1942),M(392,22,{3:1,34:1,22:1,392:1},Srt);var oN,_1t,JAt,ZAt=Cr(vP,"EdgeRoutingMode",392,Ir,efn,don),Tke,cN,RT,S1t,tLt,eLt,A1t,L1t,nLt,M1t,rLt,D1t,zA,I1t,nK,rK,Xf,O1,jT,qA,HA,Up,iLt,Cke,O1t,i2,uN,lN;M(862,1,af,f6),l.hf=function(e){Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,h7t),""),S2e),"Turns on Tree compaction which decreases the size of the whole tree by placing nodes of multiple levels in one large level"),(Nn(),!1)),(Pp(),aa)),Es),Ze((A1(),_n))))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,f7t),""),"Edge End Texture Length"),"Should be set to the length of the texture at the end of an edge. This value can be used to improve the Edge Routing."),7),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,d7t),""),"Tree Level"),"The index for the tree level the node is in"),fe(0)),ic),Na),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,g7t),""),S2e),"When set to a positive number this option will force the algorithm to place the node to the specified position within the trees layer if weighting is set to constraint"),fe(-1)),ic),Na),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,p7t),""),"Weighting of Nodes"),"Which weighting to use when computing a node order."),oLt),rs),vLt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,b7t),""),"Edge Routing Mode"),"Chooses an Edge Routing algorithm."),sLt),rs),ZAt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,w7t),""),"Search Order"),"Which search order to use when computing a spanning tree."),aLt),rs),xLt),Ze(_n)))),bpe((new Yh,e))};var _ke,Ske,Ake,sLt,Lke,Mke,aLt,Dke,Ike,oLt;D(vP,"MrTreeMetaDataProvider",862),M(1006,1,af,Yh),l.hf=function(e){bpe(e)};var Oke,cLt,uLt,Mv,lLt,hLt,P1t,Pke,Nke,Fke,Bke,Rke,jke,$ke,fLt,dLt,gLt,zke,Q5,iK,pLt,qke,bLt,N1t,Hke,Vke,Uke,wLt,Gke,o0,mLt;D(vP,"MrTreeOptions",1006),M(1007,1,{},yR),l.sf=function(){var e;return e=new tZt,e},l.tf=function(e){},D(vP,"MrTreeOptions/MrtreeFactory",1007),M(353,22,{3:1,34:1,22:1,353:1},R$);var F1t,sK,B1t,R1t,vLt=Cr(vP,"OrderWeighting",353,Ir,u1n,gon),Kke;M(433,22,{3:1,34:1,22:1,433:1},Vwt);var yLt,j1t,xLt=Cr(vP,"TreeifyingOrder",433,Ir,rhn,pon),Wke;M(1486,1,To,ent),l.rg=function(e){return u(e,121),Yke},l.Kf=function(e,n){vgn(this,u(e,121),n)};var Yke;D("org.eclipse.elk.alg.mrtree.p1treeify","DFSTreeifyer",1486),M(1487,1,To,tE),l.rg=function(e){return u(e,121),Xke},l.Kf=function(e,n){_kn(this,u(e,121),n)};var Xke;D(nT,"NodeOrderer",1487),M(1494,1,{},d2t),l.td=function(e){return ate(e)},D(nT,"NodeOrderer/0methodref$lambda$6$Type",1494),M(1488,1,Kr,ett),l.Mb=function(e){return rk(),Ie(De(K(u(e,39),(zi(),i2))))},D(nT,"NodeOrderer/lambda$0$Type",1488),M(1489,1,Kr,ntt),l.Mb=function(e){return rk(),u(K(u(e,39),(xc(),Q5)),17).a<0},D(nT,"NodeOrderer/lambda$1$Type",1489),M(1490,1,Kr,DUt),l.Mb=function(e){return W0n(this.a,u(e,39))},D(nT,"NodeOrderer/lambda$2$Type",1490),M(1491,1,Kr,MUt),l.Mb=function(e){return qfn(this.a,u(e,39))},D(nT,"NodeOrderer/lambda$3$Type",1491),M(1492,1,Xr,rtt),l.Ne=function(e,n){return w0n(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(nT,"NodeOrderer/lambda$4$Type",1492),M(1493,1,Kr,itt),l.Mb=function(e){return rk(),u(K(u(e,39),(zi(),L1t)),17).a!=0},D(nT,"NodeOrderer/lambda$5$Type",1493),M(1495,1,To,Z8),l.rg=function(e){return u(e,121),Qke},l.Kf=function(e,n){N8n(this,u(e,121),n)},l.b=0;var Qke;D("org.eclipse.elk.alg.mrtree.p3place","NodePlacer",1495),M(1496,1,To,tnt),l.rg=function(e){return u(e,121),Jke},l.Kf=function(e,n){b8n(u(e,121),n)};var Jke,I_n=D(Wl,"EdgeRouter",1496);M(1498,1,Xr,ttt),l.Ne=function(e,n){return Bc(u(e,17).a,u(n,17).a)},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"EdgeRouter/0methodref$compare$Type",1498),M(1503,1,{},xR),l.Ye=function(e){return Rt(Ht(e))},D(Wl,"EdgeRouter/1methodref$doubleValue$Type",1503),M(1505,1,Xr,VZ),l.Ne=function(e,n){return ji(Rt(Ht(e)),Rt(Ht(n)))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"EdgeRouter/2methodref$compare$Type",1505),M(1507,1,Xr,UZ),l.Ne=function(e,n){return ji(Rt(Ht(e)),Rt(Ht(n)))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"EdgeRouter/3methodref$compare$Type",1507),M(1509,1,{},HZ),l.Ye=function(e){return Rt(Ht(e))},D(Wl,"EdgeRouter/4methodref$doubleValue$Type",1509),M(1511,1,Xr,GM),l.Ne=function(e,n){return ji(Rt(Ht(e)),Rt(Ht(n)))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"EdgeRouter/5methodref$compare$Type",1511),M(1513,1,Xr,GZ),l.Ne=function(e,n){return ji(Rt(Ht(e)),Rt(Ht(n)))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"EdgeRouter/6methodref$compare$Type",1513),M(1497,1,{},KZ),l.Kb=function(e){return Eg(),u(K(u(e,39),(xc(),o0)),17)},D(Wl,"EdgeRouter/lambda$0$Type",1497),M(1508,1,{},WZ),l.Kb=function(e){return nsn(u(e,39))},D(Wl,"EdgeRouter/lambda$11$Type",1508),M(1510,1,{},dXt),l.Kb=function(e){return Mcn(this.b,this.a,u(e,39))},l.a=0,l.b=0,D(Wl,"EdgeRouter/lambda$13$Type",1510),M(1512,1,{},gXt),l.Kb=function(e){return rsn(this.b,this.a,u(e,39))},l.a=0,l.b=0,D(Wl,"EdgeRouter/lambda$15$Type",1512),M(1514,1,Xr,YZ),l.Ne=function(e,n){return pwn(u(e,65),u(n,65))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"EdgeRouter/lambda$17$Type",1514),M(1515,1,Xr,XZ),l.Ne=function(e,n){return bwn(u(e,65),u(n,65))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"EdgeRouter/lambda$18$Type",1515),M(1516,1,Xr,kR),l.Ne=function(e,n){return mwn(u(e,65),u(n,65))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"EdgeRouter/lambda$19$Type",1516),M(1499,1,Kr,IUt),l.Mb=function(e){return vhn(this.a,u(e,39))},l.a=0,D(Wl,"EdgeRouter/lambda$2$Type",1499),M(1517,1,Xr,QZ),l.Ne=function(e,n){return wwn(u(e,65),u(n,65))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"EdgeRouter/lambda$20$Type",1517),M(1500,1,Xr,JZ),l.Ne=function(e,n){return bcn(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"EdgeRouter/lambda$3$Type",1500),M(1501,1,Xr,ZZ),l.Ne=function(e,n){return wcn(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"EdgeRouter/lambda$4$Type",1501),M(1502,1,{},stt),l.Kb=function(e){return isn(u(e,39))},D(Wl,"EdgeRouter/lambda$5$Type",1502),M(1504,1,{},pXt),l.Kb=function(e){return Dcn(this.b,this.a,u(e,39))},l.a=0,l.b=0,D(Wl,"EdgeRouter/lambda$7$Type",1504),M(1506,1,{},bXt),l.Kb=function(e){return ssn(this.b,this.a,u(e,39))},l.a=0,l.b=0,D(Wl,"EdgeRouter/lambda$9$Type",1506),M(675,1,{675:1},Wle),l.e=0,l.f=!1,l.g=!1,D(Wl,"MultiLevelEdgeNodeNodeGap",675),M(1943,1,Xr,att),l.Ne=function(e,n){return Lhn(u(e,240),u(n,240))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"MultiLevelEdgeNodeNodeGap/lambda$0$Type",1943),M(1944,1,Xr,ott),l.Ne=function(e,n){return Mhn(u(e,240),u(n,240))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Wl,"MultiLevelEdgeNodeNodeGap/lambda$1$Type",1944);var J5;M(500,22,{3:1,34:1,22:1,500:1,188:1,196:1},Uwt),l.dg=function(){return Pue(this)},l.qg=function(){return Pue(this)};var aK,Z5,kLt=Cr(m7t,"RadialLayoutPhases",500,Ir,ahn,bon),Zke;M(1113,205,fw,CWt),l.rf=function(e,n){var r,s,o,h,d,m;if(r=yde(this,e),n.Ug("Radial layout",r.c.length),Ie(De(ne(e,($b(),OLt))))||tq((s=new iE((xy(),new my(e))),s)),m=yyn(e),Oi(e,(G4(),J5),m),!m)throw nt(new zn("The given graph is not a tree!"));for(o=Rt(Ht(ne(e,uK))),o==0&&(o=t1e(e)),Oi(e,uK,o),d=new J(yde(this,e));d.a=3)for(ct=u(Lt(W,0),27),Tt=u(Lt(W,1),27),o=0;o+2=ct.f+Tt.f+T||Tt.f>=tt.f+ct.f+T){St=!0;break}else++o;else St=!0;if(!St){for(N=W.i,d=new Zn(W);d.e!=d.i.gc();)h=u(sr(d),27),Oi(h,(si(),TN),fe(N)),--N;X0e(e,new E6),n.Vg();return}for(r=(wI(this.a),x1(this.a,(gH(),fN),u(ne(e,uMt),188)),x1(this.a,lK,u(ne(e,rMt),188)),x1(this.a,Q1t,u(ne(e,aMt),188)),umt(this.a,(Kt=new Fs,ri(Kt,fN,(CH(),tdt)),ri(Kt,lK,Z1t),Ie(De(ne(e,tMt)))&&ri(Kt,fN,J1t),Kt)),VO(this.a,e)),k=1/r.c.length,U=new J(r);U.a0&&iue((qn(n-1,e.length),e.charCodeAt(n-1)),Gbe);)--n;if(s>=n)throw nt(new zn("The given string does not contain any numbers."));if(o=s3((Sa(s,n,e.length),e.substr(s,n-s)),`,|;|\r| +`),o.length!=2)throw nt(new zn("Exactly two numbers are expected, "+o.length+" were found."));try{this.a=Jy(Zy(o[0])),this.b=Jy(Zy(o[1]))}catch(h){throw h=is(h),At(h,130)?(r=h,nt(new zn(Kbe+r))):nt(h)}},l.Ib=function(){return"("+this.a+","+this.b+")"},l.a=0,l.b=0;var ua=D(gP,"KVector",8);M(75,67,{3:1,4:1,20:1,31:1,56:1,16:1,67:1,15:1,75:1,423:1},Xu,h$,EJt),l.Pc=function(){return Fpn(this)},l.cg=function(e){var n,r,s,o,h,d;s=s3(e,`,|;|\\(|\\)|\\[|\\]|\\{|\\}| | | +`),Zl(this);try{for(r=0,h=0,o=0,d=0;r0&&(h%2==0?o=Jy(s[r]):d=Jy(s[r]),h>0&&h%2!=0&&Zr(this,new se(o,d)),++h),++r}catch(m){throw m=is(m),At(m,130)?(n=m,nt(new zn("The given string does not match the expected format for vectors."+n))):nt(m)}},l.Ib=function(){var e,n,r;for(e=new Jl("("),n=_r(this,0);n.b!=n.d.c;)r=u(Tr(n),8),ni(e,r.a+","+r.b),n.b!=n.d.c&&(e.a+="; ");return(e.a+=")",e).a};var GMt=D(gP,"KVectorChain",75);M(255,22,{3:1,34:1,22:1,255:1},e_);var vdt,yK,xK,wN,mN,kK,KMt=Cr(Pl,"Alignment",255,Ir,Odn,$on),OEe;M(991,1,af,Sj),l.hf=function(e){O0e(e)};var WMt,ydt,PEe,YMt,XMt,NEe,QMt,FEe,BEe,JMt,ZMt,REe;D(Pl,"BoxLayouterOptions",991),M(992,1,{},OR),l.sf=function(){var e;return e=new H8,e},l.tf=function(e){},D(Pl,"BoxLayouterOptions/BoxFactory",992),M(297,22,{3:1,34:1,22:1,297:1},n_);var JA,xdt,ZA,tL,eL,kdt,Edt=Cr(Pl,"ContentAlignment",297,Ir,Pdn,zon),jEe;M(699,1,af,Aj),l.hf=function(e){Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,W2e),""),"Layout Algorithm"),"Select a specific layout algorithm."),(Pp(),ex)),Ne),Ze((A1(),_n))))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,Y2e),""),"Resolved Layout Algorithm"),"Meta data associated with the selected algorithm."),pd),N_n),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,zEt),""),"Alignment"),"Alignment of the selected node relative to other nodes; the exact meaning depends on the used algorithm."),tDt),rs),KMt),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,Sk),""),"Aspect Ratio"),"The desired aspect ratio of the drawing, that is the quotient of width by height."),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,tTt),""),"Bend Points"),"A fixed list of bend points for the edge. This is used by the 'Fixed Layout' algorithm to specify a pre-defined routing for an edge. The vector chain must include the source point, any bend points, and the target point, so it must have at least two points."),pd),GMt),Ze(c0)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,GV),""),"Content Alignment"),"Specifies how the content of a node are aligned. Each node can individually control the alignment of its contents. I.e. if a node should be aligned top left in its parent node, the parent node should specify that option."),nDt),Wk),Edt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,mP),""),"Debug Mode"),"Whether additional debug information shall be generated."),(Nn(),!1)),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,clt),""),x8t),"Overall direction of edges: horizontal (right / left) or vertical (down / up)."),rDt),rs),iL),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,wP),""),"Edge Routing"),"What kind of edge routing style should be applied for the content of a parent node. Algorithms may also set this option to single edges in order to mark them as splines. The bend point list of edges with this option set to SPLINES must be interpreted as control points for a piecewise cubic spline."),aDt),rs),Bdt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,J7t),""),"Expand Nodes"),"If active, nodes are expanded to fill the area of their parent."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,UV),""),"Hierarchy Handling"),"Determines whether separate layout runs are triggered for different compound nodes in a hierarchical graph. Setting a node's hierarchy handling to `INCLUDE_CHILDREN` will lay out that node and all of its descendants in a single layout run, until a descendant is encountered which has its hierarchy handling set to `SEPARATE_CHILDREN`. In general, `SEPARATE_CHILDREN` will ensure that a new layout run is triggered for a node with that setting. Including multiple levels of hierarchy in a single layout run may allow cross-hierarchical edges to be laid out properly. If the root node is set to `INHERIT` (or not set at all), the default behavior is `SEPARATE_CHILDREN`."),uDt),rs),YDt),Gi(_n,ot(st(H0,1),te,170,0,[Js]))))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,av),""),"Padding"),"The padding to be left to a parent element's border when placing child elements. This can also serve as an output option of a layout algorithm if node size calculation is setup appropriately."),mDt),pd),mCt),Gi(_n,ot(st(H0,1),te,170,0,[Js]))))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,jS),""),"Interactive"),"Whether the algorithm should be run in interactive mode for the content of a parent node. What this means exactly depends on how the specific algorithm interprets this option. Usually in the interactive mode algorithms try to modify the current layout as little as possible."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,WV),""),"interactive Layout"),"Whether the graph should be changeable interactively and by setting constraints"),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,$S),""),"Omit Node Micro Layout"),"Node micro layout comprises the computation of node dimensions (if requested), the placement of ports and their labels, and the placement of node labels. The functionality is implemented independent of any specific layout algorithm and shouldn't have any negative impact on the layout algorithm's performance itself. Yet, if any unforeseen behavior occurs, this option allows to deactivate the micro layout."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Aut),""),"Port Constraints"),"Defines constraints of the position of the ports of a node."),EDt),rs),JDt),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,KV),""),"Position"),"The position of a node, port, or label. This is used by the 'Fixed Layout' algorithm to specify a pre-defined position."),pd),ua),Gi(Js,ot(st(H0,1),te,170,0,[Dw,Gp]))))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,cP),""),"Priority"),"Defines the priority of an object; its meaning depends on the specific layout algorithm and the context where it is used."),ic),Na),Gi(Js,ot(st(H0,1),te,170,0,[c0]))))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,SV),""),"Randomization Seed"),"Seed used for pseudo-random number generators to control the layout algorithm. If the value is 0, the seed shall be determined pseudo-randomly (e.g. from the system time)."),ic),Na),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,RS),""),"Separate Connected Components"),"Whether each connected component should be processed separately."),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,JEt),""),"Junction Points"),"This option is not used as option, but as output of the layout algorithms. It is attached to edges and determines the points where junction symbols should be drawn in order to represent hyperedges with orthogonal routing. Whether such points are computed depends on the chosen layout algorithm and edge routing style. The points are put into the vector chain with no specific order."),lDt),pd),GMt),Ze(c0)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,e7t),""),"Comment Box"),"Whether the node should be regarded as a comment box instead of a regular node. In that case its placement should be similar to how labels are handled. Any edges incident to a comment box specify to which graph elements the comment is related."),!1),aa),Es),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,n7t),""),"Hypernode"),"Whether the node should be handled as a hypernode."),!1),aa),Es),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,c_n),""),"Label Manager"),"Label managers can shorten labels upon a layout algorithm's request."),pd),$_n),Gi(_n,ot(st(H0,1),te,170,0,[Gp]))))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,i7t),""),"Margins"),"Margins define additional space around the actual bounds of a graph element. For instance, ports or labels being placed on the outside of a node's border might introduce such a margin. The margin is used to guarantee non-overlap of other graph elements with those ports or labels."),hDt),pd),wCt),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,jEt),""),"No Layout"),"No layout is done for the associated element. This is used to mark parts of a diagram to avoid their inclusion in the layout graph, or to mark parts of the layout graph to prevent layout engines from processing them. If you wish to exclude the contents of a compound node from automatic layout, while the node itself is still considered on its own layer, use the 'Fixed Layout' algorithm for that node."),!1),aa),Es),Gi(Js,ot(st(H0,1),te,170,0,[c0,Dw,Gp]))))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,X2e),""),"Scale Factor"),"The scaling factor to be applied to the corresponding node in recursive layout. It causes the corresponding node's size to be adjusted, and its ports and labels to be sized and placed accordingly after the layout of that node has been determined (and before the node itself and its siblings are arranged). The scaling is not reverted afterwards, so the resulting layout graph contains the adjusted size and position data. This option is currently not supported if 'Layout Hierarchy' is set."),1),Ga),zs),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,Q2e),""),"Child Area Width"),"The width of the area occupied by the laid out children of a node."),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,J2e),""),"Child Area Height"),"The height of the area occupied by the laid out children of a node."),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,uP),""),H2e),"Turns topdown layout on and off. If this option is enabled, hierarchical layout will be computed first for the root node and then for its children recursively. Layouts are then scaled down to fit the area provided by their parents. Graphs must follow a certain structure for topdown layout to work properly. {@link TopdownNodeTypes.PARALLEL_NODE} nodes must have children of type {@link TopdownNodeTypes.HIERARCHICAL_NODE} and must define {@link topdown.hierarchicalNodeWidth} and {@link topdown.hierarchicalNodeAspectRatio} for their children. Furthermore they need to be laid out using an algorithm that is a {@link TopdownLayoutProvider}. Hierarchical nodes can also be parents of other hierarchical nodes and can optionally use a {@link TopdownSizeApproximator} to dynamically set sizes during topdown layout. In this case {@link topdown.hierarchicalNodeWidth} and {@link topdown.hierarchicalNodeAspectRatio} should be set on the node itself rather than the parent. The values are then used by the size approximator as base values. Hierarchical nodes require the layout option {@link nodeSize.fixedGraphSize} to be true to prevent the algorithm used there from resizing the hierarchical node. This option is not supported if 'Hierarchy Handling' is set to 'INCLUDE_CHILDREN'"),!1),aa),Es),Ze(_n)))),Bs(e,uP,ov,null),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Z2e),""),"Animate"),"Whether the shift from the old layout to the new computed layout shall be animated."),!0),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,twe),""),"Animation Time Factor"),"Factor for computation of animation time. The higher the value, the longer the animation time. If the value is 0, the resulting time is always equal to the minimum defined by 'Minimal Animation Time'."),fe(100)),ic),Na),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,ewe),""),"Layout Ancestors"),"Whether the hierarchy levels on the path from the selected element to the root of the diagram shall be included in the layout process."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,nwe),""),"Maximal Animation Time"),"The maximal time for animations, in milliseconds."),fe(4e3)),ic),Na),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,rwe),""),"Minimal Animation Time"),"The minimal time for animations, in milliseconds."),fe(400)),ic),Na),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,iwe),""),"Progress Bar"),"Whether a progress bar shall be displayed during layout computations."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,swe),""),"Validate Graph"),"Whether the graph shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,awe),""),"Validate Options"),"Whether layout options shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!0),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,owe),""),"Zoom to Fit"),"Whether the zoom level shall be set to view the whole diagram after layout."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Z7t),"box"),"Box Layout Mode"),"Configures the packing mode used by the {@link BoxLayoutProvider}. If SIMPLE is not required (neither priorities are used nor the interactive mode), GROUP_DEC can improve the packing and decrease the area. GROUP_MIXED and GROUP_INC may, in very specific scenarios, work better."),eDt),rs),cIt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,AEt),ld),"Comment Comment Spacing"),"Spacing to be preserved between a comment box and other comment boxes connected to the same node. The space left between comment boxes of different nodes is controlled by the node-node spacing."),10),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,LEt),ld),"Comment Node Spacing"),"Spacing to be preserved between a node and its connected comment boxes. The space left between a node and the comments of another node is controlled by the node-node spacing."),10),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,xut),ld),"Components Spacing"),"Spacing to be preserved between pairs of connected components. This option is only relevant if 'separateConnectedComponents' is activated."),20),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,MEt),ld),"Edge Spacing"),"Spacing to be preserved between any two edges. Note that while this can somewhat easily be satisfied for the segments of orthogonally drawn edges, it is harder for general polylines or splines."),10),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Sut),ld),"Edge Label Spacing"),"The minimal distance to be preserved between a label and the edge it is associated with. Note that the placement of a label is influenced by the 'edgelabels.placement' option."),2),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,olt),ld),"Edge Node Spacing"),"Spacing to be preserved between nodes and edges."),10),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,DEt),ld),"Label Spacing"),"Determines the amount of space to be left between two labels of the same graph element."),0),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,PEt),ld),"Label Node Spacing"),"Spacing to be preserved between labels and the border of node they are associated with. Note that the placement of a label is influenced by the 'nodelabels.placement' option."),5),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,IEt),ld),"Horizontal spacing between Label and Port"),"Horizontal spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,OEt),ld),"Vertical spacing between Label and Port"),"Vertical spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,h3),ld),"Node Spacing"),"The minimal distance to be preserved between each two nodes."),20),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,NEt),ld),"Node Self Loop Spacing"),"Spacing to be preserved between a node and its self loops."),10),Ga),zs),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,FEt),ld),"Port Spacing"),"Spacing between pairs of ports of the same node."),10),Ga),zs),Gi(_n,ot(st(H0,1),te,170,0,[Js]))))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,BEt),ld),"Individual Spacing"),"Allows to specify individual spacing values for graph elements that shall be different from the value specified for the element's parent."),pd),_7e),Gi(Js,ot(st(H0,1),te,170,0,[c0,Dw,Gp]))))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,s7t),ld),"Additional Port Space"),"Additional space around the sets of ports on each node side. For each side of a node, this option can reserve additional space before and after the ports on each side. For example, a top spacing of 20 makes sure that the first port on the western and eastern side is 20 units away from the northern border."),PDt),pd),wCt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,llt),lwe),"Layout Partition"),"Partition to which the node belongs. This requires Layout Partitioning to be active. Nodes with lower partition IDs will appear to the left of nodes with higher partition IDs (assuming a left-to-right layout direction)."),ic),Na),Gi(_n,ot(st(H0,1),te,170,0,[Js]))))),Bs(e,llt,ult,WEe),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,ult),lwe),"Layout Partitioning"),"Whether to activate partitioned layout. This will allow to group nodes through the Layout Partition option. a pair of nodes with different partition indices is then placed such that the node with lower index is placed to the left of the other node (with left-to-right layout direction). Depending on the layout algorithm, this may only be guaranteed to work if all nodes have a layout partition configured, or at least if edges that cross partitions are not part of a partition-crossing cycle."),vDt),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,VEt),hwe),"Node Label Padding"),"Define padding for node labels that are placed inside of a node."),dDt),pd),mCt),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Z7),hwe),"Node Label Placement"),"Hints for where node labels are to be placed; if empty, the node label's position is not modified."),gDt),Wk),_o),Gi(Js,ot(st(H0,1),te,170,0,[Gp]))))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,KEt),iU),"Port Alignment"),"Defines the default port distribution for a node. May be overridden for each side individually."),xDt),rs),cL),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,WEt),iU),"Port Alignment (North)"),"Defines how ports on the northern side are placed, overriding the node's general port alignment."),rs),cL),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,YEt),iU),"Port Alignment (South)"),"Defines how ports on the southern side are placed, overriding the node's general port alignment."),rs),cL),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,XEt),iU),"Port Alignment (West)"),"Defines how ports on the western side are placed, overriding the node's general port alignment."),rs),cL),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,QEt),iU),"Port Alignment (East)"),"Defines how ports on the eastern side are placed, overriding the node's general port alignment."),rs),cL),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,T5),Ilt),"Node Size Constraints"),"What should be taken into account when calculating a node's size. Empty size constraints specify that a node's size is already fixed and should not be changed."),pDt),Wk),hL),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Ak),Ilt),"Node Size Options"),"Options modifying the behavior of the size constraints set on a node. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to no further modifications."),wDt),Wk),tIt),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,Lk),Ilt),"Node Size Minimum"),"The minimal size to which a node can be reduced."),bDt),pd),ua),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,J7),Ilt),"Fixed Graph Size"),"By default, the fixed layout provider will enlarge a graph until it is large enough to contain its children. If this option is set, it won't do so."),!1),aa),Es),Ze(_n)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,ZEt),alt),"Edge Label Placement"),"Gives a hint on where to put edge labels."),iDt),rs),BDt),Ze(Gp)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,AV),alt),"Inline Edge Labels"),"If true, an edge label is placed directly on its edge. May only apply to center edge labels. This kind of label placement is only advisable if the label's rendering is such that it is not crossed by its edge and thus stays legible."),!1),aa),Es),Ze(Gp)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,u_n),"font"),"Font Name"),"Font name used for a label."),ex),Ne),Ze(Gp)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,cwe),"font"),"Font Size"),"Font size used for a label."),ic),Na),Ze(Gp)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,r7t),Olt),"Port Anchor Offset"),"The offset to the port position where connections shall be attached."),pd),ua),Ze(Dw)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,t7t),Olt),"Port Index"),"The index of a port in the fixed order around a node. The order is assumed as clockwise, starting with the leftmost port on the top side. This option must be set if 'Port Constraints' is set to FIXED_ORDER and no specific positions are given for the ports. Additionally, the option 'Port Side' must be defined in this case."),ic),Na),Ze(Dw)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,$Et),Olt),"Port Side"),"The side of a node on which a port is situated. This option must be set if 'Port Constraints' is set to FIXED_SIDE or FIXED_ORDER and no specific positions are given for the ports."),_Dt),rs),go),Ze(Dw)))),Xe(e,new qe(We(Ke(Ye(He(Ge(Ve(Ue(new je,REt),Olt),"Port Border Offset"),"The offset of ports on the node border. With a positive offset the port is moved outside of the node, while with a negative offset the port is moved towards the inside. An offset of 0 means that the port is placed directly on the node border, i.e. if the port side is north, the port's south border touches the nodes's north border; if the port side is east, the port's west border touches the nodes's east border; if the port side is south, the port's north border touches the node's south border; if the port side is west, the port's east border touches the node's west border."),Ga),zs),Ze(Dw)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,tT),rTt),"Port Label Placement"),"Decides on a placement method for port labels; if empty, the node label's position is not modified."),TDt),Wk),AK),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,UEt),rTt),"Port Labels Next to Port"),"Use 'portLabels.placement': NEXT_TO_PORT_OF_POSSIBLE."),!1),aa),Es),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,GEt),rTt),"Treat Port Labels as Group"),"If this option is true (default), the labels of a port will be treated as a group when it comes to centering them next to their port. If this option is false, only the first label will be centered next to the port, with the others being placed below. This only applies to labels of eastern and western ports and will have no effect if labels are not placed next to their port."),!0),aa),Es),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,lP),xP),"Topdown Scale Factor"),"The scaling factor to be applied to the nodes laid out within the node in recursive topdown layout. The difference to 'Scale Factor' is that the node itself is not scaled. This value has to be set on hierarchical nodes."),1),Ga),zs),Ze(_n)))),Bs(e,lP,ov,n7e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,eTt),xP),"Topdown Size Approximator"),"The size approximator to be used to set sizes of hierarchical nodes during topdown layout. The default value is null, which results in nodes keeping whatever size is defined for them e.g. through parent parallel node or by manually setting the size."),null),rs),PK),Ze(Js)))),Bs(e,eTt,ov,r7e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,hP),xP),"Topdown Hierarchical Node Width"),"The fixed size of a hierarchical node when using topdown layout. If this value is set on a parallel node it applies to its children, when set on a hierarchical node it applies to the node itself."),150),Ga),zs),Gi(_n,ot(st(H0,1),te,170,0,[Js]))))),Bs(e,hP,ov,null),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,fP),xP),"Topdown Hierarchical Node Aspect Ratio"),"The fixed aspect ratio of a hierarchical node when using topdown layout. Default is 1/sqrt(2). If this value is set on a parallel node it applies to its children, when set on a hierarchical node it applies to the node itself."),1.414),Ga),zs),Gi(_n,ot(st(H0,1),te,170,0,[Js]))))),Bs(e,fP,ov,null),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,ov),xP),"Topdown Node Type"),"The different node types used for topdown layout. If the node type is set to {@link TopdownNodeTypes.PARALLEL_NODE} the algorithm must be set to a {@link TopdownLayoutProvider} such as {@link TopdownPacking}. The {@link nodeSize.fixedGraphSize} option is technically only required for hierarchical nodes."),null),rs),nIt),Ze(Js)))),Bs(e,ov,J7,null),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,nTt),xP),"Topdown Scale Cap"),"Determines the upper limit for the topdown scale factor. The default value is 1.0 which ensures that nested children never end up appearing larger than their parents in terms of unit sizes such as the font size. If the limit is larger, nodes will fully utilize the available space, but it is counteriniuitive for inner nodes to have a larger scale than outer nodes."),1),Ga),zs),Ze(_n)))),Bs(e,nTt,ov,e7e),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,qEt),fwe),"Activate Inside Self Loops"),"Whether this node allows to route self loops inside of it instead of around it. If set to true, this will make the node a compound node if it isn't already, and will require the layout algorithm to support compound nodes with hierarchical ports."),!1),aa),Es),Ze(Js)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,HEt),fwe),"Inside Self Loop"),"Whether a self loop should be routed inside a node instead of around that node."),!1),aa),Es),Ze(c0)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,kut),"edge"),"Edge Thickness"),"The thickness of an edge. This is a hint on the line width used to draw an edge, possibly requiring more space to be reserved for it."),1),Ga),zs),Ze(c0)))),Xe(e,new qe(We(Ke(Ye(fn(He(Ge(Ve(Ue(new je,uwe),"edge"),"Edge Type"),"The type of an edge. This is usually used for UML class diagrams, where associations must be handled differently from generalizations."),cDt),rs),HDt),Ze(c0)))),UC(e,new X6($C(fE(hE(new lb,Xn),"Layered"),'The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called "hierarchies", and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.'))),UC(e,new X6($C(fE(hE(new lb,"org.eclipse.elk.orthogonal"),"Orthogonal"),`Orthogonal methods that follow the "topology-shape-metrics" approach by Batini, Nardelli and Tamassia '86. The first phase determines the topology of the drawing by applying a planarization technique, which results in a planar representation of the graph. The orthogonal shape is computed in the second phase, which aims at minimizing the number of edge bends, and is called orthogonalization. The third phase leads to concrete coordinates for nodes and edge bend points by applying a compaction method, thus defining the metrics.`))),UC(e,new X6($C(fE(hE(new lb,Lu),"Force"),"Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. The first successful method of this kind was proposed by Eades in 1984."))),UC(e,new X6($C(fE(hE(new lb,"org.eclipse.elk.circle"),"Circle"),"Circular layout algorithms emphasize cycles or biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent OPTIONS of the graph."))),UC(e,new X6($C(fE(hE(new lb,A2e),"Tree"),"Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type."))),UC(e,new X6($C(fE(hE(new lb,"org.eclipse.elk.planar"),"Planar"),"Algorithms that require a planar or upward planar graph. Most of these algorithms are theoretically interesting, but not practically usable."))),UC(e,new X6($C(fE(hE(new lb,Bh),"Radial"),"Radial layout algorithms usually position the nodes of the graph on concentric circles."))),m0e((new unt,e)),O0e((new Sj,e)),Gde((new Lj,e))};var zT,$Ee,tDt,nx,zEe,qEe,eDt,rx,ix,HEe,vN,nDt,yN,Iw,rDt,Tdt,Cdt,iDt,sDt,aDt,oDt,cDt,VEe,sx,uDt,UEe,xN,_dt,kN,Sdt,Dv,lDt,qT,hDt,fDt,dDt,ax,gDt,Ow,pDt,R3,ox,bDt,s2,wDt,EK,EN,Kp,mDt,GEe,vDt,KEe,WEe,yDt,xDt,Adt,Ldt,Mdt,Ddt,kDt,Nl,nL,EDt,Idt,Odt,j3,TDt,CDt,cx,_Dt,Yk,TN,Pdt,ux,YEe,Ndt,XEe,QEe,SDt,JEe,ADt,LDt,Xk,MDt,TK,DDt,IDt,Pw,ZEe,ODt,PDt,NDt,CK,CN,rL,Qk,t7e,e7e,_K,n7e,FDt,r7e;D(Pl,"CoreOptions",699),M(88,22,{3:1,34:1,22:1,88:1},GD);var bd,Ho,Jo,wd,qh,iL=Cr(Pl,x8t,88,Ir,R1n,qon),i7e;M(278,22,{3:1,34:1,22:1,278:1},Nrt);var HT,$3,VT,BDt=Cr(Pl,"EdgeLabelPlacement",278,Ir,hfn,Hon),s7e;M(223,22,{3:1,34:1,22:1,223:1},$$);var UT,_N,Jk,Fdt,Bdt=Cr(Pl,"EdgeRouting",223,Ir,d1n,Von),a7e;M(321,22,{3:1,34:1,22:1,321:1},r_);var RDt,jDt,$Dt,zDt,Rdt,qDt,HDt=Cr(Pl,"EdgeType",321,Ir,Idn,Uon),o7e;M(989,1,af,unt),l.hf=function(e){m0e(e)};var VDt,UDt,GDt,KDt,c7e,WDt,sL;D(Pl,"FixedLayouterOptions",989),M(990,1,{},Itt),l.sf=function(){var e;return e=new $tt,e},l.tf=function(e){},D(Pl,"FixedLayouterOptions/FixedFactory",990),M(346,22,{3:1,34:1,22:1,346:1},Frt);var Wp,SK,aL,YDt=Cr(Pl,"HierarchyHandling",346,Ir,dfn,Gon),u7e;M(290,22,{3:1,34:1,22:1,290:1},z$);var V0,a2,SN,AN,l7e=Cr(Pl,"LabelSide",290,Ir,f1n,Kon),h7e;M(95,22,{3:1,34:1,22:1,95:1},P4);var jg,Qf,ff,Jf,dh,Zf,df,U0,t1,_o=Cr(Pl,"NodeLabelPlacement",95,Ir,O0n,Won),f7e;M(256,22,{3:1,34:1,22:1,256:1},KD);var XDt,oL,o2,QDt,LN,cL=Cr(Pl,"PortAlignment",256,Ir,Z1n,Yon),d7e;M(101,22,{3:1,34:1,22:1,101:1},i_);var Nw,lu,G0,GT,md,c2,JDt=Cr(Pl,"PortConstraints",101,Ir,Ddn,Xon),g7e;M(279,22,{3:1,34:1,22:1,279:1},s_);var uL,lL,$g,MN,u2,Zk,AK=Cr(Pl,"PortLabelPlacement",279,Ir,Mdn,Qon),p7e;M(64,22,{3:1,34:1,22:1,64:1},WD);var Jn,Hn,Hh,Vh,Vu,Iu,vd,e1,yl,ol,hu,xl,Uu,Gu,n1,gh,ph,gf,vr,gc,Gn,go=Cr(Pl,"PortSide",64,Ir,j1n,Jon),b7e;M(993,1,af,Lj),l.hf=function(e){Gde(e)};var w7e,m7e,ZDt,v7e,y7e;D(Pl,"RandomLayouterOptions",993),M(994,1,{},q8),l.sf=function(){var e;return e=new Btt,e},l.tf=function(e){},D(Pl,"RandomLayouterOptions/RandomFactory",994),M(386,22,{3:1,34:1,22:1,386:1},q$);var z3,DN,IN,Fw,hL=Cr(Pl,"SizeConstraint",386,Ir,h1n,Zon),x7e;M(264,22,{3:1,34:1,22:1,264:1},N4);var ON,LK,KT,jdt,PN,fL,MK,DK,IK,tIt=Cr(Pl,"SizeOptions",264,Ir,U0n,tcn),k7e;M(280,22,{3:1,34:1,22:1,280:1},Brt);var q3,eIt,OK,nIt=Cr(Pl,"TopdownNodeTypes",280,Ir,ffn,ecn),E7e;M(347,22,iTt);var rIt,iIt,PK=Cr(Pl,"TopdownSizeApproximator",347,Ir,uhn,rcn);M(987,347,iTt,ste),l.Tg=function(e){return Nle(e)},Cr(Pl,"TopdownSizeApproximator/1",987,PK,null,null),M(988,347,iTt,Vte),l.Tg=function(e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je,On;for(n=u(ne(e,(si(),ux)),143),Ce=(wb(),U=new PC,U),PO(Ce,e),en=new Er,h=new Zn((!e.a&&(e.a=new Jt(wi,e,10,11)),e.a));h.e!=h.i.gc();)s=u(sr(h),27),St=(j=new PC,j),YH(St,Ce),PO(St,s),On=Nle(s),$4(St,b.Math.max(s.g,On.a),b.Math.max(s.f,On.b)),vu(en.f,s,St);for(o=new Zn((!e.a&&(e.a=new Jt(wi,e,10,11)),e.a));o.e!=o.i.gc();)for(s=u(sr(o),27),A=new Zn((!s.e&&(s.e=new En(Cs,s,7,4)),s.e));A.e!=A.i.gc();)T=u(sr(A),74),Kt=u(Uo(yo(en.f,s)),27),ie=u(tr(en,Lt((!T.c&&(T.c=new En(gr,T,5,8)),T.c),0)),27),Bt=(N=new x4,N),Mr((!Bt.b&&(Bt.b=new En(gr,Bt,4,7)),Bt.b),Kt),Mr((!Bt.c&&(Bt.c=new En(gr,Bt,5,8)),Bt.c),ie),WH(Bt,es(Kt)),PO(Bt,T);tt=u(xI(n.f),205);try{tt.rf(Ce,new qtt),xee(n.f,tt)}catch(Mn){throw Mn=is(Mn),At(Mn,103)?(W=Mn,nt(W)):nt(Mn)}return td(Ce,ix)||td(Ce,rx)||Vkt(Ce),k=Rt(Ht(ne(Ce,ix))),m=Rt(Ht(ne(Ce,rx))),d=k/m,r=Rt(Ht(ne(Ce,CN)))*b.Math.sqrt((!Ce.a&&(Ce.a=new Jt(wi,Ce,10,11)),Ce.a).i),Je=u(ne(Ce,Kp),107),Tt=Je.b+Je.c+1,ct=Je.d+Je.a+1,new se(b.Math.max(Tt,r),b.Math.max(ct,r/d))},Cr(Pl,"TopdownSizeApproximator/2",988,PK,null,null);var T7e;M(344,1,{871:1},E6),l.Ug=function(e,n){return Whe(this,e,n)},l.Vg=function(){wfe(this)},l.Wg=function(){return this.q},l.Xg=function(){return this.f?Jit(this.f):null},l.Yg=function(){return Jit(this.a)},l.Zg=function(){return this.p},l.$g=function(){return!1},l._g=function(){return this.n},l.ah=function(){return this.p!=null&&!this.b},l.bh=function(e){var n;this.n&&(n=e,pe(this.f,n))},l.dh=function(e,n){var r,s;this.n&&e&&Lfn(this,(r=new nee,s=nct(r,e),l9n(r),s),(tH(),zdt))},l.eh=function(e){var n;return this.b?null:(n=g0n(this,this.g),Zr(this.a,n),n.i=this,this.d=e,n)},l.fh=function(e){e>0&&!this.b&&c4t(this,e)},l.b=!1,l.c=0,l.d=-1,l.e=null,l.f=null,l.g=-1,l.j=!1,l.k=!1,l.n=!1,l.o=0,l.q=0,l.r=0,D(Ec,"BasicProgressMonitor",344),M(717,205,fw,H8),l.rf=function(e,n){X0e(e,n)},D(Ec,"BoxLayoutProvider",717),M(983,1,Xr,VUt),l.Ne=function(e,n){return l6n(this,u(e,27),u(n,27))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},l.a=!1,D(Ec,"BoxLayoutProvider/1",983),M(163,1,{163:1},Dq,LJt),l.Ib=function(){return this.c?akt(this.c):Rb(this.b)},D(Ec,"BoxLayoutProvider/Group",163),M(320,22,{3:1,34:1,22:1,320:1},H$);var sIt,aIt,oIt,$dt,cIt=Cr(Ec,"BoxLayoutProvider/PackingMode",320,Ir,g1n,icn),C7e;M(984,1,Xr,PR),l.Ne=function(e,n){return Lln(u(e,163),u(n,163))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Ec,"BoxLayoutProvider/lambda$0$Type",984),M(985,1,Xr,Ott),l.Ne=function(e,n){return xln(u(e,163),u(n,163))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Ec,"BoxLayoutProvider/lambda$1$Type",985),M(986,1,Xr,Ptt),l.Ne=function(e,n){return kln(u(e,163),u(n,163))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(Ec,"BoxLayoutProvider/lambda$2$Type",986),M(1384,1,{845:1},Ntt),l.Mg=function(e,n){return y$(),!At(n,167)||MWt((sk(),u(e,167)),n)},D(Ec,"ElkSpacings/AbstractSpacingsBuilder/lambda$0$Type",1384),M(1385,1,rr,UUt),l.Cd=function(e){jpn(this.a,u(e,149))},D(Ec,"ElkSpacings/AbstractSpacingsBuilder/lambda$1$Type",1385),M(1386,1,rr,Rtt),l.Cd=function(e){u(e,96),y$()},D(Ec,"ElkSpacings/AbstractSpacingsBuilder/lambda$2$Type",1386),M(1390,1,rr,GUt),l.Cd=function(e){ogn(this.a,u(e,96))},D(Ec,"ElkSpacings/AbstractSpacingsBuilder/lambda$3$Type",1390),M(1388,1,Kr,yXt),l.Mb=function(e){return ypn(this.a,this.b,u(e,149))},D(Ec,"ElkSpacings/AbstractSpacingsBuilder/lambda$4$Type",1388),M(1387,1,Kr,xXt),l.Mb=function(e){return esn(this.a,this.b,u(e,845))},D(Ec,"ElkSpacings/AbstractSpacingsBuilder/lambda$5$Type",1387),M(1389,1,rr,kXt),l.Cd=function(e){gun(this.a,this.b,u(e,149))},D(Ec,"ElkSpacings/AbstractSpacingsBuilder/lambda$6$Type",1389),M(947,1,{},jtt),l.Kb=function(e){return wQt(e)},l.Fb=function(e){return this===e},D(Ec,"ElkUtil/lambda$0$Type",947),M(948,1,rr,EXt),l.Cd=function(e){d5n(this.a,this.b,u(e,74))},l.a=0,l.b=0,D(Ec,"ElkUtil/lambda$1$Type",948),M(949,1,rr,TXt),l.Cd=function(e){inn(this.a,this.b,u(e,166))},l.a=0,l.b=0,D(Ec,"ElkUtil/lambda$2$Type",949),M(950,1,rr,CXt),l.Cd=function(e){Zrn(this.a,this.b,u(e,135))},l.a=0,l.b=0,D(Ec,"ElkUtil/lambda$3$Type",950),M(951,1,rr,KUt),l.Cd=function(e){Ncn(this.a,u(e,377))},D(Ec,"ElkUtil/lambda$4$Type",951),M(325,1,{34:1,325:1},Pen),l.Fd=function(e){return Ain(this,u(e,242))},l.Fb=function(e){var n;return At(e,325)?(n=u(e,325),this.a==n.a):!1},l.Hb=function(){return Xs(this.a)},l.Ib=function(){return this.a+" (exclusive)"},l.a=0,D(Ec,"ExclusiveBounds/ExclusiveLowerBound",325),M(1119,205,fw,$tt),l.rf=function(e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt,St,Bt,Kt,ie,Ce,en,Je;for(n.Ug("Fixed Layout",1),h=u(ne(e,(si(),sDt)),223),N=0,j=0,St=new Zn((!e.a&&(e.a=new Jt(wi,e,10,11)),e.a));St.e!=St.i.gc();){for(ct=u(sr(St),27),Je=u(ne(ct,(eH(),sL)),8),Je&&(xh(ct,Je.a,Je.b),u(ne(ct,UDt),181).Hc((Kl(),z3))&&(U=u(ne(ct,KDt),8),U.a>0&&U.b>0&&nv(ct,U.a,U.b,!0,!0))),N=b.Math.max(N,ct.i+ct.g),j=b.Math.max(j,ct.j+ct.f),T=new Zn((!ct.n&&(ct.n=new Jt(Oo,ct,1,7)),ct.n));T.e!=T.i.gc();)m=u(sr(T),135),Je=u(ne(m,sL),8),Je&&xh(m,Je.a,Je.b),N=b.Math.max(N,ct.i+m.i+m.g),j=b.Math.max(j,ct.j+m.j+m.f);for(ie=new Zn((!ct.c&&(ct.c=new Jt(kl,ct,9,9)),ct.c));ie.e!=ie.i.gc();)for(Kt=u(sr(ie),123),Je=u(ne(Kt,sL),8),Je&&xh(Kt,Je.a,Je.b),Ce=ct.i+Kt.i,en=ct.j+Kt.j,N=b.Math.max(N,Ce+Kt.g),j=b.Math.max(j,en+Kt.f),k=new Zn((!Kt.n&&(Kt.n=new Jt(Oo,Kt,1,7)),Kt.n));k.e!=k.i.gc();)m=u(sr(k),135),Je=u(ne(m,sL),8),Je&&xh(m,Je.a,Je.b),N=b.Math.max(N,Ce+m.i+m.g),j=b.Math.max(j,en+m.j+m.f);for(o=new nr(ir(Mg(ct).a.Kc(),new q));Sr(o);)r=u(lr(o),74),A=lpe(r),N=b.Math.max(N,A.a),j=b.Math.max(j,A.b);for(s=new nr(ir(OO(ct).a.Kc(),new q));Sr(s);)r=u(lr(s),74),es(M0(r))!=e&&(A=lpe(r),N=b.Math.max(N,A.a),j=b.Math.max(j,A.b))}if(h==(_g(),UT))for(Tt=new Zn((!e.a&&(e.a=new Jt(wi,e,10,11)),e.a));Tt.e!=Tt.i.gc();)for(ct=u(sr(Tt),27),s=new nr(ir(Mg(ct).a.Kc(),new q));Sr(s);)r=u(lr(s),74),d=pEn(r),d.b==0?Oi(r,Dv,null):Oi(r,Dv,d);Ie(De(ne(e,(eH(),GDt))))||(Bt=u(ne(e,c7e),107),tt=N+Bt.b+Bt.c,W=j+Bt.d+Bt.a,nv(e,tt,W,!0,!0)),n.Vg()},D(Ec,"FixedLayoutProvider",1119),M(385,137,{3:1,423:1,385:1,96:1,137:1},ZM,oae),l.cg=function(e){var n,r,s,o,h,d,m,k,T;if(e)try{for(k=s3(e,";,;"),h=k,d=0,m=h.length;d>16&js|n^s<<16},l.Kc=function(){return new WUt(this)},l.Ib=function(){return this.a==null&&this.b==null?"pair(null,null)":this.a==null?"pair(null,"+ec(this.b)+")":this.b==null?"pair("+ec(this.a)+",null)":"pair("+ec(this.a)+","+ec(this.b)+")"},D(Ec,"Pair",42),M(995,1,ba,WUt),l.Nb=function(e){Da(this,e)},l.Ob=function(){return!this.c&&(!this.b&&this.a.a!=null||this.a.b!=null)},l.Pb=function(){if(!this.c&&!this.b&&this.a.a!=null)return this.b=!0,this.a.a;if(!this.c&&this.a.b!=null)return this.c=!0,this.a.b;throw nt(new ac)},l.Qb=function(){throw this.c&&this.a.b!=null?this.a.b=null:this.b&&this.a.a!=null&&(this.a.a=null),nt(new Yu)},l.b=!1,l.c=!1,D(Ec,"Pair/1",995),M(454,1,{454:1},Bee),l.Fb=function(e){return Ic(this.a,u(e,454).a)&&Ic(this.c,u(e,454).c)&&Ic(this.d,u(e,454).d)&&Ic(this.b,u(e,454).b)},l.Hb=function(){return iO(ot(st(sa,1),Ln,1,5,[this.a,this.c,this.d,this.b]))},l.Ib=function(){return"("+this.a+ro+this.c+ro+this.d+ro+this.b+")"},D(Ec,"Quadruple",454),M(1108,205,fw,Btt),l.rf=function(e,n){var r,s,o,h,d;if(n.Ug("Random Layout",1),(!e.a&&(e.a=new Jt(wi,e,10,11)),e.a).i==0){n.Vg();return}h=u(ne(e,(F5t(),v7e)),17),h&&h.a!=0?o=new lq(h.a):o=new jat,r=CD(Ht(ne(e,w7e))),d=CD(Ht(ne(e,y7e))),s=u(ne(e,m7e),107),O9n(e,o,r,d,s),n.Vg()},D(Ec,"RandomLayoutProvider",1108),M(240,1,{240:1},dit),l.Fb=function(e){return Ic(this.a,u(e,240).a)&&Ic(this.b,u(e,240).b)&&Ic(this.c,u(e,240).c)},l.Hb=function(){return iO(ot(st(sa,1),Ln,1,5,[this.a,this.b,this.c]))},l.Ib=function(){return"("+this.a+ro+this.b+ro+this.c+")"},D(Ec,"Triple",240);var L7e;M(562,1,{}),l.Lf=function(){return new se(this.f.i,this.f.j)},l.of=function(e){return hne(e,(si(),Nl))?ne(this.f,M7e):ne(this.f,e)},l.Mf=function(){return new se(this.f.g,this.f.f)},l.Nf=function(){return this.g},l.pf=function(e){return td(this.f,e)},l.Of=function(e){Cu(this.f,e.a),_u(this.f,e.b)},l.Pf=function(e){zm(this.f,e.a),$m(this.f,e.b)},l.Qf=function(e){this.g=e},l.g=0;var M7e;D(YS,"ElkGraphAdapters/AbstractElkGraphElementAdapter",562),M(563,1,{853:1},Jj),l.Rf=function(){var e,n;if(!this.b)for(this.b=aq(qz(this.a).i),n=new Zn(qz(this.a));n.e!=n.i.gc();)e=u(sr(n),135),pe(this.b,new Hnt(e));return this.b},l.b=null,D(YS,"ElkGraphAdapters/ElkEdgeAdapter",563),M(308,562,{},my),l.Sf=function(){return rhe(this)},l.a=null,D(YS,"ElkGraphAdapters/ElkGraphAdapter",308),M(640,562,{187:1},Hnt),D(YS,"ElkGraphAdapters/ElkLabelAdapter",640),M(639,562,{695:1},Qrt),l.Rf=function(){return ymn(this)},l.Vf=function(){var e;return e=u(ne(this.f,(si(),qT)),140),!e&&(e=new OC),e},l.Xf=function(){return xmn(this)},l.Zf=function(e){var n;n=new pit(e),Oi(this.f,(si(),qT),n)},l.$f=function(e){Oi(this.f,(si(),Kp),new _vt(e))},l.Tf=function(){return this.d},l.Uf=function(){var e,n;if(!this.a)for(this.a=new ge,n=new nr(ir(OO(u(this.f,27)).a.Kc(),new q));Sr(n);)e=u(lr(n),74),pe(this.a,new Jj(e));return this.a},l.Wf=function(){var e,n;if(!this.c)for(this.c=new ge,n=new nr(ir(Mg(u(this.f,27)).a.Kc(),new q));Sr(n);)e=u(lr(n),74),pe(this.c,new Jj(e));return this.c},l.Yf=function(){return Kz(u(this.f,27)).i!=0||Ie(De(u(this.f,27).of((si(),xN))))},l._f=function(){Zdn(this,(xy(),L7e))},l.a=null,l.b=null,l.c=null,l.d=null,l.e=null,D(YS,"ElkGraphAdapters/ElkNodeAdapter",639),M(1284,562,{852:1},YUt),l.Rf=function(){return Lmn(this)},l.Uf=function(){var e,n;if(!this.a)for(this.a=k0(u(this.f,123).hh().i),n=new Zn(u(this.f,123).hh());n.e!=n.i.gc();)e=u(sr(n),74),pe(this.a,new Jj(e));return this.a},l.Wf=function(){var e,n;if(!this.c)for(this.c=k0(u(this.f,123).ih().i),n=new Zn(u(this.f,123).ih());n.e!=n.i.gc();)e=u(sr(n),74),pe(this.c,new Jj(e));return this.c},l.ag=function(){return u(u(this.f,123).of((si(),cx)),64)},l.bg=function(){var e,n,r,s,o,h,d,m;for(s=Y1(u(this.f,123)),r=new Zn(u(this.f,123).ih());r.e!=r.i.gc();)for(e=u(sr(r),74),m=new Zn((!e.c&&(e.c=new En(gr,e,5,8)),e.c));m.e!=m.i.gc();){if(d=u(sr(m),84),qy(Xo(d),s))return!0;if(Xo(d)==s&&Ie(De(ne(e,(si(),_dt)))))return!0}for(n=new Zn(u(this.f,123).hh());n.e!=n.i.gc();)for(e=u(sr(n),74),h=new Zn((!e.b&&(e.b=new En(gr,e,4,7)),e.b));h.e!=h.i.gc();)if(o=u(sr(h),84),qy(Xo(o),s))return!0;return!1},l.a=null,l.b=null,l.c=null,D(YS,"ElkGraphAdapters/ElkPortAdapter",1284),M(1285,1,Xr,Ftt),l.Ne=function(e,n){return o8n(u(e,123),u(n,123))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(YS,"ElkGraphAdapters/PortComparator",1285);var l2=us(Rh,"EObject"),WT=us(S5,pwe),bh=us(S5,bwe),NN=us(S5,wwe),FN=us(S5,"ElkShape"),gr=us(S5,mwe),Cs=us(S5,sTt),Ji=us(S5,vwe),BN=us(Rh,ywe),dL=us(Rh,"EFactory"),D7e,qdt=us(Rh,xwe),P1=us(Rh,"EPackage"),fa,I7e,O7e,fIt,NK,P7e,dIt,gIt,pIt,K0,N7e,F7e,Oo=us(S5,aTt),wi=us(S5,oTt),kl=us(S5,cTt);M(93,1,kwe),l.th=function(){return this.uh(),null},l.uh=function(){return null},l.vh=function(){return this.uh(),!1},l.wh=function(){return!1},l.xh=function(e){Ti(this,e)},D(Ik,"BasicNotifierImpl",93),M(99,93,_we),l.Yh=function(){return zl(this)},l.yh=function(e,n){return e},l.zh=function(){throw nt(new Vr)},l.Ah=function(e){var n;return n=wo(u(Tn(this.Dh(),this.Fh()),19)),this.Ph().Th(this,n.n,n.f,e)},l.Bh=function(e,n){throw nt(new Vr)},l.Ch=function(e,n,r){return ch(this,e,n,r)},l.Dh=function(){var e;return this.zh()&&(e=this.zh().Nk(),e)?e:this.ii()},l.Eh=function(){return jot(this)},l.Fh=function(){throw nt(new Vr)},l.Gh=function(){var e,n;return n=this.$h().Ok(),!n&&this.zh().Tk(n=(KC(),e=jyt(Kd(this.Dh())),e==null?Xdt:new ZD(this,e))),n},l.Hh=function(e,n){return e},l.Ih=function(e){var n;return n=e.pk(),n?e.Lj():ss(this.Dh(),e)},l.Jh=function(){var e;return e=this.zh(),e?e.Qk():null},l.Kh=function(){return this.zh()?this.zh().Nk():null},l.Lh=function(e,n,r){return EH(this,e,n,r)},l.Mh=function(e){return qE(this,e)},l.Nh=function(e,n){return Tst(this,e,n)},l.Oh=function(){var e;return e=this.zh(),!!e&&e.Rk()},l.Ph=function(){throw nt(new Vr)},l.Qh=function(){return bH(this)},l.Rh=function(e,n,r,s){return hk(this,e,n,s)},l.Sh=function(e,n,r){var s;return s=u(Tn(this.Dh(),n),69),s.wk().zk(this,this.hi(),n-this.ji(),e,r)},l.Th=function(e,n,r,s){return Qz(this,e,n,s)},l.Uh=function(e,n,r){var s;return s=u(Tn(this.Dh(),n),69),s.wk().Ak(this,this.hi(),n-this.ji(),e,r)},l.Vh=function(){return!!this.zh()&&!!this.zh().Pk()},l.Wh=function(e){return Xat(this,e)},l.Xh=function(e){return Cne(this,e)},l.Zh=function(e){return Wge(this,e)},l.$h=function(){throw nt(new Vr)},l._h=function(){return this.zh()?this.zh().Pk():null},l.ai=function(){return bH(this)},l.bi=function(e,n){Pot(this,e,n)},l.ci=function(e){this.$h().Sk(e)},l.di=function(e){this.$h().Vk(e)},l.ei=function(e){this.$h().Uk(e)},l.fi=function(e,n){var r,s,o,h;return h=this.Jh(),h&&e&&(n=no(h.El(),this,n),h.Il(this)),s=this.Ph(),s&&(Zot(this,this.Ph(),this.Fh()).Bb&fo?(o=s.Qh(),o&&(e?!h&&o.Il(this):o.Hl(this))):(n=(r=this.Fh(),r>=0?this.Ah(n):this.Ph().Th(this,-1-r,null,n)),n=this.Ch(null,-1,n))),this.di(e),n},l.gi=function(e){var n,r,s,o,h,d,m,k;if(r=this.Dh(),h=ss(r,e),n=this.ji(),h>=n)return u(e,69).wk().Dk(this,this.hi(),h-n);if(h<=-1)if(d=w5((rl(),Fa),r,e),d){if(bo(),u(d,69).xk()||(d=Q6(Ro(Fa,d))),o=(s=this.Ih(d),u(s>=0?this.Lh(s,!0,!0):Zm(this,d,!0),160)),k=d.Ik(),k>1||k==-1)return u(u(o,220).Sl(e,!1),79)}else throw nt(new zn(Kb+e.xe()+Plt));else if(e.Jk())return s=this.Ih(e),u(s>=0?this.Lh(s,!1,!0):Zm(this,e,!1),79);return m=new HXt(this,e),m},l.hi=function(){return V3t(this)},l.ii=function(){return(Tb(),Fn).S},l.ji=function(){return ur(this.ii())},l.ki=function(e){Dot(this,e)},l.Ib=function(){return qf(this)},D(jn,"BasicEObjectImpl",99);var B7e;M(119,99,{110:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1}),l.li=function(e){var n;return n=H3t(this),n[e]},l.mi=function(e,n){var r;r=H3t(this),hs(r,e,n)},l.ni=function(e){var n;n=H3t(this),hs(n,e,null)},l.th=function(){return u($n(this,4),129)},l.uh=function(){throw nt(new Vr)},l.vh=function(){return(this.Db&4)!=0},l.zh=function(){throw nt(new Vr)},l.oi=function(e){uk(this,2,e)},l.Bh=function(e,n){this.Db=n<<16|this.Db&255,this.oi(e)},l.Dh=function(){return ju(this)},l.Fh=function(){return this.Db>>16},l.Gh=function(){var e,n;return KC(),n=jyt(Kd((e=u($n(this,16),29),e||this.ii()))),n==null?Xdt:new ZD(this,n)},l.wh=function(){return(this.Db&1)==0},l.Jh=function(){return u($n(this,128),2034)},l.Kh=function(){return u($n(this,16),29)},l.Oh=function(){return(this.Db&32)!=0},l.Ph=function(){return u($n(this,2),54)},l.Vh=function(){return(this.Db&64)!=0},l.$h=function(){throw nt(new Vr)},l._h=function(){return u($n(this,64),288)},l.ci=function(e){uk(this,16,e)},l.di=function(e){uk(this,128,e)},l.ei=function(e){uk(this,64,e)},l.hi=function(){return Su(this)},l.Db=0,D(jn,"MinimalEObjectImpl",119),M(120,119,{110:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.oi=function(e){this.Cb=e},l.Ph=function(){return this.Cb},D(jn,"MinimalEObjectImpl/Container",120),M(2083,120,{110:1,342:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.Lh=function(e,n,r){return sxt(this,e,n,r)},l.Uh=function(e,n,r){return Wxt(this,e,n,r)},l.Wh=function(e){return Zyt(this,e)},l.bi=function(e,n){V4t(this,e,n)},l.ii=function(){return jc(),F7e},l.ki=function(e){O4t(this,e)},l.nf=function(){return Ele(this)},l.gh=function(){return!this.o&&(this.o=new el((jc(),K0),Yp,this,0)),this.o},l.of=function(e){return ne(this,e)},l.pf=function(e){return td(this,e)},l.qf=function(e,n){return Oi(this,e,n)},D(bw,"EMapPropertyHolderImpl",2083),M(572,120,{110:1,377:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},sC),l.Lh=function(e,n,r){switch(e){case 0:return this.a;case 1:return this.b}return EH(this,e,n,r)},l.Wh=function(e){switch(e){case 0:return this.a!=0;case 1:return this.b!=0}return Xat(this,e)},l.bi=function(e,n){switch(e){case 0:Oq(this,Rt(Ht(n)));return;case 1:Iq(this,Rt(Ht(n)));return}Pot(this,e,n)},l.ii=function(){return jc(),I7e},l.ki=function(e){switch(e){case 0:Oq(this,0);return;case 1:Iq(this,0);return}Dot(this,e)},l.Ib=function(){var e;return this.Db&64?qf(this):(e=new Jh(qf(this)),e.a+=" (x: ",M4(e,this.a),e.a+=", y: ",M4(e,this.b),e.a+=")",e.a)},l.a=0,l.b=0,D(bw,"ElkBendPointImpl",572),M(739,2083,{110:1,342:1,167:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.Lh=function(e,n,r){return d5t(this,e,n,r)},l.Sh=function(e,n,r){return Tot(this,e,n,r)},l.Uh=function(e,n,r){return oat(this,e,n,r)},l.Wh=function(e){return S4t(this,e)},l.bi=function(e,n){Txt(this,e,n)},l.ii=function(){return jc(),P7e},l.ki=function(e){i5t(this,e)},l.jh=function(){return this.k},l.kh=function(){return qz(this)},l.Ib=function(){return Oat(this)},l.k=null,D(bw,"ElkGraphElementImpl",739),M(740,739,{110:1,342:1,167:1,422:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.Lh=function(e,n,r){return x5t(this,e,n,r)},l.Wh=function(e){return S5t(this,e)},l.bi=function(e,n){Cxt(this,e,n)},l.ii=function(){return jc(),N7e},l.ki=function(e){P5t(this,e)},l.lh=function(){return this.f},l.mh=function(){return this.g},l.nh=function(){return this.i},l.oh=function(){return this.j},l.ph=function(e,n){$4(this,e,n)},l.qh=function(e,n){xh(this,e,n)},l.rh=function(e){Cu(this,e)},l.sh=function(e){_u(this,e)},l.Ib=function(){return Lot(this)},l.f=0,l.g=0,l.i=0,l.j=0,D(bw,"ElkShapeImpl",740),M(741,740,{110:1,342:1,84:1,167:1,422:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.Lh=function(e,n,r){return J5t(this,e,n,r)},l.Sh=function(e,n,r){return mxt(this,e,n,r)},l.Uh=function(e,n,r){return vxt(this,e,n,r)},l.Wh=function(e){return H4t(this,e)},l.bi=function(e,n){D6t(this,e,n)},l.ii=function(){return jc(),O7e},l.ki=function(e){K5t(this,e)},l.hh=function(){return!this.d&&(this.d=new En(Cs,this,8,5)),this.d},l.ih=function(){return!this.e&&(this.e=new En(Cs,this,7,4)),this.e},D(bw,"ElkConnectableShapeImpl",741),M(326,739,{110:1,342:1,74:1,167:1,326:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},x4),l.Ah=function(e){return gxt(this,e)},l.Lh=function(e,n,r){switch(e){case 3:return kI(this);case 4:return!this.b&&(this.b=new En(gr,this,4,7)),this.b;case 5:return!this.c&&(this.c=new En(gr,this,5,8)),this.c;case 6:return!this.a&&(this.a=new Jt(Ji,this,6,6)),this.a;case 7:return Nn(),!this.b&&(this.b=new En(gr,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new En(gr,this,5,8)),this.c.i<=1));case 8:return Nn(),!!bS(this);case 9:return Nn(),!!Jm(this);case 10:return Nn(),!this.b&&(this.b=new En(gr,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new En(gr,this,5,8)),this.c.i!=0)}return d5t(this,e,n,r)},l.Sh=function(e,n,r){var s;switch(n){case 3:return this.Cb&&(r=(s=this.Db>>16,s>=0?gxt(this,r):this.Cb.Th(this,-1-s,null,r))),Ymt(this,u(e,27),r);case 4:return!this.b&&(this.b=new En(gr,this,4,7)),mu(this.b,e,r);case 5:return!this.c&&(this.c=new En(gr,this,5,8)),mu(this.c,e,r);case 6:return!this.a&&(this.a=new Jt(Ji,this,6,6)),mu(this.a,e,r)}return Tot(this,e,n,r)},l.Uh=function(e,n,r){switch(n){case 3:return Ymt(this,null,r);case 4:return!this.b&&(this.b=new En(gr,this,4,7)),no(this.b,e,r);case 5:return!this.c&&(this.c=new En(gr,this,5,8)),no(this.c,e,r);case 6:return!this.a&&(this.a=new Jt(Ji,this,6,6)),no(this.a,e,r)}return oat(this,e,n,r)},l.Wh=function(e){switch(e){case 3:return!!kI(this);case 4:return!!this.b&&this.b.i!=0;case 5:return!!this.c&&this.c.i!=0;case 6:return!!this.a&&this.a.i!=0;case 7:return!this.b&&(this.b=new En(gr,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new En(gr,this,5,8)),this.c.i<=1));case 8:return bS(this);case 9:return Jm(this);case 10:return!this.b&&(this.b=new En(gr,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new En(gr,this,5,8)),this.c.i!=0)}return S4t(this,e)},l.bi=function(e,n){switch(e){case 3:WH(this,u(n,27));return;case 4:!this.b&&(this.b=new En(gr,this,4,7)),Lr(this.b),!this.b&&(this.b=new En(gr,this,4,7)),bs(this.b,u(n,16));return;case 5:!this.c&&(this.c=new En(gr,this,5,8)),Lr(this.c),!this.c&&(this.c=new En(gr,this,5,8)),bs(this.c,u(n,16));return;case 6:!this.a&&(this.a=new Jt(Ji,this,6,6)),Lr(this.a),!this.a&&(this.a=new Jt(Ji,this,6,6)),bs(this.a,u(n,16));return}Txt(this,e,n)},l.ii=function(){return jc(),fIt},l.ki=function(e){switch(e){case 3:WH(this,null);return;case 4:!this.b&&(this.b=new En(gr,this,4,7)),Lr(this.b);return;case 5:!this.c&&(this.c=new En(gr,this,5,8)),Lr(this.c);return;case 6:!this.a&&(this.a=new Jt(Ji,this,6,6)),Lr(this.a);return}i5t(this,e)},l.Ib=function(){return fge(this)},D(bw,"ElkEdgeImpl",326),M(451,2083,{110:1,342:1,166:1,451:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},k4),l.Ah=function(e){return lxt(this,e)},l.Lh=function(e,n,r){switch(e){case 1:return this.j;case 2:return this.k;case 3:return this.b;case 4:return this.c;case 5:return!this.a&&(this.a=new Ns(bh,this,5)),this.a;case 6:return xne(this);case 7:return n?eot(this):this.i;case 8:return n?tot(this):this.f;case 9:return!this.g&&(this.g=new En(Ji,this,9,10)),this.g;case 10:return!this.e&&(this.e=new En(Ji,this,10,9)),this.e;case 11:return this.d}return sxt(this,e,n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?lxt(this,r):this.Cb.Th(this,-1-o,null,r))),Wmt(this,u(e,74),r);case 9:return!this.g&&(this.g=new En(Ji,this,9,10)),mu(this.g,e,r);case 10:return!this.e&&(this.e=new En(Ji,this,10,9)),mu(this.e,e,r)}return h=u(Tn((s=u($n(this,16),29),s||(jc(),NK)),n),69),h.wk().zk(this,Su(this),n-ur((jc(),NK)),e,r)},l.Uh=function(e,n,r){switch(n){case 5:return!this.a&&(this.a=new Ns(bh,this,5)),no(this.a,e,r);case 6:return Wmt(this,null,r);case 9:return!this.g&&(this.g=new En(Ji,this,9,10)),no(this.g,e,r);case 10:return!this.e&&(this.e=new En(Ji,this,10,9)),no(this.e,e,r)}return Wxt(this,e,n,r)},l.Wh=function(e){switch(e){case 1:return this.j!=0;case 2:return this.k!=0;case 3:return this.b!=0;case 4:return this.c!=0;case 5:return!!this.a&&this.a.i!=0;case 6:return!!xne(this);case 7:return!!this.i;case 8:return!!this.f;case 9:return!!this.g&&this.g.i!=0;case 10:return!!this.e&&this.e.i!=0;case 11:return this.d!=null}return Zyt(this,e)},l.bi=function(e,n){switch(e){case 1:WE(this,Rt(Ht(n)));return;case 2:XE(this,Rt(Ht(n)));return;case 3:KE(this,Rt(Ht(n)));return;case 4:YE(this,Rt(Ht(n)));return;case 5:!this.a&&(this.a=new Ns(bh,this,5)),Lr(this.a),!this.a&&(this.a=new Ns(bh,this,5)),bs(this.a,u(n,16));return;case 6:hde(this,u(n,74));return;case 7:$q(this,u(n,84));return;case 8:jq(this,u(n,84));return;case 9:!this.g&&(this.g=new En(Ji,this,9,10)),Lr(this.g),!this.g&&(this.g=new En(Ji,this,9,10)),bs(this.g,u(n,16));return;case 10:!this.e&&(this.e=new En(Ji,this,10,9)),Lr(this.e),!this.e&&(this.e=new En(Ji,this,10,9)),bs(this.e,u(n,16));return;case 11:p4t(this,Gr(n));return}V4t(this,e,n)},l.ii=function(){return jc(),NK},l.ki=function(e){switch(e){case 1:WE(this,0);return;case 2:XE(this,0);return;case 3:KE(this,0);return;case 4:YE(this,0);return;case 5:!this.a&&(this.a=new Ns(bh,this,5)),Lr(this.a);return;case 6:hde(this,null);return;case 7:$q(this,null);return;case 8:jq(this,null);return;case 9:!this.g&&(this.g=new En(Ji,this,9,10)),Lr(this.g);return;case 10:!this.e&&(this.e=new En(Ji,this,10,9)),Lr(this.e);return;case 11:p4t(this,null);return}O4t(this,e)},l.Ib=function(){return C1e(this)},l.b=0,l.c=0,l.d=null,l.j=0,l.k=0,D(bw,"ElkEdgeSectionImpl",451),M(158,120,{110:1,94:1,93:1,155:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1}),l.Lh=function(e,n,r){var s;return e==0?(!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab):Ah(this,e-ur(this.ii()),Tn((s=u($n(this,16),29),s||this.ii()),e),n,r)},l.Sh=function(e,n,r){var s,o;return n==0?(!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),mu(this.Ab,e,r)):(o=u(Tn((s=u($n(this,16),29),s||this.ii()),n),69),o.wk().zk(this,Su(this),n-ur(this.ii()),e,r))},l.Uh=function(e,n,r){var s,o;return n==0?(!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r)):(o=u(Tn((s=u($n(this,16),29),s||this.ii()),n),69),o.wk().Ak(this,Su(this),n-ur(this.ii()),e,r))},l.Wh=function(e){var n;return e==0?!!this.Ab&&this.Ab.i!=0:_h(this,e-ur(this.ii()),Tn((n=u($n(this,16),29),n||this.ii()),e))},l.Zh=function(e){return qkt(this,e)},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return}Ih(this,e-ur(this.ii()),Tn((r=u($n(this,16),29),r||this.ii()),e),n)},l.di=function(e){uk(this,128,e)},l.ii=function(){return bn(),eTe},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return}Dh(this,e-ur(this.ii()),Tn((n=u($n(this,16),29),n||this.ii()),e))},l.pi=function(){this.Bb|=1},l.qi=function(e){return ES(this,e)},l.Bb=0,D(jn,"EModelElementImpl",158),M(720,158,{110:1,94:1,93:1,479:1,155:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1},gD),l.ri=function(e,n){return zge(this,e,n)},l.si=function(e){var n,r,s,o,h;if(this.a!=nh(e)||e.Bb&256)throw nt(new zn(Flt+e.zb+hv));for(s=Ko(e);Gc(s.a).i!=0;){if(r=u(UO(s,0,(n=u(Lt(Gc(s.a),0),89),h=n.c,At(h,90)?u(h,29):(bn(),mf))),29),Qm(r))return o=nh(r).wi().si(r),u(o,54).ci(e),o;s=Ko(r)}return(e.D!=null?e.D:e.B)=="java.util.Map$Entry"?new rte(e):new Bvt(e)},l.ti=function(e,n){return rv(this,e,n)},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.a}return Ah(this,e-ur((bn(),g2)),Tn((s=u($n(this,16),29),s||g2),e),n,r)},l.Sh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),mu(this.Ab,e,r);case 1:return this.a&&(r=u(this.a,54).Th(this,4,P1,r)),r5t(this,u(e,241),r)}return o=u(Tn((s=u($n(this,16),29),s||(bn(),g2)),n),69),o.wk().zk(this,Su(this),n-ur((bn(),g2)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r);case 1:return r5t(this,null,r)}return o=u(Tn((s=u($n(this,16),29),s||(bn(),g2)),n),69),o.wk().Ak(this,Su(this),n-ur((bn(),g2)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return!!this.a}return _h(this,e-ur((bn(),g2)),Tn((n=u($n(this,16),29),n||g2),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:ofe(this,u(n,241));return}Ih(this,e-ur((bn(),g2)),Tn((r=u($n(this,16),29),r||g2),e),n)},l.ii=function(){return bn(),g2},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:ofe(this,null);return}Dh(this,e-ur((bn(),g2)),Tn((n=u($n(this,16),29),n||g2),e))};var gL,bIt,R7e;D(jn,"EFactoryImpl",720),M(1037,720,{110:1,2113:1,94:1,93:1,479:1,155:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1},BR),l.ri=function(e,n){switch(e.hk()){case 12:return u(n,149).Pg();case 13:return ec(n);default:throw nt(new zn(oT+e.xe()+hv))}},l.si=function(e){var n,r,s,o,h,d,m,k;switch(e.G==-1&&(e.G=(n=nh(e),n?Ip(n.vi(),e):-1)),e.G){case 4:return h=new RR,h;case 6:return d=new PC,d;case 7:return m=new j2t,m;case 8:return s=new x4,s;case 9:return r=new sC,r;case 10:return o=new k4,o;case 11:return k=new jR,k;default:throw nt(new zn(Flt+e.zb+hv))}},l.ti=function(e,n){switch(e.hk()){case 13:case 12:return null;default:throw nt(new zn(oT+e.xe()+hv))}},D(bw,"ElkGraphFactoryImpl",1037),M(448,158,{110:1,94:1,93:1,155:1,197:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1}),l.Gh=function(){var e,n;return n=(e=u($n(this,16),29),jyt(Kd(e||this.ii()))),n==null?(KC(),KC(),Xdt):new _Jt(this,n)},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.xe()}return Ah(this,e-ur(this.ii()),Tn((s=u($n(this,16),29),s||this.ii()),e),n,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null}return _h(this,e-ur(this.ii()),Tn((n=u($n(this,16),29),n||this.ii()),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:this.ui(Gr(n));return}Ih(this,e-ur(this.ii()),Tn((r=u($n(this,16),29),r||this.ii()),e),n)},l.ii=function(){return bn(),nTe},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:this.ui(null);return}Dh(this,e-ur(this.ii()),Tn((n=u($n(this,16),29),n||this.ii()),e))},l.xe=function(){return this.zb},l.ui=function(e){wu(this,e)},l.Ib=function(){return Z_(this)},l.zb=null,D(jn,"ENamedElementImpl",448),M(184,448,{110:1,94:1,93:1,155:1,197:1,58:1,241:1,114:1,54:1,99:1,158:1,184:1,119:1,120:1,690:1},Zee),l.Ah=function(e){return mhe(this,e)},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.yb;case 3:return this.xb;case 4:return this.sb;case 5:return!this.rb&&(this.rb=new Iy(this,N1,this)),this.rb;case 6:return!this.vb&&(this.vb=new R6(P1,this,6,7)),this.vb;case 7:return n?this.Db>>16==7?u(this.Cb,241):null:Ane(this)}return Ah(this,e-ur((bn(),Zp)),Tn((s=u($n(this,16),29),s||Zp),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),mu(this.Ab,e,r);case 4:return this.sb&&(r=u(this.sb,54).Th(this,1,dL,r)),a5t(this,u(e,479),r);case 5:return!this.rb&&(this.rb=new Iy(this,N1,this)),mu(this.rb,e,r);case 6:return!this.vb&&(this.vb=new R6(P1,this,6,7)),mu(this.vb,e,r);case 7:return this.Cb&&(r=(o=this.Db>>16,o>=0?mhe(this,r):this.Cb.Th(this,-1-o,null,r))),ch(this,e,7,r)}return h=u(Tn((s=u($n(this,16),29),s||(bn(),Zp)),n),69),h.wk().zk(this,Su(this),n-ur((bn(),Zp)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r);case 4:return a5t(this,null,r);case 5:return!this.rb&&(this.rb=new Iy(this,N1,this)),no(this.rb,e,r);case 6:return!this.vb&&(this.vb=new R6(P1,this,6,7)),no(this.vb,e,r);case 7:return ch(this,null,7,r)}return o=u(Tn((s=u($n(this,16),29),s||(bn(),Zp)),n),69),o.wk().Ak(this,Su(this),n-ur((bn(),Zp)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.yb!=null;case 3:return this.xb!=null;case 4:return!!this.sb;case 5:return!!this.rb&&this.rb.i!=0;case 6:return!!this.vb&&this.vb.i!=0;case 7:return!!Ane(this)}return _h(this,e-ur((bn(),Zp)),Tn((n=u($n(this,16),29),n||Zp),e))},l.Zh=function(e){var n;return n=k6n(this,e),n||qkt(this,e)},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:wu(this,Gr(n));return;case 2:Gq(this,Gr(n));return;case 3:Uq(this,Gr(n));return;case 4:Aot(this,u(n,479));return;case 5:!this.rb&&(this.rb=new Iy(this,N1,this)),Lr(this.rb),!this.rb&&(this.rb=new Iy(this,N1,this)),bs(this.rb,u(n,16));return;case 6:!this.vb&&(this.vb=new R6(P1,this,6,7)),Lr(this.vb),!this.vb&&(this.vb=new R6(P1,this,6,7)),bs(this.vb,u(n,16));return}Ih(this,e-ur((bn(),Zp)),Tn((r=u($n(this,16),29),r||Zp),e),n)},l.ei=function(e){var n,r;if(e&&this.rb)for(r=new Zn(this.rb);r.e!=r.i.gc();)n=sr(r),At(n,364)&&(u(n,364).w=null);uk(this,64,e)},l.ii=function(){return bn(),Zp},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:wu(this,null);return;case 2:Gq(this,null);return;case 3:Uq(this,null);return;case 4:Aot(this,null);return;case 5:!this.rb&&(this.rb=new Iy(this,N1,this)),Lr(this.rb);return;case 6:!this.vb&&(this.vb=new R6(P1,this,6,7)),Lr(this.vb);return}Dh(this,e-ur((bn(),Zp)),Tn((n=u($n(this,16),29),n||Zp),e))},l.pi=function(){got(this)},l.vi=function(){return!this.rb&&(this.rb=new Iy(this,N1,this)),this.rb},l.wi=function(){return this.sb},l.xi=function(){return this.ub},l.yi=function(){return this.xb},l.zi=function(){return this.yb},l.Ai=function(e){this.ub=e},l.Ib=function(){var e;return this.Db&64?Z_(this):(e=new Jh(Z_(this)),e.a+=" (nsURI: ",Lo(e,this.yb),e.a+=", nsPrefix: ",Lo(e,this.xb),e.a+=")",e.a)},l.xb=null,l.yb=null,D(jn,"EPackageImpl",184),M(569,184,{110:1,2115:1,569:1,94:1,93:1,155:1,197:1,58:1,241:1,114:1,54:1,99:1,158:1,184:1,119:1,120:1,690:1},P1e),l.q=!1,l.r=!1;var j7e=!1;D(bw,"ElkGraphPackageImpl",569),M(366,740,{110:1,342:1,167:1,135:1,422:1,366:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},RR),l.Ah=function(e){return hxt(this,e)},l.Lh=function(e,n,r){switch(e){case 7:return Lne(this);case 8:return this.a}return x5t(this,e,n,r)},l.Sh=function(e,n,r){var s;switch(n){case 7:return this.Cb&&(r=(s=this.Db>>16,s>=0?hxt(this,r):this.Cb.Th(this,-1-s,null,r))),Jvt(this,u(e,167),r)}return Tot(this,e,n,r)},l.Uh=function(e,n,r){return n==7?Jvt(this,null,r):oat(this,e,n,r)},l.Wh=function(e){switch(e){case 7:return!!Lne(this);case 8:return!hn("",this.a)}return S5t(this,e)},l.bi=function(e,n){switch(e){case 7:V6t(this,u(n,167));return;case 8:l4t(this,Gr(n));return}Cxt(this,e,n)},l.ii=function(){return jc(),dIt},l.ki=function(e){switch(e){case 7:V6t(this,null);return;case 8:l4t(this,"");return}P5t(this,e)},l.Ib=function(){return xfe(this)},l.a="",D(bw,"ElkLabelImpl",366),M(207,741,{110:1,342:1,84:1,167:1,27:1,422:1,207:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},PC),l.Ah=function(e){return pxt(this,e)},l.Lh=function(e,n,r){switch(e){case 9:return!this.c&&(this.c=new Jt(kl,this,9,9)),this.c;case 10:return!this.a&&(this.a=new Jt(wi,this,10,11)),this.a;case 11:return es(this);case 12:return!this.b&&(this.b=new Jt(Cs,this,12,3)),this.b;case 13:return Nn(),!this.a&&(this.a=new Jt(wi,this,10,11)),this.a.i>0}return J5t(this,e,n,r)},l.Sh=function(e,n,r){var s;switch(n){case 9:return!this.c&&(this.c=new Jt(kl,this,9,9)),mu(this.c,e,r);case 10:return!this.a&&(this.a=new Jt(wi,this,10,11)),mu(this.a,e,r);case 11:return this.Cb&&(r=(s=this.Db>>16,s>=0?pxt(this,r):this.Cb.Th(this,-1-s,null,r))),svt(this,u(e,27),r);case 12:return!this.b&&(this.b=new Jt(Cs,this,12,3)),mu(this.b,e,r)}return mxt(this,e,n,r)},l.Uh=function(e,n,r){switch(n){case 9:return!this.c&&(this.c=new Jt(kl,this,9,9)),no(this.c,e,r);case 10:return!this.a&&(this.a=new Jt(wi,this,10,11)),no(this.a,e,r);case 11:return svt(this,null,r);case 12:return!this.b&&(this.b=new Jt(Cs,this,12,3)),no(this.b,e,r)}return vxt(this,e,n,r)},l.Wh=function(e){switch(e){case 9:return!!this.c&&this.c.i!=0;case 10:return!!this.a&&this.a.i!=0;case 11:return!!es(this);case 12:return!!this.b&&this.b.i!=0;case 13:return!this.a&&(this.a=new Jt(wi,this,10,11)),this.a.i>0}return H4t(this,e)},l.bi=function(e,n){switch(e){case 9:!this.c&&(this.c=new Jt(kl,this,9,9)),Lr(this.c),!this.c&&(this.c=new Jt(kl,this,9,9)),bs(this.c,u(n,16));return;case 10:!this.a&&(this.a=new Jt(wi,this,10,11)),Lr(this.a),!this.a&&(this.a=new Jt(wi,this,10,11)),bs(this.a,u(n,16));return;case 11:YH(this,u(n,27));return;case 12:!this.b&&(this.b=new Jt(Cs,this,12,3)),Lr(this.b),!this.b&&(this.b=new Jt(Cs,this,12,3)),bs(this.b,u(n,16));return}D6t(this,e,n)},l.ii=function(){return jc(),gIt},l.ki=function(e){switch(e){case 9:!this.c&&(this.c=new Jt(kl,this,9,9)),Lr(this.c);return;case 10:!this.a&&(this.a=new Jt(wi,this,10,11)),Lr(this.a);return;case 11:YH(this,null);return;case 12:!this.b&&(this.b=new Jt(Cs,this,12,3)),Lr(this.b);return}K5t(this,e)},l.Ib=function(){return akt(this)},D(bw,"ElkNodeImpl",207),M(193,741,{110:1,342:1,84:1,167:1,123:1,422:1,193:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},j2t),l.Ah=function(e){return fxt(this,e)},l.Lh=function(e,n,r){return e==9?Y1(this):J5t(this,e,n,r)},l.Sh=function(e,n,r){var s;switch(n){case 9:return this.Cb&&(r=(s=this.Db>>16,s>=0?fxt(this,r):this.Cb.Th(this,-1-s,null,r))),Xmt(this,u(e,27),r)}return mxt(this,e,n,r)},l.Uh=function(e,n,r){return n==9?Xmt(this,null,r):vxt(this,e,n,r)},l.Wh=function(e){return e==9?!!Y1(this):H4t(this,e)},l.bi=function(e,n){switch(e){case 9:$6t(this,u(n,27));return}D6t(this,e,n)},l.ii=function(){return jc(),pIt},l.ki=function(e){switch(e){case 9:$6t(this,null);return}K5t(this,e)},l.Ib=function(){return l0e(this)},D(bw,"ElkPortImpl",193);var $7e=us(io,"BasicEMap/Entry");M(1122,120,{110:1,44:1,94:1,93:1,136:1,58:1,114:1,54:1,99:1,119:1,120:1},jR),l.Fb=function(e){return this===e},l.ld=function(){return this.b},l.Hb=function(){return km(this)},l.Di=function(e){h4t(this,u(e,149))},l.Lh=function(e,n,r){switch(e){case 0:return this.b;case 1:return this.c}return EH(this,e,n,r)},l.Wh=function(e){switch(e){case 0:return!!this.b;case 1:return this.c!=null}return Xat(this,e)},l.bi=function(e,n){switch(e){case 0:h4t(this,u(n,149));return;case 1:u4t(this,n);return}Pot(this,e,n)},l.ii=function(){return jc(),K0},l.ki=function(e){switch(e){case 0:h4t(this,null);return;case 1:u4t(this,null);return}Dot(this,e)},l.Bi=function(){var e;return this.a==-1&&(e=this.b,this.a=e?Hi(e):0),this.a},l.md=function(){return this.c},l.Ci=function(e){this.a=e},l.nd=function(e){var n;return n=this.c,u4t(this,e),n},l.Ib=function(){var e;return this.Db&64?qf(this):(e=new pb,ni(ni(ni(e,this.b?this.b.Pg():Hu),Lut),d_(this.c)),e.a)},l.a=-1,l.c=null;var Yp=D(bw,"ElkPropertyToValueMapEntryImpl",1122);M(996,1,{},aC),D(Pa,"JsonAdapter",996),M(216,63,Ig,Pd),D(Pa,"JsonImportException",216),M(868,1,{},vhe),D(Pa,"JsonImporter",868),M(903,1,{},_Xt),D(Pa,"JsonImporter/lambda$0$Type",903),M(904,1,{},SXt),D(Pa,"JsonImporter/lambda$1$Type",904),M(912,1,{},XUt),D(Pa,"JsonImporter/lambda$10$Type",912),M(914,1,{},AXt),D(Pa,"JsonImporter/lambda$11$Type",914),M(915,1,{},LXt),D(Pa,"JsonImporter/lambda$12$Type",915),M(921,1,{},zee),D(Pa,"JsonImporter/lambda$13$Type",921),M(920,1,{},qee),D(Pa,"JsonImporter/lambda$14$Type",920),M(916,1,{},MXt),D(Pa,"JsonImporter/lambda$15$Type",916),M(917,1,{},DXt),D(Pa,"JsonImporter/lambda$16$Type",917),M(918,1,{},IXt),D(Pa,"JsonImporter/lambda$17$Type",918),M(919,1,{},OXt),D(Pa,"JsonImporter/lambda$18$Type",919),M(924,1,{},QUt),D(Pa,"JsonImporter/lambda$19$Type",924),M(905,1,{},JUt),D(Pa,"JsonImporter/lambda$2$Type",905),M(922,1,{},ZUt),D(Pa,"JsonImporter/lambda$20$Type",922),M(923,1,{},tGt),D(Pa,"JsonImporter/lambda$21$Type",923),M(927,1,{},eGt),D(Pa,"JsonImporter/lambda$22$Type",927),M(925,1,{},nGt),D(Pa,"JsonImporter/lambda$23$Type",925),M(926,1,{},rGt),D(Pa,"JsonImporter/lambda$24$Type",926),M(929,1,{},iGt),D(Pa,"JsonImporter/lambda$25$Type",929),M(928,1,{},sGt),D(Pa,"JsonImporter/lambda$26$Type",928),M(930,1,rr,PXt),l.Cd=function(e){Fdn(this.b,this.a,Gr(e))},D(Pa,"JsonImporter/lambda$27$Type",930),M(931,1,rr,NXt),l.Cd=function(e){Bdn(this.b,this.a,Gr(e))},D(Pa,"JsonImporter/lambda$28$Type",931),M(932,1,{},FXt),D(Pa,"JsonImporter/lambda$29$Type",932),M(908,1,{},aGt),D(Pa,"JsonImporter/lambda$3$Type",908),M(933,1,{},BXt),D(Pa,"JsonImporter/lambda$30$Type",933),M(934,1,{},oGt),D(Pa,"JsonImporter/lambda$31$Type",934),M(935,1,{},cGt),D(Pa,"JsonImporter/lambda$32$Type",935),M(936,1,{},uGt),D(Pa,"JsonImporter/lambda$33$Type",936),M(937,1,{},lGt),D(Pa,"JsonImporter/lambda$34$Type",937),M(870,1,{},hGt),D(Pa,"JsonImporter/lambda$35$Type",870),M(941,1,{},DZt),D(Pa,"JsonImporter/lambda$36$Type",941),M(938,1,rr,fGt),l.Cd=function(e){q1n(this.a,u(e,377))},D(Pa,"JsonImporter/lambda$37$Type",938),M(939,1,rr,RXt),l.Cd=function(e){Ern(this.a,this.b,u(e,166))},D(Pa,"JsonImporter/lambda$38$Type",939),M(940,1,rr,jXt),l.Cd=function(e){Trn(this.a,this.b,u(e,166))},D(Pa,"JsonImporter/lambda$39$Type",940),M(906,1,{},dGt),D(Pa,"JsonImporter/lambda$4$Type",906),M(942,1,rr,gGt),l.Cd=function(e){H1n(this.a,u(e,8))},D(Pa,"JsonImporter/lambda$40$Type",942),M(907,1,{},pGt),D(Pa,"JsonImporter/lambda$5$Type",907),M(911,1,{},bGt),D(Pa,"JsonImporter/lambda$6$Type",911),M(909,1,{},wGt),D(Pa,"JsonImporter/lambda$7$Type",909),M(910,1,{},mGt),D(Pa,"JsonImporter/lambda$8$Type",910),M(913,1,{},vGt),D(Pa,"JsonImporter/lambda$9$Type",913),M(961,1,rr,yGt),l.Cd=function(e){G6(this.a,new Oy(Gr(e)))},D(Pa,"JsonMetaDataConverter/lambda$0$Type",961),M(962,1,rr,xGt),l.Cd=function(e){Pun(this.a,u(e,245))},D(Pa,"JsonMetaDataConverter/lambda$1$Type",962),M(963,1,rr,kGt),l.Cd=function(e){Ohn(this.a,u(e,143))},D(Pa,"JsonMetaDataConverter/lambda$2$Type",963),M(964,1,rr,EGt),l.Cd=function(e){Nun(this.a,u(e,170))},D(Pa,"JsonMetaDataConverter/lambda$3$Type",964),M(245,22,{3:1,34:1,22:1,245:1},I6);var FK,BK,Hdt,RK,jK,$K,Vdt,Udt,zK=Cr(aP,"GraphFeature",245,Ir,m0n,ocn),z7e;M(11,1,{34:1,149:1},Ni,os,un,Ta),l.Fd=function(e){return Lin(this,u(e,149))},l.Fb=function(e){return hne(this,e)},l.Sg=function(){return _e(this)},l.Pg=function(){return this.b},l.Hb=function(){return Cp(this.b)},l.Ib=function(){return this.b},D(aP,"Property",11),M(671,1,Xr,Ant),l.Ne=function(e,n){return jbn(this,u(e,96),u(n,96))},l.Fb=function(e){return this===e},l.Oe=function(){return new Qn(this)},D(aP,"PropertyHolderComparator",671),M(709,1,ba,y2t),l.Nb=function(e){Da(this,e)},l.Pb=function(){return $dn(this)},l.Qb=function(){vWt()},l.Ob=function(){return!!this.a},D(cU,"ElkGraphUtil/AncestorIterator",709);var wIt=us(io,"EList");M(70,56,{20:1,31:1,56:1,16:1,15:1,70:1,61:1}),l.bd=function(e,n){eS(this,e,n)},l.Fc=function(e){return Mr(this,e)},l.cd=function(e,n){return P4t(this,e,n)},l.Gc=function(e){return bs(this,e)},l.Ii=function(){return new B6(this)},l.Ji=function(){return new tI(this)},l.Ki=function(e){return UI(this,e)},l.Li=function(){return!0},l.Mi=function(e,n){},l.Ni=function(){},l.Oi=function(e,n){Ast(this,e,n)},l.Pi=function(e,n,r){},l.Qi=function(e,n){},l.Ri=function(e,n,r){},l.Fb=function(e){return Wde(this,e)},l.Hb=function(){return M4t(this)},l.Si=function(){return!1},l.Kc=function(){return new Zn(this)},l.ed=function(){return new F6(this)},l.fd=function(e){var n;if(n=this.gc(),e<0||e>n)throw nt(new My(e,n));return new Oit(this,e)},l.Ui=function(e,n){this.Ti(e,this.dd(n))},l.Mc=function(e){return Cq(this,e)},l.Wi=function(e,n){return n},l.hd=function(e,n){return s5(this,e,n)},l.Ib=function(){return T5t(this)},l.Yi=function(){return!0},l.Zi=function(e,n){return l7(this,n)},D(io,"AbstractEList",70),M(66,70,r0,V8,jm,T4t),l.Ei=function(e,n){return Cot(this,e,n)},l.Fi=function(e){return Vle(this,e)},l.Gi=function(e,n){aO(this,e,n)},l.Hi=function(e){LI(this,e)},l.$i=function(e){return R3t(this,e)},l.$b=function(){B_(this)},l.Hc=function(e){return _7(this,e)},l.Xb=function(e){return Lt(this,e)},l._i=function(e){var n,r,s;++this.j,r=this.g==null?0:this.g.length,e>r&&(s=this.g,n=r+(r/2|0)+4,n=0?(this.gd(n),!0):!1},l.Xi=function(e,n){return this.Dj(e,this.Zi(e,n))},l.gc=function(){return this.Ej()},l.Pc=function(){return this.Fj()},l.Qc=function(e){return this.Gj(e)},l.Ib=function(){return this.Hj()},D(io,"DelegatingEList",2093),M(2094,2093,lme),l.Ei=function(e,n){return mkt(this,e,n)},l.Fi=function(e){return this.Ei(this.Ej(),e)},l.Gi=function(e,n){N1e(this,e,n)},l.Hi=function(e){E1e(this,e)},l.Li=function(){return!this.Mj()},l.$b=function(){LS(this)},l.Ij=function(e,n,r,s,o){return new lne(this,e,n,r,s,o)},l.Jj=function(e){Ti(this.jj(),e)},l.Kj=function(){return null},l.Lj=function(){return-1},l.jj=function(){return null},l.Mj=function(){return!1},l.Nj=function(e,n){return n},l.Oj=function(e,n){return n},l.Pj=function(){return!1},l.Qj=function(){return!this.Aj()},l.Ti=function(e,n){var r,s;return this.Pj()?(s=this.Qj(),r=Uxt(this,e,n),this.Jj(this.Ij(7,fe(n),r,e,s)),r):Uxt(this,e,n)},l.gd=function(e){var n,r,s,o;return this.Pj()?(r=null,s=this.Qj(),n=this.Ij(4,o=kz(this,e),null,e,s),this.Mj()&&o?(r=this.Oj(o,r),r?(r.nj(n),r.oj()):this.Jj(n)):r?(r.nj(n),r.oj()):this.Jj(n),o):(o=kz(this,e),this.Mj()&&o&&(r=this.Oj(o,null),r&&r.oj()),o)},l.Xi=function(e,n){return q0e(this,e,n)},D(Ik,"DelegatingNotifyingListImpl",2094),M(152,1,EP),l.nj=function(e){return Mxt(this,e)},l.oj=function(){Fst(this)},l.gj=function(){return this.d},l.Kj=function(){return null},l.Rj=function(){return null},l.hj=function(e){return-1},l.ij=function(){return Lde(this)},l.jj=function(){return null},l.kj=function(){return Y6t(this)},l.lj=function(){return this.o<0?this.o<-2?-2-this.o-1:-1:this.o},l.Sj=function(){return!1},l.mj=function(e){var n,r,s,o,h,d,m,k,T,A,N;switch(this.d){case 1:case 2:switch(o=e.gj(),o){case 1:case 2:if(h=e.jj(),$t(h)===$t(this.jj())&&this.hj(null)==e.hj(null))return this.g=e.ij(),e.gj()==1&&(this.d=1),!0}case 4:{switch(o=e.gj(),o){case 4:{if(h=e.jj(),$t(h)===$t(this.jj())&&this.hj(null)==e.hj(null))return T=Nkt(this),k=this.o<0?this.o<-2?-2-this.o-1:-1:this.o,d=e.lj(),this.d=6,N=new jm(2),k<=d?(Mr(N,this.n),Mr(N,e.kj()),this.g=ot(st(Or,1),ii,28,15,[this.o=k,d+1])):(Mr(N,e.kj()),Mr(N,this.n),this.g=ot(st(Or,1),ii,28,15,[this.o=d,k])),this.n=N,T||(this.o=-2-this.o-1),!0;break}}break}case 6:{switch(o=e.gj(),o){case 4:{if(h=e.jj(),$t(h)===$t(this.jj())&&this.hj(null)==e.hj(null)){for(T=Nkt(this),d=e.lj(),A=u(this.g,53),s=Vt(Or,ii,28,A.length+1,15,1),n=0;n>>0,n.toString(16))),s.a+=" (eventType: ",this.d){case 1:{s.a+="SET";break}case 2:{s.a+="UNSET";break}case 3:{s.a+="ADD";break}case 5:{s.a+="ADD_MANY";break}case 4:{s.a+="REMOVE";break}case 6:{s.a+="REMOVE_MANY";break}case 7:{s.a+="MOVE";break}case 8:{s.a+="REMOVING_ADAPTER";break}case 9:{s.a+="RESOLVE";break}default:{Jnt(s,this.d);break}}if(b0e(this)&&(s.a+=", touch: true"),s.a+=", position: ",Jnt(s,this.o<0?this.o<-2?-2-this.o-1:-1:this.o),s.a+=", notifier: ",o_(s,this.jj()),s.a+=", feature: ",o_(s,this.Kj()),s.a+=", oldValue: ",o_(s,Y6t(this)),s.a+=", newValue: ",this.d==6&&At(this.g,53)){for(r=u(this.g,53),s.a+="[",e=0;e10?((!this.b||this.c.j!=this.a)&&(this.b=new v_(this),this.a=this.j),v1(this.b,e)):_7(this,e)},l.Yi=function(){return!0},l.a=0,D(io,"AbstractEList/1",966),M(301,77,Zct,My),D(io,"AbstractEList/BasicIndexOutOfBoundsException",301),M(40,1,ba,Zn),l.Nb=function(e){Da(this,e)},l.Xj=function(){if(this.i.j!=this.f)throw nt(new yh)},l.Yj=function(){return sr(this)},l.Ob=function(){return this.e!=this.i.gc()},l.Pb=function(){return this.Yj()},l.Qb=function(){dS(this)},l.e=0,l.f=0,l.g=-1,D(io,"AbstractEList/EIterator",40),M(286,40,I0,F6,Oit),l.Qb=function(){dS(this)},l.Rb=function(e){que(this,e)},l.Zj=function(){var e;try{return e=this.d.Xb(--this.e),this.Xj(),this.g=this.e,e}catch(n){throw n=is(n),At(n,77)?(this.Xj(),nt(new ac)):nt(n)}},l.$j=function(e){Kle(this,e)},l.Sb=function(){return this.e!=0},l.Tb=function(){return this.e},l.Ub=function(){return this.Zj()},l.Vb=function(){return this.e-1},l.Wb=function(e){this.$j(e)},D(io,"AbstractEList/EListIterator",286),M(355,40,ba,B6),l.Yj=function(){return Qat(this)},l.Qb=function(){throw nt(new Vr)},D(io,"AbstractEList/NonResolvingEIterator",355),M(398,286,I0,tI,fvt),l.Rb=function(e){throw nt(new Vr)},l.Yj=function(){var e;try{return e=this.c.Vi(this.e),this.Xj(),this.g=this.e++,e}catch(n){throw n=is(n),At(n,77)?(this.Xj(),nt(new ac)):nt(n)}},l.Zj=function(){var e;try{return e=this.c.Vi(--this.e),this.Xj(),this.g=this.e,e}catch(n){throw n=is(n),At(n,77)?(this.Xj(),nt(new ac)):nt(n)}},l.Qb=function(){throw nt(new Vr)},l.Wb=function(e){throw nt(new Vr)},D(io,"AbstractEList/NonResolvingEListIterator",398),M(2080,70,hme),l.Ei=function(e,n){var r,s,o,h,d,m,k,T,A,N,j;if(o=n.gc(),o!=0){for(T=u($n(this.a,4),129),A=T==null?0:T.length,j=A+o,s=yat(this,j),N=A-e,N>0&&Wc(T,e,s,e+o,N),k=n.Kc(),d=0;dr)throw nt(new My(e,r));return new Iee(this,e)},l.$b=function(){var e,n;++this.j,e=u($n(this.a,4),129),n=e==null?0:e.length,k7(this,null),Ast(this,n,e)},l.Hc=function(e){var n,r,s,o,h;if(n=u($n(this.a,4),129),n!=null){if(e!=null){for(s=n,o=0,h=s.length;o=r)throw nt(new My(e,r));return n[e]},l.dd=function(e){var n,r,s;if(n=u($n(this.a,4),129),n!=null){if(e!=null){for(r=0,s=n.length;rr)throw nt(new My(e,r));return new Dee(this,e)},l.Ti=function(e,n){var r,s,o;if(r=Jue(this),o=r==null?0:r.length,e>=o)throw nt(new No(Ult+e+ww+o));if(n>=o)throw nt(new No(Glt+n+ww+o));return s=r[n],e!=n&&(e0&&Wc(e,0,n,0,r),n},l.Qc=function(e){var n,r,s;return n=u($n(this.a,4),129),s=n==null?0:n.length,s>0&&(e.lengths&&hs(e,s,null),e};var q7e;D(io,"ArrayDelegatingEList",2080),M(1051,40,ba,Oie),l.Xj=function(){if(this.b.j!=this.f||$t(u($n(this.b.a,4),129))!==$t(this.a))throw nt(new yh)},l.Qb=function(){dS(this),this.a=u($n(this.b.a,4),129)},D(io,"ArrayDelegatingEList/EIterator",1051),M(722,286,I0,Ute,Dee),l.Xj=function(){if(this.b.j!=this.f||$t(u($n(this.b.a,4),129))!==$t(this.a))throw nt(new yh)},l.$j=function(e){Kle(this,e),this.a=u($n(this.b.a,4),129)},l.Qb=function(){dS(this),this.a=u($n(this.b.a,4),129)},D(io,"ArrayDelegatingEList/EListIterator",722),M(1052,355,ba,Pie),l.Xj=function(){if(this.b.j!=this.f||$t(u($n(this.b.a,4),129))!==$t(this.a))throw nt(new yh)},D(io,"ArrayDelegatingEList/NonResolvingEIterator",1052),M(723,398,I0,Gte,Iee),l.Xj=function(){if(this.b.j!=this.f||$t(u($n(this.b.a,4),129))!==$t(this.a))throw nt(new yh)},D(io,"ArrayDelegatingEList/NonResolvingEListIterator",723),M(615,301,Zct,Rrt),D(io,"BasicEList/BasicIndexOutOfBoundsException",615),M(710,66,r0,tmt),l.bd=function(e,n){throw nt(new Vr)},l.Fc=function(e){throw nt(new Vr)},l.cd=function(e,n){throw nt(new Vr)},l.Gc=function(e){throw nt(new Vr)},l.$b=function(){throw nt(new Vr)},l._i=function(e){throw nt(new Vr)},l.Kc=function(){return this.Ii()},l.ed=function(){return this.Ji()},l.fd=function(e){return this.Ki(e)},l.Ti=function(e,n){throw nt(new Vr)},l.Ui=function(e,n){throw nt(new Vr)},l.gd=function(e){throw nt(new Vr)},l.Mc=function(e){throw nt(new Vr)},l.hd=function(e,n){throw nt(new Vr)},D(io,"BasicEList/UnmodifiableEList",710),M(721,1,{3:1,20:1,16:1,15:1,61:1,597:1}),l.bd=function(e,n){win(this,e,u(n,44))},l.Fc=function(e){return lsn(this,u(e,44))},l.Jc=function(e){Oa(this,e)},l.Xb=function(e){return u(Lt(this.c,e),136)},l.Ti=function(e,n){return u(this.c.Ti(e,n),44)},l.Ui=function(e,n){min(this,e,u(n,44))},l.Lc=function(){return new ln(null,new gn(this,16))},l.gd=function(e){return u(this.c.gd(e),44)},l.hd=function(e,n){return Oun(this,e,u(n,44))},l.jd=function(e){Q2(this,e)},l.Nc=function(){return new gn(this,16)},l.Oc=function(){return new ln(null,new gn(this,16))},l.cd=function(e,n){return this.c.cd(e,n)},l.Gc=function(e){return this.c.Gc(e)},l.$b=function(){this.c.$b()},l.Hc=function(e){return this.c.Hc(e)},l.Ic=function(e){return QI(this.c,e)},l._j=function(){var e,n,r;if(this.d==null){for(this.d=Vt(mIt,_Tt,66,2*this.f+1,0,1),r=this.e,this.f=0,n=this.c.Kc();n.e!=n.i.gc();)e=u(n.Yj(),136),SH(this,e);this.e=r}},l.Fb=function(e){return vZt(this,e)},l.Hb=function(){return M4t(this.c)},l.dd=function(e){return this.c.dd(e)},l.ak=function(){this.c=new TGt(this)},l.dc=function(){return this.f==0},l.Kc=function(){return this.c.Kc()},l.ed=function(){return this.c.ed()},l.fd=function(e){return this.c.fd(e)},l.bk=function(){return II(this)},l.ck=function(e,n,r){return new IZt(e,n,r)},l.dk=function(){return new Utt},l.Mc=function(e){return soe(this,e)},l.gc=function(){return this.f},l.kd=function(e,n){return new vp(this.c,e,n)},l.Pc=function(){return this.c.Pc()},l.Qc=function(e){return this.c.Qc(e)},l.Ib=function(){return T5t(this.c)},l.e=0,l.f=0,D(io,"BasicEMap",721),M(1046,66,r0,TGt),l.Mi=function(e,n){Yen(this,u(n,136))},l.Pi=function(e,n,r){var s;++(s=this,u(n,136),s).a.e},l.Qi=function(e,n){Xen(this,u(n,136))},l.Ri=function(e,n,r){Yin(this,u(n,136),u(r,136))},l.Oi=function(e,n){Joe(this.a)},D(io,"BasicEMap/1",1046),M(1047,66,r0,Utt),l.aj=function(e){return Vt(B_n,fme,621,e,0,1)},D(io,"BasicEMap/2",1047),M(1048,od,il,CGt),l.$b=function(){this.a.c.$b()},l.Hc=function(e){return zat(this.a,e)},l.Kc=function(){return this.a.f==0?(TE(),$N.a):new oWt(this.a)},l.Mc=function(e){var n;return n=this.a.f,pH(this.a,e),this.a.f!=n},l.gc=function(){return this.a.f},D(io,"BasicEMap/3",1048),M(1049,31,o3,_Gt),l.$b=function(){this.a.c.$b()},l.Hc=function(e){return Yde(this.a,e)},l.Kc=function(){return this.a.f==0?(TE(),$N.a):new cWt(this.a)},l.gc=function(){return this.a.f},D(io,"BasicEMap/4",1049),M(1050,od,il,SGt),l.$b=function(){this.a.c.$b()},l.Hc=function(e){var n,r,s,o,h,d,m,k,T;if(this.a.f>0&&At(e,44)&&(this.a._j(),k=u(e,44),m=k.ld(),o=m==null?0:Hi(m),h=Qmt(this.a,o),n=this.a.d[h],n)){for(r=u(n.g,379),T=n.i,d=0;d"+this.c},l.a=0;var B_n=D(io,"BasicEMap/EntryImpl",621);M(546,1,{},E4),D(io,"BasicEMap/View",546);var $N;M(783,1,{}),l.Fb=function(e){return I6t((wn(),so),e)},l.Hb=function(){return q4t((wn(),so))},l.Ib=function(){return Rb((wn(),so))},D(io,"ECollections/BasicEmptyUnmodifiableEList",783),M(1348,1,I0,qR),l.Nb=function(e){Da(this,e)},l.Rb=function(e){throw nt(new Vr)},l.Ob=function(){return!1},l.Sb=function(){return!1},l.Pb=function(){throw nt(new ac)},l.Tb=function(){return 0},l.Ub=function(){throw nt(new ac)},l.Vb=function(){return-1},l.Qb=function(){throw nt(new Vr)},l.Wb=function(e){throw nt(new Vr)},D(io,"ECollections/BasicEmptyUnmodifiableEList/1",1348),M(1346,783,{20:1,16:1,15:1,61:1},wKt),l.bd=function(e,n){IWt()},l.Fc=function(e){return OWt()},l.cd=function(e,n){return PWt()},l.Gc=function(e){return NWt()},l.$b=function(){FWt()},l.Hc=function(e){return!1},l.Ic=function(e){return!1},l.Jc=function(e){Oa(this,e)},l.Xb=function(e){return rmt((wn(),e)),null},l.dd=function(e){return-1},l.dc=function(){return!0},l.Kc=function(){return this.a},l.ed=function(){return this.a},l.fd=function(e){return this.a},l.Ti=function(e,n){return BWt()},l.Ui=function(e,n){RWt()},l.Lc=function(){return new ln(null,new gn(this,16))},l.gd=function(e){return jWt()},l.Mc=function(e){return $Wt()},l.hd=function(e,n){return zWt()},l.gc=function(){return 0},l.jd=function(e){Q2(this,e)},l.Nc=function(){return new gn(this,16)},l.Oc=function(){return new ln(null,new gn(this,16))},l.kd=function(e,n){return wn(),new vp(so,e,n)},l.Pc=function(){return tyt((wn(),so))},l.Qc=function(e){return wn(),uS(so,e)},D(io,"ECollections/EmptyUnmodifiableEList",1346),M(1347,783,{20:1,16:1,15:1,61:1,597:1},mKt),l.bd=function(e,n){IWt()},l.Fc=function(e){return OWt()},l.cd=function(e,n){return PWt()},l.Gc=function(e){return NWt()},l.$b=function(){FWt()},l.Hc=function(e){return!1},l.Ic=function(e){return!1},l.Jc=function(e){Oa(this,e)},l.Xb=function(e){return rmt((wn(),e)),null},l.dd=function(e){return-1},l.dc=function(){return!0},l.Kc=function(){return this.a},l.ed=function(){return this.a},l.fd=function(e){return this.a},l.Ti=function(e,n){return BWt()},l.Ui=function(e,n){RWt()},l.Lc=function(){return new ln(null,new gn(this,16))},l.gd=function(e){return jWt()},l.Mc=function(e){return $Wt()},l.hd=function(e,n){return zWt()},l.gc=function(){return 0},l.jd=function(e){Q2(this,e)},l.Nc=function(){return new gn(this,16)},l.Oc=function(){return new ln(null,new gn(this,16))},l.kd=function(e,n){return wn(),new vp(so,e,n)},l.Pc=function(){return tyt((wn(),so))},l.Qc=function(e){return wn(),uS(so,e)},l.bk=function(){return wn(),wn(),j0},D(io,"ECollections/EmptyUnmodifiableEMap",1347);var yIt=us(io,"Enumerator"),qK;M(288,1,{288:1},Wot),l.Fb=function(e){var n;return this===e?!0:At(e,288)?(n=u(e,288),this.f==n.f&&Ycn(this.i,n.i)&&xit(this.a,this.f&256?n.f&256?n.a:null:n.f&256?null:n.a)&&xit(this.d,n.d)&&xit(this.g,n.g)&&xit(this.e,n.e)&&vwn(this,n)):!1},l.Hb=function(){return this.f},l.Ib=function(){return A0e(this)},l.f=0;var H7e=0,V7e=0,U7e=0,G7e=0,xIt=0,kIt=0,EIt=0,TIt=0,CIt=0,K7e,pL=0,bL=0,W7e=0,Y7e=0,HK,_It;D(io,"URI",288),M(1121,45,y5,vKt),l.zc=function(e,n){return u(Bo(this,Gr(e),u(n,288)),288)},D(io,"URI/URICache",1121),M(505,66,r0,Htt,Az),l.Si=function(){return!0},D(io,"UniqueEList",505),M(590,63,Ig,kq),D(io,"WrappedException",590);var oi=us(Rh,pme),H3=us(Rh,bme),Ku=us(Rh,wme),V3=us(Rh,mme),N1=us(Rh,vme),pf=us(Rh,"EClass"),Wdt=us(Rh,"EDataType"),X7e;M(1233,45,y5,yKt),l.xc=function(e){return pa(e)?eu(this,e):Uo(yo(this.f,e))},D(Rh,"EDataType/Internal/ConversionDelegate/Factory/Registry/Impl",1233);var VK=us(Rh,"EEnum"),zg=us(Rh,yme),So=us(Rh,xme),bf=us(Rh,kme),wf,Iv=us(Rh,Eme),U3=us(Rh,Tme);M(1042,1,{},$R),l.Ib=function(){return"NIL"},D(Rh,"EStructuralFeature/Internal/DynamicValueHolder/1",1042);var Q7e;M(1041,45,y5,xKt),l.xc=function(e){return pa(e)?eu(this,e):Uo(yo(this.f,e))},D(Rh,"EStructuralFeature/Internal/SettingDelegate/Factory/Registry/Impl",1041);var Ou=us(Rh,Cme),t8=us(Rh,"EValidator/PatternMatcher"),SIt,AIt,Fn,Xp,G3,f2,J7e,Z7e,tTe,d2,Qp,g2,Ov,yd,eTe,nTe,mf,Jp,rTe,Zp,K3,lx,po,iTe,sTe,Pv,UK=us(Zi,"FeatureMap/Entry");M(545,1,{76:1},U$),l.Lk=function(){return this.a},l.md=function(){return this.b},D(jn,"BasicEObjectImpl/1",545),M(1040,1,Jlt,HXt),l.Fk=function(e){return Tst(this.a,this.b,e)},l.Qj=function(){return Cne(this.a,this.b)},l.Wb=function(e){qyt(this.a,this.b,e)},l.Gk=function(){Gun(this.a,this.b)},D(jn,"BasicEObjectImpl/4",1040),M(2081,1,{114:1}),l.Mk=function(e){this.e=e==0?aTe:Vt(sa,Ln,1,e,5,1)},l.li=function(e){return this.e[e]},l.mi=function(e,n){this.e[e]=n},l.ni=function(e){this.e[e]=null},l.Nk=function(){return this.c},l.Ok=function(){throw nt(new Vr)},l.Pk=function(){throw nt(new Vr)},l.Qk=function(){return this.d},l.Rk=function(){return this.e!=null},l.Sk=function(e){this.c=e},l.Tk=function(e){throw nt(new Vr)},l.Uk=function(e){throw nt(new Vr)},l.Vk=function(e){this.d=e};var aTe;D(jn,"BasicEObjectImpl/EPropertiesHolderBaseImpl",2081),M(192,2081,{114:1},Xh),l.Ok=function(){return this.a},l.Pk=function(){return this.b},l.Tk=function(e){this.a=e},l.Uk=function(e){this.b=e},D(jn,"BasicEObjectImpl/EPropertiesHolderImpl",192),M(516,99,_we,U8),l.uh=function(){return this.f},l.zh=function(){return this.k},l.Bh=function(e,n){this.g=e,this.i=n},l.Dh=function(){return this.j&2?this.$h().Nk():this.ii()},l.Fh=function(){return this.i},l.wh=function(){return(this.j&1)!=0},l.Ph=function(){return this.g},l.Vh=function(){return(this.j&4)!=0},l.$h=function(){return!this.k&&(this.k=new Xh),this.k},l.ci=function(e){this.$h().Sk(e),e?this.j|=2:this.j&=-3},l.ei=function(e){this.$h().Uk(e),e?this.j|=4:this.j&=-5},l.ii=function(){return(Tb(),Fn).S},l.i=0,l.j=1,D(jn,"EObjectImpl",516),M(798,516,{110:1,94:1,93:1,58:1,114:1,54:1,99:1},Bvt),l.li=function(e){return this.e[e]},l.mi=function(e,n){this.e[e]=n},l.ni=function(e){this.e[e]=null},l.Dh=function(){return this.d},l.Ih=function(e){return ss(this.d,e)},l.Kh=function(){return this.d},l.Oh=function(){return this.e!=null},l.$h=function(){return!this.k&&(this.k=new Lc),this.k},l.ci=function(e){this.d=e},l.hi=function(){var e;return this.e==null&&(e=ur(this.d),this.e=e==0?oTe:Vt(sa,Ln,1,e,5,1)),this},l.ji=function(){return 0};var oTe;D(jn,"DynamicEObjectImpl",798),M(1522,798,{110:1,44:1,94:1,93:1,136:1,58:1,114:1,54:1,99:1},rte),l.Fb=function(e){return this===e},l.Hb=function(){return km(this)},l.ci=function(e){this.d=e,this.b=NO(e,"key"),this.c=NO(e,JS)},l.Bi=function(){var e;return this.a==-1&&(e=Bst(this,this.b),this.a=e==null?0:Hi(e)),this.a},l.ld=function(){return Bst(this,this.b)},l.md=function(){return Bst(this,this.c)},l.Ci=function(e){this.a=e},l.Di=function(e){qyt(this,this.b,e)},l.nd=function(e){var n;return n=Bst(this,this.c),qyt(this,this.c,e),n},l.a=0,D(jn,"DynamicEObjectImpl/BasicEMapEntry",1522),M(1523,1,{114:1},Lc),l.Mk=function(e){throw nt(new Vr)},l.li=function(e){throw nt(new Vr)},l.mi=function(e,n){throw nt(new Vr)},l.ni=function(e){throw nt(new Vr)},l.Nk=function(){throw nt(new Vr)},l.Ok=function(){return this.a},l.Pk=function(){return this.b},l.Qk=function(){return this.c},l.Rk=function(){throw nt(new Vr)},l.Sk=function(e){throw nt(new Vr)},l.Tk=function(e){this.a=e},l.Uk=function(e){this.b=e},l.Vk=function(e){this.c=e},D(jn,"DynamicEObjectImpl/DynamicEPropertiesHolderImpl",1523),M(519,158,{110:1,94:1,93:1,598:1,155:1,58:1,114:1,54:1,99:1,519:1,158:1,119:1,120:1},HR),l.Ah=function(e){return dxt(this,e)},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.d;case 2:return r?(!this.b&&(this.b=new Hl((bn(),po),Sc,this)),this.b):(!this.b&&(this.b=new Hl((bn(),po),Sc,this)),II(this.b));case 3:return Mne(this);case 4:return!this.a&&(this.a=new Ns(l2,this,4)),this.a;case 5:return!this.c&&(this.c=new H4(l2,this,5)),this.c}return Ah(this,e-ur((bn(),Xp)),Tn((s=u($n(this,16),29),s||Xp),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),mu(this.Ab,e,r);case 3:return this.Cb&&(r=(o=this.Db>>16,o>=0?dxt(this,r):this.Cb.Th(this,-1-o,null,r))),Zvt(this,u(e,155),r)}return h=u(Tn((s=u($n(this,16),29),s||(bn(),Xp)),n),69),h.wk().zk(this,Su(this),n-ur((bn(),Xp)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r);case 2:return!this.b&&(this.b=new Hl((bn(),po),Sc,this)),lz(this.b,e,r);case 3:return Zvt(this,null,r);case 4:return!this.a&&(this.a=new Ns(l2,this,4)),no(this.a,e,r)}return o=u(Tn((s=u($n(this,16),29),s||(bn(),Xp)),n),69),o.wk().Ak(this,Su(this),n-ur((bn(),Xp)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.d!=null;case 2:return!!this.b&&this.b.f!=0;case 3:return!!Mne(this);case 4:return!!this.a&&this.a.i!=0;case 5:return!!this.c&&this.c.i!=0}return _h(this,e-ur((bn(),Xp)),Tn((n=u($n(this,16),29),n||Xp),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:Fcn(this,Gr(n));return;case 2:!this.b&&(this.b=new Hl((bn(),po),Sc,this)),Kq(this.b,n);return;case 3:bde(this,u(n,155));return;case 4:!this.a&&(this.a=new Ns(l2,this,4)),Lr(this.a),!this.a&&(this.a=new Ns(l2,this,4)),bs(this.a,u(n,16));return;case 5:!this.c&&(this.c=new H4(l2,this,5)),Lr(this.c),!this.c&&(this.c=new H4(l2,this,5)),bs(this.c,u(n,16));return}Ih(this,e-ur((bn(),Xp)),Tn((r=u($n(this,16),29),r||Xp),e),n)},l.ii=function(){return bn(),Xp},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:g4t(this,null);return;case 2:!this.b&&(this.b=new Hl((bn(),po),Sc,this)),this.b.c.$b();return;case 3:bde(this,null);return;case 4:!this.a&&(this.a=new Ns(l2,this,4)),Lr(this.a);return;case 5:!this.c&&(this.c=new H4(l2,this,5)),Lr(this.c);return}Dh(this,e-ur((bn(),Xp)),Tn((n=u($n(this,16),29),n||Xp),e))},l.Ib=function(){return vue(this)},l.d=null,D(jn,"EAnnotationImpl",519),M(141,721,STt,el),l.Gi=function(e,n){tin(this,e,u(n,44))},l.Wk=function(e,n){return nan(this,u(e,44),n)},l.$i=function(e){return u(u(this.c,71).$i(e),136)},l.Ii=function(){return u(this.c,71).Ii()},l.Ji=function(){return u(this.c,71).Ji()},l.Ki=function(e){return u(this.c,71).Ki(e)},l.Xk=function(e,n){return lz(this,e,n)},l.Fk=function(e){return u(this.c,79).Fk(e)},l.ak=function(){},l.Qj=function(){return u(this.c,79).Qj()},l.ck=function(e,n,r){var s;return s=u(nh(this.b).wi().si(this.b),136),s.Ci(e),s.Di(n),s.nd(r),s},l.dk=function(){return new k2t(this)},l.Wb=function(e){Kq(this,e)},l.Gk=function(){u(this.c,79).Gk()},D(Zi,"EcoreEMap",141),M(165,141,STt,Hl),l._j=function(){var e,n,r,s,o,h;if(this.d==null){for(h=Vt(mIt,_Tt,66,2*this.f+1,0,1),r=this.c.Kc();r.e!=r.i.gc();)n=u(r.Yj(),136),s=n.Bi(),o=(s&ki)%h.length,e=h[o],!e&&(e=h[o]=new k2t(this)),e.Fc(n);this.d=h}},D(jn,"EAnnotationImpl/1",165),M(291,448,{110:1,94:1,93:1,155:1,197:1,58:1,114:1,480:1,54:1,99:1,158:1,291:1,119:1,120:1}),l.Lh=function(e,n,r){var s,o;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Nn(),!!(this.Bb&256);case 3:return Nn(),!!(this.Bb&512);case 4:return fe(this.s);case 5:return fe(this.t);case 6:return Nn(),!!this.Jk();case 7:return Nn(),o=this.s,o>=1;case 8:return n?rf(this):this.r;case 9:return this.q}return Ah(this,e-ur(this.ii()),Tn((s=u($n(this,16),29),s||this.ii()),e),n,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r);case 9:return Fit(this,r)}return o=u(Tn((s=u($n(this,16),29),s||this.ii()),n),69),o.wk().Ak(this,Su(this),n-ur(this.ii()),e,r)},l.Wh=function(e){var n,r;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.Jk();case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0)}return _h(this,e-ur(this.ii()),Tn((n=u($n(this,16),29),n||this.ii()),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:this.ui(Gr(n));return;case 2:Ap(this,Ie(De(n)));return;case 3:Lp(this,Ie(De(n)));return;case 4:Tp(this,u(n,17).a);return;case 5:this.Zk(u(n,17).a);return;case 8:rw(this,u(n,142));return;case 9:s=sd(this,u(n,89),null),s&&s.oj();return}Ih(this,e-ur(this.ii()),Tn((r=u($n(this,16),29),r||this.ii()),e),n)},l.ii=function(){return bn(),sTe},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:this.ui(null);return;case 2:Ap(this,!0);return;case 3:Lp(this,!0);return;case 4:Tp(this,0);return;case 5:this.Zk(1);return;case 8:rw(this,null);return;case 9:r=sd(this,null,null),r&&r.oj();return}Dh(this,e-ur(this.ii()),Tn((n=u($n(this,16),29),n||this.ii()),e))},l.pi=function(){rf(this),this.Bb|=1},l.Hk=function(){return rf(this)},l.Ik=function(){return this.t},l.Jk=function(){var e;return e=this.t,e>1||e==-1},l.Si=function(){return(this.Bb&512)!=0},l.Yk=function(e,n){return o5t(this,e,n)},l.Zk=function(e){Hy(this,e)},l.Ib=function(){return E6t(this)},l.s=0,l.t=1,D(jn,"ETypedElementImpl",291),M(461,291,{110:1,94:1,93:1,155:1,197:1,58:1,179:1,69:1,114:1,480:1,54:1,99:1,158:1,461:1,291:1,119:1,120:1,692:1}),l.Ah=function(e){return che(this,e)},l.Lh=function(e,n,r){var s,o;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Nn(),!!(this.Bb&256);case 3:return Nn(),!!(this.Bb&512);case 4:return fe(this.s);case 5:return fe(this.t);case 6:return Nn(),!!this.Jk();case 7:return Nn(),o=this.s,o>=1;case 8:return n?rf(this):this.r;case 9:return this.q;case 10:return Nn(),!!(this.Bb&Uf);case 11:return Nn(),!!(this.Bb&b3);case 12:return Nn(),!!(this.Bb&u3);case 13:return this.j;case 14:return I7(this);case 15:return Nn(),!!(this.Bb&al);case 16:return Nn(),!!(this.Bb&Wd);case 17:return Ny(this)}return Ah(this,e-ur(this.ii()),Tn((s=u($n(this,16),29),s||this.ii()),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),mu(this.Ab,e,r);case 17:return this.Cb&&(r=(o=this.Db>>16,o>=0?che(this,r):this.Cb.Th(this,-1-o,null,r))),ch(this,e,17,r)}return h=u(Tn((s=u($n(this,16),29),s||this.ii()),n),69),h.wk().zk(this,Su(this),n-ur(this.ii()),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r);case 9:return Fit(this,r);case 17:return ch(this,null,17,r)}return o=u(Tn((s=u($n(this,16),29),s||this.ii()),n),69),o.wk().Ak(this,Su(this),n-ur(this.ii()),e,r)},l.Wh=function(e){var n,r;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.Jk();case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return(this.Bb&Uf)==0;case 11:return(this.Bb&b3)!=0;case 12:return(this.Bb&u3)!=0;case 13:return this.j!=null;case 14:return I7(this)!=null;case 15:return(this.Bb&al)!=0;case 16:return(this.Bb&Wd)!=0;case 17:return!!Ny(this)}return _h(this,e-ur(this.ii()),Tn((n=u($n(this,16),29),n||this.ii()),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:ust(this,Gr(n));return;case 2:Ap(this,Ie(De(n)));return;case 3:Lp(this,Ie(De(n)));return;case 4:Tp(this,u(n,17).a);return;case 5:this.Zk(u(n,17).a);return;case 8:rw(this,u(n,142));return;case 9:s=sd(this,u(n,89),null),s&&s.oj();return;case 10:p7(this,Ie(De(n)));return;case 11:m7(this,Ie(De(n)));return;case 12:b7(this,Ie(De(n)));return;case 13:Zwt(this,Gr(n));return;case 15:w7(this,Ie(De(n)));return;case 16:v7(this,Ie(De(n)));return}Ih(this,e-ur(this.ii()),Tn((r=u($n(this,16),29),r||this.ii()),e),n)},l.ii=function(){return bn(),iTe},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:At(this.Cb,90)&&t3(Sl(u(this.Cb,90)),4),wu(this,null);return;case 2:Ap(this,!0);return;case 3:Lp(this,!0);return;case 4:Tp(this,0);return;case 5:this.Zk(1);return;case 8:rw(this,null);return;case 9:r=sd(this,null,null),r&&r.oj();return;case 10:p7(this,!0);return;case 11:m7(this,!1);return;case 12:b7(this,!1);return;case 13:this.i=null,zq(this,null);return;case 15:w7(this,!1);return;case 16:v7(this,!1);return}Dh(this,e-ur(this.ii()),Tn((n=u($n(this,16),29),n||this.ii()),e))},l.pi=function(){NE(Ro((rl(),Fa),this)),rf(this),this.Bb|=1},l.pk=function(){return this.f},l.ik=function(){return I7(this)},l.qk=function(){return Ny(this)},l.uk=function(){return null},l.$k=function(){return this.k},l.Lj=function(){return this.n},l.vk=function(){return NH(this)},l.wk=function(){var e,n,r,s,o,h,d,m,k;return this.p||(r=Ny(this),(r.i==null&&Kd(r),r.i).length,s=this.uk(),s&&ur(Ny(s)),o=rf(this),d=o.kk(),e=d?d.i&1?d==Fl?Es:d==Or?Na:d==Y3?gT:d==wa?zs:d==b2?dv:d==gx?gv:d==cl?Ok:uA:d:null,n=I7(this),m=o.ik(),Xbn(this),this.Bb&Wd&&((h=yxt((rl(),Fa),r))&&h!=this||(h=Q6(Ro(Fa,this))))?this.p=new UXt(this,h):this.Jk()?this.al()?s?this.Bb&al?e?this.bl()?this.p=new V2(47,e,this,s):this.p=new V2(5,e,this,s):this.bl()?this.p=new Y2(46,this,s):this.p=new Y2(4,this,s):e?this.bl()?this.p=new V2(49,e,this,s):this.p=new V2(7,e,this,s):this.bl()?this.p=new Y2(48,this,s):this.p=new Y2(6,this,s):this.Bb&al?e?e==yw?this.p=new bp(50,$7e,this):this.bl()?this.p=new bp(43,e,this):this.p=new bp(1,e,this):this.bl()?this.p=new mp(42,this):this.p=new mp(0,this):e?e==yw?this.p=new bp(41,$7e,this):this.bl()?this.p=new bp(45,e,this):this.p=new bp(3,e,this):this.bl()?this.p=new mp(44,this):this.p=new mp(2,this):At(o,156)?e==UK?this.p=new mp(40,this):this.Bb&512?this.Bb&al?e?this.p=new bp(9,e,this):this.p=new mp(8,this):e?this.p=new bp(11,e,this):this.p=new mp(10,this):this.Bb&al?e?this.p=new bp(13,e,this):this.p=new mp(12,this):e?this.p=new bp(15,e,this):this.p=new mp(14,this):s?(k=s.t,k>1||k==-1?this.bl()?this.Bb&al?e?this.p=new V2(25,e,this,s):this.p=new Y2(24,this,s):e?this.p=new V2(27,e,this,s):this.p=new Y2(26,this,s):this.Bb&al?e?this.p=new V2(29,e,this,s):this.p=new Y2(28,this,s):e?this.p=new V2(31,e,this,s):this.p=new Y2(30,this,s):this.bl()?this.Bb&al?e?this.p=new V2(33,e,this,s):this.p=new Y2(32,this,s):e?this.p=new V2(35,e,this,s):this.p=new Y2(34,this,s):this.Bb&al?e?this.p=new V2(37,e,this,s):this.p=new Y2(36,this,s):e?this.p=new V2(39,e,this,s):this.p=new Y2(38,this,s)):this.bl()?this.Bb&al?e?this.p=new bp(17,e,this):this.p=new mp(16,this):e?this.p=new bp(19,e,this):this.p=new mp(18,this):this.Bb&al?e?this.p=new bp(21,e,this):this.p=new mp(20,this):e?this.p=new bp(23,e,this):this.p=new mp(22,this):this._k()?this.bl()?this.p=new OZt(u(o,29),this,s):this.p=new $yt(u(o,29),this,s):At(o,156)?e==UK?this.p=new mp(40,this):this.Bb&al?e?this.p=new Ite(n,m,this,(qat(),d==Or?NIt:d==Fl?MIt:d==b2?FIt:d==Y3?PIt:d==wa?OIt:d==gx?BIt:d==cl?DIt:d==Uh?IIt:Qdt)):this.p=new Uee(u(o,156),n,m,this):e?this.p=new Dte(n,m,this,(qat(),d==Or?NIt:d==Fl?MIt:d==b2?FIt:d==Y3?PIt:d==wa?OIt:d==gx?BIt:d==cl?DIt:d==Uh?IIt:Qdt)):this.p=new Vee(u(o,156),n,m,this):this.al()?s?this.Bb&al?this.bl()?this.p=new NZt(u(o,29),this,s):this.p=new Cvt(u(o,29),this,s):this.bl()?this.p=new PZt(u(o,29),this,s):this.p=new git(u(o,29),this,s):this.Bb&al?this.bl()?this.p=new DJt(u(o,29),this):this.p=new jmt(u(o,29),this):this.bl()?this.p=new MJt(u(o,29),this):this.p=new eit(u(o,29),this):this.bl()?s?this.Bb&al?this.p=new FZt(u(o,29),this,s):this.p=new Evt(u(o,29),this,s):this.Bb&al?this.p=new IJt(u(o,29),this):this.p=new $mt(u(o,29),this):s?this.Bb&al?this.p=new BZt(u(o,29),this,s):this.p=new Tvt(u(o,29),this,s):this.Bb&al?this.p=new OJt(u(o,29),this):this.p=new Sz(u(o,29),this)),this.p},l.rk=function(){return(this.Bb&Uf)!=0},l._k=function(){return!1},l.al=function(){return!1},l.sk=function(){return(this.Bb&Wd)!=0},l.xk=function(){return Rst(this)},l.bl=function(){return!1},l.tk=function(){return(this.Bb&al)!=0},l.cl=function(e){this.k=e},l.ui=function(e){ust(this,e)},l.Ib=function(){return nV(this)},l.e=!1,l.n=0,D(jn,"EStructuralFeatureImpl",461),M(331,461,{110:1,94:1,93:1,35:1,155:1,197:1,58:1,179:1,69:1,114:1,480:1,54:1,99:1,331:1,158:1,461:1,291:1,119:1,120:1,692:1},Nnt),l.Lh=function(e,n,r){var s,o;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Nn(),!!(this.Bb&256);case 3:return Nn(),!!(this.Bb&512);case 4:return fe(this.s);case 5:return fe(this.t);case 6:return Nn(),!!w6t(this);case 7:return Nn(),o=this.s,o>=1;case 8:return n?rf(this):this.r;case 9:return this.q;case 10:return Nn(),!!(this.Bb&Uf);case 11:return Nn(),!!(this.Bb&b3);case 12:return Nn(),!!(this.Bb&u3);case 13:return this.j;case 14:return I7(this);case 15:return Nn(),!!(this.Bb&al);case 16:return Nn(),!!(this.Bb&Wd);case 17:return Ny(this);case 18:return Nn(),!!(this.Bb&Pc);case 19:return n?cat(this):Wie(this)}return Ah(this,e-ur((bn(),G3)),Tn((s=u($n(this,16),29),s||G3),e),n,r)},l.Wh=function(e){var n,r;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return w6t(this);case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return(this.Bb&Uf)==0;case 11:return(this.Bb&b3)!=0;case 12:return(this.Bb&u3)!=0;case 13:return this.j!=null;case 14:return I7(this)!=null;case 15:return(this.Bb&al)!=0;case 16:return(this.Bb&Wd)!=0;case 17:return!!Ny(this);case 18:return(this.Bb&Pc)!=0;case 19:return!!Wie(this)}return _h(this,e-ur((bn(),G3)),Tn((n=u($n(this,16),29),n||G3),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:ust(this,Gr(n));return;case 2:Ap(this,Ie(De(n)));return;case 3:Lp(this,Ie(De(n)));return;case 4:Tp(this,u(n,17).a);return;case 5:hWt(this,u(n,17).a);return;case 8:rw(this,u(n,142));return;case 9:s=sd(this,u(n,89),null),s&&s.oj();return;case 10:p7(this,Ie(De(n)));return;case 11:m7(this,Ie(De(n)));return;case 12:b7(this,Ie(De(n)));return;case 13:Zwt(this,Gr(n));return;case 15:w7(this,Ie(De(n)));return;case 16:v7(this,Ie(De(n)));return;case 18:Pat(this,Ie(De(n)));return}Ih(this,e-ur((bn(),G3)),Tn((r=u($n(this,16),29),r||G3),e),n)},l.ii=function(){return bn(),G3},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:At(this.Cb,90)&&t3(Sl(u(this.Cb,90)),4),wu(this,null);return;case 2:Ap(this,!0);return;case 3:Lp(this,!0);return;case 4:Tp(this,0);return;case 5:this.b=0,Hy(this,1);return;case 8:rw(this,null);return;case 9:r=sd(this,null,null),r&&r.oj();return;case 10:p7(this,!0);return;case 11:m7(this,!1);return;case 12:b7(this,!1);return;case 13:this.i=null,zq(this,null);return;case 15:w7(this,!1);return;case 16:v7(this,!1);return;case 18:Pat(this,!1);return}Dh(this,e-ur((bn(),G3)),Tn((n=u($n(this,16),29),n||G3),e))},l.pi=function(){cat(this),NE(Ro((rl(),Fa),this)),rf(this),this.Bb|=1},l.Jk=function(){return w6t(this)},l.Yk=function(e,n){return this.b=0,this.a=null,o5t(this,e,n)},l.Zk=function(e){hWt(this,e)},l.Ib=function(){var e;return this.Db&64?nV(this):(e=new Jh(nV(this)),e.a+=" (iD: ",fp(e,(this.Bb&Pc)!=0),e.a+=")",e.a)},l.b=0,D(jn,"EAttributeImpl",331),M(364,448,{110:1,94:1,93:1,142:1,155:1,197:1,58:1,114:1,54:1,99:1,364:1,158:1,119:1,120:1,691:1}),l.dl=function(e){return e.Dh()==this},l.Ah=function(e){return dot(this,e)},l.Bh=function(e,n){this.w=null,this.Db=n<<16|this.Db&255,this.Cb=e},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Qm(this);case 4:return this.ik();case 5:return this.F;case 6:return n?nh(this):RE(this);case 7:return!this.A&&(this.A=new Qu(Ou,this,7)),this.A}return Ah(this,e-ur(this.ii()),Tn((s=u($n(this,16),29),s||this.ii()),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),mu(this.Ab,e,r);case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?dot(this,r):this.Cb.Th(this,-1-o,null,r))),ch(this,e,6,r)}return h=u(Tn((s=u($n(this,16),29),s||this.ii()),n),69),h.wk().zk(this,Su(this),n-ur(this.ii()),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r);case 6:return ch(this,null,6,r);case 7:return!this.A&&(this.A=new Qu(Ou,this,7)),no(this.A,e,r)}return o=u(Tn((s=u($n(this,16),29),s||this.ii()),n),69),o.wk().Ak(this,Su(this),n-ur(this.ii()),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Qm(this);case 4:return this.ik()!=null;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!RE(this);case 7:return!!this.A&&this.A.i!=0}return _h(this,e-ur(this.ii()),Tn((n=u($n(this,16),29),n||this.ii()),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:rq(this,Gr(n));return;case 2:zrt(this,Gr(n));return;case 5:j7(this,Gr(n));return;case 7:!this.A&&(this.A=new Qu(Ou,this,7)),Lr(this.A),!this.A&&(this.A=new Qu(Ou,this,7)),bs(this.A,u(n,16));return}Ih(this,e-ur(this.ii()),Tn((r=u($n(this,16),29),r||this.ii()),e),n)},l.ii=function(){return bn(),J7e},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:At(this.Cb,184)&&(u(this.Cb,184).tb=null),wu(this,null);return;case 2:f7(this,null),QE(this,this.D);return;case 5:j7(this,null);return;case 7:!this.A&&(this.A=new Qu(Ou,this,7)),Lr(this.A);return}Dh(this,e-ur(this.ii()),Tn((n=u($n(this,16),29),n||this.ii()),e))},l.hk=function(){var e;return this.G==-1&&(this.G=(e=nh(this),e?Ip(e.vi(),this):-1)),this.G},l.ik=function(){return null},l.jk=function(){return nh(this)},l.el=function(){return this.v},l.kk=function(){return Qm(this)},l.lk=function(){return this.D!=null?this.D:this.B},l.mk=function(){return this.F},l.fk=function(e){return rct(this,e)},l.fl=function(e){this.v=e},l.gl=function(e){Ioe(this,e)},l.hl=function(e){this.C=e},l.ui=function(e){rq(this,e)},l.Ib=function(){return hH(this)},l.C=null,l.D=null,l.G=-1,D(jn,"EClassifierImpl",364),M(90,364,{110:1,94:1,93:1,29:1,142:1,155:1,197:1,58:1,114:1,54:1,99:1,90:1,364:1,158:1,481:1,119:1,120:1,691:1},Af),l.dl=function(e){return jsn(this,e.Dh())},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Qm(this);case 4:return null;case 5:return this.F;case 6:return n?nh(this):RE(this);case 7:return!this.A&&(this.A=new Qu(Ou,this,7)),this.A;case 8:return Nn(),!!(this.Bb&256);case 9:return Nn(),!!(this.Bb&512);case 10:return Ko(this);case 11:return!this.q&&(this.q=new Jt(bf,this,11,10)),this.q;case 12:return b5(this);case 13:return _S(this);case 14:return _S(this),this.r;case 15:return b5(this),this.k;case 16:return o6t(this);case 17:return oct(this);case 18:return Kd(this);case 19:return KH(this);case 20:return b5(this),this.o;case 21:return!this.s&&(this.s=new Jt(Ku,this,21,17)),this.s;case 22:return Gc(this);case 23:return Kot(this)}return Ah(this,e-ur((bn(),f2)),Tn((s=u($n(this,16),29),s||f2),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),mu(this.Ab,e,r);case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?dot(this,r):this.Cb.Th(this,-1-o,null,r))),ch(this,e,6,r);case 11:return!this.q&&(this.q=new Jt(bf,this,11,10)),mu(this.q,e,r);case 21:return!this.s&&(this.s=new Jt(Ku,this,21,17)),mu(this.s,e,r)}return h=u(Tn((s=u($n(this,16),29),s||(bn(),f2)),n),69),h.wk().zk(this,Su(this),n-ur((bn(),f2)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r);case 6:return ch(this,null,6,r);case 7:return!this.A&&(this.A=new Qu(Ou,this,7)),no(this.A,e,r);case 11:return!this.q&&(this.q=new Jt(bf,this,11,10)),no(this.q,e,r);case 21:return!this.s&&(this.s=new Jt(Ku,this,21,17)),no(this.s,e,r);case 22:return no(Gc(this),e,r)}return o=u(Tn((s=u($n(this,16),29),s||(bn(),f2)),n),69),o.wk().Ak(this,Su(this),n-ur((bn(),f2)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Qm(this);case 4:return!1;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!RE(this);case 7:return!!this.A&&this.A.i!=0;case 8:return(this.Bb&256)!=0;case 9:return(this.Bb&512)!=0;case 10:return!!this.u&&Gc(this.u.a).i!=0&&!(this.n&¬(this.n));case 11:return!!this.q&&this.q.i!=0;case 12:return b5(this).i!=0;case 13:return _S(this).i!=0;case 14:return _S(this),this.r.i!=0;case 15:return b5(this),this.k.i!=0;case 16:return o6t(this).i!=0;case 17:return oct(this).i!=0;case 18:return Kd(this).i!=0;case 19:return KH(this).i!=0;case 20:return b5(this),!!this.o;case 21:return!!this.s&&this.s.i!=0;case 22:return!!this.n&¬(this.n);case 23:return Kot(this).i!=0}return _h(this,e-ur((bn(),f2)),Tn((n=u($n(this,16),29),n||f2),e))},l.Zh=function(e){var n;return n=this.i==null||this.q&&this.q.i!=0?null:NO(this,e),n||qkt(this,e)},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:rq(this,Gr(n));return;case 2:zrt(this,Gr(n));return;case 5:j7(this,Gr(n));return;case 7:!this.A&&(this.A=new Qu(Ou,this,7)),Lr(this.A),!this.A&&(this.A=new Qu(Ou,this,7)),bs(this.A,u(n,16));return;case 8:c5t(this,Ie(De(n)));return;case 9:u5t(this,Ie(De(n)));return;case 10:LS(Ko(this)),bs(Ko(this),u(n,16));return;case 11:!this.q&&(this.q=new Jt(bf,this,11,10)),Lr(this.q),!this.q&&(this.q=new Jt(bf,this,11,10)),bs(this.q,u(n,16));return;case 21:!this.s&&(this.s=new Jt(Ku,this,21,17)),Lr(this.s),!this.s&&(this.s=new Jt(Ku,this,21,17)),bs(this.s,u(n,16));return;case 22:Lr(Gc(this)),bs(Gc(this),u(n,16));return}Ih(this,e-ur((bn(),f2)),Tn((r=u($n(this,16),29),r||f2),e),n)},l.ii=function(){return bn(),f2},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:At(this.Cb,184)&&(u(this.Cb,184).tb=null),wu(this,null);return;case 2:f7(this,null),QE(this,this.D);return;case 5:j7(this,null);return;case 7:!this.A&&(this.A=new Qu(Ou,this,7)),Lr(this.A);return;case 8:c5t(this,!1);return;case 9:u5t(this,!1);return;case 10:this.u&&LS(this.u);return;case 11:!this.q&&(this.q=new Jt(bf,this,11,10)),Lr(this.q);return;case 21:!this.s&&(this.s=new Jt(Ku,this,21,17)),Lr(this.s);return;case 22:this.n&&Lr(this.n);return}Dh(this,e-ur((bn(),f2)),Tn((n=u($n(this,16),29),n||f2),e))},l.pi=function(){var e,n;if(b5(this),_S(this),o6t(this),oct(this),Kd(this),KH(this),Kot(this),B_(hcn(Sl(this))),this.s)for(e=0,n=this.s.i;e=0;--n)Lt(this,n);return O5t(this,e)},l.Gk=function(){Lr(this)},l.Zi=function(e,n){return toe(this,e,n)},D(Zi,"EcoreEList",632),M(504,632,nc,fI),l.Li=function(){return!1},l.Lj=function(){return this.c},l.Mj=function(){return!1},l.ol=function(){return!0},l.Si=function(){return!0},l.Wi=function(e,n){return n},l.Yi=function(){return!1},l.c=0,D(Zi,"EObjectEList",504),M(83,504,nc,Ns),l.Mj=function(){return!0},l.ml=function(){return!1},l.al=function(){return!0},D(Zi,"EObjectContainmentEList",83),M(555,83,nc,ez),l.Ni=function(){this.b=!0},l.Qj=function(){return this.b},l.Gk=function(){var e;Lr(this),zl(this.e)?(e=this.b,this.b=!1,Ti(this.e,new jf(this.e,2,this.c,e,!1))):this.b=!1},l.b=!1,D(Zi,"EObjectContainmentEList/Unsettable",555),M(1161,555,nc,Lte),l.Ti=function(e,n){var r,s;return r=u(nS(this,e,n),89),zl(this.e)&&cE(this,new OI(this.a,7,(bn(),Z7e),fe(n),(s=r.c,At(s,90)?u(s,29):mf),e)),r},l.Uj=function(e,n){return I2n(this,u(e,89),n)},l.Vj=function(e,n){return D2n(this,u(e,89),n)},l.Wj=function(e,n,r){return Nvn(this,u(e,89),u(n,89),r)},l.Ij=function(e,n,r,s,o){switch(e){case 3:return D_(this,e,n,r,s,this.i>1);case 5:return D_(this,e,n,r,s,this.i-u(r,15).gc()>0);default:return new xg(this.e,e,this.c,n,r,s,!0)}},l.Tj=function(){return!0},l.Qj=function(){return not(this)},l.Gk=function(){Lr(this)},D(jn,"EClassImpl/1",1161),M(1175,1174,CTt),l.dj=function(e){var n,r,s,o,h,d,m;if(r=e.gj(),r!=8){if(s=dwn(e),s==0)switch(r){case 1:case 9:{m=e.kj(),m!=null&&(n=Sl(u(m,481)),!n.c&&(n.c=new op),Cq(n.c,e.jj())),d=e.ij(),d!=null&&(o=u(d,481),o.Bb&1||(n=Sl(o),!n.c&&(n.c=new op),Mr(n.c,u(e.jj(),29))));break}case 3:{d=e.ij(),d!=null&&(o=u(d,481),o.Bb&1||(n=Sl(o),!n.c&&(n.c=new op),Mr(n.c,u(e.jj(),29))));break}case 5:{if(d=e.ij(),d!=null)for(h=u(d,16).Kc();h.Ob();)o=u(h.Pb(),481),o.Bb&1||(n=Sl(o),!n.c&&(n.c=new op),Mr(n.c,u(e.jj(),29)));break}case 4:{m=e.kj(),m!=null&&(o=u(m,481),o.Bb&1||(n=Sl(o),!n.c&&(n.c=new op),Cq(n.c,e.jj())));break}case 6:{if(m=e.kj(),m!=null)for(h=u(m,16).Kc();h.Ob();)o=u(h.Pb(),481),o.Bb&1||(n=Sl(o),!n.c&&(n.c=new op),Cq(n.c,e.jj()));break}}this.ql(s)}},l.ql=function(e){n0e(this,e)},l.b=63,D(jn,"ESuperAdapter",1175),M(1176,1175,CTt,LGt),l.ql=function(e){t3(this,e)},D(jn,"EClassImpl/10",1176),M(1165,710,nc),l.Ei=function(e,n){return Cot(this,e,n)},l.Fi=function(e){return Vle(this,e)},l.Gi=function(e,n){aO(this,e,n)},l.Hi=function(e){LI(this,e)},l.$i=function(e){return R3t(this,e)},l.Xi=function(e,n){return jst(this,e,n)},l.Wk=function(e,n){throw nt(new Vr)},l.Ii=function(){return new B6(this)},l.Ji=function(){return new tI(this)},l.Ki=function(e){return UI(this,e)},l.Xk=function(e,n){throw nt(new Vr)},l.Fk=function(e){return this},l.Qj=function(){return this.i!=0},l.Wb=function(e){throw nt(new Vr)},l.Gk=function(){throw nt(new Vr)},D(Zi,"EcoreEList/UnmodifiableEList",1165),M(328,1165,nc,B4),l.Yi=function(){return!1},D(Zi,"EcoreEList/UnmodifiableEList/FastCompare",328),M(1168,328,nc,Cce),l.dd=function(e){var n,r,s;if(At(e,179)&&(n=u(e,179),r=n.Lj(),r!=-1)){for(s=this.i;r4)if(this.fk(e)){if(this.al()){if(s=u(e,54),r=s.Eh(),m=r==this.b&&(this.ml()?s.yh(s.Fh(),u(Tn(ju(this.b),this.Lj()).Hk(),29).kk())==wo(u(Tn(ju(this.b),this.Lj()),19)).n:-1-s.Fh()==this.Lj()),this.nl()&&!m&&!r&&s.Jh()){for(o=0;o1||s==-1)):!1},l.ml=function(){var e,n,r;return n=Tn(ju(this.b),this.Lj()),At(n,102)?(e=u(n,19),r=wo(e),!!r):!1},l.nl=function(){var e,n;return n=Tn(ju(this.b),this.Lj()),At(n,102)?(e=u(n,19),(e.Bb&fo)!=0):!1},l.dd=function(e){var n,r,s,o;if(s=this.zj(e),s>=0)return s;if(this.ol()){for(r=0,o=this.Ej();r=0;--e)UO(this,e,this.xj(e));return this.Fj()},l.Qc=function(e){var n;if(this.nl())for(n=this.Ej()-1;n>=0;--n)UO(this,n,this.xj(n));return this.Gj(e)},l.Gk=function(){LS(this)},l.Zi=function(e,n){return Dse(this,e,n)},D(Zi,"DelegatingEcoreEList",756),M(1171,756,LTt,UJt),l.qj=function(e,n){usn(this,e,u(n,29))},l.rj=function(e){Qrn(this,u(e,29))},l.xj=function(e){var n,r;return n=u(Lt(Gc(this.a),e),89),r=n.c,At(r,90)?u(r,29):(bn(),mf)},l.Cj=function(e){var n,r;return n=u(r3(Gc(this.a),e),89),r=n.c,At(r,90)?u(r,29):(bn(),mf)},l.Dj=function(e,n){return amn(this,e,u(n,29))},l.Li=function(){return!1},l.Ij=function(e,n,r,s,o){return null},l.sj=function(){return new IGt(this)},l.tj=function(){Lr(Gc(this.a))},l.uj=function(e){return xue(this,e)},l.vj=function(e){var n,r;for(r=e.Kc();r.Ob();)if(n=r.Pb(),!xue(this,n))return!1;return!0},l.wj=function(e){var n,r,s;if(At(e,15)&&(s=u(e,15),s.gc()==Gc(this.a).i)){for(n=s.Kc(),r=new Zn(this);n.Ob();)if($t(n.Pb())!==$t(sr(r)))return!1;return!0}return!1},l.yj=function(){var e,n,r,s,o;for(r=1,n=new Zn(Gc(this.a));n.e!=n.i.gc();)e=u(sr(n),89),s=(o=e.c,At(o,90)?u(o,29):(bn(),mf)),r=31*r+(s?km(s):0);return r},l.zj=function(e){var n,r,s,o;for(s=0,r=new Zn(Gc(this.a));r.e!=r.i.gc();){if(n=u(sr(r),89),$t(e)===$t((o=n.c,At(o,90)?u(o,29):(bn(),mf))))return s;++s}return-1},l.Aj=function(){return Gc(this.a).i==0},l.Bj=function(){return null},l.Ej=function(){return Gc(this.a).i},l.Fj=function(){var e,n,r,s,o,h;for(h=Gc(this.a).i,o=Vt(sa,Ln,1,h,5,1),r=0,n=new Zn(Gc(this.a));n.e!=n.i.gc();)e=u(sr(n),89),o[r++]=(s=e.c,At(s,90)?u(s,29):(bn(),mf));return o},l.Gj=function(e){var n,r,s,o,h,d,m;for(m=Gc(this.a).i,e.lengthm&&hs(e,m,null),s=0,r=new Zn(Gc(this.a));r.e!=r.i.gc();)n=u(sr(r),89),h=(d=n.c,At(d,90)?u(d,29):(bn(),mf)),hs(e,s++,h);return e},l.Hj=function(){var e,n,r,s,o;for(o=new hp,o.a+="[",e=Gc(this.a),n=0,s=Gc(this.a).i;n>16,o>=0?dot(this,r):this.Cb.Th(this,-1-o,null,r))),ch(this,e,6,r);case 9:return!this.a&&(this.a=new Jt(zg,this,9,5)),mu(this.a,e,r)}return h=u(Tn((s=u($n(this,16),29),s||(bn(),d2)),n),69),h.wk().zk(this,Su(this),n-ur((bn(),d2)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r);case 6:return ch(this,null,6,r);case 7:return!this.A&&(this.A=new Qu(Ou,this,7)),no(this.A,e,r);case 9:return!this.a&&(this.a=new Jt(zg,this,9,5)),no(this.a,e,r)}return o=u(Tn((s=u($n(this,16),29),s||(bn(),d2)),n),69),o.wk().Ak(this,Su(this),n-ur((bn(),d2)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Qm(this);case 4:return!!X4t(this);case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!RE(this);case 7:return!!this.A&&this.A.i!=0;case 8:return(this.Bb&256)==0;case 9:return!!this.a&&this.a.i!=0}return _h(this,e-ur((bn(),d2)),Tn((n=u($n(this,16),29),n||d2),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:rq(this,Gr(n));return;case 2:zrt(this,Gr(n));return;case 5:j7(this,Gr(n));return;case 7:!this.A&&(this.A=new Qu(Ou,this,7)),Lr(this.A),!this.A&&(this.A=new Qu(Ou,this,7)),bs(this.A,u(n,16));return;case 8:sH(this,Ie(De(n)));return;case 9:!this.a&&(this.a=new Jt(zg,this,9,5)),Lr(this.a),!this.a&&(this.a=new Jt(zg,this,9,5)),bs(this.a,u(n,16));return}Ih(this,e-ur((bn(),d2)),Tn((r=u($n(this,16),29),r||d2),e),n)},l.ii=function(){return bn(),d2},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:At(this.Cb,184)&&(u(this.Cb,184).tb=null),wu(this,null);return;case 2:f7(this,null),QE(this,this.D);return;case 5:j7(this,null);return;case 7:!this.A&&(this.A=new Qu(Ou,this,7)),Lr(this.A);return;case 8:sH(this,!0);return;case 9:!this.a&&(this.a=new Jt(zg,this,9,5)),Lr(this.a);return}Dh(this,e-ur((bn(),d2)),Tn((n=u($n(this,16),29),n||d2),e))},l.pi=function(){var e,n;if(this.a)for(e=0,n=this.a.i;e>16==5?u(this.Cb,685):null}return Ah(this,e-ur((bn(),Qp)),Tn((s=u($n(this,16),29),s||Qp),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),mu(this.Ab,e,r);case 5:return this.Cb&&(r=(o=this.Db>>16,o>=0?whe(this,r):this.Cb.Th(this,-1-o,null,r))),ch(this,e,5,r)}return h=u(Tn((s=u($n(this,16),29),s||(bn(),Qp)),n),69),h.wk().zk(this,Su(this),n-ur((bn(),Qp)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r);case 5:return ch(this,null,5,r)}return o=u(Tn((s=u($n(this,16),29),s||(bn(),Qp)),n),69),o.wk().Ak(this,Su(this),n-ur((bn(),Qp)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.d!=0;case 3:return!!this.b;case 4:return this.c!=null;case 5:return!!(this.Db>>16==5&&u(this.Cb,685))}return _h(this,e-ur((bn(),Qp)),Tn((n=u($n(this,16),29),n||Qp),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:wu(this,Gr(n));return;case 2:Ust(this,u(n,17).a);return;case 3:p1e(this,u(n,2039));return;case 4:Kst(this,Gr(n));return}Ih(this,e-ur((bn(),Qp)),Tn((r=u($n(this,16),29),r||Qp),e),n)},l.ii=function(){return bn(),Qp},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:wu(this,null);return;case 2:Ust(this,0);return;case 3:p1e(this,null);return;case 4:Kst(this,null);return}Dh(this,e-ur((bn(),Qp)),Tn((n=u($n(this,16),29),n||Qp),e))},l.Ib=function(){var e;return e=this.c,e??this.zb},l.b=null,l.c=null,l.d=0,D(jn,"EEnumLiteralImpl",582);var R_n=us(jn,"EFactoryImpl/InternalEDateTimeFormat");M(498,1,{2114:1},kD),D(jn,"EFactoryImpl/1ClientInternalEDateTimeFormat",498),M(248,120,{110:1,94:1,93:1,89:1,58:1,114:1,54:1,99:1,248:1,119:1,120:1},um),l.Ch=function(e,n,r){var s;return r=ch(this,e,n,r),this.e&&At(e,179)&&(s=GH(this,this.e),s!=this.c&&(r=$7(this,s,r))),r},l.Lh=function(e,n,r){var s;switch(e){case 0:return this.f;case 1:return!this.d&&(this.d=new Ns(So,this,1)),this.d;case 2:return n?sV(this):this.c;case 3:return this.b;case 4:return this.e;case 5:return n?sot(this):this.a}return Ah(this,e-ur((bn(),Ov)),Tn((s=u($n(this,16),29),s||Ov),e),n,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return cue(this,null,r);case 1:return!this.d&&(this.d=new Ns(So,this,1)),no(this.d,e,r);case 3:return uue(this,null,r)}return o=u(Tn((s=u($n(this,16),29),s||(bn(),Ov)),n),69),o.wk().Ak(this,Su(this),n-ur((bn(),Ov)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.f;case 1:return!!this.d&&this.d.i!=0;case 2:return!!this.c;case 3:return!!this.b;case 4:return!!this.e;case 5:return!!this.a}return _h(this,e-ur((bn(),Ov)),Tn((n=u($n(this,16),29),n||Ov),e))},l.bi=function(e,n){var r;switch(e){case 0:Fhe(this,u(n,89));return;case 1:!this.d&&(this.d=new Ns(So,this,1)),Lr(this.d),!this.d&&(this.d=new Ns(So,this,1)),bs(this.d,u(n,16));return;case 3:Axt(this,u(n,89));return;case 4:Kxt(this,u(n,850));return;case 5:GE(this,u(n,142));return}Ih(this,e-ur((bn(),Ov)),Tn((r=u($n(this,16),29),r||Ov),e),n)},l.ii=function(){return bn(),Ov},l.ki=function(e){var n;switch(e){case 0:Fhe(this,null);return;case 1:!this.d&&(this.d=new Ns(So,this,1)),Lr(this.d);return;case 3:Axt(this,null);return;case 4:Kxt(this,null);return;case 5:GE(this,null);return}Dh(this,e-ur((bn(),Ov)),Tn((n=u($n(this,16),29),n||Ov),e))},l.Ib=function(){var e;return e=new Jl(qf(this)),e.a+=" (expression: ",dct(this,e),e.a+=")",e.a};var LIt;D(jn,"EGenericTypeImpl",248),M(2067,2062,dU),l.Gi=function(e,n){qJt(this,e,n)},l.Wk=function(e,n){return qJt(this,this.gc(),e),n},l.$i=function(e){return Nh(this.pj(),e)},l.Ii=function(){return this.Ji()},l.pj=function(){return new FGt(this)},l.Ji=function(){return this.Ki(0)},l.Ki=function(e){return this.pj().fd(e)},l.Xk=function(e,n){return Ky(this,e,!0),n},l.Ti=function(e,n){var r,s;return s=bot(this,n),r=this.fd(e),r.Rb(s),s},l.Ui=function(e,n){var r;Ky(this,n,!0),r=this.fd(e),r.Rb(n)},D(Zi,"AbstractSequentialInternalEList",2067),M(495,2067,dU,ZD),l.$i=function(e){return Nh(this.pj(),e)},l.Ii=function(){return this.b==null?(gp(),gp(),zN):this.sl()},l.pj=function(){return new oQt(this.a,this.b)},l.Ji=function(){return this.b==null?(gp(),gp(),zN):this.sl()},l.Ki=function(e){var n,r;if(this.b==null){if(e<0||e>1)throw nt(new No(ZS+e+", size=0"));return gp(),gp(),zN}for(r=this.sl(),n=0;n0;)if(n=this.c[--this.d],(!this.e||n.pk()!=WT||n.Lj()!=0)&&(!this.vl()||this.b.Xh(n))){if(h=this.b.Nh(n,this.ul()),this.f=(bo(),u(n,69).xk()),this.f||n.Jk()){if(this.ul()?(s=u(h,15),this.k=s):(s=u(h,71),this.k=this.j=s),At(this.k,59)?(this.o=this.k.gc(),this.n=this.o):this.p=this.j?this.j.Ki(this.k.gc()):this.k.fd(this.k.gc()),this.p?Mfe(this,this.p):qfe(this))return o=this.p?this.p.Ub():this.j?this.j.$i(--this.n):this.k.Xb(--this.n),this.f?(e=u(o,76),e.Lk(),r=e.md(),this.i=r):(r=o,this.i=r),this.g=-3,!0}else if(h!=null)return this.k=null,this.p=null,r=h,this.i=r,this.g=-2,!0}return this.k=null,this.p=null,this.g=-1,!1}else return o=this.p?this.p.Ub():this.j?this.j.$i(--this.n):this.k.Xb(--this.n),this.f?(e=u(o,76),e.Lk(),r=e.md(),this.i=r):(r=o,this.i=r),this.g=-3,!0}},l.Pb=function(){return Xq(this)},l.Tb=function(){return this.a},l.Ub=function(){var e;if(this.g<-1||this.Sb())return--this.a,this.g=0,e=this.i,this.Sb(),e;throw nt(new ac)},l.Vb=function(){return this.a-1},l.Qb=function(){throw nt(new Vr)},l.ul=function(){return!1},l.Wb=function(e){throw nt(new Vr)},l.vl=function(){return!0},l.a=0,l.d=0,l.f=!1,l.g=0,l.n=0,l.o=0;var zN;D(Zi,"EContentsEList/FeatureIteratorImpl",287),M(711,287,gU,Rmt),l.ul=function(){return!0},D(Zi,"EContentsEList/ResolvingFeatureIteratorImpl",711),M(1178,711,gU,SJt),l.vl=function(){return!1},D(jn,"ENamedElementImpl/1/1",1178),M(1179,287,gU,AJt),l.vl=function(){return!1},D(jn,"ENamedElementImpl/1/2",1179),M(38,152,EP,Ry,bst,la,Dst,xg,jf,Q3t,ore,J3t,cre,p3t,ure,e4t,lre,b3t,hre,Z3t,fre,T_,OI,Qit,t4t,dre,w3t,gre),l.Kj=function(){return P3t(this)},l.Rj=function(){var e;return e=P3t(this),e?e.ik():null},l.hj=function(e){return this.b==-1&&this.a&&(this.b=this.c.Hh(this.a.Lj(),this.a.pk())),this.c.yh(this.b,e)},l.jj=function(){return this.c},l.Sj=function(){var e;return e=P3t(this),e?e.tk():!1},l.b=-1,D(jn,"ENotificationImpl",38),M(411,291,{110:1,94:1,93:1,155:1,197:1,58:1,62:1,114:1,480:1,54:1,99:1,158:1,411:1,291:1,119:1,120:1},Fnt),l.Ah=function(e){return yhe(this,e)},l.Lh=function(e,n,r){var s,o,h;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Nn(),!!(this.Bb&256);case 3:return Nn(),!!(this.Bb&512);case 4:return fe(this.s);case 5:return fe(this.t);case 6:return Nn(),h=this.t,h>1||h==-1;case 7:return Nn(),o=this.s,o>=1;case 8:return n?rf(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?u(this.Cb,29):null;case 11:return!this.d&&(this.d=new Qu(Ou,this,11)),this.d;case 12:return!this.c&&(this.c=new Jt(Iv,this,12,10)),this.c;case 13:return!this.a&&(this.a=new iI(this,this)),this.a;case 14:return Al(this)}return Ah(this,e-ur((bn(),Jp)),Tn((s=u($n(this,16),29),s||Jp),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),mu(this.Ab,e,r);case 10:return this.Cb&&(r=(o=this.Db>>16,o>=0?yhe(this,r):this.Cb.Th(this,-1-o,null,r))),ch(this,e,10,r);case 12:return!this.c&&(this.c=new Jt(Iv,this,12,10)),mu(this.c,e,r)}return h=u(Tn((s=u($n(this,16),29),s||(bn(),Jp)),n),69),h.wk().zk(this,Su(this),n-ur((bn(),Jp)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r);case 9:return Fit(this,r);case 10:return ch(this,null,10,r);case 11:return!this.d&&(this.d=new Qu(Ou,this,11)),no(this.d,e,r);case 12:return!this.c&&(this.c=new Jt(Iv,this,12,10)),no(this.c,e,r);case 14:return no(Al(this),e,r)}return o=u(Tn((s=u($n(this,16),29),s||(bn(),Jp)),n),69),o.wk().Ak(this,Su(this),n-ur((bn(),Jp)),e,r)},l.Wh=function(e){var n,r,s;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return s=this.t,s>1||s==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return!!(this.Db>>16==10&&u(this.Cb,29));case 11:return!!this.d&&this.d.i!=0;case 12:return!!this.c&&this.c.i!=0;case 13:return!!this.a&&Al(this.a.a).i!=0&&!(this.b&&rot(this.b));case 14:return!!this.b&&rot(this.b)}return _h(this,e-ur((bn(),Jp)),Tn((n=u($n(this,16),29),n||Jp),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:wu(this,Gr(n));return;case 2:Ap(this,Ie(De(n)));return;case 3:Lp(this,Ie(De(n)));return;case 4:Tp(this,u(n,17).a);return;case 5:Hy(this,u(n,17).a);return;case 8:rw(this,u(n,142));return;case 9:s=sd(this,u(n,89),null),s&&s.oj();return;case 11:!this.d&&(this.d=new Qu(Ou,this,11)),Lr(this.d),!this.d&&(this.d=new Qu(Ou,this,11)),bs(this.d,u(n,16));return;case 12:!this.c&&(this.c=new Jt(Iv,this,12,10)),Lr(this.c),!this.c&&(this.c=new Jt(Iv,this,12,10)),bs(this.c,u(n,16));return;case 13:!this.a&&(this.a=new iI(this,this)),LS(this.a),!this.a&&(this.a=new iI(this,this)),bs(this.a,u(n,16));return;case 14:Lr(Al(this)),bs(Al(this),u(n,16));return}Ih(this,e-ur((bn(),Jp)),Tn((r=u($n(this,16),29),r||Jp),e),n)},l.ii=function(){return bn(),Jp},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:wu(this,null);return;case 2:Ap(this,!0);return;case 3:Lp(this,!0);return;case 4:Tp(this,0);return;case 5:Hy(this,1);return;case 8:rw(this,null);return;case 9:r=sd(this,null,null),r&&r.oj();return;case 11:!this.d&&(this.d=new Qu(Ou,this,11)),Lr(this.d);return;case 12:!this.c&&(this.c=new Jt(Iv,this,12,10)),Lr(this.c);return;case 13:this.a&&LS(this.a);return;case 14:this.b&&Lr(this.b);return}Dh(this,e-ur((bn(),Jp)),Tn((n=u($n(this,16),29),n||Jp),e))},l.pi=function(){var e,n;if(this.c)for(e=0,n=this.c.i;em&&hs(e,m,null),s=0,r=new Zn(Al(this.a));r.e!=r.i.gc();)n=u(sr(r),89),h=(d=n.c,d||(bn(),yd)),hs(e,s++,h);return e},l.Hj=function(){var e,n,r,s,o;for(o=new hp,o.a+="[",e=Al(this.a),n=0,s=Al(this.a).i;n1);case 5:return D_(this,e,n,r,s,this.i-u(r,15).gc()>0);default:return new xg(this.e,e,this.c,n,r,s,!0)}},l.Tj=function(){return!0},l.Qj=function(){return rot(this)},l.Gk=function(){Lr(this)},D(jn,"EOperationImpl/2",1377),M(507,1,{2037:1,507:1},VXt),D(jn,"EPackageImpl/1",507),M(14,83,nc,Jt),l.il=function(){return this.d},l.jl=function(){return this.b},l.ml=function(){return!0},l.b=0,D(Zi,"EObjectContainmentWithInverseEList",14),M(365,14,nc,R6),l.nl=function(){return!0},l.Wi=function(e,n){return wk(this,e,u(n,58))},D(Zi,"EObjectContainmentWithInverseEList/Resolving",365),M(307,365,nc,Iy),l.Ni=function(){this.a.tb=null},D(jn,"EPackageImpl/2",307),M(1278,1,{},tD),D(jn,"EPackageImpl/3",1278),M(733,45,y5,$2t),l._b=function(e){return pa(e)?Zit(this,e):!!yo(this.f,e)},D(jn,"EPackageRegistryImpl",733),M(518,291,{110:1,94:1,93:1,155:1,197:1,58:1,2116:1,114:1,480:1,54:1,99:1,158:1,518:1,291:1,119:1,120:1},Bnt),l.Ah=function(e){return xhe(this,e)},l.Lh=function(e,n,r){var s,o,h;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Nn(),!!(this.Bb&256);case 3:return Nn(),!!(this.Bb&512);case 4:return fe(this.s);case 5:return fe(this.t);case 6:return Nn(),h=this.t,h>1||h==-1;case 7:return Nn(),o=this.s,o>=1;case 8:return n?rf(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?u(this.Cb,62):null}return Ah(this,e-ur((bn(),K3)),Tn((s=u($n(this,16),29),s||K3),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),mu(this.Ab,e,r);case 10:return this.Cb&&(r=(o=this.Db>>16,o>=0?xhe(this,r):this.Cb.Th(this,-1-o,null,r))),ch(this,e,10,r)}return h=u(Tn((s=u($n(this,16),29),s||(bn(),K3)),n),69),h.wk().zk(this,Su(this),n-ur((bn(),K3)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r);case 9:return Fit(this,r);case 10:return ch(this,null,10,r)}return o=u(Tn((s=u($n(this,16),29),s||(bn(),K3)),n),69),o.wk().Ak(this,Su(this),n-ur((bn(),K3)),e,r)},l.Wh=function(e){var n,r,s;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return s=this.t,s>1||s==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return!!(this.Db>>16==10&&u(this.Cb,62))}return _h(this,e-ur((bn(),K3)),Tn((n=u($n(this,16),29),n||K3),e))},l.ii=function(){return bn(),K3},D(jn,"EParameterImpl",518),M(102,461,{110:1,94:1,93:1,155:1,197:1,58:1,19:1,179:1,69:1,114:1,480:1,54:1,99:1,158:1,102:1,461:1,291:1,119:1,120:1,692:1},Hmt),l.Lh=function(e,n,r){var s,o,h,d;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Nn(),!!(this.Bb&256);case 3:return Nn(),!!(this.Bb&512);case 4:return fe(this.s);case 5:return fe(this.t);case 6:return Nn(),d=this.t,d>1||d==-1;case 7:return Nn(),o=this.s,o>=1;case 8:return n?rf(this):this.r;case 9:return this.q;case 10:return Nn(),!!(this.Bb&Uf);case 11:return Nn(),!!(this.Bb&b3);case 12:return Nn(),!!(this.Bb&u3);case 13:return this.j;case 14:return I7(this);case 15:return Nn(),!!(this.Bb&al);case 16:return Nn(),!!(this.Bb&Wd);case 17:return Ny(this);case 18:return Nn(),!!(this.Bb&Pc);case 19:return Nn(),h=wo(this),!!(h&&h.Bb&Pc);case 20:return Nn(),!!(this.Bb&fo);case 21:return n?wo(this):this.b;case 22:return n?$4t(this):Rie(this);case 23:return!this.a&&(this.a=new H4(V3,this,23)),this.a}return Ah(this,e-ur((bn(),lx)),Tn((s=u($n(this,16),29),s||lx),e),n,r)},l.Wh=function(e){var n,r,s,o;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return o=this.t,o>1||o==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return(this.Bb&Uf)==0;case 11:return(this.Bb&b3)!=0;case 12:return(this.Bb&u3)!=0;case 13:return this.j!=null;case 14:return I7(this)!=null;case 15:return(this.Bb&al)!=0;case 16:return(this.Bb&Wd)!=0;case 17:return!!Ny(this);case 18:return(this.Bb&Pc)!=0;case 19:return s=wo(this),!!s&&(s.Bb&Pc)!=0;case 20:return(this.Bb&fo)==0;case 21:return!!this.b;case 22:return!!Rie(this);case 23:return!!this.a&&this.a.i!=0}return _h(this,e-ur((bn(),lx)),Tn((n=u($n(this,16),29),n||lx),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:ust(this,Gr(n));return;case 2:Ap(this,Ie(De(n)));return;case 3:Lp(this,Ie(De(n)));return;case 4:Tp(this,u(n,17).a);return;case 5:Hy(this,u(n,17).a);return;case 8:rw(this,u(n,142));return;case 9:s=sd(this,u(n,89),null),s&&s.oj();return;case 10:p7(this,Ie(De(n)));return;case 11:m7(this,Ie(De(n)));return;case 12:b7(this,Ie(De(n)));return;case 13:Zwt(this,Gr(n));return;case 15:w7(this,Ie(De(n)));return;case 16:v7(this,Ie(De(n)));return;case 18:Ihn(this,Ie(De(n)));return;case 20:m5t(this,Ie(De(n)));return;case 21:b4t(this,u(n,19));return;case 23:!this.a&&(this.a=new H4(V3,this,23)),Lr(this.a),!this.a&&(this.a=new H4(V3,this,23)),bs(this.a,u(n,16));return}Ih(this,e-ur((bn(),lx)),Tn((r=u($n(this,16),29),r||lx),e),n)},l.ii=function(){return bn(),lx},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:At(this.Cb,90)&&t3(Sl(u(this.Cb,90)),4),wu(this,null);return;case 2:Ap(this,!0);return;case 3:Lp(this,!0);return;case 4:Tp(this,0);return;case 5:Hy(this,1);return;case 8:rw(this,null);return;case 9:r=sd(this,null,null),r&&r.oj();return;case 10:p7(this,!0);return;case 11:m7(this,!1);return;case 12:b7(this,!1);return;case 13:this.i=null,zq(this,null);return;case 15:w7(this,!1);return;case 16:v7(this,!1);return;case 18:w5t(this,!1),At(this.Cb,90)&&t3(Sl(u(this.Cb,90)),2);return;case 20:m5t(this,!0);return;case 21:b4t(this,null);return;case 23:!this.a&&(this.a=new H4(V3,this,23)),Lr(this.a);return}Dh(this,e-ur((bn(),lx)),Tn((n=u($n(this,16),29),n||lx),e))},l.pi=function(){$4t(this),NE(Ro((rl(),Fa),this)),rf(this),this.Bb|=1},l.uk=function(){return wo(this)},l._k=function(){var e;return e=wo(this),!!e&&(e.Bb&Pc)!=0},l.al=function(){return(this.Bb&Pc)!=0},l.bl=function(){return(this.Bb&fo)!=0},l.Yk=function(e,n){return this.c=null,o5t(this,e,n)},l.Ib=function(){var e;return this.Db&64?nV(this):(e=new Jh(nV(this)),e.a+=" (containment: ",fp(e,(this.Bb&Pc)!=0),e.a+=", resolveProxies: ",fp(e,(this.Bb&fo)!=0),e.a+=")",e.a)},D(jn,"EReferenceImpl",102),M(561,120,{110:1,44:1,94:1,93:1,136:1,58:1,114:1,54:1,99:1,561:1,119:1,120:1},d1),l.Fb=function(e){return this===e},l.ld=function(){return this.b},l.md=function(){return this.c},l.Hb=function(){return km(this)},l.Di=function(e){Bcn(this,Gr(e))},l.nd=function(e){return kcn(this,Gr(e))},l.Lh=function(e,n,r){var s;switch(e){case 0:return this.b;case 1:return this.c}return Ah(this,e-ur((bn(),po)),Tn((s=u($n(this,16),29),s||po),e),n,r)},l.Wh=function(e){var n;switch(e){case 0:return this.b!=null;case 1:return this.c!=null}return _h(this,e-ur((bn(),po)),Tn((n=u($n(this,16),29),n||po),e))},l.bi=function(e,n){var r;switch(e){case 0:Rcn(this,Gr(n));return;case 1:d4t(this,Gr(n));return}Ih(this,e-ur((bn(),po)),Tn((r=u($n(this,16),29),r||po),e),n)},l.ii=function(){return bn(),po},l.ki=function(e){var n;switch(e){case 0:f4t(this,null);return;case 1:d4t(this,null);return}Dh(this,e-ur((bn(),po)),Tn((n=u($n(this,16),29),n||po),e))},l.Bi=function(){var e;return this.a==-1&&(e=this.b,this.a=e==null?0:Cp(e)),this.a},l.Ci=function(e){this.a=e},l.Ib=function(){var e;return this.Db&64?qf(this):(e=new Jh(qf(this)),e.a+=" (key: ",Lo(e,this.b),e.a+=", value: ",Lo(e,this.c),e.a+=")",e.a)},l.a=-1,l.b=null,l.c=null;var Sc=D(jn,"EStringToStringMapEntryImpl",561),uTe=us(Zi,"FeatureMap/Entry/Internal");M(576,1,pU),l.xl=function(e){return this.yl(u(e,54))},l.yl=function(e){return this.xl(e)},l.Fb=function(e){var n,r;return this===e?!0:At(e,76)?(n=u(e,76),n.Lk()==this.c?(r=this.md(),r==null?n.md()==null:Ci(r,n.md())):!1):!1},l.Lk=function(){return this.c},l.Hb=function(){var e;return e=this.md(),Hi(this.c)^(e==null?0:Hi(e))},l.Ib=function(){var e,n;return e=this.c,n=nh(e.qk()).yi(),e.xe(),(n!=null&&n.length!=0?n+":"+e.xe():e.xe())+"="+this.md()},D(jn,"EStructuralFeatureImpl/BasicFeatureMapEntry",576),M(791,576,pU,Jmt),l.yl=function(e){return new Jmt(this.c,e)},l.md=function(){return this.a},l.zl=function(e,n,r){return xgn(this,e,this.a,n,r)},l.Al=function(e,n,r){return kgn(this,e,this.a,n,r)},D(jn,"EStructuralFeatureImpl/ContainmentUpdatingFeatureMapEntry",791),M(1350,1,{},UXt),l.yk=function(e,n,r,s,o){var h;return h=u(qE(e,this.b),220),h.Yl(this.a).Fk(s)},l.zk=function(e,n,r,s,o){var h;return h=u(qE(e,this.b),220),h.Pl(this.a,s,o)},l.Ak=function(e,n,r,s,o){var h;return h=u(qE(e,this.b),220),h.Ql(this.a,s,o)},l.Bk=function(e,n,r){var s;return s=u(qE(e,this.b),220),s.Yl(this.a).Qj()},l.Ck=function(e,n,r,s){var o;o=u(qE(e,this.b),220),o.Yl(this.a).Wb(s)},l.Dk=function(e,n,r){return u(qE(e,this.b),220).Yl(this.a)},l.Ek=function(e,n,r){var s;s=u(qE(e,this.b),220),s.Yl(this.a).Gk()},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateFeatureMapDelegator",1350),M(91,1,{},bp,V2,mp,Y2),l.yk=function(e,n,r,s,o){var h;if(h=n.li(r),h==null&&n.mi(r,h=gV(this,e)),!o)switch(this.e){case 50:case 41:return u(h,597).bk();case 40:return u(h,220).Vl()}return h},l.zk=function(e,n,r,s,o){var h,d;return d=n.li(r),d==null&&n.mi(r,d=gV(this,e)),h=u(d,71).Wk(s,o),h},l.Ak=function(e,n,r,s,o){var h;return h=n.li(r),h!=null&&(o=u(h,71).Xk(s,o)),o},l.Bk=function(e,n,r){var s;return s=n.li(r),s!=null&&u(s,79).Qj()},l.Ck=function(e,n,r,s){var o;o=u(n.li(r),79),!o&&n.mi(r,o=gV(this,e)),o.Wb(s)},l.Dk=function(e,n,r){var s,o;return o=n.li(r),o==null&&n.mi(r,o=gV(this,e)),At(o,79)?u(o,79):(s=u(n.li(r),15),new PGt(s))},l.Ek=function(e,n,r){var s;s=u(n.li(r),79),!s&&n.mi(r,s=gV(this,e)),s.Gk()},l.b=0,l.e=0,D(jn,"EStructuralFeatureImpl/InternalSettingDelegateMany",91),M(512,1,{}),l.zk=function(e,n,r,s,o){throw nt(new Vr)},l.Ak=function(e,n,r,s,o){throw nt(new Vr)},l.Dk=function(e,n,r){return new Hee(this,e,n,r)};var W0;D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingle",512),M(1367,1,Jlt,Hee),l.Fk=function(e){return this.a.yk(this.c,this.d,this.b,e,!0)},l.Qj=function(){return this.a.Bk(this.c,this.d,this.b)},l.Wb=function(e){this.a.Ck(this.c,this.d,this.b,e)},l.Gk=function(){this.a.Ek(this.c,this.d,this.b)},l.b=0,D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingle/1",1367),M(784,512,{},$yt),l.yk=function(e,n,r,s,o){return Zot(e,e.Ph(),e.Fh())==this.b?this.bl()&&s?jot(e):e.Ph():null},l.zk=function(e,n,r,s,o){var h,d;return e.Ph()&&(o=(h=e.Fh(),h>=0?e.Ah(o):e.Ph().Th(e,-1-h,null,o))),d=ss(e.Dh(),this.e),e.Ch(s,d,o)},l.Ak=function(e,n,r,s,o){var h;return h=ss(e.Dh(),this.e),e.Ch(null,h,o)},l.Bk=function(e,n,r){var s;return s=ss(e.Dh(),this.e),!!e.Ph()&&e.Fh()==s},l.Ck=function(e,n,r,s){var o,h,d,m,k;if(s!=null&&!rct(this.a,s))throw nt(new uE(bU+(At(s,58)?Sxt(u(s,58).Dh()):K3t(Gl(s)))+wU+this.a+"'"));if(o=e.Ph(),d=ss(e.Dh(),this.e),$t(s)!==$t(o)||e.Fh()!=d&&s!=null){if(T7(e,u(s,58)))throw nt(new zn(QS+e.Ib()));k=null,o&&(k=(h=e.Fh(),h>=0?e.Ah(k):e.Ph().Th(e,-1-h,null,k))),m=u(s,54),m&&(k=m.Rh(e,ss(m.Dh(),this.b),null,k)),k=e.Ch(m,d,k),k&&k.oj()}else e.vh()&&e.wh()&&Ti(e,new la(e,1,d,s,s))},l.Ek=function(e,n,r){var s,o,h,d;s=e.Ph(),s?(d=(o=e.Fh(),o>=0?e.Ah(null):e.Ph().Th(e,-1-o,null,null)),h=ss(e.Dh(),this.e),d=e.Ch(null,h,d),d&&d.oj()):e.vh()&&e.wh()&&Ti(e,new T_(e,1,this.e,null,null))},l.bl=function(){return!1},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainer",784),M(1351,784,{},OZt),l.bl=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainerResolving",1351),M(574,512,{}),l.yk=function(e,n,r,s,o){var h;return h=n.li(r),h==null?this.b:$t(h)===$t(W0)?null:h},l.Bk=function(e,n,r){var s;return s=n.li(r),s!=null&&($t(s)===$t(W0)||!Ci(s,this.b))},l.Ck=function(e,n,r,s){var o,h;e.vh()&&e.wh()?(o=(h=n.li(r),h==null?this.b:$t(h)===$t(W0)?null:h),s==null?this.c!=null?(n.mi(r,null),s=this.b):this.b!=null?n.mi(r,W0):n.mi(r,null):(this.Bl(s),n.mi(r,s)),Ti(e,this.d.Cl(e,1,this.e,o,s))):s==null?this.c!=null?n.mi(r,null):this.b!=null?n.mi(r,W0):n.mi(r,null):(this.Bl(s),n.mi(r,s))},l.Ek=function(e,n,r){var s,o;e.vh()&&e.wh()?(s=(o=n.li(r),o==null?this.b:$t(o)===$t(W0)?null:o),n.ni(r),Ti(e,this.d.Cl(e,1,this.e,s,this.b))):n.ni(r)},l.Bl=function(e){throw nt(new UGt)},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData",574),M(M5,1,{},eD),l.Cl=function(e,n,r,s,o){return new T_(e,n,r,s,o)},l.Dl=function(e,n,r,s,o,h){return new Qit(e,n,r,s,o,h)};var MIt,DIt,IIt,OIt,PIt,NIt,FIt,Qdt,BIt;D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator",M5),M(1368,M5,{},nD),l.Cl=function(e,n,r,s,o){return new w3t(e,n,r,Ie(De(s)),Ie(De(o)))},l.Dl=function(e,n,r,s,o,h){return new gre(e,n,r,Ie(De(s)),Ie(De(o)),h)},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/1",1368),M(1369,M5,{},o6),l.Cl=function(e,n,r,s,o){return new Q3t(e,n,r,u(s,222).a,u(o,222).a)},l.Dl=function(e,n,r,s,o,h){return new ore(e,n,r,u(s,222).a,u(o,222).a,h)},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/2",1369),M(1370,M5,{},Ktt),l.Cl=function(e,n,r,s,o){return new J3t(e,n,r,u(s,180).a,u(o,180).a)},l.Dl=function(e,n,r,s,o,h){return new cre(e,n,r,u(s,180).a,u(o,180).a,h)},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/3",1370),M(1371,M5,{},Wtt),l.Cl=function(e,n,r,s,o){return new p3t(e,n,r,Rt(Ht(s)),Rt(Ht(o)))},l.Dl=function(e,n,r,s,o,h){return new ure(e,n,r,Rt(Ht(s)),Rt(Ht(o)),h)},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/4",1371),M(1372,M5,{},Ytt),l.Cl=function(e,n,r,s,o){return new e4t(e,n,r,u(s,161).a,u(o,161).a)},l.Dl=function(e,n,r,s,o,h){return new lre(e,n,r,u(s,161).a,u(o,161).a,h)},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/5",1372),M(1373,M5,{},Xtt),l.Cl=function(e,n,r,s,o){return new b3t(e,n,r,u(s,17).a,u(o,17).a)},l.Dl=function(e,n,r,s,o,h){return new hre(e,n,r,u(s,17).a,u(o,17).a,h)},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/6",1373),M(1374,M5,{},gy),l.Cl=function(e,n,r,s,o){return new Z3t(e,n,r,u(s,168).a,u(o,168).a)},l.Dl=function(e,n,r,s,o,h){return new fre(e,n,r,u(s,168).a,u(o,168).a,h)},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/7",1374),M(1375,M5,{},KR),l.Cl=function(e,n,r,s,o){return new t4t(e,n,r,u(s,191).a,u(o,191).a)},l.Dl=function(e,n,r,s,o,h){return new dre(e,n,r,u(s,191).a,u(o,191).a,h)},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/8",1375),M(1353,574,{},Vee),l.Bl=function(e){if(!this.a.fk(e))throw nt(new uE(bU+Gl(e)+wU+this.a+"'"))},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataDynamic",1353),M(1354,574,{},Dte),l.Bl=function(e){},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataStatic",1354),M(785,574,{}),l.Bk=function(e,n,r){var s;return s=n.li(r),s!=null},l.Ck=function(e,n,r,s){var o,h;e.vh()&&e.wh()?(o=!0,h=n.li(r),h==null?(o=!1,h=this.b):$t(h)===$t(W0)&&(h=null),s==null?this.c!=null?(n.mi(r,null),s=this.b):n.mi(r,W0):(this.Bl(s),n.mi(r,s)),Ti(e,this.d.Dl(e,1,this.e,h,s,!o))):s==null?this.c!=null?n.mi(r,null):n.mi(r,W0):(this.Bl(s),n.mi(r,s))},l.Ek=function(e,n,r){var s,o;e.vh()&&e.wh()?(s=!0,o=n.li(r),o==null?(s=!1,o=this.b):$t(o)===$t(W0)&&(o=null),n.ni(r),Ti(e,this.d.Dl(e,2,this.e,o,this.b,s))):n.ni(r)},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettable",785),M(1355,785,{},Uee),l.Bl=function(e){if(!this.a.fk(e))throw nt(new uE(bU+Gl(e)+wU+this.a+"'"))},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableDynamic",1355),M(1356,785,{},Ite),l.Bl=function(e){},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableStatic",1356),M(410,512,{},Sz),l.yk=function(e,n,r,s,o){var h,d,m,k,T;if(T=n.li(r),this.tk()&&$t(T)===$t(W0))return null;if(this.bl()&&s&&T!=null){if(m=u(T,54),m.Vh()&&(k=Pb(e,m),m!=k)){if(!rct(this.a,k))throw nt(new uE(bU+Gl(k)+wU+this.a+"'"));n.mi(r,T=k),this.al()&&(h=u(k,54),d=m.Th(e,this.b?ss(m.Dh(),this.b):-1-ss(e.Dh(),this.e),null,null),!h.Ph()&&(d=h.Rh(e,this.b?ss(h.Dh(),this.b):-1-ss(e.Dh(),this.e),null,d)),d&&d.oj()),e.vh()&&e.wh()&&Ti(e,new T_(e,9,this.e,m,k))}return T}else return T},l.zk=function(e,n,r,s,o){var h,d;return d=n.li(r),$t(d)===$t(W0)&&(d=null),n.mi(r,s),this.Mj()?$t(d)!==$t(s)&&d!=null&&(h=u(d,54),o=h.Th(e,ss(h.Dh(),this.b),null,o)):this.al()&&d!=null&&(o=u(d,54).Th(e,-1-ss(e.Dh(),this.e),null,o)),e.vh()&&e.wh()&&(!o&&(o=new bb(4)),o.nj(new T_(e,1,this.e,d,s))),o},l.Ak=function(e,n,r,s,o){var h;return h=n.li(r),$t(h)===$t(W0)&&(h=null),n.ni(r),e.vh()&&e.wh()&&(!o&&(o=new bb(4)),this.tk()?o.nj(new T_(e,2,this.e,h,null)):o.nj(new T_(e,1,this.e,h,null))),o},l.Bk=function(e,n,r){var s;return s=n.li(r),s!=null},l.Ck=function(e,n,r,s){var o,h,d,m,k;if(s!=null&&!rct(this.a,s))throw nt(new uE(bU+(At(s,58)?Sxt(u(s,58).Dh()):K3t(Gl(s)))+wU+this.a+"'"));k=n.li(r),m=k!=null,this.tk()&&$t(k)===$t(W0)&&(k=null),d=null,this.Mj()?$t(k)!==$t(s)&&(k!=null&&(o=u(k,54),d=o.Th(e,ss(o.Dh(),this.b),null,d)),s!=null&&(o=u(s,54),d=o.Rh(e,ss(o.Dh(),this.b),null,d))):this.al()&&$t(k)!==$t(s)&&(k!=null&&(d=u(k,54).Th(e,-1-ss(e.Dh(),this.e),null,d)),s!=null&&(d=u(s,54).Rh(e,-1-ss(e.Dh(),this.e),null,d))),s==null&&this.tk()?n.mi(r,W0):n.mi(r,s),e.vh()&&e.wh()?(h=new Qit(e,1,this.e,k,s,this.tk()&&!m),d?(d.nj(h),d.oj()):Ti(e,h)):d&&d.oj()},l.Ek=function(e,n,r){var s,o,h,d,m;m=n.li(r),d=m!=null,this.tk()&&$t(m)===$t(W0)&&(m=null),h=null,m!=null&&(this.Mj()?(s=u(m,54),h=s.Th(e,ss(s.Dh(),this.b),null,h)):this.al()&&(h=u(m,54).Th(e,-1-ss(e.Dh(),this.e),null,h))),n.ni(r),e.vh()&&e.wh()?(o=new Qit(e,this.tk()?2:1,this.e,m,null,d),h?(h.nj(o),h.oj()):Ti(e,o)):h&&h.oj()},l.Mj=function(){return!1},l.al=function(){return!1},l.bl=function(){return!1},l.tk=function(){return!1},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObject",410),M(575,410,{},eit),l.al=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainment",575),M(1359,575,{},MJt),l.bl=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentResolving",1359),M(787,575,{},jmt),l.tk=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettable",787),M(1361,787,{},DJt),l.bl=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettableResolving",1361),M(650,575,{},git),l.Mj=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverse",650),M(1360,650,{},PZt),l.bl=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseResolving",1360),M(788,650,{},Cvt),l.tk=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettable",788),M(1362,788,{},NZt),l.bl=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettableResolving",1362),M(651,410,{},$mt),l.bl=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolving",651),M(1363,651,{},IJt),l.tk=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingUnsettable",1363),M(789,651,{},Evt),l.Mj=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverse",789),M(1364,789,{},FZt),l.tk=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverseUnsettable",1364),M(1357,410,{},OJt),l.tk=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectUnsettable",1357),M(786,410,{},Tvt),l.Mj=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverse",786),M(1358,786,{},BZt),l.tk=function(){return!0},D(jn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverseUnsettable",1358),M(790,576,pU,xyt),l.yl=function(e){return new xyt(this.a,this.c,e)},l.md=function(){return this.b},l.zl=function(e,n,r){return vdn(this,e,this.b,r)},l.Al=function(e,n,r){return ydn(this,e,this.b,r)},D(jn,"EStructuralFeatureImpl/InverseUpdatingFeatureMapEntry",790),M(1365,1,Jlt,PGt),l.Fk=function(e){return this.a},l.Qj=function(){return At(this.a,97)?u(this.a,97).Qj():!this.a.dc()},l.Wb=function(e){this.a.$b(),this.a.Gc(u(e,15))},l.Gk=function(){At(this.a,97)?u(this.a,97).Gk():this.a.$b()},D(jn,"EStructuralFeatureImpl/SettingMany",1365),M(1366,576,pU,sie),l.xl=function(e){return new iit((Fi(),yL),this.b.ri(this.a,e))},l.md=function(){return null},l.zl=function(e,n,r){return r},l.Al=function(e,n,r){return r},D(jn,"EStructuralFeatureImpl/SimpleContentFeatureMapEntry",1366),M(652,576,pU,iit),l.xl=function(e){return new iit(this.c,e)},l.md=function(){return this.a},l.zl=function(e,n,r){return r},l.Al=function(e,n,r){return r},D(jn,"EStructuralFeatureImpl/SimpleFeatureMapEntry",652),M(403,505,r0,op),l.aj=function(e){return Vt(pf,Ln,29,e,0,1)},l.Yi=function(){return!1},D(jn,"ESuperAdapter/1",403),M(456,448,{110:1,94:1,93:1,155:1,197:1,58:1,114:1,850:1,54:1,99:1,158:1,456:1,119:1,120:1},Sf),l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),this.Ab;case 1:return this.zb;case 2:return!this.a&&(this.a=new y_(this,So,this)),this.a}return Ah(this,e-ur((bn(),Pv)),Tn((s=u($n(this,16),29),s||Pv),e),n,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),no(this.Ab,e,r);case 2:return!this.a&&(this.a=new y_(this,So,this)),no(this.a,e,r)}return o=u(Tn((s=u($n(this,16),29),s||(bn(),Pv)),n),69),o.wk().Ak(this,Su(this),n-ur((bn(),Pv)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return!!this.a&&this.a.i!=0}return _h(this,e-ur((bn(),Pv)),Tn((n=u($n(this,16),29),n||Pv),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab),!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),bs(this.Ab,u(n,16));return;case 1:wu(this,Gr(n));return;case 2:!this.a&&(this.a=new y_(this,So,this)),Lr(this.a),!this.a&&(this.a=new y_(this,So,this)),bs(this.a,u(n,16));return}Ih(this,e-ur((bn(),Pv)),Tn((r=u($n(this,16),29),r||Pv),e),n)},l.ii=function(){return bn(),Pv},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(oi,this,0,3)),Lr(this.Ab);return;case 1:wu(this,null);return;case 2:!this.a&&(this.a=new y_(this,So,this)),Lr(this.a);return}Dh(this,e-ur((bn(),Pv)),Tn((n=u($n(this,16),29),n||Pv),e))},D(jn,"ETypeParameterImpl",456),M(457,83,nc,y_),l.Nj=function(e,n){return Pyn(this,u(e,89),n)},l.Oj=function(e,n){return Nyn(this,u(e,89),n)},D(jn,"ETypeParameterImpl/1",457),M(647,45,y5,Rnt),l.ec=function(){return new t$(this)},D(jn,"ETypeParameterImpl/2",647),M(570,od,il,t$),l.Fc=function(e){return sZt(this,u(e,89))},l.Gc=function(e){var n,r,s;for(s=!1,r=e.Kc();r.Ob();)n=u(r.Pb(),89),di(this.a,n,"")==null&&(s=!0);return s},l.$b=function(){dl(this.a)},l.Hc=function(e){return Eu(this.a,e)},l.Kc=function(){var e;return e=new Z2(new ps(this.a).a),new e$(e)},l.Mc=function(e){return Yie(this,e)},l.gc=function(){return zC(this.a)},D(jn,"ETypeParameterImpl/2/1",570),M(571,1,ba,e$),l.Nb=function(e){Da(this,e)},l.Pb=function(){return u(Vm(this.a).ld(),89)},l.Ob=function(){return this.a.b},l.Qb=function(){iae(this.a)},D(jn,"ETypeParameterImpl/2/1/1",571),M(1329,45,y5,TKt),l._b=function(e){return pa(e)?Zit(this,e):!!yo(this.f,e)},l.xc=function(e){var n,r;return n=pa(e)?eu(this,e):Uo(yo(this.f,e)),At(n,851)?(r=u(n,851),n=r.Kk(),di(this,u(e,241),n),n):n??(e==null?(rrt(),hTe):null)},D(jn,"EValidatorRegistryImpl",1329),M(1349,720,{110:1,94:1,93:1,479:1,155:1,58:1,114:1,2040:1,54:1,99:1,158:1,119:1,120:1},WR),l.ri=function(e,n){switch(e.hk()){case 21:case 22:case 23:case 24:case 26:case 31:case 32:case 37:case 38:case 39:case 40:case 43:case 44:case 48:case 49:case 20:return n==null?null:ec(n);case 25:return D0n(n);case 27:return Udn(n);case 28:return Gdn(n);case 29:return n==null?null:FQt(gL[0],u(n,206));case 41:return n==null?"":R2(u(n,296));case 42:return ec(n);case 50:return Gr(n);default:throw nt(new zn(oT+e.xe()+hv))}},l.si=function(e){var n,r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct;switch(e.G==-1&&(e.G=(j=nh(e),j?Ip(j.vi(),e):-1)),e.G){case 0:return r=new Nnt,r;case 1:return n=new HR,n;case 2:return s=new Af,s;case 4:return o=new n$,o;case 5:return h=new EKt,h;case 6:return d=new WGt,d;case 7:return m=new gD,m;case 10:return T=new U8,T;case 11:return A=new Fnt,A;case 12:return N=new Zee,N;case 13:return U=new Bnt,U;case 14:return W=new Hmt,W;case 17:return tt=new d1,tt;case 18:return k=new um,k;case 19:return ct=new Sf,ct;default:throw nt(new zn(Flt+e.zb+hv))}},l.ti=function(e,n){switch(e.hk()){case 20:return n==null?null:new hwt(n);case 21:return n==null?null:new xb(n);case 23:case 22:return n==null?null:V2n(n);case 26:case 24:return n==null?null:$I(oh(n,-128,127)<<24>>24);case 25:return uxn(n);case 27:return Dmn(n);case 28:return Imn(n);case 29:return e3n(n);case 32:case 31:return n==null?null:Jy(n);case 38:case 37:return n==null?null:new A2t(n);case 40:case 39:return n==null?null:fe(oh(n,Va,ki));case 41:return null;case 42:return n==null,null;case 44:case 43:return n==null?null:Ag(dV(n));case 49:case 48:return n==null?null:g7(oh(n,mU,32767)<<16>>16);case 50:return n;default:throw nt(new zn(oT+e.xe()+hv))}},D(jn,"EcoreFactoryImpl",1349),M(560,184,{110:1,94:1,93:1,155:1,197:1,58:1,241:1,114:1,2038:1,54:1,99:1,158:1,184:1,560:1,119:1,120:1,690:1},Eee),l.gb=!1,l.hb=!1;var RIt,lTe=!1;D(jn,"EcorePackageImpl",560),M(1234,1,{851:1},YR),l.Kk=function(){return YQt(),fTe},D(jn,"EcorePackageImpl/1",1234),M(1243,1,fi,XR),l.fk=function(e){return At(e,155)},l.gk=function(e){return Vt(BN,Ln,155,e,0,1)},D(jn,"EcorePackageImpl/10",1243),M(1244,1,fi,QR),l.fk=function(e){return At(e,197)},l.gk=function(e){return Vt(qdt,Ln,197,e,0,1)},D(jn,"EcorePackageImpl/11",1244),M(1245,1,fi,JR),l.fk=function(e){return At(e,58)},l.gk=function(e){return Vt(l2,Ln,58,e,0,1)},D(jn,"EcorePackageImpl/12",1245),M(1246,1,fi,ZR),l.fk=function(e){return At(e,411)},l.gk=function(e){return Vt(bf,ATt,62,e,0,1)},D(jn,"EcorePackageImpl/13",1246),M(1247,1,fi,g1),l.fk=function(e){return At(e,241)},l.gk=function(e){return Vt(P1,Ln,241,e,0,1)},D(jn,"EcorePackageImpl/14",1247),M(1248,1,fi,Fu),l.fk=function(e){return At(e,518)},l.gk=function(e){return Vt(Iv,Ln,2116,e,0,1)},D(jn,"EcorePackageImpl/15",1248),M(1249,1,fi,Qtt),l.fk=function(e){return At(e,102)},l.gk=function(e){return Vt(U3,L5,19,e,0,1)},D(jn,"EcorePackageImpl/16",1249),M(1250,1,fi,Jtt),l.fk=function(e){return At(e,179)},l.gk=function(e){return Vt(Ku,L5,179,e,0,1)},D(jn,"EcorePackageImpl/17",1250),M(1251,1,fi,Ztt),l.fk=function(e){return At(e,480)},l.gk=function(e){return Vt(H3,Ln,480,e,0,1)},D(jn,"EcorePackageImpl/18",1251),M(1252,1,fi,Bu),l.fk=function(e){return At(e,561)},l.gk=function(e){return Vt(Sc,fme,561,e,0,1)},D(jn,"EcorePackageImpl/19",1252),M(1235,1,fi,uC),l.fk=function(e){return At(e,331)},l.gk=function(e){return Vt(V3,L5,35,e,0,1)},D(jn,"EcorePackageImpl/2",1235),M(1253,1,fi,tj),l.fk=function(e){return At(e,248)},l.gk=function(e){return Vt(So,Lme,89,e,0,1)},D(jn,"EcorePackageImpl/20",1253),M(1254,1,fi,ej),l.fk=function(e){return At(e,456)},l.gk=function(e){return Vt(Ou,Ln,850,e,0,1)},D(jn,"EcorePackageImpl/21",1254),M(1255,1,fi,c6),l.fk=function(e){return Ty(e)},l.gk=function(e){return Vt(Es,le,484,e,8,1)},D(jn,"EcorePackageImpl/22",1255),M(1256,1,fi,tet),l.fk=function(e){return At(e,195)},l.gk=function(e){return Vt(cl,le,195,e,0,2)},D(jn,"EcorePackageImpl/23",1256),M(1257,1,fi,G8),l.fk=function(e){return At(e,222)},l.gk=function(e){return Vt(Ok,le,222,e,0,1)},D(jn,"EcorePackageImpl/24",1257),M(1258,1,fi,eet),l.fk=function(e){return At(e,180)},l.gk=function(e){return Vt(uA,le,180,e,0,1)},D(jn,"EcorePackageImpl/25",1258),M(1259,1,fi,nj),l.fk=function(e){return At(e,206)},l.gk=function(e){return Vt(AU,le,206,e,0,1)},D(jn,"EcorePackageImpl/26",1259),M(1260,1,fi,net),l.fk=function(e){return!1},l.gk=function(e){return Vt(nOt,Ln,2215,e,0,1)},D(jn,"EcorePackageImpl/27",1260),M(1261,1,fi,ret),l.fk=function(e){return Cy(e)},l.gk=function(e){return Vt(zs,le,345,e,7,1)},D(jn,"EcorePackageImpl/28",1261),M(1262,1,fi,lC),l.fk=function(e){return At(e,61)},l.gk=function(e){return Vt(wIt,l3,61,e,0,1)},D(jn,"EcorePackageImpl/29",1262),M(1236,1,fi,rj),l.fk=function(e){return At(e,519)},l.gk=function(e){return Vt(oi,{3:1,4:1,5:1,2033:1},598,e,0,1)},D(jn,"EcorePackageImpl/3",1236),M(1263,1,fi,rD),l.fk=function(e){return At(e,582)},l.gk=function(e){return Vt(yIt,Ln,2039,e,0,1)},D(jn,"EcorePackageImpl/30",1263),M(1264,1,fi,hC),l.fk=function(e){return At(e,160)},l.gk=function(e){return Vt(HIt,l3,160,e,0,1)},D(jn,"EcorePackageImpl/31",1264),M(1265,1,fi,iet),l.fk=function(e){return At(e,76)},l.gk=function(e){return Vt(UK,Rme,76,e,0,1)},D(jn,"EcorePackageImpl/32",1265),M(1266,1,fi,set),l.fk=function(e){return At(e,161)},l.gk=function(e){return Vt(gT,le,161,e,0,1)},D(jn,"EcorePackageImpl/33",1266),M(1267,1,fi,iD),l.fk=function(e){return At(e,17)},l.gk=function(e){return Vt(Na,le,17,e,0,1)},D(jn,"EcorePackageImpl/34",1267),M(1268,1,fi,fC),l.fk=function(e){return At(e,296)},l.gk=function(e){return Vt(zTt,Ln,296,e,0,1)},D(jn,"EcorePackageImpl/35",1268),M(1269,1,fi,H1),l.fk=function(e){return At(e,168)},l.gk=function(e){return Vt(dv,le,168,e,0,1)},D(jn,"EcorePackageImpl/36",1269),M(1270,1,fi,K8),l.fk=function(e){return At(e,85)},l.gk=function(e){return Vt(qTt,Ln,85,e,0,1)},D(jn,"EcorePackageImpl/37",1270),M(1271,1,fi,aet),l.fk=function(e){return At(e,599)},l.gk=function(e){return Vt(jIt,Ln,599,e,0,1)},D(jn,"EcorePackageImpl/38",1271),M(1272,1,fi,W8),l.fk=function(e){return!1},l.gk=function(e){return Vt(rOt,Ln,2216,e,0,1)},D(jn,"EcorePackageImpl/39",1272),M(1237,1,fi,sD),l.fk=function(e){return At(e,90)},l.gk=function(e){return Vt(pf,Ln,29,e,0,1)},D(jn,"EcorePackageImpl/4",1237),M(1273,1,fi,D2),l.fk=function(e){return At(e,191)},l.gk=function(e){return Vt(gv,le,191,e,0,1)},D(jn,"EcorePackageImpl/40",1273),M(1274,1,fi,dC),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D(jn,"EcorePackageImpl/41",1274),M(1275,1,fi,aD),l.fk=function(e){return At(e,596)},l.gk=function(e){return Vt(vIt,Ln,596,e,0,1)},D(jn,"EcorePackageImpl/42",1275),M(1276,1,fi,p1),l.fk=function(e){return!1},l.gk=function(e){return Vt(iOt,le,2217,e,0,1)},D(jn,"EcorePackageImpl/43",1276),M(1277,1,fi,gC),l.fk=function(e){return At(e,44)},l.gk=function(e){return Vt(yw,bV,44,e,0,1)},D(jn,"EcorePackageImpl/44",1277),M(1238,1,fi,V1),l.fk=function(e){return At(e,142)},l.gk=function(e){return Vt(N1,Ln,142,e,0,1)},D(jn,"EcorePackageImpl/5",1238),M(1239,1,fi,U1),l.fk=function(e){return At(e,156)},l.gk=function(e){return Vt(Wdt,Ln,156,e,0,1)},D(jn,"EcorePackageImpl/6",1239),M(1240,1,fi,oet),l.fk=function(e){return At(e,468)},l.gk=function(e){return Vt(VK,Ln,685,e,0,1)},D(jn,"EcorePackageImpl/7",1240),M(1241,1,fi,cet),l.fk=function(e){return At(e,582)},l.gk=function(e){return Vt(zg,Ln,694,e,0,1)},D(jn,"EcorePackageImpl/8",1241),M(1242,1,fi,T4),l.fk=function(e){return At(e,479)},l.gk=function(e){return Vt(dL,Ln,479,e,0,1)},D(jn,"EcorePackageImpl/9",1242),M(1038,2080,hme,UKt),l.Mi=function(e,n){vbn(this,u(n,424))},l.Qi=function(e,n){jfe(this,e,u(n,424))},D(jn,"MinimalEObjectImpl/1ArrayDelegatingAdapterList",1038),M(1039,152,EP,dee),l.jj=function(){return this.a.a},D(jn,"MinimalEObjectImpl/1ArrayDelegatingAdapterList/1",1039),M(1067,1066,{},SQt),D("org.eclipse.emf.ecore.plugin","EcorePlugin",1067);var jIt=us(jme,"Resource");M(799,1524,$me),l.Hl=function(e){},l.Il=function(e){},l.El=function(){return!this.a&&(this.a=new Lnt(this)),this.a},l.Fl=function(e){var n,r,s,o,h;if(s=e.length,s>0)if(qn(0,e.length),e.charCodeAt(0)==47){for(h=new bu(4),o=1,n=1;n0&&(e=(Sa(0,r,e.length),e.substr(0,r))));return W4n(this,e)},l.Gl=function(){return this.c},l.Ib=function(){var e;return R2(this.Rm)+"@"+(e=Hi(this)>>>0,e.toString(16))+" uri='"+this.d+"'"},l.b=!1,D(Zlt,"ResourceImpl",799),M(1525,799,$me,NGt),D(Zlt,"BinaryResourceImpl",1525),M(1190,708,Klt),l.bj=function(e){return At(e,58)?jln(this,u(e,58)):At(e,599)?new Zn(u(e,599).El()):$t(e)===$t(this.f)?u(e,16).Kc():(TE(),$N.a)},l.Ob=function(){return y6t(this)},l.a=!1,D(Zi,"EcoreUtil/ContentTreeIterator",1190),M(1526,1190,Klt,Hte),l.bj=function(e){return $t(e)===$t(this.f)?u(e,15).Kc():new $re(u(e,58))},D(Zlt,"ResourceImpl/5",1526),M(658,2092,Ame,Lnt),l.Hc=function(e){return this.i<=4?_7(this,e):At(e,54)&&u(e,54).Jh()==this.a},l.Mi=function(e,n){e==this.i-1&&(this.a.b||(this.a.b=!0))},l.Oi=function(e,n){e==0?this.a.b||(this.a.b=!0):Ast(this,e,n)},l.Qi=function(e,n){},l.Ri=function(e,n,r){},l.Lj=function(){return 2},l.jj=function(){return this.a},l.Mj=function(){return!0},l.Nj=function(e,n){var r;return r=u(e,54),n=r.fi(this.a,n),n},l.Oj=function(e,n){var r;return r=u(e,54),r.fi(null,n)},l.Pj=function(){return!1},l.Si=function(){return!0},l.aj=function(e){return Vt(l2,Ln,58,e,0,1)},l.Yi=function(){return!1},D(Zlt,"ResourceImpl/ContentsEList",658),M(970,2062,U7,FGt),l.fd=function(e){return this.a.Ki(e)},l.gc=function(){return this.a.gc()},D(Zi,"AbstractSequentialInternalEList/1",970);var $It,zIt,Fa,qIt;M(634,1,{},UZt);var GK,KK;D(Zi,"BasicExtendedMetaData",634),M(1181,1,{},KXt),l.Jl=function(){return null},l.Kl=function(){return this.a==-2&&ye(this,Wyn(this.d,this.b)),this.a},l.Ll=function(){return null},l.Ml=function(){return wn(),wn(),so},l.xe=function(){return this.c==lT&&xe(this,ule(this.d,this.b)),this.c},l.Nl=function(){return 0},l.a=-2,l.c=lT,D(Zi,"BasicExtendedMetaData/EClassExtendedMetaDataImpl",1181),M(1182,1,{},bre),l.Jl=function(){return this.a==(zE(),GK)&&ke(this,Kkn(this.f,this.b)),this.a},l.Kl=function(){return 0},l.Ll=function(){return this.c==(zE(),GK)&&de(this,Wkn(this.f,this.b)),this.c},l.Ml=function(){return!this.d&&tn(this,IEn(this.f,this.b)),this.d},l.xe=function(){return this.e==lT&&Sn(this,ule(this.f,this.b)),this.e},l.Nl=function(){return this.g==-2&&or(this,dyn(this.f,this.b)),this.g},l.e=lT,l.g=-2,D(Zi,"BasicExtendedMetaData/EDataTypeExtendedMetaDataImpl",1182),M(1180,1,{},WXt),l.b=!1,l.c=!1,D(Zi,"BasicExtendedMetaData/EPackageExtendedMetaDataImpl",1180),M(1183,1,{},wre),l.c=-2,l.e=lT,l.f=lT,D(Zi,"BasicExtendedMetaData/EStructuralFeatureExtendedMetaDataImpl",1183),M(593,632,nc,wz),l.Lj=function(){return this.c},l.ol=function(){return!1},l.Wi=function(e,n){return n},l.c=0,D(Zi,"EDataTypeEList",593);var HIt=us(Zi,"FeatureMap");M(78,593,{3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,66:1,61:1,79:1,160:1,220:1,2036:1,71:1,97:1},ws),l.bd=function(e,n){f6n(this,e,u(n,76))},l.Fc=function(e){return Mxn(this,u(e,76))},l.Hi=function(e){Fun(this,u(e,76))},l.Nj=function(e,n){return ran(this,u(e,76),n)},l.Oj=function(e,n){return dvt(this,u(e,76),n)},l.Ti=function(e,n){return R8n(this,e,n)},l.Wi=function(e,n){return TTn(this,e,u(n,76))},l.hd=function(e,n){return Z6n(this,e,u(n,76))},l.Uj=function(e,n){return ian(this,u(e,76),n)},l.Vj=function(e,n){return yZt(this,u(e,76),n)},l.Wj=function(e,n,r){return tyn(this,u(e,76),u(n,76),r)},l.Zi=function(e,n){return kot(this,e,u(n,76))},l.Ol=function(e,n){return hkt(this,e,n)},l.cd=function(e,n){var r,s,o,h,d,m,k,T,A;for(T=new jm(n.gc()),o=n.Kc();o.Ob();)if(s=u(o.Pb(),76),h=s.Lk(),Dg(this.e,h))(!h.Si()||!cq(this,h,s.md())&&!_7(T,s))&&Mr(T,s);else{for(A=Au(this.e.Dh(),h),r=u(this.g,124),d=!0,m=0;m=0;)if(n=e[this.c],this.k.am(n.Lk()))return this.j=this.f?n:n.md(),this.i=-2,!0;return this.i=-1,this.g=-1,!1},D(Zi,"BasicFeatureMap/FeatureEIterator",420),M(676,420,I0,jrt),l.ul=function(){return!0},D(Zi,"BasicFeatureMap/ResolvingFeatureEIterator",676),M(968,495,dU,BQt),l.pj=function(){return this},D(Zi,"EContentsEList/1",968),M(969,495,dU,oQt),l.ul=function(){return!1},D(Zi,"EContentsEList/2",969),M(967,287,gU,RQt),l.wl=function(e){},l.Ob=function(){return!1},l.Sb=function(){return!1},D(Zi,"EContentsEList/FeatureIteratorImpl/1",967),M(840,593,nc,ymt),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Lr(this),zl(this.e)?(e=this.a,this.a=!1,Ti(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,D(Zi,"EDataTypeEList/Unsettable",840),M(1958,593,nc,UQt),l.Si=function(){return!0},D(Zi,"EDataTypeUniqueEList",1958),M(1959,840,nc,GQt),l.Si=function(){return!0},D(Zi,"EDataTypeUniqueEList/Unsettable",1959),M(147,83,nc,Qu),l.nl=function(){return!0},l.Wi=function(e,n){return wk(this,e,u(n,58))},D(Zi,"EObjectContainmentEList/Resolving",147),M(1184,555,nc,KQt),l.nl=function(){return!0},l.Wi=function(e,n){return wk(this,e,u(n,58))},D(Zi,"EObjectContainmentEList/Unsettable/Resolving",1184),M(766,14,nc,avt),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Lr(this),zl(this.e)?(e=this.a,this.a=!1,Ti(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,D(Zi,"EObjectContainmentWithInverseEList/Unsettable",766),M(1222,766,nc,aZt),l.nl=function(){return!0},l.Wi=function(e,n){return wk(this,e,u(n,58))},D(Zi,"EObjectContainmentWithInverseEList/Unsettable/Resolving",1222),M(757,504,nc,xmt),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Lr(this),zl(this.e)?(e=this.a,this.a=!1,Ti(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,D(Zi,"EObjectEList/Unsettable",757),M(338,504,nc,H4),l.nl=function(){return!0},l.Wi=function(e,n){return wk(this,e,u(n,58))},D(Zi,"EObjectResolvingEList",338),M(1844,757,nc,WQt),l.nl=function(){return!0},l.Wi=function(e,n){return wk(this,e,u(n,58))},D(Zi,"EObjectResolvingEList/Unsettable",1844),M(1527,1,{},Y8);var hTe;D(Zi,"EObjectValidator",1527),M(559,504,nc,Pz),l.il=function(){return this.d},l.jl=function(){return this.b},l.Mj=function(){return!0},l.ml=function(){return!0},l.b=0,D(Zi,"EObjectWithInverseEList",559),M(1225,559,nc,oZt),l.ll=function(){return!0},D(Zi,"EObjectWithInverseEList/ManyInverse",1225),M(635,559,nc,ait),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Lr(this),zl(this.e)?(e=this.a,this.a=!1,Ti(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,D(Zi,"EObjectWithInverseEList/Unsettable",635),M(1224,635,nc,cZt),l.ll=function(){return!0},D(Zi,"EObjectWithInverseEList/Unsettable/ManyInverse",1224),M(767,559,nc,ovt),l.nl=function(){return!0},l.Wi=function(e,n){return wk(this,e,u(n,58))},D(Zi,"EObjectWithInverseResolvingEList",767),M(32,767,nc,En),l.ll=function(){return!0},D(Zi,"EObjectWithInverseResolvingEList/ManyInverse",32),M(768,635,nc,cvt),l.nl=function(){return!0},l.Wi=function(e,n){return wk(this,e,u(n,58))},D(Zi,"EObjectWithInverseResolvingEList/Unsettable",768),M(1223,768,nc,uZt),l.ll=function(){return!0},D(Zi,"EObjectWithInverseResolvingEList/Unsettable/ManyInverse",1223),M(1185,632,nc),l.Li=function(){return(this.b&1792)==0},l.Ni=function(){this.b|=1},l.kl=function(){return(this.b&4)!=0},l.Mj=function(){return(this.b&40)!=0},l.ll=function(){return(this.b&16)!=0},l.ml=function(){return(this.b&8)!=0},l.nl=function(){return(this.b&b3)!=0},l.al=function(){return(this.b&32)!=0},l.ol=function(){return(this.b&Uf)!=0},l.fk=function(e){return this.d?Yre(this.d,e):this.Lk().Hk().fk(e)},l.Qj=function(){return this.b&2?(this.b&1)!=0:this.i!=0},l.Si=function(){return(this.b&128)!=0},l.Gk=function(){var e;Lr(this),this.b&2&&(zl(this.e)?(e=(this.b&1)!=0,this.b&=-2,cE(this,new jf(this.e,2,ss(this.e.Dh(),this.Lk()),e,!1))):this.b&=-2)},l.Yi=function(){return(this.b&1536)==0},l.b=0,D(Zi,"EcoreEList/Generic",1185),M(1186,1185,nc,ene),l.Lk=function(){return this.a},D(Zi,"EcoreEList/Dynamic",1186),M(765,66,r0,k2t),l.aj=function(e){return VI(this.a.a,e)},D(Zi,"EcoreEMap/1",765),M(764,83,nc,ayt),l.Mi=function(e,n){SH(this.b,u(n,136))},l.Oi=function(e,n){Joe(this.b)},l.Pi=function(e,n,r){var s;++(s=this.b,u(n,136),s).e},l.Qi=function(e,n){Dat(this.b,u(n,136))},l.Ri=function(e,n,r){Dat(this.b,u(r,136)),$t(r)===$t(n)&&u(r,136).Ci(ein(u(n,136).ld())),SH(this.b,u(n,136))},D(Zi,"EcoreEMap/DelegateEObjectContainmentEList",764),M(1220,141,STt,poe),D(Zi,"EcoreEMap/Unsettable",1220),M(1221,764,nc,lZt),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Lr(this),zl(this.e)?(e=this.a,this.a=!1,Ti(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,D(Zi,"EcoreEMap/Unsettable/UnsettableDelegateEObjectContainmentEList",1221),M(1189,215,y5,nee),l.a=!1,l.b=!1,D(Zi,"EcoreUtil/Copier",1189),M(759,1,ba,$re),l.Nb=function(e){Da(this,e)},l.Ob=function(){return Wue(this)},l.Pb=function(){var e;return Wue(this),e=this.b,this.b=null,e},l.Qb=function(){this.a.Qb()},D(Zi,"EcoreUtil/ProperContentIterator",759),M(1528,1527,{},lnt);var fTe;D(Zi,"EcoreValidator",1528);var dTe;us(Zi,"FeatureMapUtil/Validator"),M(1295,1,{2041:1},X8),l.am=function(e){return!0},D(Zi,"FeatureMapUtil/1",1295),M(773,1,{2041:1},zkt),l.am=function(e){var n;return this.c==e?!0:(n=De(tr(this.a,e)),n==null?t8n(this,e)?($ie(this.a,e,(Nn(),dT)),!0):($ie(this.a,e,(Nn(),Yb)),!1):n==(Nn(),dT))},l.e=!1;var Jdt;D(Zi,"FeatureMapUtil/BasicValidator",773),M(774,45,y5,mmt),D(Zi,"FeatureMapUtil/BasicValidator/Cache",774),M(509,56,{20:1,31:1,56:1,16:1,15:1,61:1,79:1,71:1,97:1},YD),l.bd=function(e,n){Mde(this.c,this.b,e,n)},l.Fc=function(e){return hkt(this.c,this.b,e)},l.cd=function(e,n){return x7n(this.c,this.b,e,n)},l.Gc=function(e){return h_(this,e)},l.Gi=function(e,n){b0n(this.c,this.b,e,n)},l.Wk=function(e,n){return rkt(this.c,this.b,e,n)},l.$i=function(e){return cV(this.c,this.b,e,!1)},l.Ii=function(){return vQt(this.c,this.b)},l.Ji=function(){return qrn(this.c,this.b)},l.Ki=function(e){return xdn(this.c,this.b,e)},l.Xk=function(e,n){return HJt(this,e,n)},l.$b=function(){x6(this)},l.Hc=function(e){return cq(this.c,this.b,e)},l.Ic=function(e){return ygn(this.c,this.b,e)},l.Xb=function(e){return cV(this.c,this.b,e,!0)},l.Fk=function(e){return this},l.dd=function(e){return A1n(this.c,this.b,e)},l.dc=function(){return G$(this)},l.Qj=function(){return!hO(this.c,this.b)},l.Kc=function(){return a0n(this.c,this.b)},l.ed=function(){return o0n(this.c,this.b)},l.fd=function(e){return Rbn(this.c,this.b,e)},l.Ti=function(e,n){return U0e(this.c,this.b,e,n)},l.Ui=function(e,n){Tdn(this.c,this.b,e,n)},l.gd=function(e){return kfe(this.c,this.b,e)},l.Mc=function(e){return E8n(this.c,this.b,e)},l.hd=function(e,n){return tge(this.c,this.b,e,n)},l.Wb=function(e){HH(this.c,this.b),h_(this,u(e,15))},l.gc=function(){return Bbn(this.c,this.b)},l.Pc=function(){return Mfn(this.c,this.b)},l.Qc=function(e){return L1n(this.c,this.b,e)},l.Ib=function(){var e,n;for(n=new hp,n.a+="[",e=vQt(this.c,this.b);xat(e);)Lo(n,d_(TH(e))),xat(e)&&(n.a+=ro);return n.a+="]",n.a},l.Gk=function(){HH(this.c,this.b)},D(Zi,"FeatureMapUtil/FeatureEList",509),M(644,38,EP,wst),l.hj=function(e){return tS(this,e)},l.mj=function(e){var n,r,s,o,h,d,m;switch(this.d){case 1:case 2:{if(h=e.jj(),$t(h)===$t(this.c)&&tS(this,null)==e.hj(null))return this.g=e.ij(),e.gj()==1&&(this.d=1),!0;break}case 3:{switch(o=e.gj(),o){case 3:{if(h=e.jj(),$t(h)===$t(this.c)&&tS(this,null)==e.hj(null))return this.d=5,n=new jm(2),Mr(n,this.g),Mr(n,e.ij()),this.g=n,!0;break}}break}case 5:{switch(o=e.gj(),o){case 3:{if(h=e.jj(),$t(h)===$t(this.c)&&tS(this,null)==e.hj(null))return r=u(this.g,16),r.Fc(e.ij()),!0;break}}break}case 4:{switch(o=e.gj(),o){case 3:{if(h=e.jj(),$t(h)===$t(this.c)&&tS(this,null)==e.hj(null))return this.d=1,this.g=e.ij(),!0;break}case 4:{if(h=e.jj(),$t(h)===$t(this.c)&&tS(this,null)==e.hj(null))return this.d=6,m=new jm(2),Mr(m,this.n),Mr(m,e.kj()),this.n=m,d=ot(st(Or,1),ii,28,15,[this.o,e.lj()]),this.g=d,!0;break}}break}case 6:{switch(o=e.gj(),o){case 4:{if(h=e.jj(),$t(h)===$t(this.c)&&tS(this,null)==e.hj(null))return r=u(this.n,16),r.Fc(e.kj()),d=u(this.g,53),s=Vt(Or,ii,28,d.length+1,15,1),Wc(d,0,s,0,d.length),s[d.length]=e.lj(),this.g=s,!0;break}}break}}return!1},D(Zi,"FeatureMapUtil/FeatureENotificationImpl",644),M(564,509,{20:1,31:1,56:1,16:1,15:1,61:1,79:1,160:1,220:1,2036:1,71:1,97:1},xz),l.Ol=function(e,n){return hkt(this.c,e,n)},l.Pl=function(e,n,r){return rkt(this.c,e,n,r)},l.Ql=function(e,n,r){return Lkt(this.c,e,n,r)},l.Rl=function(){return this},l.Sl=function(e,n){return HO(this.c,e,n)},l.Tl=function(e){return u(cV(this.c,this.b,e,!1),76).Lk()},l.Ul=function(e){return u(cV(this.c,this.b,e,!1),76).md()},l.Vl=function(){return this.a},l.Wl=function(e){return!hO(this.c,e)},l.Xl=function(e,n){uV(this.c,e,n)},l.Yl=function(e){return moe(this.c,e)},l.Zl=function(e){Xle(this.c,e)},D(Zi,"FeatureMapUtil/FeatureFeatureMap",564),M(1294,1,Jlt,GXt),l.Fk=function(e){return cV(this.b,this.a,-1,e)},l.Qj=function(){return!hO(this.b,this.a)},l.Wb=function(e){uV(this.b,this.a,e)},l.Gk=function(){HH(this.b,this.a)},D(Zi,"FeatureMapUtil/FeatureValue",1294);var e8,Zdt,t0t,n8,gTe,qN=us(kU,"AnyType");M(680,63,Ig,Gnt),D(kU,"InvalidDatatypeValueException",680);var WK=us(kU,qme),HN=us(kU,Hme),VIt=us(kU,Vme),pTe,Nc,UIt,Bw,bTe,wTe,mTe,vTe,yTe,xTe,kTe,ETe,TTe,CTe,_Te,hx,STe,fx,mL,ATe,Nv,VN,UN,LTe,vL,yL;M(844,516,{110:1,94:1,93:1,58:1,54:1,99:1,857:1},z2t),l.Lh=function(e,n,r){switch(e){case 0:return r?(!this.c&&(this.c=new ws(this,0)),this.c):(!this.c&&(this.c=new ws(this,0)),this.c.b);case 1:return r?(!this.c&&(this.c=new ws(this,0)),u(nu(this.c,(Fi(),Bw)),160)):(!this.c&&(this.c=new ws(this,0)),u(u(nu(this.c,(Fi(),Bw)),160),220)).Vl();case 2:return r?(!this.b&&(this.b=new ws(this,2)),this.b):(!this.b&&(this.b=new ws(this,2)),this.b.b)}return Ah(this,e-ur(this.ii()),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():this.ii(),e),n,r)},l.Uh=function(e,n,r){var s;switch(n){case 0:return!this.c&&(this.c=new ws(this,0)),jO(this.c,e,r);case 1:return(!this.c&&(this.c=new ws(this,0)),u(u(nu(this.c,(Fi(),Bw)),160),71)).Xk(e,r);case 2:return!this.b&&(this.b=new ws(this,2)),jO(this.b,e,r)}return s=u(Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():this.ii(),n),69),s.wk().Ak(this,V3t(this),n-ur(this.ii()),e,r)},l.Wh=function(e){switch(e){case 0:return!!this.c&&this.c.i!=0;case 1:return!(!this.c&&(this.c=new ws(this,0)),u(nu(this.c,(Fi(),Bw)),160)).dc();case 2:return!!this.b&&this.b.i!=0}return _h(this,e-ur(this.ii()),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():this.ii(),e))},l.bi=function(e,n){switch(e){case 0:!this.c&&(this.c=new ws(this,0)),pI(this.c,n);return;case 1:(!this.c&&(this.c=new ws(this,0)),u(u(nu(this.c,(Fi(),Bw)),160),220)).Wb(n);return;case 2:!this.b&&(this.b=new ws(this,2)),pI(this.b,n);return}Ih(this,e-ur(this.ii()),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():this.ii(),e),n)},l.ii=function(){return Fi(),UIt},l.ki=function(e){switch(e){case 0:!this.c&&(this.c=new ws(this,0)),Lr(this.c);return;case 1:(!this.c&&(this.c=new ws(this,0)),u(nu(this.c,(Fi(),Bw)),160)).$b();return;case 2:!this.b&&(this.b=new ws(this,2)),Lr(this.b);return}Dh(this,e-ur(this.ii()),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():this.ii(),e))},l.Ib=function(){var e;return this.j&4?qf(this):(e=new Jh(qf(this)),e.a+=" (mixed: ",o_(e,this.c),e.a+=", anyAttribute: ",o_(e,this.b),e.a+=")",e.a)},D($s,"AnyTypeImpl",844),M(681,516,{110:1,94:1,93:1,58:1,54:1,99:1,2119:1,681:1},det),l.Lh=function(e,n,r){switch(e){case 0:return this.a;case 1:return this.b}return Ah(this,e-ur((Fi(),hx)),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():hx,e),n,r)},l.Wh=function(e){switch(e){case 0:return this.a!=null;case 1:return this.b!=null}return _h(this,e-ur((Fi(),hx)),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():hx,e))},l.bi=function(e,n){switch(e){case 0:yr(this,Gr(n));return;case 1:br(this,Gr(n));return}Ih(this,e-ur((Fi(),hx)),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():hx,e),n)},l.ii=function(){return Fi(),hx},l.ki=function(e){switch(e){case 0:this.a=null;return;case 1:this.b=null;return}Dh(this,e-ur((Fi(),hx)),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():hx,e))},l.Ib=function(){var e;return this.j&4?qf(this):(e=new Jh(qf(this)),e.a+=" (data: ",Lo(e,this.a),e.a+=", target: ",Lo(e,this.b),e.a+=")",e.a)},l.a=null,l.b=null,D($s,"ProcessingInstructionImpl",681),M(682,844,{110:1,94:1,93:1,58:1,54:1,99:1,857:1,2120:1,682:1},CKt),l.Lh=function(e,n,r){switch(e){case 0:return r?(!this.c&&(this.c=new ws(this,0)),this.c):(!this.c&&(this.c=new ws(this,0)),this.c.b);case 1:return r?(!this.c&&(this.c=new ws(this,0)),u(nu(this.c,(Fi(),Bw)),160)):(!this.c&&(this.c=new ws(this,0)),u(u(nu(this.c,(Fi(),Bw)),160),220)).Vl();case 2:return r?(!this.b&&(this.b=new ws(this,2)),this.b):(!this.b&&(this.b=new ws(this,2)),this.b.b);case 3:return!this.c&&(this.c=new ws(this,0)),Gr(HO(this.c,(Fi(),mL),!0));case 4:return lvt(this.a,(!this.c&&(this.c=new ws(this,0)),Gr(HO(this.c,(Fi(),mL),!0))));case 5:return this.a}return Ah(this,e-ur((Fi(),fx)),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():fx,e),n,r)},l.Wh=function(e){switch(e){case 0:return!!this.c&&this.c.i!=0;case 1:return!(!this.c&&(this.c=new ws(this,0)),u(nu(this.c,(Fi(),Bw)),160)).dc();case 2:return!!this.b&&this.b.i!=0;case 3:return!this.c&&(this.c=new ws(this,0)),Gr(HO(this.c,(Fi(),mL),!0))!=null;case 4:return lvt(this.a,(!this.c&&(this.c=new ws(this,0)),Gr(HO(this.c,(Fi(),mL),!0))))!=null;case 5:return!!this.a}return _h(this,e-ur((Fi(),fx)),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():fx,e))},l.bi=function(e,n){switch(e){case 0:!this.c&&(this.c=new ws(this,0)),pI(this.c,n);return;case 1:(!this.c&&(this.c=new ws(this,0)),u(u(nu(this.c,(Fi(),Bw)),160),220)).Wb(n);return;case 2:!this.b&&(this.b=new ws(this,2)),pI(this.b,n);return;case 3:Jyt(this,Gr(n));return;case 4:Jyt(this,uvt(this.a,n));return;case 5:kr(this,u(n,156));return}Ih(this,e-ur((Fi(),fx)),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():fx,e),n)},l.ii=function(){return Fi(),fx},l.ki=function(e){switch(e){case 0:!this.c&&(this.c=new ws(this,0)),Lr(this.c);return;case 1:(!this.c&&(this.c=new ws(this,0)),u(nu(this.c,(Fi(),Bw)),160)).$b();return;case 2:!this.b&&(this.b=new ws(this,2)),Lr(this.b);return;case 3:!this.c&&(this.c=new ws(this,0)),uV(this.c,(Fi(),mL),null);return;case 4:Jyt(this,uvt(this.a,null));return;case 5:this.a=null;return}Dh(this,e-ur((Fi(),fx)),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():fx,e))},D($s,"SimpleAnyTypeImpl",682),M(683,516,{110:1,94:1,93:1,58:1,54:1,99:1,2121:1,683:1},_Kt),l.Lh=function(e,n,r){switch(e){case 0:return r?(!this.a&&(this.a=new ws(this,0)),this.a):(!this.a&&(this.a=new ws(this,0)),this.a.b);case 1:return r?(!this.b&&(this.b=new el((bn(),po),Sc,this,1)),this.b):(!this.b&&(this.b=new el((bn(),po),Sc,this,1)),II(this.b));case 2:return r?(!this.c&&(this.c=new el((bn(),po),Sc,this,2)),this.c):(!this.c&&(this.c=new el((bn(),po),Sc,this,2)),II(this.c));case 3:return!this.a&&(this.a=new ws(this,0)),nu(this.a,(Fi(),VN));case 4:return!this.a&&(this.a=new ws(this,0)),nu(this.a,(Fi(),UN));case 5:return!this.a&&(this.a=new ws(this,0)),nu(this.a,(Fi(),vL));case 6:return!this.a&&(this.a=new ws(this,0)),nu(this.a,(Fi(),yL))}return Ah(this,e-ur((Fi(),Nv)),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():Nv,e),n,r)},l.Uh=function(e,n,r){var s;switch(n){case 0:return!this.a&&(this.a=new ws(this,0)),jO(this.a,e,r);case 1:return!this.b&&(this.b=new el((bn(),po),Sc,this,1)),lz(this.b,e,r);case 2:return!this.c&&(this.c=new el((bn(),po),Sc,this,2)),lz(this.c,e,r);case 5:return!this.a&&(this.a=new ws(this,0)),HJt(nu(this.a,(Fi(),vL)),e,r)}return s=u(Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():(Fi(),Nv),n),69),s.wk().Ak(this,V3t(this),n-ur((Fi(),Nv)),e,r)},l.Wh=function(e){switch(e){case 0:return!!this.a&&this.a.i!=0;case 1:return!!this.b&&this.b.f!=0;case 2:return!!this.c&&this.c.f!=0;case 3:return!this.a&&(this.a=new ws(this,0)),!G$(nu(this.a,(Fi(),VN)));case 4:return!this.a&&(this.a=new ws(this,0)),!G$(nu(this.a,(Fi(),UN)));case 5:return!this.a&&(this.a=new ws(this,0)),!G$(nu(this.a,(Fi(),vL)));case 6:return!this.a&&(this.a=new ws(this,0)),!G$(nu(this.a,(Fi(),yL)))}return _h(this,e-ur((Fi(),Nv)),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():Nv,e))},l.bi=function(e,n){switch(e){case 0:!this.a&&(this.a=new ws(this,0)),pI(this.a,n);return;case 1:!this.b&&(this.b=new el((bn(),po),Sc,this,1)),Kq(this.b,n);return;case 2:!this.c&&(this.c=new el((bn(),po),Sc,this,2)),Kq(this.c,n);return;case 3:!this.a&&(this.a=new ws(this,0)),x6(nu(this.a,(Fi(),VN))),!this.a&&(this.a=new ws(this,0)),h_(nu(this.a,VN),u(n,16));return;case 4:!this.a&&(this.a=new ws(this,0)),x6(nu(this.a,(Fi(),UN))),!this.a&&(this.a=new ws(this,0)),h_(nu(this.a,UN),u(n,16));return;case 5:!this.a&&(this.a=new ws(this,0)),x6(nu(this.a,(Fi(),vL))),!this.a&&(this.a=new ws(this,0)),h_(nu(this.a,vL),u(n,16));return;case 6:!this.a&&(this.a=new ws(this,0)),x6(nu(this.a,(Fi(),yL))),!this.a&&(this.a=new ws(this,0)),h_(nu(this.a,yL),u(n,16));return}Ih(this,e-ur((Fi(),Nv)),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():Nv,e),n)},l.ii=function(){return Fi(),Nv},l.ki=function(e){switch(e){case 0:!this.a&&(this.a=new ws(this,0)),Lr(this.a);return;case 1:!this.b&&(this.b=new el((bn(),po),Sc,this,1)),this.b.c.$b();return;case 2:!this.c&&(this.c=new el((bn(),po),Sc,this,2)),this.c.c.$b();return;case 3:!this.a&&(this.a=new ws(this,0)),x6(nu(this.a,(Fi(),VN)));return;case 4:!this.a&&(this.a=new ws(this,0)),x6(nu(this.a,(Fi(),UN)));return;case 5:!this.a&&(this.a=new ws(this,0)),x6(nu(this.a,(Fi(),vL)));return;case 6:!this.a&&(this.a=new ws(this,0)),x6(nu(this.a,(Fi(),yL)));return}Dh(this,e-ur((Fi(),Nv)),Tn(this.j&2?(!this.k&&(this.k=new Xh),this.k).Nk():Nv,e))},l.Ib=function(){var e;return this.j&4?qf(this):(e=new Jh(qf(this)),e.a+=" (mixed: ",o_(e,this.a),e.a+=")",e.a)},D($s,"XMLTypeDocumentRootImpl",683),M(2028,720,{110:1,94:1,93:1,479:1,155:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1,2122:1},pC),l.ri=function(e,n){switch(e.hk()){case 7:case 8:case 9:case 10:case 16:case 22:case 23:case 24:case 25:case 26:case 32:case 33:case 34:case 36:case 37:case 44:case 45:case 50:case 51:case 53:case 55:case 56:case 57:case 58:case 60:case 61:case 4:return n==null?null:ec(n);case 19:case 28:case 29:case 35:case 38:case 39:case 41:case 46:case 52:case 54:case 5:return Gr(n);case 6:return gsn(u(n,195));case 12:case 47:case 49:case 11:return zge(this,e,n);case 13:return n==null?null:C7n(u(n,247));case 15:case 14:return n==null?null:Mun(Rt(Ht(n)));case 17:return Bhe((Fi(),n));case 18:return Bhe(n);case 21:case 20:return n==null?null:Dun(u(n,161).a);case 27:return psn(u(n,195));case 30:return Qle((Fi(),u(n,15)));case 31:return Qle(u(n,15));case 40:return wsn((Fi(),n));case 42:return Rhe((Fi(),n));case 43:return Rhe(n);case 59:case 48:return bsn((Fi(),n));default:throw nt(new zn(oT+e.xe()+hv))}},l.si=function(e){var n,r,s,o,h;switch(e.G==-1&&(e.G=(r=nh(e),r?Ip(r.vi(),e):-1)),e.G){case 0:return n=new z2t,n;case 1:return s=new det,s;case 2:return o=new CKt,o;case 3:return h=new _Kt,h;default:throw nt(new zn(Flt+e.zb+hv))}},l.ti=function(e,n){var r,s,o,h,d,m,k,T,A,N,j,U,W,tt,ct,Tt;switch(e.hk()){case 5:case 52:case 4:return n;case 6:return Ewn(n);case 8:case 7:return n==null?null:uyn(n);case 9:return n==null?null:$I(oh((s=iu(n,!0),s.length>0&&(qn(0,s.length),s.charCodeAt(0)==43)?(qn(1,s.length+1),s.substr(1)):s),-128,127)<<24>>24);case 10:return n==null?null:$I(oh((o=iu(n,!0),o.length>0&&(qn(0,o.length),o.charCodeAt(0)==43)?(qn(1,o.length+1),o.substr(1)):o),-128,127)<<24>>24);case 11:return Gr(rv(this,(Fi(),mTe),n));case 12:return Gr(rv(this,(Fi(),vTe),n));case 13:return n==null?null:new hwt(iu(n,!0));case 15:case 14:return Ixn(n);case 16:return Gr(rv(this,(Fi(),yTe),n));case 17:return Zue((Fi(),n));case 18:return Zue(n);case 28:case 29:case 35:case 38:case 39:case 41:case 54:case 19:return iu(n,!0);case 21:case 20:return qxn(n);case 22:return Gr(rv(this,(Fi(),xTe),n));case 23:return Gr(rv(this,(Fi(),kTe),n));case 24:return Gr(rv(this,(Fi(),ETe),n));case 25:return Gr(rv(this,(Fi(),TTe),n));case 26:return Gr(rv(this,(Fi(),CTe),n));case 27:return hwn(n);case 30:return tle((Fi(),n));case 31:return tle(n);case 32:return n==null?null:fe(oh((A=iu(n,!0),A.length>0&&(qn(0,A.length),A.charCodeAt(0)==43)?(qn(1,A.length+1),A.substr(1)):A),Va,ki));case 33:return n==null?null:new xb((N=iu(n,!0),N.length>0&&(qn(0,N.length),N.charCodeAt(0)==43)?(qn(1,N.length+1),N.substr(1)):N));case 34:return n==null?null:fe(oh((j=iu(n,!0),j.length>0&&(qn(0,j.length),j.charCodeAt(0)==43)?(qn(1,j.length+1),j.substr(1)):j),Va,ki));case 36:return n==null?null:Ag(dV((U=iu(n,!0),U.length>0&&(qn(0,U.length),U.charCodeAt(0)==43)?(qn(1,U.length+1),U.substr(1)):U)));case 37:return n==null?null:Ag(dV((W=iu(n,!0),W.length>0&&(qn(0,W.length),W.charCodeAt(0)==43)?(qn(1,W.length+1),W.substr(1)):W)));case 40:return cmn((Fi(),n));case 42:return ele((Fi(),n));case 43:return ele(n);case 44:return n==null?null:new xb((tt=iu(n,!0),tt.length>0&&(qn(0,tt.length),tt.charCodeAt(0)==43)?(qn(1,tt.length+1),tt.substr(1)):tt));case 45:return n==null?null:new xb((ct=iu(n,!0),ct.length>0&&(qn(0,ct.length),ct.charCodeAt(0)==43)?(qn(1,ct.length+1),ct.substr(1)):ct));case 46:return iu(n,!1);case 47:return Gr(rv(this,(Fi(),_Te),n));case 59:case 48:return omn((Fi(),n));case 49:return Gr(rv(this,(Fi(),STe),n));case 50:return n==null?null:g7(oh((Tt=iu(n,!0),Tt.length>0&&(qn(0,Tt.length),Tt.charCodeAt(0)==43)?(qn(1,Tt.length+1),Tt.substr(1)):Tt),mU,32767)<<16>>16);case 51:return n==null?null:g7(oh((h=iu(n,!0),h.length>0&&(qn(0,h.length),h.charCodeAt(0)==43)?(qn(1,h.length+1),h.substr(1)):h),mU,32767)<<16>>16);case 53:return Gr(rv(this,(Fi(),ATe),n));case 55:return n==null?null:g7(oh((d=iu(n,!0),d.length>0&&(qn(0,d.length),d.charCodeAt(0)==43)?(qn(1,d.length+1),d.substr(1)):d),mU,32767)<<16>>16);case 56:return n==null?null:g7(oh((m=iu(n,!0),m.length>0&&(qn(0,m.length),m.charCodeAt(0)==43)?(qn(1,m.length+1),m.substr(1)):m),mU,32767)<<16>>16);case 57:return n==null?null:Ag(dV((k=iu(n,!0),k.length>0&&(qn(0,k.length),k.charCodeAt(0)==43)?(qn(1,k.length+1),k.substr(1)):k)));case 58:return n==null?null:Ag(dV((T=iu(n,!0),T.length>0&&(qn(0,T.length),T.charCodeAt(0)==43)?(qn(1,T.length+1),T.substr(1)):T)));case 60:return n==null?null:fe(oh((r=iu(n,!0),r.length>0&&(qn(0,r.length),r.charCodeAt(0)==43)?(qn(1,r.length+1),r.substr(1)):r),Va,ki));case 61:return n==null?null:fe(oh(iu(n,!0),Va,ki));default:throw nt(new zn(oT+e.xe()+hv))}};var MTe,GIt,DTe,KIt;D($s,"XMLTypeFactoryImpl",2028),M(594,184,{110:1,94:1,93:1,155:1,197:1,58:1,241:1,114:1,54:1,99:1,158:1,184:1,119:1,120:1,690:1,2044:1,594:1},Tee),l.N=!1,l.O=!1;var ITe=!1;D($s,"XMLTypePackageImpl",594),M(1961,1,{851:1},uet),l.Kk=function(){return ykt(),zTe},D($s,"XMLTypePackageImpl/1",1961),M(1970,1,fi,u6),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/10",1970),M(1971,1,fi,ij),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/11",1971),M(1972,1,fi,sj),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/12",1972),M(1973,1,fi,het),l.fk=function(e){return Cy(e)},l.gk=function(e){return Vt(zs,le,345,e,7,1)},D($s,"XMLTypePackageImpl/13",1973),M(1974,1,fi,aj),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/14",1974),M(1975,1,fi,fet),l.fk=function(e){return At(e,15)},l.gk=function(e){return Vt($h,l3,15,e,0,1)},D($s,"XMLTypePackageImpl/15",1975),M(1976,1,fi,oj),l.fk=function(e){return At(e,15)},l.gk=function(e){return Vt($h,l3,15,e,0,1)},D($s,"XMLTypePackageImpl/16",1976),M(1977,1,fi,oD),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/17",1977),M(1978,1,fi,bC),l.fk=function(e){return At(e,161)},l.gk=function(e){return Vt(gT,le,161,e,0,1)},D($s,"XMLTypePackageImpl/18",1978),M(1979,1,fi,get),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/19",1979),M(1962,1,fi,pet),l.fk=function(e){return At(e,857)},l.gk=function(e){return Vt(qN,Ln,857,e,0,1)},D($s,"XMLTypePackageImpl/2",1962),M(1980,1,fi,bet),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/20",1980),M(1981,1,fi,wet),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/21",1981),M(1982,1,fi,met),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/22",1982),M(1983,1,fi,cj),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/23",1983),M(1984,1,fi,vet),l.fk=function(e){return At(e,195)},l.gk=function(e){return Vt(cl,le,195,e,0,2)},D($s,"XMLTypePackageImpl/24",1984),M(1985,1,fi,yet),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/25",1985),M(1986,1,fi,xet),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/26",1986),M(1987,1,fi,uj),l.fk=function(e){return At(e,15)},l.gk=function(e){return Vt($h,l3,15,e,0,1)},D($s,"XMLTypePackageImpl/27",1987),M(1988,1,fi,ket),l.fk=function(e){return At(e,15)},l.gk=function(e){return Vt($h,l3,15,e,0,1)},D($s,"XMLTypePackageImpl/28",1988),M(1989,1,fi,Eet),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/29",1989),M(1963,1,fi,wC),l.fk=function(e){return At(e,681)},l.gk=function(e){return Vt(WK,Ln,2119,e,0,1)},D($s,"XMLTypePackageImpl/3",1963),M(1990,1,fi,Tet),l.fk=function(e){return At(e,17)},l.gk=function(e){return Vt(Na,le,17,e,0,1)},D($s,"XMLTypePackageImpl/30",1990),M(1991,1,fi,Cet),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/31",1991),M(1992,1,fi,_et),l.fk=function(e){return At(e,168)},l.gk=function(e){return Vt(dv,le,168,e,0,1)},D($s,"XMLTypePackageImpl/32",1992),M(1993,1,fi,Aet),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/33",1993),M(1994,1,fi,Let),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/34",1994),M(1995,1,fi,Met),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/35",1995),M(1996,1,fi,lj),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/36",1996),M(1997,1,fi,Det),l.fk=function(e){return At(e,15)},l.gk=function(e){return Vt($h,l3,15,e,0,1)},D($s,"XMLTypePackageImpl/37",1997),M(1998,1,fi,hj),l.fk=function(e){return At(e,15)},l.gk=function(e){return Vt($h,l3,15,e,0,1)},D($s,"XMLTypePackageImpl/38",1998),M(1999,1,fi,Iet),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/39",1999),M(1964,1,fi,cD),l.fk=function(e){return At(e,682)},l.gk=function(e){return Vt(HN,Ln,2120,e,0,1)},D($s,"XMLTypePackageImpl/4",1964),M(2e3,1,fi,Oet),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/40",2e3),M(2001,1,fi,fj),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/41",2001),M(2002,1,fi,Pet),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/42",2002),M(2003,1,fi,dj),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/43",2003),M(2004,1,fi,Net),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/44",2004),M(2005,1,fi,gj),l.fk=function(e){return At(e,191)},l.gk=function(e){return Vt(gv,le,191,e,0,1)},D($s,"XMLTypePackageImpl/45",2005),M(2006,1,fi,pj),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/46",2006),M(2007,1,fi,bj),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/47",2007),M(2008,1,fi,uD),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/48",2008),M(2009,1,fi,C4),l.fk=function(e){return At(e,191)},l.gk=function(e){return Vt(gv,le,191,e,0,1)},D($s,"XMLTypePackageImpl/49",2009),M(1965,1,fi,mC),l.fk=function(e){return At(e,683)},l.gk=function(e){return Vt(VIt,Ln,2121,e,0,1)},D($s,"XMLTypePackageImpl/5",1965),M(2010,1,fi,Id),l.fk=function(e){return At(e,168)},l.gk=function(e){return Vt(dv,le,168,e,0,1)},D($s,"XMLTypePackageImpl/50",2010),M(2011,1,fi,wj),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/51",2011),M(2012,1,fi,Q8),l.fk=function(e){return At(e,17)},l.gk=function(e){return Vt(Na,le,17,e,0,1)},D($s,"XMLTypePackageImpl/52",2012),M(1966,1,fi,lD),l.fk=function(e){return pa(e)},l.gk=function(e){return Vt(Ne,le,2,e,6,1)},D($s,"XMLTypePackageImpl/6",1966),M(1967,1,fi,Fet),l.fk=function(e){return At(e,195)},l.gk=function(e){return Vt(cl,le,195,e,0,2)},D($s,"XMLTypePackageImpl/7",1967),M(1968,1,fi,I2),l.fk=function(e){return Ty(e)},l.gk=function(e){return Vt(Es,le,484,e,8,1)},D($s,"XMLTypePackageImpl/8",1968),M(1969,1,fi,mj),l.fk=function(e){return At(e,222)},l.gk=function(e){return Vt(Ok,le,222,e,0,1)},D($s,"XMLTypePackageImpl/9",1969);var xd,tb,xL,YK,wt;M(55,63,Ig,Yr),D($p,"RegEx/ParseException",55),M(836,1,{},hD),l.bm=function(e){return er*16)throw nt(new Yr(Qr((Ur(),eme))));r=r*16+o}while(!0);if(this.a!=125)throw nt(new Yr(Qr((Ur(),nme))));if(r>hT)throw nt(new Yr(Qr((Ur(),rme))));e=r}else{if(o=0,this.c!=0||(o=sw(this.a))<0)throw nt(new Yr(Qr((Ur(),jp))));if(r=o,vi(this),this.c!=0||(o=sw(this.a))<0)throw nt(new Yr(Qr((Ur(),jp))));r=r*16+o,e=r}break;case 117:if(s=0,vi(this),this.c!=0||(s=sw(this.a))<0)throw nt(new Yr(Qr((Ur(),jp))));if(n=s,vi(this),this.c!=0||(s=sw(this.a))<0)throw nt(new Yr(Qr((Ur(),jp))));if(n=n*16+s,vi(this),this.c!=0||(s=sw(this.a))<0)throw nt(new Yr(Qr((Ur(),jp))));if(n=n*16+s,vi(this),this.c!=0||(s=sw(this.a))<0)throw nt(new Yr(Qr((Ur(),jp))));n=n*16+s,e=n;break;case 118:if(vi(this),this.c!=0||(s=sw(this.a))<0)throw nt(new Yr(Qr((Ur(),jp))));if(n=s,vi(this),this.c!=0||(s=sw(this.a))<0)throw nt(new Yr(Qr((Ur(),jp))));if(n=n*16+s,vi(this),this.c!=0||(s=sw(this.a))<0)throw nt(new Yr(Qr((Ur(),jp))));if(n=n*16+s,vi(this),this.c!=0||(s=sw(this.a))<0)throw nt(new Yr(Qr((Ur(),jp))));if(n=n*16+s,vi(this),this.c!=0||(s=sw(this.a))<0)throw nt(new Yr(Qr((Ur(),jp))));if(n=n*16+s,vi(this),this.c!=0||(s=sw(this.a))<0)throw nt(new Yr(Qr((Ur(),jp))));if(n=n*16+s,n>hT)throw nt(new Yr(Qr((Ur(),"parser.descappe.4"))));e=n;break;case 65:case 90:case 122:throw nt(new Yr(Qr((Ur(),ime))))}return e},l.dm=function(e){var n,r;switch(e){case 100:r=(this.e&32)==32?zb("Nd",!0):(xi(),XK);break;case 68:r=(this.e&32)==32?zb("Nd",!1):(xi(),ZIt);break;case 119:r=(this.e&32)==32?zb("IsWord",!0):(xi(),QT);break;case 87:r=(this.e&32)==32?zb("IsWord",!1):(xi(),eOt);break;case 115:r=(this.e&32)==32?zb("IsSpace",!0):(xi(),r8);break;case 83:r=(this.e&32)==32?zb("IsSpace",!1):(xi(),tOt);break;default:throw nt(new oc((n=e,ive+n.toString(16))))}return r},l.em=function(e){var n,r,s,o,h,d,m,k,T,A,N,j;for(this.b=1,vi(this),n=null,this.c==0&&this.a==94?(vi(this),e?A=(xi(),xi(),new eh(5)):(n=(xi(),xi(),new eh(4)),ru(n,0,hT),A=new eh(4))):A=(xi(),xi(),new eh(4)),o=!0;(j=this.c)!=1&&!(j==0&&this.a==93&&!o);){if(o=!1,r=this.a,s=!1,j==10)switch(r){case 100:case 68:case 119:case 87:case 115:case 83:a3(A,this.dm(r)),s=!0;break;case 105:case 73:case 99:case 67:r=this.um(A,r),r<0&&(s=!0);break;case 112:case 80:if(N=m6t(this,r),!N)throw nt(new Yr(Qr((Ur(),Ylt))));a3(A,N),s=!0;break;default:r=this.cm()}else if(j==20){if(d=xE(this.i,58,this.d),d<0)throw nt(new Yr(Qr((Ur(),xTt))));if(m=!0,qa(this.i,this.d)==94&&(++this.d,m=!1),h=Ch(this.i,this.d,d),k=Lse(h,m,(this.e&512)==512),!k)throw nt(new Yr(Qr((Ur(),Xwe))));if(a3(A,k),s=!0,d+1>=this.j||qa(this.i,d+1)!=93)throw nt(new Yr(Qr((Ur(),xTt))));this.d=d+2}if(vi(this),!s)if(this.c!=0||this.a!=45)ru(A,r,r);else{if(vi(this),(j=this.c)==1)throw nt(new Yr(Qr((Ur(),hU))));j==0&&this.a==93?(ru(A,r,r),ru(A,45,45)):(T=this.a,j==10&&(T=this.cm()),vi(this),ru(A,r,T))}(this.e&Uf)==Uf&&this.c==0&&this.a==44&&vi(this)}if(this.c==1)throw nt(new Yr(Qr((Ur(),hU))));return n&&(MS(n,A),A=n),h5(A),AS(A),this.b=0,vi(this),A},l.fm=function(){var e,n,r,s;for(r=this.em(!1);(s=this.c)!=7;)if(e=this.a,s==0&&(e==45||e==38)||s==4){if(vi(this),this.c!=9)throw nt(new Yr(Qr((Ur(),Jwe))));if(n=this.em(!1),s==4)a3(r,n);else if(e==45)MS(r,n);else if(e==38)Bge(r,n);else throw nt(new oc("ASSERT"))}else throw nt(new Yr(Qr((Ur(),Zwe))));return vi(this),r},l.gm=function(){var e,n;return e=this.a-48,n=(xi(),xi(),new nst(12,null,e)),!this.g&&(this.g=new i$),r$(this.g,new E2t(e)),vi(this),n},l.hm=function(){return vi(this),xi(),NTe},l.im=function(){return vi(this),xi(),PTe},l.jm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.km=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.lm=function(){return vi(this),_pn()},l.mm=function(){return vi(this),xi(),BTe},l.nm=function(){return vi(this),xi(),jTe},l.om=function(){var e;if(this.d>=this.j||((e=qa(this.i,this.d++))&65504)!=64)throw nt(new Yr(Qr((Ur(),Kwe))));return vi(this),xi(),xi(),new T0(0,e-64)},l.pm=function(){return vi(this),LEn()},l.qm=function(){return vi(this),xi(),$Te},l.rm=function(){var e;return e=(xi(),xi(),new T0(0,105)),vi(this),e},l.sm=function(){return vi(this),xi(),RTe},l.tm=function(){return vi(this),xi(),FTe},l.um=function(e,n){return this.cm()},l.vm=function(){return vi(this),xi(),QIt},l.wm=function(){var e,n,r,s,o;if(this.d+1>=this.j)throw nt(new Yr(Qr((Ur(),Vwe))));if(s=-1,n=null,e=qa(this.i,this.d),49<=e&&e<=57){if(s=e-48,!this.g&&(this.g=new i$),r$(this.g,new E2t(s)),++this.d,qa(this.i,this.d)!=41)throw nt(new Yr(Qr((Ur(),mw))));++this.d}else switch(e==63&&--this.d,vi(this),n=Ukt(this),n.e){case 20:case 21:case 22:case 23:break;case 8:if(this.c!=7)throw nt(new Yr(Qr((Ur(),mw))));break;default:throw nt(new Yr(Qr((Ur(),Uwe))))}if(vi(this),o=Ym(this),r=null,o.e==2){if(o.Pm()!=2)throw nt(new Yr(Qr((Ur(),Gwe))));r=o.Lm(1),o=o.Lm(0)}if(this.c!=7)throw nt(new Yr(Qr((Ur(),mw))));return vi(this),xi(),xi(),new lae(s,n,o,r)},l.xm=function(){return vi(this),xi(),JIt},l.ym=function(){var e;if(vi(this),e=Nz(24,Ym(this)),this.c!=7)throw nt(new Yr(Qr((Ur(),mw))));return vi(this),e},l.zm=function(){var e;if(vi(this),e=Nz(20,Ym(this)),this.c!=7)throw nt(new Yr(Qr((Ur(),mw))));return vi(this),e},l.Am=function(){var e;if(vi(this),e=Nz(22,Ym(this)),this.c!=7)throw nt(new Yr(Qr((Ur(),mw))));return vi(this),e},l.Bm=function(){var e,n,r,s,o;for(e=0,r=0,n=-1;this.d=this.j)throw nt(new Yr(Qr((Ur(),vTt))));if(n==45){for(++this.d;this.d=this.j)throw nt(new Yr(Qr((Ur(),vTt))))}if(n==58){if(++this.d,vi(this),s=see(Ym(this),e,r),this.c!=7)throw nt(new Yr(Qr((Ur(),mw))));vi(this)}else if(n==41)++this.d,vi(this),s=see(Ym(this),e,r);else throw nt(new Yr(Qr((Ur(),Hwe))));return s},l.Cm=function(){var e;if(vi(this),e=Nz(21,Ym(this)),this.c!=7)throw nt(new Yr(Qr((Ur(),mw))));return vi(this),e},l.Dm=function(){var e;if(vi(this),e=Nz(23,Ym(this)),this.c!=7)throw nt(new Yr(Qr((Ur(),mw))));return vi(this),e},l.Em=function(){var e,n;if(vi(this),e=this.f++,n=Mit(Ym(this),e),this.c!=7)throw nt(new Yr(Qr((Ur(),mw))));return vi(this),n},l.Fm=function(){var e;if(vi(this),e=Mit(Ym(this),0),this.c!=7)throw nt(new Yr(Qr((Ur(),mw))));return vi(this),e},l.Gm=function(e){return vi(this),this.c==5?(vi(this),_z(e,(xi(),xi(),new By(9,e)))):_z(e,(xi(),xi(),new By(3,e)))},l.Hm=function(e){var n;return vi(this),n=(xi(),xi(),new l_(2)),this.c==5?(vi(this),cw(n,EL),cw(n,e)):(cw(n,e),cw(n,EL)),n},l.Im=function(e){return vi(this),this.c==5?(vi(this),xi(),xi(),new By(9,e)):(xi(),xi(),new By(3,e))},l.a=0,l.b=0,l.c=0,l.d=0,l.e=0,l.f=1,l.g=null,l.j=0,D($p,"RegEx/RegexParser",836),M(1947,836,{},SKt),l.bm=function(e){return!1},l.cm=function(){return Z6t(this)},l.dm=function(e){return F7(e)},l.em=function(e){return Ipe(this)},l.fm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.gm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.hm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.im=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.jm=function(){return vi(this),F7(67)},l.km=function(){return vi(this),F7(73)},l.lm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.mm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.nm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.om=function(){return vi(this),F7(99)},l.pm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.qm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.rm=function(){return vi(this),F7(105)},l.sm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.tm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.um=function(e,n){return a3(e,F7(n)),-1},l.vm=function(){return vi(this),xi(),xi(),new T0(0,94)},l.wm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.xm=function(){return vi(this),xi(),xi(),new T0(0,36)},l.ym=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.zm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.Am=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.Bm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.Cm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.Dm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.Em=function(){var e;if(vi(this),e=Mit(Ym(this),0),this.c!=7)throw nt(new Yr(Qr((Ur(),mw))));return vi(this),e},l.Fm=function(){throw nt(new Yr(Qr((Ur(),jh))))},l.Gm=function(e){return vi(this),_z(e,(xi(),xi(),new By(3,e)))},l.Hm=function(e){var n;return vi(this),n=(xi(),xi(),new l_(2)),cw(n,e),cw(n,EL),n},l.Im=function(e){return vi(this),xi(),xi(),new By(3,e)};var dx=null,YT=null;D($p,"RegEx/ParserForXMLSchema",1947),M(122,1,fT,cm),l.Jm=function(e){throw nt(new oc("Not supported."))},l.Km=function(){return-1},l.Lm=function(e){return null},l.Mm=function(){return null},l.Nm=function(e){},l.Om=function(e){},l.Pm=function(){return 0},l.Ib=function(){return this.Qm(0)},l.Qm=function(e){return this.e==11?".":""},l.e=0;var WIt,XT,kL,OTe,YIt,W3=null,XK,e0t=null,XIt,EL,n0t=null,QIt,JIt,ZIt,tOt,eOt,PTe,r8,NTe,FTe,BTe,RTe,QT,jTe,$Te,j_n=D($p,"RegEx/Token",122);M(138,122,{3:1,138:1,122:1},eh),l.Qm=function(e){var n,r,s;if(this.e==4)if(this==XIt)r=".";else if(this==XK)r="\\d";else if(this==QT)r="\\w";else if(this==r8)r="\\s";else{for(s=new hp,s.a+="[",n=0;n0&&(s.a+=","),this.b[n]===this.b[n+1]?Lo(s,qO(this.b[n])):(Lo(s,qO(this.b[n])),s.a+="-",Lo(s,qO(this.b[n+1])));s.a+="]",r=s.a}else if(this==ZIt)r="\\D";else if(this==eOt)r="\\W";else if(this==tOt)r="\\S";else{for(s=new hp,s.a+="[^",n=0;n0&&(s.a+=","),this.b[n]===this.b[n+1]?Lo(s,qO(this.b[n])):(Lo(s,qO(this.b[n])),s.a+="-",Lo(s,qO(this.b[n+1])));s.a+="]",r=s.a}return r},l.a=!1,l.c=!1,D($p,"RegEx/RangeToken",138),M(592,1,{592:1},E2t),l.a=0,D($p,"RegEx/RegexParser/ReferencePosition",592),M(591,1,{3:1,591:1},qWt),l.Fb=function(e){var n;return e==null||!At(e,591)?!1:(n=u(e,591),hn(this.b,n.b)&&this.a==n.a)},l.Hb=function(){return Cp(this.b+"/"+G6t(this.a))},l.Ib=function(){return this.c.Qm(this.a)},l.a=0,D($p,"RegEx/RegularExpression",591),M(228,122,fT,T0),l.Km=function(){return this.a},l.Qm=function(e){var n,r,s;switch(this.e){case 0:switch(this.a){case 124:case 42:case 43:case 63:case 40:case 41:case 46:case 91:case 123:case 92:s="\\"+sit(this.a&js);break;case 12:s="\\f";break;case 10:s="\\n";break;case 13:s="\\r";break;case 9:s="\\t";break;case 27:s="\\e";break;default:this.a>=fo?(r=(n=this.a>>>0,"0"+n.toString(16)),s="\\v"+Ch(r,r.length-6,r.length)):s=""+sit(this.a&js)}break;case 8:this==QIt||this==JIt?s=""+sit(this.a&js):s="\\"+sit(this.a&js);break;default:s=null}return s},l.a=0,D($p,"RegEx/Token/CharToken",228),M(318,122,fT,By),l.Lm=function(e){return this.a},l.Nm=function(e){this.b=e},l.Om=function(e){this.c=e},l.Pm=function(){return 1},l.Qm=function(e){var n;if(this.e==3)if(this.c<0&&this.b<0)n=this.a.Qm(e)+"*";else if(this.c==this.b)n=this.a.Qm(e)+"{"+this.c+"}";else if(this.c>=0&&this.b>=0)n=this.a.Qm(e)+"{"+this.c+","+this.b+"}";else if(this.c>=0&&this.b<0)n=this.a.Qm(e)+"{"+this.c+",}";else throw nt(new oc("Token#toString(): CLOSURE "+this.c+ro+this.b));else if(this.c<0&&this.b<0)n=this.a.Qm(e)+"*?";else if(this.c==this.b)n=this.a.Qm(e)+"{"+this.c+"}?";else if(this.c>=0&&this.b>=0)n=this.a.Qm(e)+"{"+this.c+","+this.b+"}?";else if(this.c>=0&&this.b<0)n=this.a.Qm(e)+"{"+this.c+",}?";else throw nt(new oc("Token#toString(): NONGREEDYCLOSURE "+this.c+ro+this.b));return n},l.b=0,l.c=0,D($p,"RegEx/Token/ClosureToken",318),M(837,122,fT,fyt),l.Lm=function(e){return e==0?this.a:this.b},l.Pm=function(){return 2},l.Qm=function(e){var n;return this.b.e==3&&this.b.Lm(0)==this.a?n=this.a.Qm(e)+"+":this.b.e==9&&this.b.Lm(0)==this.a?n=this.a.Qm(e)+"+?":n=this.a.Qm(e)+(""+this.b.Qm(e)),n},D($p,"RegEx/Token/ConcatToken",837),M(1945,122,fT,lae),l.Lm=function(e){if(e==0)return this.d;if(e==1)return this.b;throw nt(new oc("Internal Error: "+e))},l.Pm=function(){return this.b?2:1},l.Qm=function(e){var n;return this.c>0?n="(?("+this.c+")":this.a.e==8?n="(?("+this.a+")":n="(?"+this.a,this.b?n+=this.d+"|"+this.b+")":n+=this.d+")",n},l.c=0,D($p,"RegEx/Token/ConditionToken",1945),M(1946,122,fT,tre),l.Lm=function(e){return this.b},l.Pm=function(){return 1},l.Qm=function(e){return"(?"+(this.a==0?"":G6t(this.a))+(this.c==0?"":G6t(this.c))+":"+this.b.Qm(e)+")"},l.a=0,l.c=0,D($p,"RegEx/Token/ModifierToken",1946),M(838,122,fT,kyt),l.Lm=function(e){return this.a},l.Pm=function(){return 1},l.Qm=function(e){var n;switch(n=null,this.e){case 6:this.b==0?n="(?:"+this.a.Qm(e)+")":n="("+this.a.Qm(e)+")";break;case 20:n="(?="+this.a.Qm(e)+")";break;case 21:n="(?!"+this.a.Qm(e)+")";break;case 22:n="(?<="+this.a.Qm(e)+")";break;case 23:n="(?"+this.a.Qm(e)+")"}return n},l.b=0,D($p,"RegEx/Token/ParenToken",838),M(530,122,{3:1,122:1,530:1},nst),l.Mm=function(){return this.b},l.Qm=function(e){return this.e==12?"\\"+this.a:xxn(this.b)},l.a=0,D($p,"RegEx/Token/StringToken",530),M(476,122,fT,l_),l.Jm=function(e){cw(this,e)},l.Lm=function(e){return u(Dm(this.a,e),122)},l.Pm=function(){return this.a?this.a.a.c.length:0},l.Qm=function(e){var n,r,s,o,h;if(this.e==1){if(this.a.a.c.length==2)n=u(Dm(this.a,0),122),r=u(Dm(this.a,1),122),r.e==3&&r.Lm(0)==n?o=n.Qm(e)+"+":r.e==9&&r.Lm(0)==n?o=n.Qm(e)+"+?":o=n.Qm(e)+(""+r.Qm(e));else{for(h=new hp,s=0;s=this.c.b:this.a<=this.c.b},l.Sb=function(){return this.b>0},l.Tb=function(){return this.b},l.Vb=function(){return this.b-1},l.Qb=function(){throw nt(new up(hve))},l.a=0,l.b=0,D($Tt,"ExclusiveRange/RangeIterator",258);var Uh=OE(fU,"C"),Or=OE(rA,"I"),Fl=OE(vk,"Z"),b2=OE(iA,"J"),cl=OE(tA,"B"),wa=OE(eA,"D"),Y3=OE(nA,"F"),gx=OE(sA,"S"),$_n=us("org.eclipse.elk.core.labels","ILabelManager"),nOt=us(io,"DiagnosticChain"),rOt=us(jme,"ResourceSet"),iOt=D(io,"InvocationTargetException",null),qTe=(c$(),tdn),HTe=HTe=Uvn;K0n(Hen),H0n("permProps",[[["locale","default"],[fve,"gecko1_8"]],[["locale","default"],[fve,"safari"]]]),HTe(null,"elk",null)}).call(this)}).call(this,typeof X0<"u"?X0:typeof self<"u"?self:typeof window<"u"?window:{})},{}],3:[function(f,g,w){function v(I,B){if(!(I instanceof B))throw new TypeError("Cannot call a class as a function")}function b(I,B){if(!I)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return B&&(typeof B=="object"||typeof B=="function")?B:I}function E(I,B){if(typeof B!="function"&&B!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof B);I.prototype=Object.create(B&&B.prototype,{constructor:{value:I,enumerable:!1,writable:!0,configurable:!0}}),B&&(Object.setPrototypeOf?Object.setPrototypeOf(I,B):I.__proto__=B)}var _=f("./elk-api.js").default,S=function(I){E(B,I);function B(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};v(this,B);var R=Object.assign({},F),q=!1;try{f.resolve("web-worker"),q=!0}catch{}if(F.workerUrl)if(q){var X=f("web-worker");R.workerFactory=function(ut){return new X(ut)}}else console.warn(`Web worker requested but 'web-worker' package not installed. +Consider installing the package or pass your own 'workerFactory' to ELK's constructor. +... Falling back to non-web worker version.`);if(!R.workerFactory){var rt=f("./elk-worker.min.js"),at=rt.Worker;R.workerFactory=function(ut){return new at(ut)}}return b(this,(B.__proto__||Object.getPrototypeOf(B)).call(this,R))}return B}(_);Object.defineProperty(g.exports,"__esModule",{value:!0}),g.exports=S,S.default=S},{"./elk-api.js":1,"./elk-worker.min.js":2,"web-worker":4}],4:[function(f,g,w){g.exports=Worker},{}]},{},[3])(3)})})(cHt);var WZe=cHt.exports;const YZe=JT(WZe),uHt=new YZe;let Qw={};const XZe={};let qx={};const QZe=async function(i,a,f,g,w,v,b){const _=f.select(`[id="${a}"]`).insert("g").attr("class","nodes"),S=Object.keys(i);return await Promise.all(S.map(async function(I){const B=i[I];let F="default";B.classes.length>0&&(F=B.classes.join(" ")),F=F+" flowchart-label";const R=Uw(B.styles);let q=B.text!==void 0?B.text:B.id;const X={width:0,height:0},rt=[{id:B.id+"-west",layoutOptions:{"port.side":"WEST"}},{id:B.id+"-east",layoutOptions:{"port.side":"EAST"}},{id:B.id+"-south",layoutOptions:{"port.side":"SOUTH"}},{id:B.id+"-north",layoutOptions:{"port.side":"NORTH"}}];let at=0,ut="",pt={};switch(B.type){case"round":at=5,ut="rect";break;case"square":ut="rect";break;case"diamond":ut="question",pt={portConstraints:"FIXED_SIDE"};break;case"hexagon":ut="hexagon";break;case"odd":ut="rect_left_inv_arrow";break;case"lean_right":ut="lean_right";break;case"lean_left":ut="lean_left";break;case"trapezoid":ut="trapezoid";break;case"inv_trapezoid":ut="inv_trapezoid";break;case"odd_right":ut="rect_left_inv_arrow";break;case"circle":ut="circle";break;case"ellipse":ut="ellipse";break;case"stadium":ut="stadium";break;case"subroutine":ut="subroutine";break;case"cylinder":ut="cylinder";break;case"group":ut="rect";break;case"doublecircle":ut="doublecircle";break;default:ut="rect"}const yt={labelStyle:R.labelStyle,shape:ut,labelText:q,labelType:B.labelType,rx:at,ry:at,class:F,style:R.style,id:B.id,link:B.link,linkTarget:B.linkTarget,tooltip:w.db.getTooltip(B.id)||"",domId:w.db.lookUpDomId(B.id),haveCallback:B.haveCallback,width:B.type==="group"?500:void 0,dir:B.dir,type:B.type,props:B.props,padding:h0().flowchart.padding};let mt,gt;if(yt.type!=="group")gt=await U$t(_,yt,B.dir),mt=gt.node().getBBox();else{g.createElementNS("http://www.w3.org/2000/svg","text");const{shapeSvg:bt,bbox:Z}=await f0(_,yt,void 0,!0);X.width=Z.width,X.wrappingWidth=h0().flowchart.wrappingWidth,X.height=Z.height,X.labelNode=bt.node(),yt.labelData=X}const ht={id:B.id,ports:B.type==="diamond"?rt:[],layoutOptions:pt,labelText:q,labelData:X,domId:w.db.lookUpDomId(B.id),width:mt==null?void 0:mt.width,height:mt==null?void 0:mt.height,type:B.type,el:gt,parent:v.parentById[B.id]};qx[yt.id]=ht})),b},lHt=(i,a,f)=>{const g={TB:{in:{north:"north"},out:{south:"west",west:"east",east:"south"}},LR:{in:{west:"west"},out:{east:"south",south:"north",north:"east"}},RL:{in:{east:"east"},out:{west:"north",north:"south",south:"west"}},BT:{in:{south:"south"},out:{north:"east",east:"west",west:"north"}}};return g.TD=g.TB,Wt.info("abc88",f,a,i),g[f][a][i]},hHt=(i,a,f)=>{if(Wt.info("getNextPort abc88",{node:i,edgeDirection:a,graphDirection:f}),!Qw[i])switch(f){case"TB":case"TD":Qw[i]={inPosition:"north",outPosition:"south"};break;case"BT":Qw[i]={inPosition:"south",outPosition:"north"};break;case"RL":Qw[i]={inPosition:"east",outPosition:"west"};break;case"LR":Qw[i]={inPosition:"west",outPosition:"east"};break}const g=a==="in"?Qw[i].inPosition:Qw[i].outPosition;return a==="in"?Qw[i].inPosition=lHt(Qw[i].inPosition,a,f):Qw[i].outPosition=lHt(Qw[i].outPosition,a,f),g},JZe=(i,a)=>{let f=i.start,g=i.end;const w=f,v=g,b=qx[f],E=qx[g];return!b||!E?{source:f,target:g}:(b.type==="diamond"&&(f=`${f}-${hHt(f,"out",a)}`),E.type==="diamond"&&(g=`${g}-${hHt(g,"in",a)}`),{source:f,target:g,sourceId:w,targetId:v})},ZZe=function(i,a,f,g){Wt.info("abc78 edges = ",i);const w=g.insert("g").attr("class","edgeLabels");let v={},b=a.db.getDirection(),E,_;if(i.defaultStyle!==void 0){const S=Uw(i.defaultStyle);E=S.style,_=S.labelStyle}return i.forEach(function(S){const I="L-"+S.start+"-"+S.end;v[I]===void 0?(v[I]=0,Wt.info("abc78 new entry",I,v[I])):(v[I]++,Wt.info("abc78 new entry",I,v[I]));let B=I+"-"+v[I];Wt.info("abc78 new link id to be used is",I,B,v[I]);const F="LS-"+S.start,R="LE-"+S.end,q={style:"",labelStyle:""};switch(q.minlen=S.length||1,S.type==="arrow_open"?q.arrowhead="none":q.arrowhead="normal",q.arrowTypeStart="arrow_open",q.arrowTypeEnd="arrow_open",S.type){case"double_arrow_cross":q.arrowTypeStart="arrow_cross";case"arrow_cross":q.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":q.arrowTypeStart="arrow_point";case"arrow_point":q.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":q.arrowTypeStart="arrow_circle";case"arrow_circle":q.arrowTypeEnd="arrow_circle";break}let X="",rt="";switch(S.stroke){case"normal":X="fill:none;",E!==void 0&&(X=E),_!==void 0&&(rt=_),q.thickness="normal",q.pattern="solid";break;case"dotted":q.thickness="normal",q.pattern="dotted",q.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":q.thickness="thick",q.pattern="solid",q.style="stroke-width: 3.5px;fill:none;";break}if(S.style!==void 0){const gt=Uw(S.style);X=gt.style,rt=gt.labelStyle}q.style=q.style+=X,q.labelStyle=q.labelStyle+=rt,S.interpolate!==void 0?q.curve=Vw(S.interpolate,Vg):i.defaultInterpolate!==void 0?q.curve=Vw(i.defaultInterpolate,Vg):q.curve=Vw(XZe.curve,Vg),S.text===void 0?S.style!==void 0&&(q.arrowheadStyle="fill: #333"):(q.arrowheadStyle="fill: #333",q.labelpos="c"),q.labelType=S.labelType,q.label=S.text.replace(ei.lineBreakRegex,` +`),S.style===void 0&&(q.style=q.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),q.labelStyle=q.labelStyle.replace("color:","fill:"),q.id=B,q.classes="flowchart-link "+F+" "+R;const at=Q$t(w,q),{source:ut,target:pt,sourceId:yt,targetId:mt}=JZe(S,b);Wt.debug("abc78 source and target",ut,pt),f.edges.push({id:"e"+S.start+S.end,sources:[ut],targets:[pt],sourceId:yt,targetId:mt,labelEl:at,labels:[{width:q.width,height:q.height,orgWidth:q.width,orgHeight:q.height,text:q.label,layoutOptions:{"edgeLabels.inline":"true","edgeLabels.placement":"CENTER"}}],edgeData:q})}),f},ttn=function(i,a,f,g,w){let v="";g&&(v=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,v=v.replace(/\(/g,"\\("),v=v.replace(/\)/g,"\\)")),Y$t(i,a,v,w,f)},etn=function(i,a){return Wt.info("Extracting classes"),a.db.getClasses()},ntn=function(i){const a={parentById:{},childrenById:{}},f=i.getSubGraphs();return Wt.info("Subgraphs - ",f),f.forEach(function(g){g.nodes.forEach(function(w){a.parentById[w]=g.id,a.childrenById[g.id]===void 0&&(a.childrenById[g.id]=[]),a.childrenById[g.id].push(w)})}),f.forEach(function(g){g.id,a.parentById[g.id]!==void 0&&a.parentById[g.id]}),a},rtn=function(i,a,f){const g=KZe(i,a,f);if(g===void 0||g==="root")return{x:0,y:0};const w=qx[g].offset;return{x:w.posX,y:w.posY}},itn=function(i,a,f,g,w,v){const b=rtn(a.sourceId,a.targetId,w),E=a.sections[0].startPoint,_=a.sections[0].endPoint,I=(a.sections[0].bendPoints?a.sections[0].bendPoints:[]).map(pt=>[pt.x+b.x,pt.y+b.y]),B=[[E.x+b.x,E.y+b.y],...I,[_.x+b.x,_.y+b.y]],{x:F,y:R}=W$t(a.edgeData),q=Cx().x(F).y(R).curve(Vg),X=i.insert("path").attr("d",q(B)).attr("class","path "+f.classes).attr("fill","none"),rt=i.insert("g").attr("class","edgeLabel"),at=xr(rt.node().appendChild(a.labelEl)),ut=at.node().firstChild.getBoundingClientRect();at.attr("width",ut.width),at.attr("height",ut.height),rt.attr("transform",`translate(${a.labels[0].x+b.x}, ${a.labels[0].y+b.y})`),ttn(X,f,g.type,g.arrowMarkerAbsolute,v)},fHt=(i,a)=>{i.forEach(f=>{f.children||(f.children=[]);const g=a.childrenById[f.id];g&&g.forEach(w=>{f.children.push(qx[w])}),fHt(f.children,a)})},stn=async function(i,a,f,g){var ht;g.db.clear(),qx={},Qw={},g.db.setGen("gen-2"),g.parser.parse(i);const w=xr("body").append("div").attr("style","height:400px").attr("id","cy");let v={id:"root",layoutOptions:{"elk.hierarchyHandling":"INCLUDE_CHILDREN","org.eclipse.elk.padding":"[top=100, left=100, bottom=110, right=110]","elk.layered.spacing.edgeNodeBetweenLayers":"30","elk.direction":"DOWN"},children:[],edges:[]};switch(Wt.info("Drawing flowchart using v3 renderer",uHt),g.db.getDirection()){case"BT":v.layoutOptions["elk.direction"]="UP";break;case"TB":v.layoutOptions["elk.direction"]="DOWN";break;case"LR":v.layoutOptions["elk.direction"]="RIGHT";break;case"RL":v.layoutOptions["elk.direction"]="LEFT";break}const{securityLevel:E,flowchart:_}=h0();let S;E==="sandbox"&&(S=xr("#i"+a));const I=xr(E==="sandbox"?S.nodes()[0].contentDocument.body:"body"),B=E==="sandbox"?S.nodes()[0].contentDocument:document,F=I.select(`[id="${a}"]`);r$t(F,["point","circle","cross"],g.type,a);const q=g.db.getVertices();let X;const rt=g.db.getSubGraphs();Wt.info("Subgraphs - ",rt);for(let bt=rt.length-1;bt>=0;bt--)X=rt[bt],g.db.addVertex(X.id,{text:X.title,type:X.labelType},"group",void 0,X.classes,X.dir);const at=F.insert("g").attr("class","subgraphs"),ut=ntn(g.db);v=await QZe(q,a,I,B,g,ut,v);const pt=F.insert("g").attr("class","edges edgePath"),yt=g.db.getEdges();v=ZZe(yt,g,v,F),Object.keys(qx).forEach(bt=>{const Z=qx[bt];Z.parent||v.children.push(Z),ut.childrenById[bt]!==void 0&&(Z.labels=[{text:Z.labelText,layoutOptions:{"nodeLabels.placement":"[H_CENTER, V_TOP, INSIDE]"},width:Z.labelData.width,height:Z.labelData.height}],delete Z.x,delete Z.y,delete Z.width,delete Z.height)}),fHt(v.children,ut),Wt.info("after layout",JSON.stringify(v,null,2));const gt=await uHt.layout(v);dHt(0,0,gt.children,F,at,g,0),Wt.info("after layout",gt),(ht=gt.edges)==null||ht.map(bt=>{itn(pt,bt,bt.edgeData,g,ut,a)}),g8({},F,_.diagramPadding,_.useMaxWidth),w.remove()},dHt=(i,a,f,g,w,v,b)=>{f.forEach(function(E){if(E)if(qx[E.id].offset={posX:E.x+i,posY:E.y+a,x:i,y:a,depth:b,width:E.width,height:E.height},E.type==="group"){const _=w.insert("g").attr("class","subgraph");_.insert("rect").attr("class","subgraph subgraph-lvl-"+b%5+" node").attr("x",E.x+i).attr("y",E.y+a).attr("width",E.width).attr("height",E.height);const S=_.insert("g").attr("class","label"),I=h0().flowchart.htmlLabels?E.labelData.width/2:0;S.attr("transform",`translate(${E.labels[0].x+i+E.x+I}, ${E.labels[0].y+a+E.y+3})`),S.node().appendChild(E.labelData.labelNode),Wt.info("Id (UGH)= ",E.type,E.labels)}else Wt.info("Id (UGH)= ",E.id),E.el.attr("transform",`translate(${E.x+i+E.width/2}, ${E.y+a+E.height/2})`)}),f.forEach(function(E){E&&E.type==="group"&&dHt(i+E.x,a+E.y,E.children,g,w,v,b+1)})},atn={getClasses:etn,draw:stn},otn=i=>{let a="";for(let f=0;f<5;f++)a+=` + .subgraph-lvl-${f} { + fill: ${i[`surface${f}`]}; + stroke: ${i[`surfacePeer${f}`]}; + } + `;return a},ctn=Object.freeze(Object.defineProperty({__proto__:null,diagram:{db:YRe,renderer:atn,parser:Jgt,styles:i=>`.label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + .cluster-label text { + fill: ${i.titleColor}; + } + .cluster-label span { + color: ${i.titleColor}; + } + + .label text,span { + fill: ${i.nodeTextColor||i.textColor}; + color: ${i.nodeTextColor||i.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.85; + background-color: ${i.edgeLabelBackground}; + fill: ${i.edgeLabelBackground}; + } + text-align: center; + } + + .cluster rect { + fill: ${i.clusterBkg}; + stroke: ${i.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${i.titleColor}; + } + + .cluster span { + color: ${i.titleColor}; + } + /* .cluster div { + color: ${i.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${i.fontFamily}; + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } + .subgraph { + stroke-width:2; + rx:3; + } + // .subgraph-lvl-1 { + // fill:#ccc; + // // stroke:black; + // } + + .flowchart-label text { + text-anchor: middle; + } + + ${otn(i)} +`}},Symbol.toStringTag,{value:"Module"}));var Zbt=function(){var i=function(F,R,q,X){for(q=q||{},X=F.length;X--;q[F[X]]=R);return q},a=[6,8,10,11,12,14,16,17,20,21],f=[1,9],g=[1,10],w=[1,11],v=[1,12],b=[1,13],E=[1,16],_=[1,17],S={trace:function(){},yy:{},symbols_:{error:2,start:3,timeline: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,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",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",20:"period",21:"event"},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,1],[9,1],[18,1],[19,1]],performAction:function(R,q,X,rt,at,ut,pt){var yt=ut.length-1;switch(at){case 1:return ut[yt-1];case 2:this.$=[];break;case 3:ut[yt-1].push(ut[yt]),this.$=ut[yt-1];break;case 4:case 5:this.$=ut[yt];break;case 6:case 7:this.$=[];break;case 8:rt.getCommonDb().setDiagramTitle(ut[yt].substr(6)),this.$=ut[yt].substr(6);break;case 9:this.$=ut[yt].trim(),rt.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=ut[yt].trim(),rt.getCommonDb().setAccDescription(this.$);break;case 12:rt.addSection(ut[yt].substr(8)),this.$=ut[yt].substr(8);break;case 15:rt.addTask(ut[yt],0,""),this.$=ut[yt];break;case 16:rt.addEvent(ut[yt].substr(2)),this.$=ut[yt];break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:f,12:g,14:w,16:v,17:b,18:14,19:15,20:E,21:_},i(a,[2,7],{1:[2,1]}),i(a,[2,3]),{9:18,11:f,12:g,14:w,16:v,17:b,18:14,19:15,20:E,21:_},i(a,[2,5]),i(a,[2,6]),i(a,[2,8]),{13:[1,19]},{15:[1,20]},i(a,[2,11]),i(a,[2,12]),i(a,[2,13]),i(a,[2,14]),i(a,[2,15]),i(a,[2,16]),i(a,[2,4]),i(a,[2,9]),i(a,[2,10])],defaultActions:{},parseError:function(R,q){if(q.recoverable)this.trace(R);else{var X=new Error(R);throw X.hash=q,X}},parse:function(R){var q=this,X=[0],rt=[],at=[null],ut=[],pt=this.table,yt="",mt=0,gt=0,ht=2,bt=1,Z=ut.slice.call(arguments,1),ft=Object.create(this.lexer),Y={yy:{}};for(var Et in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Et)&&(Y.yy[Et]=this.yy[Et]);ft.setInput(R,Y.yy),Y.yy.lexer=ft,Y.yy.parser=this,typeof ft.yylloc>"u"&&(ft.yylloc={});var V=ft.yylloc;ut.push(V);var Nt=ft.options&&ft.options.ranges;typeof Y.yy.parseError=="function"?this.parseError=Y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Dt(){var Ee;return Ee=rt.pop()||ft.lex()||bt,typeof Ee!="number"&&(Ee instanceof Array&&(rt=Ee,Ee=rt.pop()),Ee=q.symbols_[Ee]||Ee),Ee}for(var jt,Ct,Ft,_t,xt={},Gt,Be,Ot,vn;;){if(Ct=X[X.length-1],this.defaultActions[Ct]?Ft=this.defaultActions[Ct]:((jt===null||typeof jt>"u")&&(jt=Dt()),Ft=pt[Ct]&&pt[Ct][jt]),typeof Ft>"u"||!Ft.length||!Ft[0]){var Pe="";vn=[];for(Gt in pt[Ct])this.terminals_[Gt]&&Gt>ht&&vn.push("'"+this.terminals_[Gt]+"'");ft.showPosition?Pe="Parse error on line "+(mt+1)+`: +`+ft.showPosition()+` +Expecting `+vn.join(", ")+", got '"+(this.terminals_[jt]||jt)+"'":Pe="Parse error on line "+(mt+1)+": Unexpected "+(jt==bt?"end of input":"'"+(this.terminals_[jt]||jt)+"'"),this.parseError(Pe,{text:ft.match,token:this.terminals_[jt]||jt,line:ft.yylineno,loc:V,expected:vn})}if(Ft[0]instanceof Array&&Ft.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ct+", token: "+jt);switch(Ft[0]){case 1:X.push(jt),at.push(ft.yytext),ut.push(ft.yylloc),X.push(Ft[1]),jt=null,gt=ft.yyleng,yt=ft.yytext,mt=ft.yylineno,V=ft.yylloc;break;case 2:if(Be=this.productions_[Ft[1]][1],xt.$=at[at.length-Be],xt._$={first_line:ut[ut.length-(Be||1)].first_line,last_line:ut[ut.length-1].last_line,first_column:ut[ut.length-(Be||1)].first_column,last_column:ut[ut.length-1].last_column},Nt&&(xt._$.range=[ut[ut.length-(Be||1)].range[0],ut[ut.length-1].range[1]]),_t=this.performAction.apply(xt,[yt,gt,mt,Y.yy,Ft[1],at,ut].concat(Z)),typeof _t<"u")return _t;Be&&(X=X.slice(0,-1*Be*2),at=at.slice(0,-1*Be),ut=ut.slice(0,-1*Be)),X.push(this.productions_[Ft[1]][0]),at.push(xt.$),ut.push(xt._$),Ot=pt[X[X.length-2]][X[X.length-1]],X.push(Ot);break;case 3:return!0}}return!0}},I=function(){var F={EOF:1,parseError:function(q,X){if(this.yy.parser)this.yy.parser.parseError(q,X);else throw new Error(q)},setInput:function(R,q){return this.yy=q||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},input:function(){var R=this._input[0];this.yytext+=R,this.yyleng++,this.offset++,this.match+=R,this.matched+=R;var q=R.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),R},unput:function(R){var q=R.length,X=R.split(/(?:\r\n?|\n)/g);this._input=R+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-q),this.offset-=q;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),X.length-1&&(this.yylineno-=X.length-1);var at=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:X?(X.length===rt.length?this.yylloc.first_column:0)+rt[rt.length-X.length].length-X[0].length:this.yylloc.first_column-q},this.options.ranges&&(this.yylloc.range=[at[0],at[0]+this.yyleng-q]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(R){this.unput(this.match.slice(R))},pastInput:function(){var R=this.matched.substr(0,this.matched.length-this.match.length);return(R.length>20?"...":"")+R.substr(-20).replace(/\n/g,"")},upcomingInput: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,"")},showPosition:function(){var R=this.pastInput(),q=new Array(R.length+1).join("-");return R+this.upcomingInput()+` +`+q+"^"},test_match:function(R,q){var X,rt,at;if(this.options.backtrack_lexer&&(at={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&&(at.yylloc.range=this.yylloc.range.slice(0))),rt=R[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+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],X=this.performAction.call(this,this.yy,this,q,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),X)return X;if(this._backtrack){for(var ut in at)this[ut]=at[ut];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var R,q,X,rt;this._more||(this.yytext="",this.match="");for(var at=this._currentRules(),ut=0;utq[0].length)){if(q=X,rt=ut,this.options.backtrack_lexer){if(R=this.test_match(X,at[ut]),R!==!1)return R;if(this._backtrack){q=!1;continue}else return!1}else if(!this.options.flex)break}return q?(R=this.test_match(q,at[rt]),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})},lex:function(){var q=this.next();return q||this.lex()},begin:function(q){this.conditionStack.push(q)},popState:function(){var q=this.conditionStack.length-1;return q>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(q){return q=this.conditionStack.length-1-Math.abs(q||0),q>=0?this.conditionStack[q]:"INITIAL"},pushState:function(q){this.begin(q)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(q,X,rt,at){switch(rt){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;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/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;]+)/i,/^(?:[^#:\n;]+)/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],inclusive:!0}}};return F}();S.lexer=I;function B(){this.yy={}}return B.prototype=S,S.Parser=B,new B}();Zbt.parser=Zbt;const utn=Zbt;let _M="",gHt=0;const t2t=[],SX=[],SM=[],pHt=()=>WFt,bHt=function(){t2t.length=0,SX.length=0,_M="",SM.length=0,Wg()},wHt=function(i){_M=i,t2t.push(i)},mHt=function(){return t2t},vHt=function(){let i=EHt();const a=100;let f=0;for(;!i&&ff.id===gHt-1).events.push(i)},kHt=function(i){const a={section:_M,type:_M,description:i,task:i,classes:[]};SX.push(a)},EHt=function(){const i=function(f){return SM[f].processed};let a=!0;for(const[f,g]of SM.entries())i(f),a=a&&g.processed;return a},ltn=Object.freeze(Object.defineProperty({__proto__:null,addEvent:xHt,addSection:wHt,addTask:yHt,addTaskOrg:kHt,clear:bHt,default:{clear:bHt,getCommonDb:pHt,addSection:wHt,getSections:mHt,getTasks:vHt,addTask:yHt,addTaskOrg:kHt,addEvent:xHt},getCommonDb:pHt,getSections:mHt,getTasks:vHt},Symbol.toStringTag,{value:"Module"})),htn=12,AX=function(i,a){const f=i.append("rect");return f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),f.attr("rx",a.rx),f.attr("ry",a.ry),a.class!==void 0&&f.attr("class",a.class),f},ftn=function(i,a){const g=i.append("circle").attr("cx",a.cx).attr("cy",a.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),w=i.append("g");w.append("circle").attr("cx",a.cx-15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),w.append("circle").attr("cx",a.cx+15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function v(_){const S=jL().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);_.append("path").attr("class","mouth").attr("d",S).attr("transform","translate("+a.cx+","+(a.cy+2)+")")}function b(_){const S=jL().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);_.append("path").attr("class","mouth").attr("d",S).attr("transform","translate("+a.cx+","+(a.cy+7)+")")}function E(_){_.append("line").attr("class","mouth").attr("stroke",2).attr("x1",a.cx-5).attr("y1",a.cy+7).attr("x2",a.cx+5).attr("y2",a.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.score>3?v(w):a.score<3?b(w):E(w),g},dtn=function(i,a){const f=i.append("circle");return f.attr("cx",a.cx),f.attr("cy",a.cy),f.attr("class","actor-"+a.pos),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("r",a.r),f.class!==void 0&&f.attr("class",f.class),a.title!==void 0&&f.append("title").text(a.title),f},THt=function(i,a){const f=a.text.replace(//gi," "),g=i.append("text");g.attr("x",a.x),g.attr("y",a.y),g.attr("class","legend"),g.style("text-anchor",a.anchor),a.class!==void 0&&g.attr("class",a.class);const w=g.append("tspan");return w.attr("x",a.x+a.textMargin*2),w.text(f),g},gtn=function(i,a){function f(w,v,b,E,_){return w+","+v+" "+(w+b)+","+v+" "+(w+b)+","+(v+E-_)+" "+(w+b-_*1.2)+","+(v+E)+" "+w+","+(v+E)}const g=i.append("polygon");g.attr("points",f(a.x,a.y,50,20,7)),g.attr("class","labelBox"),a.y=a.y+a.labelMargin,a.x=a.x+.5*a.labelMargin,THt(i,a)},ptn=function(i,a,f){const g=i.append("g"),w=e2t();w.x=a.x,w.y=a.y,w.fill=a.fill,w.width=f.width,w.height=f.height,w.class="journey-section section-type-"+a.num,w.rx=3,w.ry=3,AX(g,w),_Ht(f)(a.text,g,w.x,w.y,w.width,w.height,{class:"journey-section section-type-"+a.num},f,a.colour)};let CHt=-1;const btn=function(i,a,f){const g=a.x+f.width/2,w=i.append("g");CHt++;const v=300+5*30;w.append("line").attr("id","task"+CHt).attr("x1",g).attr("y1",a.y).attr("x2",g).attr("y2",v).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),ftn(w,{cx:g,cy:300+(5-a.score)*30,score:a.score});const b=e2t();b.x=a.x,b.y=a.y,b.fill=a.fill,b.width=f.width,b.height=f.height,b.class="task task-type-"+a.num,b.rx=3,b.ry=3,AX(w,b),a.x+14,_Ht(f)(a.task,w,b.x,b.y,b.width,b.height,{class:"task"},f,a.colour)},wtn=function(i,a){AX(i,{x:a.startx,y:a.starty,width:a.stopx-a.startx,height:a.stopy-a.starty,fill:a.fill,class:"rect"}).lower()},mtn=function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},e2t=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},_Ht=function(){function i(w,v,b,E,_,S,I,B){const F=v.append("text").attr("x",b+_/2).attr("y",E+S/2+5).style("font-color",B).style("text-anchor","middle").text(w);g(F,I)}function a(w,v,b,E,_,S,I,B,F){const{taskFontSize:R,taskFontFamily:q}=B,X=w.split(//gi);for(let rt=0;rt)/).reverse(),w,v=[],b=1.1,E=f.attr("y"),_=parseFloat(f.attr("dy")),S=f.text(null).append("tspan").attr("x",0).attr("y",E).attr("dy",_+"em");for(let I=0;Ia||w==="
")&&(v.pop(),S.text(v.join(" ").trim()),w==="
"?v=[""]:v=[w],S=f.append("tspan").attr("x",0).attr("y",E).attr("dy",b+"em").text(w))})}const ytn=function(i,a,f,g){const w=f%htn-1,v=i.append("g");a.section=w,v.attr("class",(a.class?a.class+" ":"")+"timeline-node "+("section-"+w));const b=v.append("g"),E=v.append("g"),S=E.append("text").text(a.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(SHt,a.width).node().getBBox(),I=g.fontSize&&g.fontSize.replace?g.fontSize.replace("px",""):g.fontSize;return a.height=S.height+I*1.1*.5+a.padding,a.height=Math.max(a.height,a.maxHeight),a.width=a.width+2*a.padding,E.attr("transform","translate("+a.width/2+", "+a.padding/2+")"),ktn(b,a,w),a},xtn=function(i,a,f){const g=i.append("g"),v=g.append("text").text(a.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(SHt,a.width).node().getBBox(),b=f.fontSize&&f.fontSize.replace?f.fontSize.replace("px",""):f.fontSize;return g.remove(),v.height+b*1.1*.5+a.padding},ktn=function(i,a,f){i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+a.type).attr("d",`M0 ${a.height-5} v${-a.height+2*5} q0,-5 5,-5 h${a.width-2*5} q5,0 5,5 v${a.height-5} H0 Z`),i.append("line").attr("class","node-line-"+f).attr("x1",0).attr("y1",a.height).attr("x2",a.width).attr("y2",a.height)},R9={drawRect:AX,drawCircle:dtn,drawSection:ptn,drawText:THt,drawLabel:gtn,drawTask:btn,drawBackgroundRect:wtn,getTextObj:mtn,getNoteRect:e2t,initGraphics:vtn,drawNode:ytn,getVirtualNodeHeight:xtn},Etn=function(i,a,f,g){var Z,ft;const w=Re(),v=w.leftMargin??50;Wt.debug("timeline",g.db);const b=w.securityLevel;let E;b==="sandbox"&&(E=xr("#i"+a));const S=xr(b==="sandbox"?E.nodes()[0].contentDocument.body:"body").select("#"+a);S.append("g");const I=g.db.getTasks(),B=g.db.getCommonDb().getDiagramTitle();Wt.debug("task",I),R9.initGraphics(S);const F=g.db.getSections();Wt.debug("sections",F);let R=0,q=0,X=0,rt=0,at=50+v,ut=50;rt=50;let pt=0,yt=!0;F.forEach(function(Y){const Et={number:pt,descr:Y,section:pt,width:150,padding:20,maxHeight:R},V=R9.getVirtualNodeHeight(S,Et,w);Wt.debug("sectionHeight before draw",V),R=Math.max(R,V+20)});let mt=0,gt=0;Wt.debug("tasks.length",I.length);for(const[Y,Et]of I.entries()){const V={number:Y,descr:Et,section:Et.section,width:150,padding:20,maxHeight:q},Nt=R9.getVirtualNodeHeight(S,V,w);Wt.debug("taskHeight before draw",Nt),q=Math.max(q,Nt+20),mt=Math.max(mt,Et.events.length);let Dt=0;for(let jt=0;jt0?F.forEach(Y=>{const Et=I.filter(jt=>jt.section===Y),V={number:pt,descr:Y,section:pt,width:200*Math.max(Et.length,1)-50,padding:20,maxHeight:R};Wt.debug("sectionNode",V);const Nt=S.append("g"),Dt=R9.drawNode(Nt,V,pt,w);Wt.debug("sectionNode output",Dt),Nt.attr("transform",`translate(${at}, ${rt})`),ut+=R+50,Et.length>0&&AHt(S,Et,pt,at,ut,q,w,mt,gt,R,!1),at+=200*Math.max(Et.length,1),ut=rt,pt++}):(yt=!1,AHt(S,I,pt,at,ut,q,w,mt,gt,R,!0));const ht=S.node().getBBox();Wt.debug("bounds",ht),B&&S.append("text").text(B).attr("x",ht.width/2-v).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),X=yt?R+q+150:q+100,S.append("g").attr("class","lineWrapper").append("line").attr("x1",v).attr("y1",X).attr("x2",ht.width+3*v).attr("y2",X).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),g8(void 0,S,((Z=w.timeline)==null?void 0:Z.padding)??50,((ft=w.timeline)==null?void 0:ft.useMaxWidth)??!1)},AHt=function(i,a,f,g,w,v,b,E,_,S,I){var B;for(const F of a){const R={descr:F.task,section:f,number:f,width:150,padding:20,maxHeight:v};Wt.debug("taskNode",R);const q=i.append("g").attr("class","taskWrapper"),rt=R9.drawNode(q,R,f,b).height;if(Wt.debug("taskHeight after draw",rt),q.attr("transform",`translate(${g}, ${w})`),v=Math.max(v,rt),F.events){const at=i.append("g").attr("class","lineWrapper");let ut=v;w+=100,ut=ut+Ttn(i,F.events,f,g,w,b),w-=100,at.append("line").attr("x1",g+190/2).attr("y1",w+v).attr("x2",g+190/2).attr("y2",w+v+(I?v:S)+_+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}g=g+200,I&&!((B=b.timeline)!=null&&B.disableMulticolor)&&f++}w=w-10},Ttn=function(i,a,f,g,w,v){let b=0;const E=w;w=w+100;for(const _ of a){const S={descr:_,section:f,number:f,width:150,padding:20,maxHeight:50};Wt.debug("eventNode",S);const I=i.append("g").attr("class","eventWrapper"),F=R9.drawNode(I,S,f,v).height;b=b+F,I.attr("transform",`translate(${g}, ${w})`),w=w+10+F}return w=E,b},Ctn={setConf:()=>{},draw:Etn},_tn=i=>{let a="";for(let f=0;f` + .edge { + stroke-width: 3; + } + ${_tn(i)} + .section-root rect, .section-root path, .section-root circle { + fill: ${i.git0}; + } + .section-root text { + fill: ${i.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .eventWrapper { + filter: brightness(120%); + } +`}},Symbol.toStringTag,{value:"Module"}));var n2t=function(){var i=function(yt,mt,gt,ht){for(gt=gt||{},ht=yt.length;ht--;gt[yt[ht]]=mt);return gt},a=[1,4],f=[1,13],g=[1,12],w=[1,15],v=[1,16],b=[1,20],E=[1,19],_=[6,7,8],S=[1,26],I=[1,24],B=[1,25],F=[6,7,11],R=[1,6,13,15,16,19,22],q=[1,33],X=[1,34],rt=[1,6,7,11,13,15,16,19,22],at={trace:function(){},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:function(mt,gt,ht,bt,Z,ft,Y){var Et=ft.length-1;switch(Z){case 6:case 7:return bt;case 8:bt.getLogger().trace("Stop NL ");break;case 9:bt.getLogger().trace("Stop EOF ");break;case 11:bt.getLogger().trace("Stop NL2 ");break;case 12:bt.getLogger().trace("Stop EOF2 ");break;case 15:bt.getLogger().info("Node: ",ft[Et].id),bt.addNode(ft[Et-1].length,ft[Et].id,ft[Et].descr,ft[Et].type);break;case 16:bt.getLogger().trace("Icon: ",ft[Et]),bt.decorateNode({icon:ft[Et]});break;case 17:case 21:bt.decorateNode({class:ft[Et]});break;case 18:bt.getLogger().trace("SPACELIST");break;case 19:bt.getLogger().trace("Node: ",ft[Et].id),bt.addNode(0,ft[Et].id,ft[Et].descr,ft[Et].type);break;case 20:bt.decorateNode({icon:ft[Et]});break;case 25:bt.getLogger().trace("node found ..",ft[Et-2]),this.$={id:ft[Et-1],descr:ft[Et-1],type:bt.getType(ft[Et-2],ft[Et])};break;case 26:this.$={id:ft[Et],descr:ft[Et],type:bt.nodeType.DEFAULT};break;case 27:bt.getLogger().trace("node found ..",ft[Et-3]),this.$={id:ft[Et-3],descr:ft[Et-1],type:bt.getType(ft[Et-2],ft[Et])};break}},table:[{3:1,4:2,5:3,6:[1,5],8:a},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:a},{6:f,7:[1,10],9:9,12:11,13:g,14:14,15:w,16:v,17:17,18:18,19:b,22:E},i(_,[2,3]),{1:[2,2]},i(_,[2,4]),i(_,[2,5]),{1:[2,6],6:f,12:21,13:g,14:14,15:w,16:v,17:17,18:18,19:b,22:E},{6:f,9:22,12:11,13:g,14:14,15:w,16:v,17:17,18:18,19:b,22:E},{6:S,7:I,10:23,11:B},i(F,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:b,22:E}),i(F,[2,18]),i(F,[2,19]),i(F,[2,20]),i(F,[2,21]),i(F,[2,23]),i(F,[2,24]),i(F,[2,26],{19:[1,30]}),{20:[1,31]},{6:S,7:I,10:32,11:B},{1:[2,7],6:f,12:21,13:g,14:14,15:w,16:v,17:17,18:18,19:b,22:E},i(R,[2,14],{7:q,11:X}),i(rt,[2,8]),i(rt,[2,9]),i(rt,[2,10]),i(F,[2,15]),i(F,[2,16]),i(F,[2,17]),{20:[1,35]},{21:[1,36]},i(R,[2,13],{7:q,11:X}),i(rt,[2,11]),i(rt,[2,12]),{21:[1,37]},i(F,[2,25]),i(F,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:function(mt,gt){if(gt.recoverable)this.trace(mt);else{var ht=new Error(mt);throw ht.hash=gt,ht}},parse:function(mt){var gt=this,ht=[0],bt=[],Z=[null],ft=[],Y=this.table,Et="",V=0,Nt=0,Dt=2,jt=1,Ct=ft.slice.call(arguments,1),Ft=Object.create(this.lexer),_t={yy:{}};for(var xt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,xt)&&(_t.yy[xt]=this.yy[xt]);Ft.setInput(mt,_t.yy),_t.yy.lexer=Ft,_t.yy.parser=this,typeof Ft.yylloc>"u"&&(Ft.yylloc={});var Gt=Ft.yylloc;ft.push(Gt);var Be=Ft.options&&Ft.options.ranges;typeof _t.yy.parseError=="function"?this.parseError=_t.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var Dn;return Dn=bt.pop()||Ft.lex()||jt,typeof Dn!="number"&&(Dn instanceof Array&&(bt=Dn,Dn=bt.pop()),Dn=gt.symbols_[Dn]||Dn),Dn}for(var vn,Pe,Ee,nn,sn={},me,Fe,Qt,Ae;;){if(Pe=ht[ht.length-1],this.defaultActions[Pe]?Ee=this.defaultActions[Pe]:((vn===null||typeof vn>"u")&&(vn=Ot()),Ee=Y[Pe]&&Y[Pe][vn]),typeof Ee>"u"||!Ee.length||!Ee[0]){var Se="";Ae=[];for(me in Y[Pe])this.terminals_[me]&&me>Dt&&Ae.push("'"+this.terminals_[me]+"'");Ft.showPosition?Se="Parse error on line "+(V+1)+`: +`+Ft.showPosition()+` +Expecting `+Ae.join(", ")+", got '"+(this.terminals_[vn]||vn)+"'":Se="Parse error on line "+(V+1)+": Unexpected "+(vn==jt?"end of input":"'"+(this.terminals_[vn]||vn)+"'"),this.parseError(Se,{text:Ft.match,token:this.terminals_[vn]||vn,line:Ft.yylineno,loc:Gt,expected:Ae})}if(Ee[0]instanceof Array&&Ee.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Pe+", token: "+vn);switch(Ee[0]){case 1:ht.push(vn),Z.push(Ft.yytext),ft.push(Ft.yylloc),ht.push(Ee[1]),vn=null,Nt=Ft.yyleng,Et=Ft.yytext,V=Ft.yylineno,Gt=Ft.yylloc;break;case 2:if(Fe=this.productions_[Ee[1]][1],sn.$=Z[Z.length-Fe],sn._$={first_line:ft[ft.length-(Fe||1)].first_line,last_line:ft[ft.length-1].last_line,first_column:ft[ft.length-(Fe||1)].first_column,last_column:ft[ft.length-1].last_column},Be&&(sn._$.range=[ft[ft.length-(Fe||1)].range[0],ft[ft.length-1].range[1]]),nn=this.performAction.apply(sn,[Et,Nt,V,_t.yy,Ee[1],Z,ft].concat(Ct)),typeof nn<"u")return nn;Fe&&(ht=ht.slice(0,-1*Fe*2),Z=Z.slice(0,-1*Fe),ft=ft.slice(0,-1*Fe)),ht.push(this.productions_[Ee[1]][0]),Z.push(sn.$),ft.push(sn._$),Qt=Y[ht[ht.length-2]][ht[ht.length-1]],ht.push(Qt);break;case 3:return!0}}return!0}},ut=function(){var yt={EOF:1,parseError:function(gt,ht){if(this.yy.parser)this.yy.parser.parseError(gt,ht);else throw new Error(gt)},setInput:function(mt,gt){return this.yy=gt||this.yy||{},this._input=mt,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},input:function(){var mt=this._input[0];this.yytext+=mt,this.yyleng++,this.offset++,this.match+=mt,this.matched+=mt;var gt=mt.match(/(?:\r\n?|\n).*/g);return gt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),mt},unput:function(mt){var gt=mt.length,ht=mt.split(/(?:\r\n?|\n)/g);this._input=mt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-gt),this.offset-=gt;var bt=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),ht.length-1&&(this.yylineno-=ht.length-1);var Z=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:ht?(ht.length===bt.length?this.yylloc.first_column:0)+bt[bt.length-ht.length].length-ht[0].length:this.yylloc.first_column-gt},this.options.ranges&&(this.yylloc.range=[Z[0],Z[0]+this.yyleng-gt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(mt){this.unput(this.match.slice(mt))},pastInput:function(){var mt=this.matched.substr(0,this.matched.length-this.match.length);return(mt.length>20?"...":"")+mt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var mt=this.match;return mt.length<20&&(mt+=this._input.substr(0,20-mt.length)),(mt.substr(0,20)+(mt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var mt=this.pastInput(),gt=new Array(mt.length+1).join("-");return mt+this.upcomingInput()+` +`+gt+"^"},test_match:function(mt,gt){var ht,bt,Z;if(this.options.backtrack_lexer&&(Z={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&&(Z.yylloc.range=this.yylloc.range.slice(0))),bt=mt[0].match(/(?:\r\n?|\n).*/g),bt&&(this.yylineno+=bt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:bt?bt[bt.length-1].length-bt[bt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+mt[0].length},this.yytext+=mt[0],this.match+=mt[0],this.matches=mt,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(mt[0].length),this.matched+=mt[0],ht=this.performAction.call(this,this.yy,this,gt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),ht)return ht;if(this._backtrack){for(var ft in Z)this[ft]=Z[ft];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var mt,gt,ht,bt;this._more||(this.yytext="",this.match="");for(var Z=this._currentRules(),ft=0;ftgt[0].length)){if(gt=ht,bt=ft,this.options.backtrack_lexer){if(mt=this.test_match(ht,Z[ft]),mt!==!1)return mt;if(this._backtrack){gt=!1;continue}else return!1}else if(!this.options.flex)break}return gt?(mt=this.test_match(gt,Z[bt]),mt!==!1?mt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var gt=this.next();return gt||this.lex()},begin:function(gt){this.conditionStack.push(gt)},popState:function(){var gt=this.conditionStack.length-1;return gt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(gt){return gt=this.conditionStack.length-1-Math.abs(gt||0),gt>=0?this.conditionStack[gt]:"INITIAL"},pushState:function(gt){this.begin(gt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(gt,ht,bt,Z){switch(bt){case 0:return gt.getLogger().trace("Found comment",ht.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:this.popState();break;case 5:gt.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return gt.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:gt.getLogger().trace("end icon"),this.popState();break;case 10:return gt.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return gt.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return gt.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return gt.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:return this.begin("NODE"),19;case 15:return this.begin("NODE"),19;case 16:return this.begin("NODE"),19;case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:gt.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return gt.getLogger().trace("description:",ht.yytext),"NODE_DESCR";case 26:this.popState();break;case 27:return this.popState(),gt.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),gt.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),gt.getLogger().trace("node end ...",ht.yytext),"NODE_DEND";case 30:return this.popState(),gt.getLogger().trace("node end (("),"NODE_DEND";case 31:return this.popState(),gt.getLogger().trace("node end (-"),"NODE_DEND";case 32:return this.popState(),gt.getLogger().trace("node end (-"),"NODE_DEND";case 33:return this.popState(),gt.getLogger().trace("node end (("),"NODE_DEND";case 34:return this.popState(),gt.getLogger().trace("node end (("),"NODE_DEND";case 35:return gt.getLogger().trace("Long description:",ht.yytext),20;case 36:return gt.getLogger().trace("Long description:",ht.yytext),20}},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 yt}();at.lexer=ut;function pt(){this.yy={}}return pt.prototype=at,at.Parser=pt,new pt}();n2t.parser=n2t;const Atn=n2t,xB=i=>Ed(i,Re());let Jw=[],LHt=0,r2t={};const Ltn=()=>{Jw=[],LHt=0,r2t={}},Mtn=function(i){for(let a=Jw.length-1;a>=0;a--)if(Jw[a].levelJw.length>0?Jw[0]:null,Itn=(i,a,f,g)=>{Wt.info("addNode",i,a,f,g);const w=Re(),v={id:LHt++,nodeId:xB(a),level:i,descr:xB(f),type:g,children:[],width:Re().mindmap.maxNodeWidth};switch(v.type){case ul.ROUNDED_RECT:v.padding=2*w.mindmap.padding;break;case ul.RECT:v.padding=2*w.mindmap.padding;break;case ul.HEXAGON:v.padding=2*w.mindmap.padding;break;default:v.padding=w.mindmap.padding}const b=Mtn(i);if(b)b.children.push(v),Jw.push(v);else if(Jw.length===0)Jw.push(v);else{let E=new Error('There can be only one root. No parent could be found for ("'+v.descr+'")');throw E.hash={text:"branch "+name,token:"branch "+name,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+name+'"']},E}},ul={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Otn=(i,a)=>{switch(Wt.debug("In get type",i,a),i){case"[":return ul.RECT;case"(":return a===")"?ul.ROUNDED_RECT:ul.CLOUD;case"((":return ul.CIRCLE;case")":return ul.CLOUD;case"))":return ul.BANG;case"{{":return ul.HEXAGON;default:return ul.DEFAULT}},MHt=(i,a)=>{r2t[i]=a},Ptn=i=>{const a=Jw[Jw.length-1];i&&i.icon&&(a.icon=xB(i.icon)),i&&i.class&&(a.class=xB(i.class))},j9=i=>{switch(i){case ul.DEFAULT:return"no-border";case ul.RECT:return"rect";case ul.ROUNDED_RECT:return"rounded-rect";case ul.CIRCLE:return"circle";case ul.CLOUD:return"cloud";case ul.BANG:return"bang";case ul.HEXAGON:return"hexgon";default:return"no-border"}};let DHt;const Ntn=i=>{DHt=i},Ftn=()=>Wt,Btn=i=>Jw[i],i2t=i=>r2t[i],Rtn=Object.freeze(Object.defineProperty({__proto__:null,addNode:Itn,clear:Ltn,decorateNode:Ptn,getElementById:i2t,getLogger:Ftn,getMindmap:Dtn,getNodeById:Btn,getType:Otn,nodeType:ul,get parseError(){return DHt},sanitizeText:xB,setElementForId:MHt,setErrorHandler:Ntn,type2Str:j9},Symbol.toStringTag,{value:"Module"})),IHt=12,jtn=function(i,a,f){i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+j9(a.type)).attr("d",`M0 ${a.height-5} v${-a.height+2*5} q0,-5 5,-5 h${a.width-2*5} q5,0 5,5 v${a.height-5} H0 Z`),i.append("line").attr("class","node-line-"+f).attr("x1",0).attr("y1",a.height).attr("x2",a.width).attr("y2",a.height)},$tn=function(i,a){i.append("rect").attr("id","node-"+a.id).attr("class","node-bkg node-"+j9(a.type)).attr("height",a.height).attr("width",a.width)},ztn=function(i,a){const f=a.width,g=a.height,w=.15*f,v=.25*f,b=.35*f,E=.2*f;i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+j9(a.type)).attr("d",`M0 0 a${w},${w} 0 0,1 ${f*.25},${-1*f*.1} + a${b},${b} 1 0,1 ${f*.4},${-1*f*.1} + a${v},${v} 1 0,1 ${f*.35},${1*f*.2} + + a${w},${w} 1 0,1 ${f*.15},${1*g*.35} + a${E},${E} 1 0,1 ${-1*f*.15},${1*g*.65} + + a${v},${w} 1 0,1 ${-1*f*.25},${f*.15} + a${b},${b} 1 0,1 ${-1*f*.5},0 + a${w},${w} 1 0,1 ${-1*f*.25},${-1*f*.15} + + a${w},${w} 1 0,1 ${-1*f*.1},${-1*g*.35} + a${E},${E} 1 0,1 ${f*.1},${-1*g*.65} + + H0 V0 Z`)},qtn=function(i,a){const f=a.width,g=a.height,w=.15*f;i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+j9(a.type)).attr("d",`M0 0 a${w},${w} 1 0,0 ${f*.25},${-1*g*.1} + a${w},${w} 1 0,0 ${f*.25},0 + a${w},${w} 1 0,0 ${f*.25},0 + a${w},${w} 1 0,0 ${f*.25},${1*g*.1} + + a${w},${w} 1 0,0 ${f*.15},${1*g*.33} + a${w*.8},${w*.8} 1 0,0 0,${1*g*.34} + a${w},${w} 1 0,0 ${-1*f*.15},${1*g*.33} + + a${w},${w} 1 0,0 ${-1*f*.25},${g*.15} + a${w},${w} 1 0,0 ${-1*f*.25},0 + a${w},${w} 1 0,0 ${-1*f*.25},0 + a${w},${w} 1 0,0 ${-1*f*.25},${-1*g*.15} + + a${w},${w} 1 0,0 ${-1*f*.1},${-1*g*.33} + a${w*.8},${w*.8} 1 0,0 0,${-1*g*.34} + a${w},${w} 1 0,0 ${f*.1},${-1*g*.33} + + H0 V0 Z`)},Htn=function(i,a){i.append("circle").attr("id","node-"+a.id).attr("class","node-bkg node-"+j9(a.type)).attr("r",a.width/2)};function Vtn(i,a,f,g,w){return i.insert("polygon",":first-child").attr("points",g.map(function(v){return v.x+","+v.y}).join(" ")).attr("transform","translate("+(w.width-a)/2+", "+f+")")}const Utn=function(i,a){const f=a.height,w=f/4,v=a.width-a.padding+2*w,b=[{x:w,y:0},{x:v-w,y:0},{x:v,y:-f/2},{x:v-w,y:-f},{x:w,y:-f},{x:0,y:-f/2}];Vtn(i,v,f,b,a)},Gtn=function(i,a){i.append("rect").attr("id","node-"+a.id).attr("class","node-bkg node-"+j9(a.type)).attr("height",a.height).attr("rx",a.padding).attr("ry",a.padding).attr("width",a.width)},OHt={drawNode:function(i,a,f,g){const w=g.htmlLabels,v=f%(IHt-1),b=i.append("g");a.section=v;let E="section-"+v;v<0&&(E+=" section-root"),b.attr("class",(a.class?a.class+" ":"")+"mindmap-node "+E);const _=b.append("g"),S=b.append("g"),I=a.descr.replace(/()/g,` +`);XY(S,I,{useHtmlLabels:w,width:a.width,classes:"mindmap-node-label"}),w||S.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const B=S.node().getBBox(),F=g.fontSize.replace?g.fontSize.replace("px",""):g.fontSize;if(a.height=B.height+F*1.1*.5+a.padding,a.width=B.width+2*a.padding,a.icon)if(a.type===ul.CIRCLE)a.height+=50,a.width+=50,b.append("foreignObject").attr("height","50px").attr("width",a.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+v+" "+a.icon),S.attr("transform","translate("+a.width/2+", "+(a.height/2-1.5*a.padding)+")");else{a.width+=50;const R=a.height;a.height=Math.max(R,60);const q=Math.abs(a.height-R);b.append("foreignObject").attr("width","60px").attr("height",a.height).attr("style","text-align: center;margin-top:"+q/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+v+" "+a.icon),S.attr("transform","translate("+(25+a.width/2)+", "+(q/2+a.padding/2)+")")}else if(w){const R=(a.width-B.width)/2,q=(a.height-B.height)/2;S.attr("transform","translate("+R+", "+q+")")}else{const R=a.width/2,q=a.padding/2;S.attr("transform","translate("+R+", "+q+")")}switch(a.type){case ul.DEFAULT:jtn(_,a,v);break;case ul.ROUNDED_RECT:Gtn(_,a);break;case ul.RECT:$tn(_,a);break;case ul.CIRCLE:_.attr("transform","translate("+a.width/2+", "+ +a.height/2+")"),Htn(_,a);break;case ul.CLOUD:ztn(_,a);break;case ul.BANG:qtn(_,a);break;case ul.HEXAGON:Utn(_,a);break}return MHt(a.id,b),a.height},positionNode:function(i){const a=i2t(i.id),f=i.x||0,g=i.y||0;a.attr("transform","translate("+f+","+g+")")},drawEdge:function(a,f,g,w,v){const b=v%(IHt-1),E=g.x+g.width/2,_=g.y+g.height/2,S=f.x+f.width/2,I=f.y+f.height/2,B=S>E?E+Math.abs(E-S)/2:E-Math.abs(E-S)/2,F=I>_?_+Math.abs(_-I)/2:_-Math.abs(_-I)/2,R=S>E?Math.abs(E-B)/2+E:-Math.abs(E-B)/2+E,q=I>_?Math.abs(_-F)/2+_:-Math.abs(_-F)/2+_;a.append("path").attr("d",g.direction==="TB"||g.direction==="BT"?`M${E},${_} Q${E},${q} ${B},${F} T${S},${I}`:`M${E},${_} Q${R},${_} ${B},${F} T${S},${I}`).attr("class","edge section-edge-"+b+" edge-depth-"+w)}};var PHt={exports:{}};(function(i,a){(function(f,g){i.exports=g()})(X0,function(){function f(y){"@babel/helpers - typeof";return f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},f(y)}function g(y,p){if(!(y instanceof p))throw new TypeError("Cannot call a class as a function")}function w(y,p){for(var x=0;xy.length)&&(p=y.length);for(var x=0,C=new Array(p);x"u"?null:window,q=R?R.navigator:null;R&&R.document;var X=f(""),rt=f({}),at=f(function(){}),ut=typeof HTMLElement>"u"?"undefined":f(HTMLElement),pt=function(p){return p&&p.instanceString&&mt(p.instanceString)?p.instanceString():null},yt=function(p){return p!=null&&f(p)==X},mt=function(p){return p!=null&&f(p)===at},gt=function(p){return!Et(p)&&(Array.isArray?Array.isArray(p):p!=null&&p instanceof Array)},ht=function(p){return p!=null&&f(p)===rt&&!gt(p)&&p.constructor===Object},bt=function(p){return p!=null&&f(p)===rt},Z=function(p){return p!=null&&f(p)===f(1)&&!isNaN(p)},ft=function(p){return Z(p)&&Math.floor(p)===p},Y=function(p){if(ut!=="undefined")return p!=null&&p instanceof HTMLElement},Et=function(p){return V(p)||Nt(p)},V=function(p){return pt(p)==="collection"&&p._private.single},Nt=function(p){return pt(p)==="collection"&&!p._private.single},Dt=function(p){return pt(p)==="core"},jt=function(p){return pt(p)==="stylesheet"},Ct=function(p){return pt(p)==="event"},Ft=function(p){return p==null?!0:!!(p===""||p.match(/^\s+$/))},_t=function(p){return typeof HTMLElement>"u"?!1:p instanceof HTMLElement},xt=function(p){return ht(p)&&Z(p.x1)&&Z(p.x2)&&Z(p.y1)&&Z(p.y2)},Gt=function(p){return bt(p)&&mt(p.then)},Be=function(){return q&&q.userAgent.match(/msie|trident|edge/i)},Ot=function(p,x){x||(x=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var O=[],P=0;Px?1:0},Pr=function(p,x){return-1*oe(p,x)},we=Object.assign!=null?Object.assign.bind(Object):function(y){for(var p=arguments,x=1;x1&&(Mt-=1),Mt<1/6?dt+(vt-dt)*6*Mt:Mt<1/2?vt:Mt<2/3?dt+(vt-dt)*(2/3-Mt)*6:dt}var Q=new RegExp("^"+Qt+"$").exec(p);if(Q){if(C=parseInt(Q[1]),C<0?C=(360- -1*C%360)%360:C>360&&(C=C%360),C/=360,L=parseFloat(Q[2]),L<0||L>100||(L=L/100,O=parseFloat(Q[3]),O<0||O>100)||(O=O/100,P=Q[4],P!==void 0&&(P=parseFloat(P),P<0||P>1)))return;if(L===0)$=H=z=Math.round(O*255);else{var it=O<.5?O*(1+L):O+L-O*L,lt=2*O-it;$=Math.round(255*G(lt,it,C+1/3)),H=Math.round(255*G(lt,it,C)),z=Math.round(255*G(lt,it,C-1/3))}x=[$,H,z,P]}return x},da=function(p){var x,C=new RegExp("^"+me+"$").exec(p);if(C){x=[];for(var L=[],O=1;O<=3;O++){var P=C[O];if(P[P.length-1]==="%"&&(L[O]=!0),P=parseFloat(P),L[O]&&(P=P/100*255),P<0||P>255)return;x.push(Math.floor(P))}var $=L[1]||L[2]||L[3],H=L[1]&&L[2]&&L[3];if($&&!H)return;var z=C[4];if(z!==void 0){if(z=parseFloat(z),z<0||z>1)return;x.push(z)}}return x},Ss=function(p){return fr[p.toLowerCase()]},Ra=function(p){return(gt(p)?p:null)||Ss(p)||Ri(p)||da(p)||yi(p)},fr={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]},An=function(p){for(var x=p.map,C=p.keys,L=C.length,O=0;O=p||Ut<0||Q&&ue>=O}function kt(){var ee=$a();if(Mt(ee))return It(ee);$=setTimeout(kt,vt(ee))}function It(ee){return $=void 0,it&&C?lt(ee):(C=L=void 0,P)}function Pt(){$!==void 0&&clearTimeout($),z=0,C=H=L=$=void 0}function qt(){return $===void 0?P:It($a())}function ce(){var ee=$a(),Ut=Mt(ee);if(C=arguments,L=this,H=ee,Ut){if($===void 0)return dt(H);if(Q)return clearTimeout($),$=setTimeout(kt,p),lt(H)}return $===void 0&&($=setTimeout(kt,p)),P}return ce.cancel=Pt,ce.flush=qt,ce}var gu=_i,Le=R?R.performance:null,ry=Le&&Le.now?function(){return Le.now()}:function(){return Date.now()},$e=function(){if(R){if(R.requestAnimationFrame)return function(y){R.requestAnimationFrame(y)};if(R.mozRequestAnimationFrame)return function(y){R.mozRequestAnimationFrame(y)};if(R.webkitRequestAnimationFrame)return function(y){R.webkitRequestAnimationFrame(y)};if(R.msRequestAnimationFrame)return function(y){R.msRequestAnimationFrame(y)}}return function(y){y&&setTimeout(function(){y(ry())},1e3/60)}}(),h1=function(p){return $e(p)},rp=ry,iy=9261,S8=65599,f4=5381,Ql=function(p){for(var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:iy,C=x,L;L=p.next(),!L.done;)C=C*S8+L.value|0;return C},og=function(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:iy;return x*S8+p|0},S2=function(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:f4;return(x<<5)+x+p|0},A8=function(p,x){return p*2097152+x},A2=function(p){return p[0]*2097152+p[1]},d4=function(p,x){return[og(p[0],x[0]),S2(p[1],x[1])]},q1=function(p,x){var C={value:0,done:!1},L=0,O=p.length,P={next:function(){return L=0&&!(p[L]===x&&(p.splice(L,1),C));L--);},q9=function(p){p.splice(0,p.length)},TB=function(p,x){for(var C=0;C"u"?"undefined":f(Set))!==RX?Set:jX,H9=function(p,x){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(p===void 0||x===void 0||!Dt(p)){jl("An element must have a core reference and parameters set");return}var L=x.group;if(L==null&&(x.data&&x.data.source!=null&&x.data.target!=null?L="edges":L="nodes"),L!=="nodes"&&L!=="edges"){jl("An element must be of type `nodes` or `edges`; you specified `"+L+"`");return}this.length=1,this[0]=this;var O=this._private={cy:p,single:!0,data:x.data||{},position:x.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:L,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!x.selected,selectable:x.selectable===void 0?!0:!!x.selectable,locked:!!x.locked,grabbed:!1,grabbable:x.grabbable===void 0?!0:!!x.grabbable,pannable:x.pannable===void 0?L==="edges":!!x.pannable,active:!1,classes:new Ux,animation:{current:[],queue:[]},rscratch:{},scratch:x.scratch||{},edges:[],children:[],parent:x.parent&&x.parent.isNode()?x.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(O.position.x==null&&(O.position.x=0),O.position.y==null&&(O.position.y=0),x.renderedPosition){var P=x.renderedPosition,$=p.pan(),H=p.zoom();O.position={x:(P.x-$.x)/H,y:(P.y-$.y)/H}}var z=[];gt(x.classes)?z=x.classes:yt(x.classes)&&(z=x.classes.split(/\s+/));for(var G=0,Q=z.length;GIt?1:0},G=function(kt,It,Pt,qt,ce){var ee;if(Pt==null&&(Pt=0),ce==null&&(ce=C),Pt<0)throw new Error("lo must be non-negative");for(qt==null&&(qt=kt.length);Ptye;0<=ye?Yt++:Yt--)ue.push(Yt);return ue}).apply(this).reverse(),Ut=[],qt=0,ce=ee.length;qtxe;0<=xe?++ue:--ue)de.push(P(kt,Pt));return de},vt=function(kt,It,Pt,qt){var ce,ee,Ut;for(qt==null&&(qt=C),ce=kt[Pt];Pt>It;){if(Ut=Pt-1>>1,ee=kt[Ut],qt(ce,ee)<0){kt[Pt]=ee,Pt=Ut;continue}break}return kt[Pt]=ce},Mt=function(kt,It,Pt){var qt,ce,ee,Ut,ue;for(Pt==null&&(Pt=C),ce=kt.length,ue=It,ee=kt[It],qt=2*It+1;qt0;){var ee=It.pop(),Ut=Mt(ee),ue=ee.id();if(it[ue]=Ut,Ut!==1/0)for(var Yt=ee.neighborhood().intersect(dt),ye=0;ye0)for(Sn.unshift(an);Q[or];){var Rn=Q[or];Sn.unshift(Rn.edge),Sn.unshift(Rn.node),Vn=Rn.node,or=Vn.id()}return $.spawn(Sn)}}}},HX={kruskal:function(p){p=p||function(Pt){return 1};for(var x=this.byGroup(),C=x.nodes,L=x.edges,O=C.length,P=new Array(O),$=C,H=function(qt){for(var ce=0;ce0;){if(ce(),Ut++,qt===G){for(var ue=[],Yt=O,ye=G,xe=kt[ye];ue.unshift(Yt),xe!=null&&ue.unshift(xe),Yt=Mt[ye],Yt!=null;)ye=Yt.id(),xe=kt[ye];return{found:!0,distance:Q[qt],path:this.spawn(ue),steps:Ut}}lt[qt]=!0;for(var de=Pt._private.edges,ze=0;zexe&&(dt[ye]=xe,It[ye]=Yt,Pt[ye]=ce),!O){var de=Yt*G+ue;!O&&dt[de]>xe&&(dt[de]=xe,It[de]=ue,Pt[de]=ce)}}}for(var ze=0;ze1&&arguments[1]!==void 0?arguments[1]:P,Ao=Pt(li),Ka=[],Ws=Ao;;){if(Ws==null)return x.spawn();var Nr=It(Ws),re=Nr.edge,Kn=Nr.pred;if(Ka.unshift(Ws[0]),Ws.same(qi)&&Ka.length>0)break;re!=null&&Ka.unshift(re),Ws=Kn}return H.spawn(Ka)},ee=0;ee=0;G--){var Q=z[G],it=Q[1],lt=Q[2];(x[it]===$&&x[lt]===H||x[it]===H&&x[lt]===$)&&z.splice(G,1)}for(var dt=0;dtL;){var O=Math.floor(Math.random()*x.length);x=QX(O,p,x),C--}return x},JX={kargerStein:function(){var p=this,x=this.byGroup(),C=x.nodes,L=x.edges;L.unmergeBy(function(Sn){return Sn.isLoop()});var O=C.length,P=L.length,$=Math.ceil(Math.pow(Math.log(O)/Math.LN2,2)),H=Math.floor(O/XX);if(O<2){jl("At least 2 nodes are required for Karger-Stein algorithm");return}for(var z=[],G=0;G1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:p.length,L=1/0,O=x;O1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:p.length,L=-1/0,O=x;O1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:p.length,L=0,O=0,P=x;P1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:p.length,L=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,O=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,P=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;L?p=p.slice(x,C):(C0&&p.splice(0,x));for(var $=0,H=p.length-1;H>=0;H--){var z=p[H];P?isFinite(z)||(p[H]=-1/0,$++):p.splice(H,1)}O&&p.sort(function(it,lt){return it-lt});var G=p.length,Q=Math.floor(G/2);return G%2!==0?p[Q+1+$]:(p[Q-1+$]+p[Q+$])/2},iQ=function(p){return Math.PI*p/180},U9=function(p,x){return Math.atan2(x,p)-Math.PI/2},DM=Math.log2||function(y){return Math.log(y)/Math.log(2)},SB=function(p){return p>0?1:p<0?-1:0},p4=function(p,x){return Math.sqrt(b4(p,x))},b4=function(p,x){var C=x.x-p.x,L=x.y-p.y;return C*C+L*L},sQ=function(p){for(var x=p.length,C=0,L=0;L=p.x1&&p.y2>=p.y1)return{x1:p.x1,y1:p.y1,x2:p.x2,y2:p.y2,w:p.x2-p.x1,h:p.y2-p.y1};if(p.w!=null&&p.h!=null&&p.w>=0&&p.h>=0)return{x1:p.x1,y1:p.y1,x2:p.x1+p.w,y2:p.y1+p.h,w:p.w,h:p.h}}},oQ=function(p){return{x1:p.x1,x2:p.x2,w:p.w,y1:p.y1,y2:p.y2,h:p.h}},cQ=function(p){p.x1=1/0,p.y1=1/0,p.x2=-1/0,p.y2=-1/0,p.w=0,p.h=0},uQ=function(p,x){p.x1=Math.min(p.x1,x.x1),p.x2=Math.max(p.x2,x.x2),p.w=p.x2-p.x1,p.y1=Math.min(p.y1,x.y1),p.y2=Math.max(p.y2,x.y2),p.h=p.y2-p.y1},lQ=function(p,x,C){p.x1=Math.min(p.x1,x),p.x2=Math.max(p.x2,x),p.w=p.x2-p.x1,p.y1=Math.min(p.y1,C),p.y2=Math.max(p.y2,C),p.h=p.y2-p.y1},G9=function(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return p.x1-=x,p.x2+=x,p.y1-=x,p.y2+=x,p.w=p.x2-p.x1,p.h=p.y2-p.y1,p},IM=function(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],C,L,O,P;if(x.length===1)C=L=O=P=x[0];else if(x.length===2)C=O=x[0],P=L=x[1];else if(x.length===4){var $=E(x,4);C=$[0],L=$[1],O=$[2],P=$[3]}return p.x1-=P,p.x2+=L,p.y1-=C,p.y2+=O,p.w=p.x2-p.x1,p.h=p.y2-p.y1,p},AB=function(p,x){p.x1=x.x1,p.y1=x.y1,p.x2=x.x2,p.y2=x.y2,p.w=p.x2-p.x1,p.h=p.y2-p.y1},OM=function(p,x){return!(p.x1>x.x2||x.x1>p.x2||p.x2x.y2||x.y1>p.y2)},Wx=function(p,x,C){return p.x1<=x&&x<=p.x2&&p.y1<=C&&C<=p.y2},hQ=function(p,x){return Wx(p,x.x,x.y)},LB=function(p,x){return Wx(p,x.x1,x.y1)&&Wx(p,x.x2,x.y2)},MB=function(p,x,C,L,O,P,$){var H=N8(O,P),z=O/2,G=P/2,Q;{var it=C-z+H-$,lt=L-G-$,dt=C+z-H+$,vt=lt;if(Q=cy(p,x,C,L,it,lt,dt,vt,!1),Q.length>0)return Q}{var Mt=C+z+$,kt=L-G+H-$,It=Mt,Pt=L+G-H+$;if(Q=cy(p,x,C,L,Mt,kt,It,Pt,!1),Q.length>0)return Q}{var qt=C-z+H-$,ce=L+G+$,ee=C+z-H+$,Ut=ce;if(Q=cy(p,x,C,L,qt,ce,ee,Ut,!1),Q.length>0)return Q}{var ue=C-z-$,Yt=L-G+H-$,ye=ue,xe=L+G-H+$;if(Q=cy(p,x,C,L,ue,Yt,ye,xe,!1),Q.length>0)return Q}var de;{var ze=C-z+H,ke=L-G+H;if(de=O8(p,x,C,L,ze,ke,H+$),de.length>0&&de[0]<=ze&&de[1]<=ke)return[de[0],de[1]]}{var xn=C+z-H,tn=L-G+H;if(de=O8(p,x,C,L,xn,tn,H+$),de.length>0&&de[0]>=xn&&de[1]<=tn)return[de[0],de[1]]}{var an=C+z-H,Sn=L+G-H;if(de=O8(p,x,C,L,an,Sn,H+$),de.length>0&&de[0]>=an&&de[1]>=Sn)return[de[0],de[1]]}{var Vn=C-z+H,or=L+G-H;if(de=O8(p,x,C,L,Vn,or,H+$),de.length>0&&de[0]<=Vn&&de[1]>=or)return[de[0],de[1]]}return[]},fQ=function(p,x,C,L,O,P,$){var H=$,z=Math.min(C,O),G=Math.max(C,O),Q=Math.min(L,P),it=Math.max(L,P);return z-H<=p&&p<=G+H&&Q-H<=x&&x<=it+H},dQ=function(p,x,C,L,O,P,$,H,z){var G={x1:Math.min(C,$,O)-z,x2:Math.max(C,$,O)+z,y1:Math.min(L,H,P)-z,y2:Math.max(L,H,P)+z};return!(pG.x2||xG.y2)},gQ=function(p,x,C,L){C-=L;var O=x*x-4*p*C;if(O<0)return[];var P=Math.sqrt(O),$=2*p,H=(-x+P)/$,z=(-x-P)/$;return[H,z]},pQ=function(p,x,C,L,O){var P=1e-5;p===0&&(p=P),x/=p,C/=p,L/=p;var $,H,z,G,Q,it,lt,dt;if(H=(3*C-x*x)/9,z=-(27*L)+x*(9*C-2*(x*x)),z/=54,$=H*H*H+z*z,O[1]=0,lt=x/3,$>0){Q=z+Math.sqrt($),Q=Q<0?-Math.pow(-Q,1/3):Math.pow(Q,1/3),it=z-Math.sqrt($),it=it<0?-Math.pow(-it,1/3):Math.pow(it,1/3),O[0]=-lt+Q+it,lt+=(Q+it)/2,O[4]=O[2]=-lt,lt=Math.sqrt(3)*(-it+Q)/2,O[3]=lt,O[5]=-lt;return}if(O[5]=O[3]=0,$===0){dt=z<0?-Math.pow(-z,1/3):Math.pow(z,1/3),O[0]=-lt+2*dt,O[4]=O[2]=-(dt+lt);return}H=-H,G=H*H*H,G=Math.acos(z/Math.sqrt(G)),dt=2*Math.sqrt(H),O[0]=-lt+dt*Math.cos(G/3),O[2]=-lt+dt*Math.cos((G+2*Math.PI)/3),O[4]=-lt+dt*Math.cos((G+4*Math.PI)/3)},bQ=function(p,x,C,L,O,P,$,H){var z=1*C*C-4*C*O+2*C*$+4*O*O-4*O*$+$*$+L*L-4*L*P+2*L*H+4*P*P-4*P*H+H*H,G=1*9*C*O-3*C*C-3*C*$-6*O*O+3*O*$+9*L*P-3*L*L-3*L*H-6*P*P+3*P*H,Q=1*3*C*C-6*C*O+C*$-C*p+2*O*O+2*O*p-$*p+3*L*L-6*L*P+L*H-L*x+2*P*P+2*P*x-H*x,it=1*C*O-C*C+C*p-O*p+L*P-L*L+L*x-P*x,lt=[];pQ(z,G,Q,it,lt);for(var dt=1e-7,vt=[],Mt=0;Mt<6;Mt+=2)Math.abs(lt[Mt+1])=0&<[Mt]<=1&&vt.push(lt[Mt]);vt.push(1),vt.push(0);for(var kt=-1,It,Pt,qt,ce=0;ce=0?qtz?(p-O)*(p-O)+(x-P)*(x-P):G-it},v0=function(p,x,C){for(var L,O,P,$,H,z=0,G=0;G=p&&p>=P||L<=p&&p<=P)H=(p-L)/(P-L)*($-O)+O,H>x&&z++;else continue;return z%2!==0},em=function(p,x,C,L,O,P,$,H,z){var G=new Array(C.length),Q;H[0]!=null?(Q=Math.atan(H[1]/H[0]),H[0]<0?Q=Q+Math.PI/2:Q=-Q-Math.PI/2):Q=H;for(var it=Math.cos(-Q),lt=Math.sin(-Q),dt=0;dt0){var Mt=IB(G,-z);vt=DB(Mt)}else vt=G;return v0(p,x,vt)},mQ=function(p,x,C,L,O,P,$){for(var H=new Array(C.length),z=P/2,G=$/2,Q=FM(P,$),it=Q*Q,lt=0;lt=0&&Mt<=1&&It.push(Mt),kt>=0&&kt<=1&&It.push(kt),It.length===0)return[];var Pt=It[0]*H[0]+p,qt=It[0]*H[1]+x;if(It.length>1){if(It[0]==It[1])return[Pt,qt];var ce=It[1]*H[0]+p,ee=It[1]*H[1]+x;return[Pt,qt,ce,ee]}else return[Pt,qt]},PM=function(p,x,C){return x<=p&&p<=C||C<=p&&p<=x?p:p<=x&&x<=C||C<=x&&x<=p?x:C},cy=function(p,x,C,L,O,P,$,H,z){var G=p-O,Q=C-p,it=$-O,lt=x-P,dt=L-x,vt=H-P,Mt=it*lt-vt*G,kt=Q*lt-dt*G,It=vt*Q-it*dt;if(It!==0){var Pt=Mt/It,qt=kt/It,ce=.001,ee=0-ce,Ut=1+ce;return ee<=Pt&&Pt<=Ut&&ee<=qt&&qt<=Ut?[p+Pt*Q,x+Pt*dt]:z?[p+Pt*Q,x+Pt*dt]:[]}else return Mt===0||kt===0?PM(p,C,$)===$?[$,H]:PM(p,C,O)===O?[O,P]:PM(O,$,C)===C?[C,L]:[]:[]},P8=function(p,x,C,L,O,P,$,H){var z=[],G,Q=new Array(C.length),it=!0;P==null&&(it=!1);var lt;if(it){for(var dt=0;dt0){var vt=IB(Q,-H);lt=DB(vt)}else lt=Q}else lt=C;for(var Mt,kt,It,Pt,qt=0;qt2){for(var tn=[z[0],z[1]],an=Math.pow(tn[0]-p,2)+Math.pow(tn[1]-x,2),Sn=1;SnG&&(G=qt)},get:function(Pt){return z[Pt]}},it=0;it<$.length;it++){var lt=$[it],dt=lt.id();C?H[dt]=lt.outgoers().nodes():H[dt]=lt.openNeighborhood().nodes(),Q.set(dt,0)}for(var vt=function(Pt){for(var qt=$[Pt].id(),ce=[],ee={},Ut={},ue={},Yt=new D8(function(br,dr){return ue[br]-ue[dr]}),ye=0;ye<$.length;ye++){var xe=$[ye].id();ee[xe]=[],Ut[xe]=0,ue[xe]=1/0}for(Ut[qt]=1,ue[qt]=0,Yt.push(qt);!Yt.empty();){var de=Yt.pop();if(ce.push(de),O)for(var ze=0;ze0?tn=xn.edgesTo(ke)[0]:tn=ke.edgesTo(xn)[0];var an=L(tn);ke=ke.id(),ue[ke]>ue[de]+an&&(ue[ke]=ue[de]+an,Yt.nodes.indexOf(ke)<0?Yt.push(ke):Yt.updateItem(ke),Ut[ke]=0,ee[ke]=[]),ue[ke]==ue[de]+an&&(Ut[ke]=Ut[ke]+Ut[de],ee[ke].push(de))}else for(var Sn=0;Sn0;){for(var ar=ce.pop(),yr=0;yr0&&$.push(C[H]);$.length!==0&&O.push(L.collection($))}return O},OQ=function(p,x){for(var C=0;C5&&arguments[5]!==void 0?arguments[5]:FQ,$=L,H,z,G=0;G=2?F8(p,x,C,0,qB,BQ):F8(p,x,C,0,zB)},squaredEuclidean:function(p,x,C){return F8(p,x,C,0,qB)},manhattan:function(p,x,C){return F8(p,x,C,0,zB)},max:function(p,x,C){return F8(p,x,C,-1/0,RQ)}};Qx["squared-euclidean"]=Qx.squaredEuclidean,Qx.squaredeuclidean=Qx.squaredEuclidean;function W9(y,p,x,C,L,O){var P;return mt(y)?P=y:P=Qx[y]||Qx.euclidean,p===0&&mt(y)?P(L,O):P(p,x,C,L,O)}var jQ=f1({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),jM=function(p){return jQ(p)},Y9=function(p,x,C,L,O){var P=O!=="kMedoids",$=P?function(Q){return C[Q]}:function(Q){return L[Q](C)},H=function(it){return L[it](x)},z=C,G=x;return W9(p,L.length,$,H,z,G)},$M=function(p,x,C){for(var L=C.length,O=new Array(L),P=new Array(L),$=new Array(x),H=null,z=0;zC)return!1}return!0},qQ=function(p,x,C){for(var L=0;L$&&($=x[z][G],H=G);O[H].push(p[z])}for(var Q=0;Q=O.threshold||O.mode==="dendrogram"&&p.length===1)return!1;var dt=x[P],vt=x[L[P]],Mt;O.mode==="dendrogram"?Mt={left:dt,right:vt,key:dt.key}:Mt={value:dt.value.concat(vt.value),key:dt.key},p[dt.index]=Mt,p.splice(vt.index,1),x[dt.key]=Mt;for(var kt=0;ktC[vt.key][It.key]&&(H=C[vt.key][It.key])):O.linkage==="max"?(H=C[dt.key][It.key],C[dt.key][It.key]0&&L.push(O);return L},XB=function(p,x,C){for(var L=[],O=0;O$&&(P=z,$=x[O*p+z])}P>0&&L.push(P)}for(var G=0;Gz&&(H=G,z=Q)}C[O]=P[H]}return L=XB(p,x,C),L},QB=function(p){for(var x=this.cy(),C=this.nodes(),L=nJ(p),O={},P=0;P=xe?(de=xe,xe=ke,ze=xn):ke>de&&(de=ke);for(var tn=0;tn<$;tn++)Q[ye*$+tn]=(1-L.damping)*(z[ye*$+tn]-xe)+L.damping*Pt[tn];Q[ye*$+ze]=(1-L.damping)*(z[ye*$+ze]-de)+L.damping*Pt[ze]}for(var an=0;an<$;an++){for(var Sn=0,Vn=0;Vn<$;Vn++)Pt[Vn]=it[Vn*$+an],qt[Vn]=Math.max(0,Q[Vn*$+an]),Sn+=qt[Vn];Sn-=qt[an],qt[an]=Q[an*$+an],Sn+=qt[an];for(var or=0;or<$;or++)it[or*$+an]=(1-L.damping)*Math.min(0,Sn-qt[or])+L.damping*Pt[or];it[an*$+an]=(1-L.damping)*(Sn-qt[an])+L.damping*Pt[an]}for(var Rn=0,ar=0;ar<$;ar++){var yr=it[ar*$+ar]+Q[ar*$+ar]>0?1:0;Ut[Yt%L.minIterations*$+ar]=yr,Rn+=yr}if(Rn>0&&(Yt>=L.minIterations-1||Yt==L.maxIterations-1)){for(var kr=0,br=0;br<$;br++){ce[br]=0;for(var dr=0;dr1||ee>1)&&($=!0),Q[Pt]=[],It.outgoers().forEach(function(ue){ue.isEdge()&&Q[Pt].push(ue.id())})}else it[Pt]=[void 0,It.target().id()]}):P.forEach(function(It){var Pt=It.id();if(It.isNode()){var qt=It.degree(!0);qt%2&&(H?z?$=!0:z=Pt:H=Pt),Q[Pt]=[],It.connectedEdges().forEach(function(ce){return Q[Pt].push(ce.id())})}else it[Pt]=[It.source().id(),It.target().id()]});var lt={found:!1,trail:void 0};if($)return lt;if(z&&H)if(O){if(G&&z!=G)return lt;G=z}else{if(G&&z!=G&&H!=G)return lt;G||(G=z)}else G||(G=P[0].id());var dt=function(Pt){for(var qt=Pt,ce=[Pt],ee,Ut,ue;Q[qt].length;)ee=Q[qt].shift(),Ut=it[ee][0],ue=it[ee][1],qt!=ue?(Q[ue]=Q[ue].filter(function(Yt){return Yt!=ee}),qt=ue):!O&&qt!=Ut&&(Q[Ut]=Q[Ut].filter(function(Yt){return Yt!=ee}),qt=Ut),ce.unshift(ee),ce.unshift(qt);return ce},vt=[],Mt=[];for(Mt=dt(G);Mt.length!=1;)Q[Mt[0]].length==0?(vt.unshift(P.getElementById(Mt.shift())),vt.unshift(P.getElementById(Mt.shift()))):Mt=dt(Mt.shift()).concat(Mt);vt.unshift(P.getElementById(Mt.shift()));for(var kt in Q)if(Q[kt].length)return lt;return lt.found=!0,lt.trail=this.spawn(vt,!0),lt}},Q9=function(){var p=this,x={},C=0,L=0,O=[],P=[],$={},H=function(it,lt){for(var dt=P.length-1,vt=[],Mt=p.spawn();P[dt].x!=it||P[dt].y!=lt;)vt.push(P.pop().edge),dt--;vt.push(P.pop().edge),vt.forEach(function(kt){var It=kt.connectedNodes().intersection(p);Mt.merge(kt),It.forEach(function(Pt){var qt=Pt.id(),ce=Pt.connectedEdges().intersection(p);Mt.merge(Pt),x[qt].cutVertex?Mt.merge(ce.filter(function(ee){return ee.isLoop()})):Mt.merge(ce)})}),O.push(Mt)},z=function Q(it,lt,dt){it===dt&&(L+=1),x[lt]={id:C,low:C++,cutVertex:!1};var vt=p.getElementById(lt).connectedEdges().intersection(p);if(vt.size()===0)O.push(p.spawn(p.getElementById(lt)));else{var Mt,kt,It,Pt;vt.forEach(function(qt){Mt=qt.source().id(),kt=qt.target().id(),It=Mt===lt?kt:Mt,It!==dt&&(Pt=qt.id(),$[Pt]||($[Pt]=!0,P.push({x:lt,y:It,edge:qt})),It in x?x[lt].low=Math.min(x[lt].low,x[It].id):(Q(it,It,lt),x[lt].low=Math.min(x[lt].low,x[It].low),x[lt].id<=x[It].low&&(x[lt].cutVertex=!0,H(lt,It))))})}};p.forEach(function(Q){if(Q.isNode()){var it=Q.id();it in x||(L=0,z(it,it),x[it].cutVertex=L>1)}});var G=Object.keys(x).filter(function(Q){return x[Q].cutVertex}).map(function(Q){return p.getElementById(Q)});return{cut:p.spawn(G),components:O}},lJ={hopcroftTarjanBiconnected:Q9,htbc:Q9,htb:Q9,hopcroftTarjanBiconnectedComponents:Q9},J9=function(){var p=this,x={},C=0,L=[],O=[],P=p.spawn(p),$=function H(z){O.push(z),x[z]={index:C,low:C++,explored:!1};var G=p.getElementById(z).connectedEdges().intersection(p);if(G.forEach(function(vt){var Mt=vt.target().id();Mt!==z&&(Mt in x||H(Mt),x[Mt].explored||(x[z].low=Math.min(x[z].low,x[Mt].low)))}),x[z].index===x[z].low){for(var Q=p.spawn();;){var it=O.pop();if(Q.merge(p.getElementById(it)),x[it].low=x[z].index,x[it].explored=!0,it===z)break}var lt=Q.edgesWith(Q),dt=Q.merge(lt);L.push(dt),P=P.difference(dt)}};return p.forEach(function(H){if(H.isNode()){var z=H.id();z in x||$(z)}}),{cut:P,components:L}},hJ={tarjanStronglyConnected:J9,tsc:J9,tscc:J9,tarjanStronglyConnectedComponents:J9},JB={};[M8,qX,HX,UX,KX,YX,JX,EQ,Yx,Xx,RM,NQ,WQ,tJ,oJ,uJ,lJ,hJ].forEach(function(y){we(JB,y)});/*! +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) +*/var ZB=0,tR=1,eR=2,nm=function y(p){if(!(this instanceof y))return new y(p);this.id="Thenable/1.0.7",this.state=ZB,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof p=="function"&&p.call(this,this.fulfill.bind(this),this.reject.bind(this))};nm.prototype={fulfill:function(p){return nR(this,tR,"fulfillValue",p)},reject:function(p){return nR(this,eR,"rejectReason",p)},then:function(p,x){var C=this,L=new nm;return C.onFulfilled.push(sR(p,L,"fulfill")),C.onRejected.push(sR(x,L,"reject")),rR(C),L.proxy}};var nR=function(p,x,C,L){return p.state===ZB&&(p.state=x,p[C]=L,rR(p)),p},rR=function(p){p.state===tR?iR(p,"onFulfilled",p.fulfillValue):p.state===eR&&iR(p,"onRejected",p.rejectReason)},iR=function(p,x,C){if(p[x].length!==0){var L=p[x];p[x]=[];var O=function(){for(var $=0;$0}},clearQueue:function(){return function(){var x=this,C=x.length!==void 0,L=C?x:[x],O=this._private.cy||this;if(!O.styleEnabled())return this;for(var P=0;P-1}var fZ=hZ;function dZ(y,p){var x=this.__data__,C=tC(x,y);return C<0?(++this.size,x.push([y,p])):x[C][1]=p,this}var gZ=dZ;function t6(y){var p=-1,x=y==null?0:y.length;for(this.clear();++p-1&&y%1==0&&y0&&this.spawn(L).updateStyle().emit("class"),x},addClass:function(p){return this.toggleClass(p,!0)},hasClass:function(p){var x=this[0];return x!=null&&x._private.classes.has(p)},toggleClass:function(p,x){gt(p)||(p=p.match(/\S+/g)||[]);for(var C=this,L=x===void 0,O=[],P=0,$=C.length;P<$;P++)for(var H=C[P],z=H._private.classes,G=!1,Q=0;Q0&&this.spawn(O).updateStyle().emit("class"),C},removeClass:function(p){return this.toggleClass(p,!1)},flashClass:function(p,x){var C=this;if(x==null)x=250;else if(x===0)return C;return C.addClass(p),setTimeout(function(){C.removeClass(p)},x),C}};nC.className=nC.classNames=nC.classes;var mc={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:sn,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};mc.variable="(?:[\\w-.]|(?:\\\\"+mc.metaChar+"))+",mc.className="(?:[\\w-]|(?:\\\\"+mc.metaChar+"))+",mc.value=mc.string+"|"+mc.number,mc.id=mc.variable,function(){var y,p,x;for(y=mc.comparatorOp.split("|"),x=0;x=0)&&p!=="="&&(mc.comparatorOp+="|\\!"+p)}();var pu=function(){return{checks:[]}},ts={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},KM=[{selector:":selected",matches:function(p){return p.selected()}},{selector:":unselected",matches:function(p){return!p.selected()}},{selector:":selectable",matches:function(p){return p.selectable()}},{selector:":unselectable",matches:function(p){return!p.selectable()}},{selector:":locked",matches:function(p){return p.locked()}},{selector:":unlocked",matches:function(p){return!p.locked()}},{selector:":visible",matches:function(p){return p.visible()}},{selector:":hidden",matches:function(p){return!p.visible()}},{selector:":transparent",matches:function(p){return p.transparent()}},{selector:":grabbed",matches:function(p){return p.grabbed()}},{selector:":free",matches:function(p){return!p.grabbed()}},{selector:":removed",matches:function(p){return p.removed()}},{selector:":inside",matches:function(p){return!p.removed()}},{selector:":grabbable",matches:function(p){return p.grabbable()}},{selector:":ungrabbable",matches:function(p){return!p.grabbable()}},{selector:":animated",matches:function(p){return p.animated()}},{selector:":unanimated",matches:function(p){return!p.animated()}},{selector:":parent",matches:function(p){return p.isParent()}},{selector:":childless",matches:function(p){return p.isChildless()}},{selector:":child",matches:function(p){return p.isChild()}},{selector:":orphan",matches:function(p){return p.isOrphan()}},{selector:":nonorphan",matches:function(p){return p.isChild()}},{selector:":compound",matches:function(p){return p.isNode()?p.isParent():p.source().isParent()||p.target().isParent()}},{selector:":loop",matches:function(p){return p.isLoop()}},{selector:":simple",matches:function(p){return p.isSimple()}},{selector:":active",matches:function(p){return p.active()}},{selector:":inactive",matches:function(p){return!p.active()}},{selector:":backgrounding",matches:function(p){return p.backgrounding()}},{selector:":nonbackgrounding",matches:function(p){return!p.backgrounding()}}].sort(function(y,p){return Pr(y.selector,p.selector)}),wtt=function(){for(var y={},p,x=0;x0&&G.edgeCount>0)return Vc("The selector `"+p+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(G.edgeCount>1)return Vc("The selector `"+p+"` is invalid because it uses multiple edge selectors"),!1;G.edgeCount===1&&Vc("The selector `"+p+"` 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},xtt=function(){if(this.toStringCache!=null)return this.toStringCache;for(var p=function(G){return G??""},x=function(G){return yt(G)?'"'+G+'"':p(G)},C=function(G){return" "+G+" "},L=function(G,Q){var it=G.type,lt=G.value;switch(it){case ts.GROUP:{var dt=p(lt);return dt.substring(0,dt.length-1)}case ts.DATA_COMPARE:{var vt=G.field,Mt=G.operator;return"["+vt+C(p(Mt))+x(lt)+"]"}case ts.DATA_BOOL:{var kt=G.operator,It=G.field;return"["+p(kt)+It+"]"}case ts.DATA_EXIST:{var Pt=G.field;return"["+Pt+"]"}case ts.META_COMPARE:{var qt=G.operator,ce=G.field;return"[["+ce+C(p(qt))+x(lt)+"]]"}case ts.STATE:return lt;case ts.ID:return"#"+lt;case ts.CLASS:return"."+lt;case ts.PARENT:case ts.CHILD:return O(G.parent,Q)+C(">")+O(G.child,Q);case ts.ANCESTOR:case ts.DESCENDANT:return O(G.ancestor,Q)+" "+O(G.descendant,Q);case ts.COMPOUND_SPLIT:{var ee=O(G.left,Q),Ut=O(G.subject,Q),ue=O(G.right,Q);return ee+(ee.length>0?" ":"")+Ut+ue}case ts.TRUE:return""}},O=function(G,Q){return G.checks.reduce(function(it,lt,dt){return it+(Q===G&&dt===0?"$":"")+L(lt,Q)},"")},P="",$=0;$1&&$=0&&(x=x.replace("!",""),Q=!0),x.indexOf("@")>=0&&(x=x.replace("@",""),G=!0),(O||$||G)&&(H=!O&&!P?"":""+p,z=""+C),G&&(p=H=H.toLowerCase(),C=z=z.toLowerCase()),x){case"*=":L=H.indexOf(z)>=0;break;case"$=":L=H.indexOf(z,H.length-z.length)>=0;break;case"^=":L=H.indexOf(z)===0;break;case"=":L=p===C;break;case">":it=!0,L=p>C;break;case">=":it=!0,L=p>=C;break;case"<":it=!0,L=p0;){var G=L.shift();p(G),O.add(G.id()),$&&C(L,O,G)}return y}function CR(y,p,x){if(x.isParent())for(var C=x._private.children,L=0;L1&&arguments[1]!==void 0?arguments[1]:!0;return QM(this,y,p,CR)};function _R(y,p,x){if(x.isChild()){var C=x._private.parent;p.has(C.id())||y.push(C)}}r6.forEachUp=function(y){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return QM(this,y,p,_R)};function Att(y,p,x){_R(y,p,x),CR(y,p,x)}r6.forEachUpAndDown=function(y){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return QM(this,y,p,Att)},r6.ancestors=r6.parents;var j8,cg;j8=cg={data:Uc.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:Uc.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Uc.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Uc.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Uc.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Uc.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var p=this[0];if(p)return p._private.data.id}},j8.attr=j8.data,j8.removeAttr=j8.removeData;var Ltt=cg,lb={};function rC(y){return function(p){var x=this;if(p===void 0&&(p=!0),x.length!==0)if(x.isNode()&&!x.removed()){for(var C=0,L=x[0],O=L._private.edges,P=0;Pp}),minIndegree:i6("indegree",function(y,p){return yp}),minOutdegree:i6("outdegree",function(y,p){return yp})}),we(lb,{totalDegree:function(p){for(var x=0,C=this.nodes(),L=0;L0,it=Q;Q&&(G=G[0]);var lt=it?G.position():{x:0,y:0};x!==void 0?z.position(p,x+lt[p]):O!==void 0&&z.position({x:O.x+lt.x,y:O.y+lt.y})}else{var dt=C.position(),vt=$?C.parent():null,Mt=vt&&vt.length>0,kt=Mt;Mt&&(vt=vt[0]);var It=kt?vt.position():{x:0,y:0};return O={x:dt.x-It.x,y:dt.y-It.y},p===void 0?O:O[p]}else if(!P)return;return this}},hb.modelPosition=hb.point=hb.position,hb.modelPositions=hb.points=hb.positions,hb.renderedPoint=hb.renderedPosition,hb.relativePoint=hb.relativePosition;var Mtt=SR,s6,fy;s6=fy={},fy.renderedBoundingBox=function(y){var p=this.boundingBox(y),x=this.cy(),C=x.zoom(),L=x.pan(),O=p.x1*C+L.x,P=p.x2*C+L.x,$=p.y1*C+L.y,H=p.y2*C+L.y;return{x1:O,x2:P,y1:$,y2:H,w:P-O,h:H-$}},fy.dirtyCompoundBoundsCache=function(){var y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,p=this.cy();return!p.styleEnabled()||!p.hasCompoundNodes()?this:(this.forEachUp(function(x){if(x.isParent()){var C=x._private;C.compoundBoundsClean=!1,C.bbCache=null,y||x.emitAndNotify("bounds")}}),this)},fy.updateCompoundBounds=function(){var y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,p=this.cy();if(!p.styleEnabled()||!p.hasCompoundNodes())return this;if(!y&&p.batching())return this;function x(P){if(!P.isParent())return;var $=P._private,H=P.children(),z=P.pstyle("compound-sizing-wrt-labels").value==="include",G={width:{val:P.pstyle("min-width").pfValue,left:P.pstyle("min-width-bias-left"),right:P.pstyle("min-width-bias-right")},height:{val:P.pstyle("min-height").pfValue,top:P.pstyle("min-height-bias-top"),bottom:P.pstyle("min-height-bias-bottom")}},Q=H.boundingBox({includeLabels:z,includeOverlays:!1,useCache:!1}),it=$.position;(Q.w===0||Q.h===0)&&(Q={w:P.pstyle("width").pfValue,h:P.pstyle("height").pfValue},Q.x1=it.x-Q.w/2,Q.x2=it.x+Q.w/2,Q.y1=it.y-Q.h/2,Q.y2=it.y+Q.h/2);function lt(Yt,ye,xe){var de=0,ze=0,ke=ye+xe;return Yt>0&&ke>0&&(de=ye/ke*Yt,ze=xe/ke*Yt),{biasDiff:de,biasComplementDiff:ze}}function dt(Yt,ye,xe,de){if(xe.units==="%")switch(de){case"width":return Yt>0?xe.pfValue*Yt:0;case"height":return ye>0?xe.pfValue*ye:0;case"average":return Yt>0&&ye>0?xe.pfValue*(Yt+ye)/2:0;case"min":return Yt>0&&ye>0?Yt>ye?xe.pfValue*ye:xe.pfValue*Yt:0;case"max":return Yt>0&&ye>0?Yt>ye?xe.pfValue*Yt:xe.pfValue*ye:0;default:return 0}else return xe.units==="px"?xe.pfValue:0}var vt=G.width.left.value;G.width.left.units==="px"&&G.width.val>0&&(vt=vt*100/G.width.val);var Mt=G.width.right.value;G.width.right.units==="px"&&G.width.val>0&&(Mt=Mt*100/G.width.val);var kt=G.height.top.value;G.height.top.units==="px"&&G.height.val>0&&(kt=kt*100/G.height.val);var It=G.height.bottom.value;G.height.bottom.units==="px"&&G.height.val>0&&(It=It*100/G.height.val);var Pt=lt(G.width.val-Q.w,vt,Mt),qt=Pt.biasDiff,ce=Pt.biasComplementDiff,ee=lt(G.height.val-Q.h,kt,It),Ut=ee.biasDiff,ue=ee.biasComplementDiff;$.autoPadding=dt(Q.w,Q.h,P.pstyle("padding"),P.pstyle("padding-relative-to").value),$.autoWidth=Math.max(Q.w,G.width.val),it.x=(-qt+Q.x1+Q.x2+ce)/2,$.autoHeight=Math.max(Q.h,G.height.val),it.y=(-Ut+Q.y1+Q.y2+ue)/2}for(var C=0;Cp.x2?L:p.x2,p.y1=Cp.y2?O:p.y2,p.w=p.x2-p.x1,p.h=p.y2-p.y1)},y4=function(p,x){return x==null?p:fb(p,x.x1,x.y1,x.x2,x.y2)},$8=function(p,x,C){return ub(p,x,C)},iC=function(p,x,C){if(!x.cy().headless()){var L=x._private,O=L.rstyle,P=O.arrowWidth/2,$=x.pstyle(C+"-arrow-shape").value,H,z;if($!=="none"){C==="source"?(H=O.srcX,z=O.srcY):C==="target"?(H=O.tgtX,z=O.tgtY):(H=O.midX,z=O.midY);var G=L.arrowBounds=L.arrowBounds||{},Q=G[C]=G[C]||{};Q.x1=H-P,Q.y1=z-P,Q.x2=H+P,Q.y2=z+P,Q.w=Q.x2-Q.x1,Q.h=Q.y2-Q.y1,G9(Q,1),fb(p,Q.x1,Q.y1,Q.x2,Q.y2)}}},JM=function(p,x,C){if(!x.cy().headless()){var L;C?L=C+"-":L="";var O=x._private,P=O.rstyle,$=x.pstyle(L+"label").strValue;if($){var H=x.pstyle("text-halign"),z=x.pstyle("text-valign"),G=$8(P,"labelWidth",C),Q=$8(P,"labelHeight",C),it=$8(P,"labelX",C),lt=$8(P,"labelY",C),dt=x.pstyle(L+"text-margin-x").pfValue,vt=x.pstyle(L+"text-margin-y").pfValue,Mt=x.isEdge(),kt=x.pstyle(L+"text-rotation"),It=x.pstyle("text-outline-width").pfValue,Pt=x.pstyle("text-border-width").pfValue,qt=Pt/2,ce=x.pstyle("text-background-padding").pfValue,ee=2,Ut=Q,ue=G,Yt=ue/2,ye=Ut/2,xe,de,ze,ke;if(Mt)xe=it-Yt,de=it+Yt,ze=lt-ye,ke=lt+ye;else{switch(H.value){case"left":xe=it-ue,de=it;break;case"center":xe=it-Yt,de=it+Yt;break;case"right":xe=it,de=it+ue;break}switch(z.value){case"top":ze=lt-Ut,ke=lt;break;case"center":ze=lt-ye,ke=lt+ye;break;case"bottom":ze=lt,ke=lt+Ut;break}}xe+=dt-Math.max(It,qt)-ce-ee,de+=dt+Math.max(It,qt)+ce+ee,ze+=vt-Math.max(It,qt)-ce-ee,ke+=vt+Math.max(It,qt)+ce+ee;var xn=C||"main",tn=O.labelBounds,an=tn[xn]=tn[xn]||{};an.x1=xe,an.y1=ze,an.x2=de,an.y2=ke,an.w=de-xe,an.h=ke-ze;var Sn=Mt&&kt.strValue==="autorotate",Vn=kt.pfValue!=null&&kt.pfValue!==0;if(Sn||Vn){var or=Sn?$8(O.rstyle,"labelAngle",C):kt.pfValue,Rn=Math.cos(or),ar=Math.sin(or),yr=(xe+de)/2,kr=(ze+ke)/2;if(!Mt){switch(H.value){case"left":yr=de;break;case"right":yr=xe;break}switch(z.value){case"top":kr=ke;break;case"bottom":kr=ze;break}}var br=function(ga,Li){return ga=ga-yr,Li=Li-kr,{x:ga*Rn-Li*ar+yr,y:ga*ar+Li*Rn+kr}},dr=br(xe,ze),kn=br(xe,ke),wr=br(de,ze),Ar=br(de,ke);xe=Math.min(dr.x,kn.x,wr.x,Ar.x),de=Math.max(dr.x,kn.x,wr.x,Ar.x),ze=Math.min(dr.y,kn.y,wr.y,Ar.y),ke=Math.max(dr.y,kn.y,wr.y,Ar.y)}var ci=xn+"Rot",ui=tn[ci]=tn[ci]||{};ui.x1=xe,ui.y1=ze,ui.x2=de,ui.y2=ke,ui.w=de-xe,ui.h=ke-ze,fb(p,xe,ze,de,ke),fb(O.labelBounds.all,xe,ze,de,ke)}return p}},Dtt=function(p,x){var C=p._private.cy,L=C.styleEnabled(),O=C.headless(),P=m0(),$=p._private,H=p.isNode(),z=p.isEdge(),G,Q,it,lt,dt,vt,Mt=$.rstyle,kt=H&&L?p.pstyle("bounds-expansion").pfValue:[0],It=function(ys){return ys.pstyle("display").value!=="none"},Pt=!L||It(p)&&(!z||It(p.source())&&It(p.target()));if(Pt){var qt=0,ce=0;L&&x.includeOverlays&&(qt=p.pstyle("overlay-opacity").value,qt!==0&&(ce=p.pstyle("overlay-padding").value));var ee=0,Ut=0;L&&x.includeUnderlays&&(ee=p.pstyle("underlay-opacity").value,ee!==0&&(Ut=p.pstyle("underlay-padding").value));var ue=Math.max(ce,Ut),Yt=0,ye=0;if(L&&(Yt=p.pstyle("width").pfValue,ye=Yt/2),H&&x.includeNodes){var xe=p.position();dt=xe.x,vt=xe.y;var de=p.outerWidth(),ze=de/2,ke=p.outerHeight(),xn=ke/2;G=dt-ze,Q=dt+ze,it=vt-xn,lt=vt+xn,fb(P,G,it,Q,lt)}else if(z&&x.includeEdges)if(L&&!O){var tn=p.pstyle("curve-style").strValue;if(G=Math.min(Mt.srcX,Mt.midX,Mt.tgtX),Q=Math.max(Mt.srcX,Mt.midX,Mt.tgtX),it=Math.min(Mt.srcY,Mt.midY,Mt.tgtY),lt=Math.max(Mt.srcY,Mt.midY,Mt.tgtY),G-=ye,Q+=ye,it-=ye,lt+=ye,fb(P,G,it,Q,lt),tn==="haystack"){var an=Mt.haystackPts;if(an&&an.length===2){if(G=an[0].x,it=an[0].y,Q=an[1].x,lt=an[1].y,G>Q){var Sn=G;G=Q,Q=Sn}if(it>lt){var Vn=it;it=lt,lt=Vn}fb(P,G-ye,it-ye,Q+ye,lt+ye)}}else if(tn==="bezier"||tn==="unbundled-bezier"||tn==="segments"||tn==="taxi"){var or;switch(tn){case"bezier":case"unbundled-bezier":or=Mt.bezierPts;break;case"segments":case"taxi":or=Mt.linePts;break}if(or!=null)for(var Rn=0;RnQ){var kn=G;G=Q,Q=kn}if(it>lt){var wr=it;it=lt,lt=wr}G-=ye,Q+=ye,it-=ye,lt+=ye,fb(P,G,it,Q,lt)}if(L&&x.includeEdges&&z&&(iC(P,p,"mid-source"),iC(P,p,"mid-target"),iC(P,p,"source"),iC(P,p,"target")),L){var Ar=p.pstyle("ghost").value==="yes";if(Ar){var ci=p.pstyle("ghost-offset-x").pfValue,ui=p.pstyle("ghost-offset-y").pfValue;fb(P,P.x1+ci,P.y1+ui,P.x2+ci,P.y2+ui)}}var ps=$.bodyBounds=$.bodyBounds||{};AB(ps,P),IM(ps,kt),G9(ps,1),L&&(G=P.x1,Q=P.x2,it=P.y1,lt=P.y2,fb(P,G-ue,it-ue,Q+ue,lt+ue));var ga=$.overlayBounds=$.overlayBounds||{};AB(ga,P),IM(ga,kt),G9(ga,1);var Li=$.labelBounds=$.labelBounds||{};Li.all!=null?cQ(Li.all):Li.all=m0(),L&&x.includeLabels&&(x.includeMainLabels&&JM(P,p,null),z&&(x.includeSourceLabels&&JM(P,p,"source"),x.includeTargetLabels&&JM(P,p,"target")))}return P.x1=ap(P.x1),P.y1=ap(P.y1),P.x2=ap(P.x2),P.y2=ap(P.y2),P.w=ap(P.x2-P.x1),P.h=ap(P.y2-P.y1),P.w>0&&P.h>0&&Pt&&(IM(P,kt),G9(P,1)),P},MR=function(p){var x=0,C=function(P){return(P?1:0)<0&&arguments[0]!==void 0?arguments[0]:Htt,p=arguments.length>1?arguments[1]:void 0,x=0;x<$R.length;x++){var C=$R[x];this[C]=y[C]||jR[C]}this.context=p||this.context,this.listeners=[],this.emitting=0}var dy=aC.prototype,zR=function(p,x,C,L,O,P,$){mt(L)&&(O=L,L=null),$&&(P==null?P=$:P=we({},P,$));for(var H=gt(C)?C:C.split(/\s+/),z=0;z=0;$--)P($);return this},dy.removeAllListeners=function(){return this.removeListener("*")},dy.emit=dy.trigger=function(y,p,x){var C=this.listeners,L=C.length;return this.emitting++,gt(p)||(p=[p]),Vtt(this,function(O,P){x!=null&&(C=[{event:P.event,type:P.type,namespace:P.namespace,callback:x}],L=C.length);for(var $=function(G){var Q=C[G];if(Q.type===P.type&&(!Q.namespace||Q.namespace===P.namespace||Q.namespace===RR)&&O.eventMatches(O.context,Q,P)){var it=[P];p!=null&&TB(it,p),O.beforeEmit(O.context,Q,P),Q.conf&&Q.conf.one&&(O.listeners=O.listeners.filter(function(vt){return vt!==Q}));var lt=O.callbackContext(O.context,Q,P),dt=Q.callback.apply(lt,it);O.afterEmit(O.context,Q,P),dt===!1&&(P.stopPropagation(),P.preventDefault())}},H=0;H1&&!P){var $=this.length-1,H=this[$],z=H._private.data.id;this[$]=void 0,this[p]=H,O.set(z,{ele:H,index:p})}return this.length--,this},unmergeOne:function(p){p=p[0];var x=this._private,C=p._private.data.id,L=x.map,O=L.get(C);if(!O)return this;var P=O.index;return this.unmergeAt(P),this},unmerge:function(p){var x=this._private.cy;if(!p)return this;if(p&&yt(p)){var C=p;p=x.mutableElements().filter(C)}for(var L=0;L=0;x--){var C=this[x];p(C)&&this.unmergeAt(x)}return this},map:function(p,x){for(var C=[],L=this,O=0;OC&&(C=H,L=$)}return{value:C,ele:L}},min:function(p,x){for(var C=1/0,L,O=this,P=0;P=0&&O"u"?"undefined":f(Symbol))!=p&&f(Symbol.iterator)!=p;x&&(a6[Symbol.iterator]=function(){var C=this,L={value:void 0,done:!1},O=0,P=this.length;return b({next:function(){return O1&&arguments[1]!==void 0?arguments[1]:!0,C=this[0],L=C.cy();if(L.styleEnabled()&&C){this.cleanStyle();var O=C._private.style[p];return O??(x?L.style().getDefaultProperty(p):null)}},numericStyle:function(p){var x=this[0];if(x.cy().styleEnabled()&&x){var C=x.pstyle(p);return C.pfValue!==void 0?C.pfValue:C.value}},numericStyleUnits:function(p){var x=this[0];if(x.cy().styleEnabled()&&x)return x.pstyle(p).units},renderedStyle:function(p){var x=this.cy();if(!x.styleEnabled())return this;var C=this[0];if(C)return x.style().getRenderedStyle(C,p)},style:function(p,x){var C=this.cy();if(!C.styleEnabled())return this;var L=!1,O=C.style();if(ht(p)){var P=p;O.applyBypass(this,P,L),this.emitAndNotify("style")}else if(yt(p))if(x===void 0){var $=this[0];return $?O.getStylePropertyValue($,p):void 0}else O.applyBypass(this,p,x,L),this.emitAndNotify("style");else if(p===void 0){var H=this[0];return H?O.getRawStyle(H):void 0}return this},removeStyle:function(p){var x=this.cy();if(!x.styleEnabled())return this;var C=!1,L=x.style(),O=this;if(p===void 0)for(var P=0;P0&&p.push(G[0]),p.push($[0])}return this.spawn(p,!0).filter(y)},"neighborhood"),closedNeighborhood:function(p){return this.neighborhood().add(this).filter(p)},openNeighborhood:function(p){return this.neighborhood(p)}}),Sf.neighbourhood=Sf.neighborhood,Sf.closedNeighbourhood=Sf.closedNeighborhood,Sf.openNeighbourhood=Sf.openNeighborhood,we(Sf,{source:sp(function(p){var x=this[0],C;return x&&(C=x._private.source||x.cy().collection()),C&&p?C.filter(p):C},"source"),target:sp(function(p){var x=this[0],C;return x&&(C=x._private.target||x.cy().collection()),C&&p?C.filter(p):C},"target"),sources:QR({attr:"source"}),targets:QR({attr:"target"})});function QR(y){return function(x){for(var C=[],L=0;L0);return P},component:function(){var p=this[0];return p.cy().mutableElements().components(p)[0]}}),Sf.componentsOf=Sf.components;var g1=function(p,x){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,L=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(p===void 0){jl("A collection must have a reference to the core");return}var O=new M2,P=!1;if(!x)x=[];else if(x.length>0&&ht(x[0])&&!V(x[0])){P=!0;for(var $=[],H=new Ux,z=0,G=x.length;z0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,x=this,C=x.cy(),L=C._private,O=[],P=[],$,H=0,z=x.length;H0){for(var Vn=$.length===x.length?x:new g1(C,$),or=0;or0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,x=this,C=[],L={},O=x._private.cy;function P(ke){for(var xn=ke._private.edges,tn=0;tn0&&(y?xe.emitAndNotify("remove"):p&&xe.emit("remove"));for(var de=0;de0?de=ke:xe=ke;while(Math.abs(ze)>P&&++xn<$);return ke}function ce(ye){for(var xe=0,de=1,ze=H-1;de!==ze&&it[de]<=ye;++de)xe+=z;--de;var ke=(ye-it[de])/(it[de+1]-it[de]),xn=xe+ke*z,tn=kt(xn,y,x);return tn>=O?It(ye,xn):tn===0?xn:qt(ye,xe,xe+z)}var ee=!1;function Ut(){ee=!0,(y!==p||x!==C)&&Pt()}var ue=function(xe){return ee||Ut(),y===p&&x===C?xe:xe===0?0:xe===1?1:Mt(ce(xe),p,C)};ue.getControlPoints=function(){return[{x:y,y:p},{x,y:C}]};var Yt="generateBezier("+[y,p,x,C]+")";return ue.toString=function(){return Yt},ue}/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */var Ztt=function(){function y(C){return-C.tension*C.x-C.friction*C.v}function p(C,L,O){var P={x:C.x+O.dx*L,v:C.v+O.dv*L,tension:C.tension,friction:C.friction};return{dx:P.v,dv:y(P)}}function x(C,L){var O={dx:C.v,dv:y(C)},P=p(C,L*.5,O),$=p(C,L*.5,P),H=p(C,L,$),z=1/6*(O.dx+2*(P.dx+$.dx)+H.dx),G=1/6*(O.dv+2*(P.dv+$.dv)+H.dv);return C.x=C.x+z*L,C.v=C.v+G*L,C}return function C(L,O,P){var $={x:-1,v:0,tension:null,friction:null},H=[0],z=0,G=1/1e4,Q=16/1e3,it,lt,dt;for(L=parseFloat(L)||500,O=parseFloat(O)||20,P=P||null,$.tension=L,$.friction=O,it=P!==null,it?(z=C(L,O),lt=z/P*Q):lt=Q;dt=x(dt||$,lt),H.push(1+dt.x),z+=16,Math.abs(dt.x)>G&&Math.abs(dt.v)>G;);return it?function(vt){return H[vt*(H.length-1)|0]}:z}}(),Bu=function(p,x,C,L){var O=Jtt(p,x,C,L);return function(P,$,H){return P+($-P)*O(H)}},uC={linear:function(p,x,C){return p+(x-p)*C},ease:Bu(.25,.1,.25,1),"ease-in":Bu(.42,0,1,1),"ease-out":Bu(0,0,.58,1),"ease-in-out":Bu(.42,0,.58,1),"ease-in-sine":Bu(.47,0,.745,.715),"ease-out-sine":Bu(.39,.575,.565,1),"ease-in-out-sine":Bu(.445,.05,.55,.95),"ease-in-quad":Bu(.55,.085,.68,.53),"ease-out-quad":Bu(.25,.46,.45,.94),"ease-in-out-quad":Bu(.455,.03,.515,.955),"ease-in-cubic":Bu(.55,.055,.675,.19),"ease-out-cubic":Bu(.215,.61,.355,1),"ease-in-out-cubic":Bu(.645,.045,.355,1),"ease-in-quart":Bu(.895,.03,.685,.22),"ease-out-quart":Bu(.165,.84,.44,1),"ease-in-out-quart":Bu(.77,0,.175,1),"ease-in-quint":Bu(.755,.05,.855,.06),"ease-out-quint":Bu(.23,1,.32,1),"ease-in-out-quint":Bu(.86,0,.07,1),"ease-in-expo":Bu(.95,.05,.795,.035),"ease-out-expo":Bu(.19,1,.22,1),"ease-in-out-expo":Bu(1,0,0,1),"ease-in-circ":Bu(.6,.04,.98,.335),"ease-out-circ":Bu(.075,.82,.165,1),"ease-in-out-circ":Bu(.785,.135,.15,.86),spring:function(p,x,C){if(C===0)return uC.linear;var L=Ztt(p,x,C);return function(O,P,$){return O+(P-O)*L($)}},"cubic-bezier":Bu};function tj(y,p,x,C,L){if(C===1||p===x)return x;var O=L(p,x,C);return y==null||((y.roundValue||y.color)&&(O=Math.round(O)),y.min!==void 0&&(O=Math.max(O,y.min)),y.max!==void 0&&(O=Math.min(O,y.max))),O}function ej(y,p){return y.pfValue!=null||y.value!=null?y.pfValue!=null&&(p==null||p.type.units!=="%")?y.pfValue:y.value:y}function c6(y,p,x,C,L){var O=L!=null?L.type:null;x<0?x=0:x>1&&(x=1);var P=ej(y,L),$=ej(p,L);if(Z(P)&&Z($))return tj(O,P,$,x,C);if(gt(P)&>($)){for(var H=[],z=0;z<$.length;z++){var G=P[z],Q=$[z];if(G!=null&&Q!=null){var it=tj(O,G,Q,x,C);H.push(it)}else H.push(Q)}return H}}function tet(y,p,x,C){var L=!C,O=y._private,P=p._private,$=P.easing,H=P.startTime,z=C?y:y.cy(),G=z.style();if(!P.easingImpl)if($==null)P.easingImpl=uC.linear;else{var Q;if(yt($)){var it=G.parse("transition-timing-function",$);Q=it.value}else Q=$;var lt,dt;yt(Q)?(lt=Q,dt=[]):(lt=Q[1],dt=Q.slice(2).map(function(Vn){return+Vn})),dt.length>0?(lt==="spring"&&dt.push(P.duration),P.easingImpl=uC[lt].apply(null,dt)):P.easingImpl=uC[lt]}var vt=P.easingImpl,Mt;if(P.duration===0?Mt=1:Mt=(x-H)/P.duration,P.applying&&(Mt=P.progress),Mt<0?Mt=0:Mt>1&&(Mt=1),P.delay==null){var kt=P.startPosition,It=P.position;if(It&&L&&!y.locked()){var Pt={};G8(kt.x,It.x)&&(Pt.x=c6(kt.x,It.x,Mt,vt)),G8(kt.y,It.y)&&(Pt.y=c6(kt.y,It.y,Mt,vt)),y.position(Pt)}var qt=P.startPan,ce=P.pan,ee=O.pan,Ut=ce!=null&&C;Ut&&(G8(qt.x,ce.x)&&(ee.x=c6(qt.x,ce.x,Mt,vt)),G8(qt.y,ce.y)&&(ee.y=c6(qt.y,ce.y,Mt,vt)),y.emit("pan"));var ue=P.startZoom,Yt=P.zoom,ye=Yt!=null&&C;ye&&(G8(ue,Yt)&&(O.zoom=I8(O.minZoom,c6(ue,Yt,Mt,vt),O.maxZoom)),y.emit("zoom")),(Ut||ye)&&y.emit("viewport");var xe=P.style;if(xe&&xe.length>0&&L){for(var de=0;de=0;Ut--){var ue=ee[Ut];ue()}ee.splice(0,ee.length)},It=lt.length-1;It>=0;It--){var Pt=lt[It],qt=Pt._private;if(qt.stopped){lt.splice(It,1),qt.hooked=!1,qt.playing=!1,qt.started=!1,kt(qt.frames);continue}!qt.playing&&!qt.applying||(qt.playing&&qt.applying&&(qt.applying=!1),qt.started||eet(G,Pt,y),tet(G,Pt,y,Q),qt.applying&&(qt.applying=!1),kt(qt.frames),qt.step!=null&&qt.step(y),Pt.completed()&&(lt.splice(It,1),qt.hooked=!1,qt.playing=!1,qt.started=!1,kt(qt.completes)),vt=!0)}return!Q&<.length===0&&dt.length===0&&C.push(G),vt}for(var O=!1,P=0;P0?p.notify("draw",x):p.notify("draw")),x.unmerge(C),p.emit("step")}var net={animate:Uc.animate(),animation:Uc.animation(),animated:Uc.animated(),clearQueue:Uc.clearQueue(),delay:Uc.delay(),delayAnimation:Uc.delayAnimation(),stop:Uc.stop(),addToAnimationPool:function(p){var x=this;x.styleEnabled()&&x._private.aniEles.merge(p)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var p=this;if(p._private.animationsRunning=!0,!p.styleEnabled())return;function x(){p._private.animationsRunning&&h1(function(O){nj(O,p),x()})}var C=p.renderer();C&&C.beforeRender?C.beforeRender(function(O,P){nj(P,p)},C.beforeRenderPriorities.animations):x()}},ret={qualifierCompare:function(p,x){return p==null||x==null?p==null&&x==null:p.sameText(x)},eventMatches:function(p,x,C){var L=x.qualifier;return L!=null?p!==C.target&&V(C.target)&&L.matches(C.target):!0},addEventFields:function(p,x){x.cy=p,x.target=p},callbackContext:function(p,x,C){return x.qualifier!=null?C.target:p}},lC=function(p){return yt(p)?new ly(p):p},rj={createEmitter:function(){var p=this._private;return p.emitter||(p.emitter=new aC(ret,this)),this},emitter:function(){return this._private.emitter},on:function(p,x,C){return this.emitter().on(p,lC(x),C),this},removeListener:function(p,x,C){return this.emitter().removeListener(p,lC(x),C),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(p,x,C){return this.emitter().one(p,lC(x),C),this},once:function(p,x,C){return this.emitter().one(p,lC(x),C),this},emit:function(p,x){return this.emitter().emit(p,x),this},emitAndNotify:function(p,x){return this.emit(p),this.notify(p,x),this}};Uc.eventAliasesOn(rj);var rD={png:function(p){var x=this._private.renderer;return p=p||{},x.png(p)},jpg:function(p){var x=this._private.renderer;return p=p||{},p.bg=p.bg||"#fff",x.jpg(p)}};rD.jpeg=rD.jpg;var hC={layout:function(p){var x=this;if(p==null){jl("Layout options must be specified to make a layout");return}if(p.name==null){jl("A `name` must be specified to make a layout");return}var C=p.name,L=x.extension("layout",C);if(L==null){jl("No such layout `"+C+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var O;yt(p.eles)?O=x.$(p.eles):O=p.eles!=null?p.eles:x.$();var P=new L(we({},p,{cy:x,eles:O}));return P}};hC.createLayout=hC.makeLayout=hC.layout;var iet={notify:function(p,x){var C=this._private;if(this.batching()){C.batchNotifications=C.batchNotifications||{};var L=C.batchNotifications[p]=C.batchNotifications[p]||this.collection();x!=null&&L.merge(x);return}if(C.notificationsEnabled){var O=this.renderer();this.destroyed()||!O||O.notify(p,x)}},notifications:function(p){var x=this._private;return p===void 0?x.notificationsEnabled:(x.notificationsEnabled=!!p,this)},noNotifications:function(p){this.notifications(!1),p(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var p=this._private;return p.batchCount==null&&(p.batchCount=0),p.batchCount===0&&(p.batchStyleEles=this.collection(),p.batchNotifications={}),p.batchCount++,this},endBatch:function(){var p=this._private;if(p.batchCount===0)return this;if(p.batchCount--,p.batchCount===0){p.batchStyleEles.updateStyle();var x=this.renderer();Object.keys(p.batchNotifications).forEach(function(C){var L=p.batchNotifications[C];L.empty()?x.notify(C):x.notify(C,L)})}return this},batch:function(p){return this.startBatch(),p(),this.endBatch(),this},batchData:function(p){var x=this;return this.batch(function(){for(var C=Object.keys(p),L=0;L0;)x.removeChild(x.childNodes[0]);p._private.renderer=null,p.mutableElements().forEach(function(C){var L=C._private;L.rscratch={},L.rstyle={},L.animation.current=[],L.animation.queue=[]})},onRender:function(p){return this.on("render",p)},offRender:function(p){return this.off("render",p)}};iD.invalidateDimensions=iD.resize;var fC={collection:function(p,x){return yt(p)?this.$(p):Et(p)?p.collection():gt(p)?(x||(x={}),new g1(this,p,x.unique,x.removed)):new g1(this)},nodes:function(p){var x=this.$(function(C){return C.isNode()});return p?x.filter(p):x},edges:function(p){var x=this.$(function(C){return C.isEdge()});return p?x.filter(p):x},$:function(p){var x=this._private.elements;return p?x.filter(p):x.spawnSelf()},mutableElements:function(){return this._private.elements}};fC.elements=fC.filter=fC.$;var H1={},K8="t",aet="f";H1.apply=function(y){for(var p=this,x=p._private,C=x.cy,L=C.collection(),O=0;O0;if(it||Q&<){var dt=void 0;it&<||it?dt=z.properties:lt&&(dt=z.mappedProperties);for(var vt=0;vt1&&(qt=1),$.color){var ee=C.valueMin[0],Ut=C.valueMax[0],ue=C.valueMin[1],Yt=C.valueMax[1],ye=C.valueMin[2],xe=C.valueMax[2],de=C.valueMin[3]==null?1:C.valueMin[3],ze=C.valueMax[3]==null?1:C.valueMax[3],ke=[Math.round(ee+(Ut-ee)*qt),Math.round(ue+(Yt-ue)*qt),Math.round(ye+(xe-ye)*qt),Math.round(de+(ze-de)*qt)];O={bypass:C.bypass,name:C.name,value:ke,strValue:"rgb("+ke[0]+", "+ke[1]+", "+ke[2]+")"}}else if($.number){var xn=C.valueMin+(C.valueMax-C.valueMin)*qt;O=this.parse(C.name,xn,C.bypass,it)}else return!1;if(!O)return vt(),!1;O.mapping=C,C=O;break}case P.data:{for(var tn=C.field.split("."),an=Q.data,Sn=0;Sn0&&O>0){for(var $={},H=!1,z=0;z0?y.delayAnimation(P).play().promise().then(Pt):Pt()}).then(function(){return y.animation({style:$,duration:O,easing:y.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){x.removeBypasses(y,L),y.emitAndNotify("style"),C.transitioning=!1})}else C.transitioning&&(this.removeBypasses(y,L),y.emitAndNotify("style"),C.transitioning=!1)},H1.checkTrigger=function(y,p,x,C,L,O){var P=this.properties[p],$=L(P);$!=null&&$(x,C)&&O(P)},H1.checkZOrderTrigger=function(y,p,x,C){var L=this;this.checkTrigger(y,p,x,C,function(O){return O.triggersZOrder},function(){L._private.cy.notify("zorder",y)})},H1.checkBoundsTrigger=function(y,p,x,C){this.checkTrigger(y,p,x,C,function(L){return L.triggersBounds},function(L){y.dirtyCompoundBoundsCache(),y.dirtyBoundingBoxCache(),L.triggersBoundsOfParallelBeziers&&(p==="curve-style"&&(x==="bezier"||C==="bezier")||p==="display"&&(x==="none"||C==="none"))&&y.parallelEdges().forEach(function(O){O.isBundledBezier()&&O.dirtyBoundingBoxCache()})})},H1.checkTriggers=function(y,p,x,C){y.dirtyStyleCache(),this.checkZOrderTrigger(y,p,x,C),this.checkBoundsTrigger(y,p,x,C)};var W8={};W8.applyBypass=function(y,p,x,C){var L=this,O=[],P=!0;if(p==="*"||p==="**"){if(x!==void 0)for(var $=0;$L.length?C=C.substr(L.length):C=""}function H(){O.length>P.length?O=O.substr(P.length):O=""}for(;;){var z=C.match(/^\s*$/);if(z)break;var G=C.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!G){Vc("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+C);break}L=G[0];var Q=G[1];if(Q!=="core"){var it=new ly(Q);if(it.invalid){Vc("Skipping parsing of block: Invalid selector found in string stylesheet: "+Q),$();continue}}var lt=G[2],dt=!1;O=lt;for(var vt=[];;){var Mt=O.match(/^\s*$/);if(Mt)break;var kt=O.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!kt){Vc("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+lt),dt=!0;break}P=kt[0];var It=kt[1],Pt=kt[2],qt=p.properties[It];if(!qt){Vc("Skipping property: Invalid property name in: "+P),H();continue}var ce=x.parse(It,Pt);if(!ce){Vc("Skipping property: Invalid property definition in: "+P),H();continue}vt.push({name:It,val:Pt}),H()}if(dt){$();break}x.selector(Q);for(var ee=0;ee=7&&p[0]==="d"&&(G=new RegExp($.data.regex).exec(p))){if(x)return!1;var it=$.data;return{name:y,value:G,strValue:""+p,mapped:it,field:G[1],bypass:x}}else if(p.length>=10&&p[0]==="m"&&(Q=new RegExp($.mapData.regex).exec(p))){if(x||z.multiple)return!1;var lt=$.mapData;if(!(z.color||z.number))return!1;var dt=this.parse(y,Q[4]);if(!dt||dt.mapped)return!1;var vt=this.parse(y,Q[5]);if(!vt||vt.mapped)return!1;if(dt.pfValue===vt.pfValue||dt.strValue===vt.strValue)return Vc("`"+y+": "+p+"` is not a valid mapper because the output range is zero; converting to `"+y+": "+dt.strValue+"`"),this.parse(y,dt.strValue);if(z.color){var Mt=dt.value,kt=vt.value,It=Mt[0]===kt[0]&&Mt[1]===kt[1]&&Mt[2]===kt[2]&&(Mt[3]===kt[3]||(Mt[3]==null||Mt[3]===1)&&(kt[3]==null||kt[3]===1));if(It)return!1}return{name:y,value:Q,strValue:""+p,mapped:lt,field:Q[1],fieldMin:parseFloat(Q[2]),fieldMax:parseFloat(Q[3]),valueMin:dt.value,valueMax:vt.value,bypass:x}}}if(z.multiple&&C!=="multiple"){var Pt;if(H?Pt=p.split(/\s+/):gt(p)?Pt=p:Pt=[p],z.evenMultiple&&Pt.length%2!==0)return null;for(var qt=[],ce=[],ee=[],Ut="",ue=!1,Yt=0;Yt0?" ":"")+ye.strValue}return z.validate&&!z.validate(qt,ce)?null:z.singleEnum&&ue?qt.length===1&&yt(qt[0])?{name:y,value:qt[0],strValue:qt[0],bypass:x}:null:{name:y,value:qt,pfValue:ee,strValue:Ut,bypass:x,units:ce}}var xe=function(){for(var Ar=0;Arz.max||z.strictMax&&p===z.max))return null;var tn={name:y,value:p,strValue:""+p+(de||""),units:de,bypass:x};return z.unitless||de!=="px"&&de!=="em"?tn.pfValue=p:tn.pfValue=de==="px"||!de?p:this.getEmSizeInPixels()*p,(de==="ms"||de==="s")&&(tn.pfValue=de==="ms"?p:1e3*p),(de==="deg"||de==="rad")&&(tn.pfValue=de==="rad"?p:iQ(p)),de==="%"&&(tn.pfValue=p/100),tn}else if(z.propList){var an=[],Sn=""+p;if(Sn!=="none"){for(var Vn=Sn.split(/\s*,\s*|\s+/),or=0;or0&&$>0&&!isNaN(C.w)&&!isNaN(C.h)&&C.w>0&&C.h>0){H=Math.min((P-2*x)/C.w,($-2*x)/C.h),H=H>this._private.maxZoom?this._private.maxZoom:H,H=H=C.minZoom&&(C.maxZoom=x),this},minZoom:function(p){return p===void 0?this._private.minZoom:this.zoomRange({min:p})},maxZoom:function(p){return p===void 0?this._private.maxZoom:this.zoomRange({max:p})},getZoomedViewport:function(p){var x=this._private,C=x.pan,L=x.zoom,O,P,$=!1;if(x.zoomingEnabled||($=!0),Z(p)?P=p:ht(p)&&(P=p.level,p.position!=null?O=V9(p.position,L,C):p.renderedPosition!=null&&(O=p.renderedPosition),O!=null&&!x.panningEnabled&&($=!0)),P=P>x.maxZoom?x.maxZoom:P,P=Px.maxZoom||!x.zoomingEnabled?P=!0:(x.zoom=H,O.push("zoom"))}if(L&&(!P||!p.cancelOnFailedZoom)&&x.panningEnabled){var z=p.pan;Z(z.x)&&(x.pan.x=z.x,$=!1),Z(z.y)&&(x.pan.y=z.y,$=!1),$||O.push("pan")}return O.length>0&&(O.push("viewport"),this.emit(O.join(" ")),this.notify("viewport")),this},center:function(p){var x=this.getCenterPan(p);return x&&(this._private.pan=x,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(p,x){if(this._private.panningEnabled){if(yt(p)){var C=p;p=this.mutableElements().filter(C)}else Et(p)||(p=this.mutableElements());if(p.length!==0){var L=p.boundingBox(),O=this.width(),P=this.height();x=x===void 0?this._private.zoom:x;var $={x:(O-x*(L.x1+L.x2))/2,y:(P-x*(L.y1+L.y2))/2};return $}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var p=this._private,x=p.container;return p.sizeCache=p.sizeCache||(x?function(){var C=R.getComputedStyle(x),L=function(P){return parseFloat(C.getPropertyValue(P))};return{width:x.clientWidth-L("padding-left")-L("padding-right"),height:x.clientHeight-L("padding-top")-L("padding-bottom")}}():{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var p=this._private.pan,x=this._private.zoom,C=this.renderedExtent(),L={x1:(C.x1-p.x)/x,x2:(C.x2-p.x)/x,y1:(C.y1-p.y)/x,y2:(C.y2-p.y)/x};return L.w=L.x2-L.x1,L.h=L.y2-L.y1,L},renderedExtent:function(){var p=this.width(),x=this.height();return{x1:0,y1:0,x2:p,y2:x,w:p,h:x}},multiClickDebounceTime:function(p){if(p)this._private.multiClickDebounceTime=p;else return this._private.multiClickDebounceTime;return this}};T4.centre=T4.center,T4.autolockNodes=T4.autolock,T4.autoungrabifyNodes=T4.autoungrabify;var Y8={data:Uc.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Uc.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Uc.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Uc.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Y8.attr=Y8.data,Y8.removeAttr=Y8.removeData;var X8=function(p){var x=this;p=we({},p);var C=p.container;C&&!Y(C)&&Y(C[0])&&(C=C[0]);var L=C?C._cyreg:null;L=L||{},L&&L.cy&&(L.cy.destroy(),L={});var O=L.readies=L.readies||[];C&&(C._cyreg=L),L.cy=x;var P=R!==void 0&&C!==void 0&&!p.headless,$=p;$.layout=we({name:P?"grid":"null"},$.layout),$.renderer=we({name:P?"canvas":"null"},$.renderer);var H=function(dt,vt,Mt){return vt!==void 0?vt:Mt!==void 0?Mt:dt},z=this._private={container:C,ready:!1,options:$,elements:new g1(this),listeners:[],aniEles:new g1(this),data:$.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:H(!0,$.zoomingEnabled),userZoomingEnabled:H(!0,$.userZoomingEnabled),panningEnabled:H(!0,$.panningEnabled),userPanningEnabled:H(!0,$.userPanningEnabled),boxSelectionEnabled:H(!0,$.boxSelectionEnabled),autolock:H(!1,$.autolock,$.autolockNodes),autoungrabify:H(!1,$.autoungrabify,$.autoungrabifyNodes),autounselectify:H(!1,$.autounselectify),styleEnabled:$.styleEnabled===void 0?P:$.styleEnabled,zoom:Z($.zoom)?$.zoom:1,pan:{x:ht($.pan)&&Z($.pan.x)?$.pan.x:0,y:ht($.pan)&&Z($.pan.y)?$.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:H(250,$.multiClickDebounceTime)};this.createEmitter(),this.selectionType($.selectionType),this.zoomRange({min:$.minZoom,max:$.maxZoom});var G=function(dt,vt){var Mt=dt.some(Gt);if(Mt)return Jx.all(dt).then(vt);vt(dt)};z.styleEnabled&&x.setStyle([]);var Q=we({},$,$.renderer);x.initRenderer(Q);var it=function(dt,vt,Mt){x.notifications(!1);var kt=x.mutableElements();kt.length>0&&kt.remove(),dt!=null&&(ht(dt)||gt(dt))&&x.add(dt),x.one("layoutready",function(Pt){x.notifications(!0),x.emit(Pt),x.one("load",vt),x.emitAndNotify("load")}).one("layoutstop",function(){x.one("done",Mt),x.emit("done")});var It=we({},x._private.options.layout);It.eles=x.elements(),x.layout(It).run()};G([$.style,$.elements],function(lt){var dt=lt[0],vt=lt[1];z.styleEnabled&&x.style().append(dt),it(vt,function(){x.startAnimationLoop(),z.ready=!0,mt($.ready)&&x.on("ready",$.ready);for(var Mt=0;Mt0,H=m0(p.boundingBox?p.boundingBox:{x1:0,y1:0,w:x.width(),h:x.height()}),z;if(Et(p.roots))z=p.roots;else if(gt(p.roots)){for(var G=[],Q=0;Q0;){var xn=ke(),tn=ye(xn,de);if(tn)xn.outgoers().filter(function(Li){return Li.isNode()&&C.has(Li)}).forEach(ze);else if(tn===null){Vc("Detected double maximal shift for node `"+xn.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}Yt();var an=0;if(p.avoidOverlap)for(var Sn=0;Sn0&&kt[0].length<=3?Ws/2:0),Kn=2*Math.PI/kt[Xi].length*li;return Xi===0&&kt[0].length===1&&(re=1),{x:ui.x+re*Math.cos(Kn),y:ui.y+re*Math.sin(Kn)}}else{var Nr={x:ui.x+(li+1-(qi+1)/2)*Ao,y:(Xi+1)*Ka};return Nr}};return C.nodes().layoutPositions(this,p,ga),this};var het={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:function(p,x){return!0},ready:void 0,stop:void 0,transform:function(p,x){return x}};function aj(y){this.options=we({},het,y)}aj.prototype.run=function(){var y=this.options,p=y,x=y.cy,C=p.eles,L=p.counterclockwise!==void 0?!p.counterclockwise:p.clockwise,O=C.nodes().not(":parent");p.sort&&(O=O.sort(p.sort));for(var P=m0(p.boundingBox?p.boundingBox:{x1:0,y1:0,w:x.width(),h:x.height()}),$={x:P.x1+P.w/2,y:P.y1+P.h/2},H=p.sweep===void 0?2*Math.PI-2*Math.PI/O.length:p.sweep,z=H/Math.max(1,O.length-1),G,Q=0,it=0;it1&&p.avoidOverlap){Q*=1.75;var kt=Math.cos(z)-Math.cos(0),It=Math.sin(z)-Math.sin(0),Pt=Math.sqrt(Q*Q/(kt*kt+It*It));G=Math.max(Pt,G)}var qt=function(ee,Ut){var ue=p.startAngle+Ut*z*(L?1:-1),Yt=G*Math.cos(ue),ye=G*Math.sin(ue),xe={x:$.x+Yt,y:$.y+ye};return xe};return C.nodes().layoutPositions(this,p,qt),this};var fet={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:function(p){return p.degree()},levelWidth:function(p){return p.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(p,x){return!0},ready:void 0,stop:void 0,transform:function(p,x){return x}};function oj(y){this.options=we({},fet,y)}oj.prototype.run=function(){for(var y=this.options,p=y,x=p.counterclockwise!==void 0?!p.counterclockwise:p.clockwise,C=y.cy,L=p.eles,O=L.nodes().not(":parent"),P=m0(p.boundingBox?p.boundingBox:{x1:0,y1:0,w:C.width(),h:C.height()}),$={x:P.x1+P.w/2,y:P.y1+P.h/2},H=[],z=0,G=0;G0){var ce=Math.abs(It[0].value-qt.value);ce>=Mt&&(It=[],kt.push(It))}It.push(qt)}var ee=z+p.minNodeSpacing;if(!p.avoidOverlap){var Ut=kt.length>0&&kt[0].length>1,ue=Math.min(P.w,P.h)/2-ee,Yt=ue/(kt.length+Ut?1:0);ee=Math.min(ee,Yt)}for(var ye=0,xe=0;xe1&&p.avoidOverlap){var xn=Math.cos(ke)-Math.cos(0),tn=Math.sin(ke)-Math.sin(0),an=Math.sqrt(ee*ee/(xn*xn+tn*tn));ye=Math.max(an,ye)}de.r=ye,ye+=ee}if(p.equidistant){for(var Sn=0,Vn=0,or=0;or=y.numIter||(yet(C,y),C.temperature=C.temperature*y.coolingFactor,C.temperature=y.animationThreshold&&O(),h1(Q)}};G()}else{for(;z;)z=P(H),H++;lj(C,y),$()}return this},bC.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},bC.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var get=function(p,x,C){for(var L=C.eles.edges(),O=C.eles.nodes(),P={isCompound:p.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:O.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:L.size(),temperature:C.initialTemp,clientWidth:p.width(),clientHeight:p.width(),boundingBox:m0(C.boundingBox?C.boundingBox:{x1:0,y1:0,w:p.width(),h:p.height()})},$=C.eles.components(),H={},z=0;z<$.length;z++)for(var G=$[z],Q=0;Q0){P.graphSet.push(Ut);for(var z=0;zL.count?0:L.graph},bet=function y(p,x,C,L){var O=L.graphSet[C];if(-10)var Q=L.nodeOverlap*G,it=Math.sqrt($*$+H*H),lt=Q*$/it,dt=Q*H/it;else var vt=wC(p,$,H),Mt=wC(x,-1*$,-1*H),kt=Mt.x-vt.x,It=Mt.y-vt.y,Pt=kt*kt+It*It,it=Math.sqrt(Pt),Q=(p.nodeRepulsion+x.nodeRepulsion)/Pt,lt=Q*kt/it,dt=Q*It/it;p.isLocked||(p.offsetX-=lt,p.offsetY-=dt),x.isLocked||(x.offsetX+=lt,x.offsetY+=dt)}},Eet=function(p,x,C,L){if(C>0)var O=p.maxX-x.minX;else var O=x.maxX-p.minX;if(L>0)var P=p.maxY-x.minY;else var P=x.maxY-p.minY;return O>=0&&P>=0?Math.sqrt(O*O+P*P):0},wC=function(p,x,C){var L=p.positionX,O=p.positionY,P=p.height||1,$=p.width||1,H=C/x,z=P/$,G={};return x===0&&0C?(G.x=L,G.y=O+P/2,G):0x&&-1*z<=H&&H<=z?(G.x=L-$/2,G.y=O-$*C/2/x,G):0=z)?(G.x=L+P*x/2/C,G.y=O+P/2,G):(0>C&&(H<=-1*z||H>=z)&&(G.x=L-P*x/2/C,G.y=O-P/2),G)},Tet=function(p,x){for(var C=0;CC){var Mt=x.gravity*lt/vt,kt=x.gravity*dt/vt;it.offsetX+=Mt,it.offsetY+=kt}}}}},_et=function(p,x){var C=[],L=0,O=-1;for(C.push.apply(C,p.graphSet[0]),O+=p.graphSet[0].length;L<=O;){var P=C[L++],$=p.idToIndex[P],H=p.layoutNodes[$],z=H.children;if(0C)var O={x:C*p/L,y:C*x/L};else var O={x:p,y:x};return O},Met=function y(p,x){var C=p.parentId;if(C!=null){var L=x.layoutNodes[x.idToIndex[C]],O=!1;if((L.maxX==null||p.maxX+L.padRight>L.maxX)&&(L.maxX=p.maxX+L.padRight,O=!0),(L.minX==null||p.minX-L.padLeftL.maxY)&&(L.maxY=p.maxY+L.padBottom,O=!0),(L.minY==null||p.minY-L.padTopkt&&(dt+=Mt+x.componentSpacing,lt=0,vt=0,Mt=0)}}},Det={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(p){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(p,x){return!0},ready:void 0,stop:void 0,transform:function(p,x){return x}};function hj(y){this.options=we({},Det,y)}hj.prototype.run=function(){var y=this.options,p=y,x=y.cy,C=p.eles,L=C.nodes().not(":parent");p.sort&&(L=L.sort(p.sort));var O=m0(p.boundingBox?p.boundingBox:{x1:0,y1:0,w:x.width(),h:x.height()});if(O.h===0||O.w===0)C.nodes().layoutPositions(this,p,function(yr){return{x:O.x1,y:O.y1}});else{var P=L.size(),$=Math.sqrt(P*O.h/O.w),H=Math.round($),z=Math.round(O.w/O.h*$),G=function(kr){if(kr==null)return Math.min(H,z);var br=Math.min(H,z);br==H?H=kr:z=kr},Q=function(kr){if(kr==null)return Math.max(H,z);var br=Math.max(H,z);br==H?H=kr:z=kr},it=p.rows,lt=p.cols!=null?p.cols:p.columns;if(it!=null&<!=null)H=it,z=lt;else if(it!=null&<==null)H=it,z=Math.ceil(P/H);else if(it==null&<!=null)z=lt,H=Math.ceil(P/z);else if(z*H>P){var dt=G(),vt=Q();(dt-1)*vt>=P?G(dt-1):(vt-1)*dt>=P&&Q(vt-1)}else for(;z*H=P?Q(kt+1):G(Mt+1)}var It=O.w/z,Pt=O.h/H;if(p.condense&&(It=0,Pt=0),p.avoidOverlap)for(var qt=0;qt=z&&(xn=0,ke++)},an={},Sn=0;Sn(xn=wQ(y,p,tn[an],tn[an+1],tn[an+2],tn[an+3])))return Mt(Ut,xn),!0}else if(Yt.edgeType==="bezier"||Yt.edgeType==="multibezier"||Yt.edgeType==="self"||Yt.edgeType==="compound"){for(var tn=Yt.allpts,an=0;an+5(xn=bQ(y,p,tn[an],tn[an+1],tn[an+2],tn[an+3],tn[an+4],tn[an+5])))return Mt(Ut,xn),!0}for(var Sn=Sn||ue.source,Vn=Vn||ue.target,or=L.getArrowWidth(ye,xe),Rn=[{name:"source",x:Yt.arrowStartX,y:Yt.arrowStartY,angle:Yt.srcArrowAngle},{name:"target",x:Yt.arrowEndX,y:Yt.arrowEndY,angle:Yt.tgtArrowAngle},{name:"mid-source",x:Yt.midX,y:Yt.midY,angle:Yt.midsrcArrowAngle},{name:"mid-target",x:Yt.midX,y:Yt.midY,angle:Yt.midtgtArrowAngle}],an=0;an0&&(kt(Sn),kt(Vn))}function Pt(Ut,ue,Yt){return ub(Ut,ue,Yt)}function qt(Ut,ue){var Yt=Ut._private,ye=it,xe;ue?xe=ue+"-":xe="",Ut.boundingBox();var de=Yt.labelBounds[ue||"main"],ze=Ut.pstyle(xe+"label").value,ke=Ut.pstyle("text-events").strValue==="yes";if(!(!ke||!ze)){var xn=Pt(Yt.rscratch,"labelX",ue),tn=Pt(Yt.rscratch,"labelY",ue),an=Pt(Yt.rscratch,"labelAngle",ue),Sn=Ut.pstyle(xe+"text-margin-x").pfValue,Vn=Ut.pstyle(xe+"text-margin-y").pfValue,or=de.x1-ye-Sn,Rn=de.x2+ye-Sn,ar=de.y1-ye-Vn,yr=de.y2+ye-Vn;if(an){var kr=Math.cos(an),br=Math.sin(an),dr=function(ga,Li){return ga=ga-xn,Li=Li-tn,{x:ga*kr-Li*br+xn,y:ga*br+Li*kr+tn}},kn=dr(or,ar),wr=dr(or,yr),Ar=dr(Rn,ar),ci=dr(Rn,yr),ui=[kn.x+Sn,kn.y+Vn,Ar.x+Sn,Ar.y+Vn,ci.x+Sn,ci.y+Vn,wr.x+Sn,wr.y+Vn];if(v0(y,p,ui))return Mt(Ut),!0}else if(Wx(de,y,p))return Mt(Ut),!0}}for(var ce=P.length-1;ce>=0;ce--){var ee=P[ce];ee.isNode()?kt(ee)||qt(ee):It(ee)||qt(ee)||qt(ee,"source")||qt(ee,"target")}return $},C4.getAllInBox=function(y,p,x,C){var L=this.getCachedZSortedEles().interactive,O=[],P=Math.min(y,x),$=Math.max(y,x),H=Math.min(p,C),z=Math.max(p,C);y=P,x=$,p=H,C=z;for(var G=m0({x1:y,y1:p,x2:x,y2:C}),Q=0;Q0?Math.max(as-Qn,0):Math.min(as+Qn,0)},ze=de(ye,ue),ke=de(xe,Yt),xn=!1;It===z?kt=Math.abs(ze)>Math.abs(ke)?L:C:It===H||It===$?(kt=C,xn=!0):(It===O||It===P)&&(kt=L,xn=!0);var tn=kt===C,an=tn?ke:ze,Sn=tn?xe:ye,Vn=SB(Sn),or=!1;!(xn&&(qt||ee))&&(It===$&&Sn<0||It===H&&Sn>0||It===O&&Sn>0||It===P&&Sn<0)&&(Vn*=-1,an=Vn*Math.abs(an),or=!0);var Rn;if(qt){var ar=ce<0?1+ce:ce;Rn=ar*an}else{var yr=ce<0?an:0;Rn=yr+ce*Vn}var kr=function(as){return Math.abs(as)=Math.abs(an)},br=kr(Rn),dr=kr(Math.abs(an)-Math.abs(Rn)),kn=br||dr;if(kn&&!or)if(tn){var wr=Math.abs(Sn)<=it/2,Ar=Math.abs(ye)<=lt/2;if(wr){var ci=(G.x1+G.x2)/2,ui=G.y1,ps=G.y2;x.segpts=[ci,ui,ci,ps]}else if(Ar){var ga=(G.y1+G.y2)/2,Li=G.x1,mi=G.x2;x.segpts=[Li,ga,mi,ga]}else x.segpts=[G.x1,G.y2]}else{var ys=Math.abs(Sn)<=Q/2,Xi=Math.abs(xe)<=dt/2;if(ys){var li=(G.y1+G.y2)/2,qi=G.x1,Ao=G.x2;x.segpts=[qi,li,Ao,li]}else if(Xi){var Ka=(G.x1+G.x2)/2,Ws=G.y1,Nr=G.y2;x.segpts=[Ka,Ws,Ka,Nr]}else x.segpts=[G.x2,G.y1]}else if(tn){var re=G.y1+Rn+(Mt?it/2*Vn:0),Kn=G.x1,jr=G.x2;x.segpts=[Kn,re,jr,re]}else{var hr=G.x1+Rn+(Mt?Q/2*Vn:0),J=G.y1,Wa=G.y2;x.segpts=[hr,J,hr,Wa]}},Id.tryToCorrectInvalidPoints=function(y,p){var x=y._private.rscratch;if(x.edgeType==="bezier"){var C=p.srcPos,L=p.tgtPos,O=p.srcW,P=p.srcH,$=p.tgtW,H=p.tgtH,z=p.srcShape,G=p.tgtShape,Q=!Z(x.startX)||!Z(x.startY),it=!Z(x.arrowStartX)||!Z(x.arrowStartY),lt=!Z(x.endX)||!Z(x.endY),dt=!Z(x.arrowEndX)||!Z(x.arrowEndY),vt=3,Mt=this.getArrowWidth(y.pstyle("width").pfValue,y.pstyle("arrow-scale").value)*this.arrowShapeWidth,kt=vt*Mt,It=p4({x:x.ctrlpts[0],y:x.ctrlpts[1]},{x:x.startX,y:x.startY}),Pt=Itke.poolIndex()){var xn=ze;ze=ke,ke=xn}var tn=Yt.srcPos=ze.position(),an=Yt.tgtPos=ke.position(),Sn=Yt.srcW=ze.outerWidth(),Vn=Yt.srcH=ze.outerHeight(),or=Yt.tgtW=ke.outerWidth(),Rn=Yt.tgtH=ke.outerHeight(),ar=Yt.srcShape=x.nodeShapes[p.getNodeShape(ze)],yr=Yt.tgtShape=x.nodeShapes[p.getNodeShape(ke)];Yt.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var kr=0;kr0){var wr=O,Ar=b4(wr,Gx(x)),ci=b4(wr,Gx(kn)),ui=Ar;if(ci2){var ps=b4(wr,{x:kn[2],y:kn[3]});ps0){var Kn=P,jr=b4(Kn,Gx(x)),hr=b4(Kn,Gx(re)),J=jr;if(hr2){var Wa=b4(Kn,{x:re[2],y:re[3]});Wa=dt||Ut){Mt={cp:qt,segment:ee};break}}if(Mt)break}var ue=Mt.cp,Yt=Mt.segment,ye=(dt-kt)/Yt.length,xe=Yt.t1-Yt.t0,de=lt?Yt.t0+xe*ye:Yt.t1-xe*ye;de=I8(0,de,1),p=Kx(ue.p0,ue.p1,ue.p2,de),it=Bet(ue.p0,ue.p1,ue.p2,de);break}case"straight":case"segments":case"haystack":{for(var ze=0,ke,xn,tn,an,Sn=C.allpts.length,Vn=0;Vn+3=dt));Vn+=2);var or=dt-xn,Rn=or/ke;Rn=I8(0,Rn,1),p=aQ(tn,an,Rn),it=hD(tn,an);break}}P("labelX",Q,p.x),P("labelY",Q,p.y),P("labelAutoAngle",Q,it)}};z("source"),z("target"),this.applyLabelDimensions(y)}},I2.applyLabelDimensions=function(y){this.applyPrefixedLabelDimensions(y),y.isEdge()&&(this.applyPrefixedLabelDimensions(y,"source"),this.applyPrefixedLabelDimensions(y,"target"))},I2.applyPrefixedLabelDimensions=function(y,p){var x=y._private,C=this.getLabelText(y,p),L=this.calculateLabelDimensions(y,C),O=y.pstyle("line-height").pfValue,P=y.pstyle("text-wrap").strValue,$=ub(x.rscratch,"labelWrapCachedLines",p)||[],H=P!=="wrap"?1:Math.max($.length,1),z=L.height/H,G=z*O,Q=L.width,it=L.height+(H-1)*(O-1)*z;oy(x.rstyle,"labelWidth",p,Q),oy(x.rscratch,"labelWidth",p,Q),oy(x.rstyle,"labelHeight",p,it),oy(x.rscratch,"labelHeight",p,it),oy(x.rscratch,"labelLineHeight",p,G)},I2.getLabelText=function(y,p){var x=y._private,C=p?p+"-":"",L=y.pstyle(C+"label").strValue,O=y.pstyle("text-transform").value,P=function(or,Rn){return Rn?(oy(x.rscratch,or,p,Rn),Rn):ub(x.rscratch,or,p)};if(!L)return"";O=="none"||(O=="uppercase"?L=L.toUpperCase():O=="lowercase"&&(L=L.toLowerCase()));var $=y.pstyle("text-wrap").value;if($==="wrap"){var H=P("labelKey");if(H!=null&&P("labelWrapKey")===H)return P("labelWrapCachedText");for(var z="​",G=L.split(` +`),Q=y.pstyle("text-max-width").pfValue,it=y.pstyle("text-overflow-wrap").value,lt=it==="anywhere",dt=[],vt=/[\s\u200b]+/,Mt=lt?"":" ",kt=0;ktQ){for(var ee=It.split(vt),Ut="",ue=0;ueze)break;ke+=L[an],an===L.length-1&&(tn=!0)}return tn||(ke+=xn),ke}return L},I2.getLabelJustification=function(y){var p=y.pstyle("text-justification").strValue,x=y.pstyle("text-halign").strValue;if(p==="auto")if(y.isNode())switch(x){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return p},I2.calculateLabelDimensions=function(y,p){var x=this,C=Ld(p,y._private.labelDimsKey),L=x.labelDimCache||(x.labelDimCache=[]),O=L[C];if(O!=null)return O;var P=0,$=y.pstyle("font-style").strValue,H=y.pstyle("font-size").pfValue,z=y.pstyle("font-family").strValue,G=y.pstyle("font-weight").strValue,Q=this.labelCalcCanvas,it=this.labelCalcCanvasContext;if(!Q){Q=this.labelCalcCanvas=document.createElement("canvas"),it=this.labelCalcCanvasContext=Q.getContext("2d");var lt=Q.style;lt.position="absolute",lt.left="-9999px",lt.top="-9999px",lt.zIndex="-1",lt.visibility="hidden",lt.pointerEvents="none"}it.font="".concat($," ").concat(G," ").concat(H,"px ").concat(z);for(var dt=0,vt=0,Mt=p.split(` +`),kt=0;kt1&&arguments[1]!==void 0?arguments[1]:!0;if(p.merge(P),$)for(var H=0;H=y.desktopTapThreshold2}var om=C(re);Lf&&(y.hoverData.tapholdCancelled=!0);var by=function(){var P2=y.hoverData.dragDelta=y.hoverData.dragDelta||[];P2.length===0?(P2.push(lo[0]),P2.push(lo[1])):(P2[0]+=lo[0],P2[1]+=lo[1])};jr=!0,x(uo,["mousemove","vmousemove","tapdrag"],re,{x:$r[0],y:$r[1]});var w6=function(){y.data.bgActivePosistion=void 0,y.hoverData.selecting||hr.emit({originalEvent:re,type:"boxstart",position:{x:$r[0],y:$r[1]}}),Jc[4]=1,y.hoverData.selecting=!0,y.redrawHint("select",!0),y.redraw()};if(y.hoverData.which===3){if(Lf){var _4={originalEvent:re,type:"cxtdrag",position:{x:$r[0],y:$r[1]}};za?za.emit(_4):hr.emit(_4),y.hoverData.cxtDragged=!0,(!y.hoverData.cxtOver||uo!==y.hoverData.cxtOver)&&(y.hoverData.cxtOver&&y.hoverData.cxtOver.emit({originalEvent:re,type:"cxtdragout",position:{x:$r[0],y:$r[1]}}),y.hoverData.cxtOver=uo,uo&&uo.emit({originalEvent:re,type:"cxtdragover",position:{x:$r[0],y:$r[1]}}))}}else if(y.hoverData.dragging){if(jr=!0,hr.panningEnabled()&&hr.userPanningEnabled()){var m6;if(y.hoverData.justStartedPan){var SC=y.hoverData.mdownPos;m6={x:($r[0]-SC[0])*J,y:($r[1]-SC[1])*J},y.hoverData.justStartedPan=!1}else m6={x:lo[0]*J,y:lo[1]*J};hr.panBy(m6),hr.emit("dragpan"),y.hoverData.dragged=!0}$r=y.projectIntoViewport(re.clientX,re.clientY)}else if(Jc[4]==1&&(za==null||za.pannable())){if(Lf){if(!y.hoverData.dragging&&hr.boxSelectionEnabled()&&(om||!hr.panningEnabled()||!hr.userPanningEnabled()))w6();else if(!y.hoverData.selecting&&hr.panningEnabled()&&hr.userPanningEnabled()){var S4=L(za,y.hoverData.downs);S4&&(y.hoverData.dragging=!0,y.hoverData.justStartedPan=!0,Jc[4]=0,y.data.bgActivePosistion=Gx(as),y.redrawHint("select",!0),y.redraw())}za&&za.pannable()&&za.active()&&za.unactivate()}}else{if(za&&za.pannable()&&za.active()&&za.unactivate(),(!za||!za.grabbed())&&uo!=Dc&&(Dc&&x(Dc,["mouseout","tapdragout"],re,{x:$r[0],y:$r[1]}),uo&&x(uo,["mouseover","tapdragover"],re,{x:$r[0],y:$r[1]}),y.hoverData.last=uo),za)if(Lf){if(hr.boxSelectionEnabled()&&om)za&&za.grabbed()&&(vt(_l),za.emit("freeon"),_l.emit("free"),y.dragData.didDrag&&(za.emit("dragfreeon"),_l.emit("dragfree"))),w6();else if(za&&za.grabbed()&&y.nodeIsDraggable(za)){var y0=!y.dragData.didDrag;y0&&y.redrawHint("eles",!0),y.dragData.didDrag=!0,y.hoverData.draggingEles||lt(_l,{inDragLayer:!0});var G1={x:0,y:0};if(Z(lo[0])&&Z(lo[1])&&(G1.x+=lo[0],G1.y+=lo[1],y0)){var x0=y.hoverData.dragDelta;x0&&Z(x0[0])&&Z(x0[1])&&(G1.x+=x0[0],G1.y+=x0[1])}y.hoverData.draggingEles=!0,_l.silentShift(G1).emit("position drag"),y.redrawHint("drag",!0),y.redraw()}}else by();jr=!0}if(Jc[2]=$r[0],Jc[3]=$r[1],jr)return re.stopPropagation&&re.stopPropagation(),re.preventDefault&&re.preventDefault(),!1}},!1);var Yt,ye,xe;y.registerBinding(window,"mouseup",function(re){var Kn=y.hoverData.capture;if(Kn){y.hoverData.capture=!1;var jr=y.cy,hr=y.projectIntoViewport(re.clientX,re.clientY),J=y.selection,Wa=y.findNearestElement(hr[0],hr[1],!0,!1),$r=y.dragData.possibleDragElements,as=y.hoverData.down,Qn=C(re);if(y.data.bgActivePosistion&&(y.redrawHint("select",!0),y.redraw()),y.hoverData.tapholdCancelled=!0,y.data.bgActivePosistion=void 0,as&&as.unactivate(),y.hoverData.which===3){var Jc={originalEvent:re,type:"cxttapend",position:{x:hr[0],y:hr[1]}};if(as?as.emit(Jc):jr.emit(Jc),!y.hoverData.cxtDragged){var uo={originalEvent:re,type:"cxttap",position:{x:hr[0],y:hr[1]}};as?as.emit(uo):jr.emit(uo)}y.hoverData.cxtDragged=!1,y.hoverData.which=null}else if(y.hoverData.which===1){if(x(Wa,["mouseup","tapend","vmouseup"],re,{x:hr[0],y:hr[1]}),!y.dragData.didDrag&&!y.hoverData.dragged&&!y.hoverData.selecting&&!y.hoverData.isOverThresholdDrag&&(x(as,["click","tap","vclick"],re,{x:hr[0],y:hr[1]}),ye=!1,re.timeStamp-xe<=jr.multiClickDebounceTime()?(Yt&&clearTimeout(Yt),ye=!0,xe=null,x(as,["dblclick","dbltap","vdblclick"],re,{x:hr[0],y:hr[1]})):(Yt=setTimeout(function(){ye||x(as,["oneclick","onetap","voneclick"],re,{x:hr[0],y:hr[1]})},jr.multiClickDebounceTime()),xe=re.timeStamp)),as==null&&!y.dragData.didDrag&&!y.hoverData.selecting&&!y.hoverData.dragged&&!C(re)&&(jr.$(p).unselect(["tapunselect"]),$r.length>0&&y.redrawHint("eles",!0),y.dragData.possibleDragElements=$r=jr.collection()),Wa==as&&!y.dragData.didDrag&&!y.hoverData.selecting&&Wa!=null&&Wa._private.selectable&&(y.hoverData.dragging||(jr.selectionType()==="additive"||Qn?Wa.selected()?Wa.unselect(["tapunselect"]):Wa.select(["tapselect"]):Qn||(jr.$(p).unmerge(Wa).unselect(["tapunselect"]),Wa.select(["tapselect"]))),y.redrawHint("eles",!0)),y.hoverData.selecting){var Dc=jr.collection(y.getAllInBox(J[0],J[1],J[2],J[3]));y.redrawHint("select",!0),Dc.length>0&&y.redrawHint("eles",!0),jr.emit({type:"boxend",originalEvent:re,position:{x:hr[0],y:hr[1]}});var za=function(Lf){return Lf.selectable()&&!Lf.selected()};jr.selectionType()==="additive"||Qn||jr.$(p).unmerge(Dc).unselect(),Dc.emit("box").stdFilter(za).select().emit("boxselect"),y.redraw()}if(y.hoverData.dragging&&(y.hoverData.dragging=!1,y.redrawHint("select",!0),y.redrawHint("eles",!0),y.redraw()),!J[4]){y.redrawHint("drag",!0),y.redrawHint("eles",!0);var lo=as&&as.grabbed();vt($r),lo&&(as.emit("freeon"),$r.emit("free"),y.dragData.didDrag&&(as.emit("dragfreeon"),$r.emit("dragfree")))}}J[4]=0,y.hoverData.down=null,y.hoverData.cxtStarted=!1,y.hoverData.draggingEles=!1,y.hoverData.selecting=!1,y.hoverData.isOverThresholdDrag=!1,y.dragData.didDrag=!1,y.hoverData.dragged=!1,y.hoverData.dragDelta=[],y.hoverData.mdownPos=null,y.hoverData.mdownGPos=null}},!1);var de=function(re){if(!y.scrollingPage){var Kn=y.cy,jr=Kn.zoom(),hr=Kn.pan(),J=y.projectIntoViewport(re.clientX,re.clientY),Wa=[J[0]*jr+hr.x,J[1]*jr+hr.y];if(y.hoverData.draggingEles||y.hoverData.dragging||y.hoverData.cxtStarted||Ut()){re.preventDefault();return}if(Kn.panningEnabled()&&Kn.userPanningEnabled()&&Kn.zoomingEnabled()&&Kn.userZoomingEnabled()){re.preventDefault(),y.data.wheelZooming=!0,clearTimeout(y.data.wheelTimeout),y.data.wheelTimeout=setTimeout(function(){y.data.wheelZooming=!1,y.redrawHint("eles",!0),y.redraw()},150);var $r;re.deltaY!=null?$r=re.deltaY/-250:re.wheelDeltaY!=null?$r=re.wheelDeltaY/1e3:$r=re.wheelDelta/1e3,$r=$r*y.wheelSensitivity;var as=re.deltaMode===1;as&&($r*=33);var Qn=Kn.zoom()*Math.pow(10,$r);re.type==="gesturechange"&&(Qn=y.gestureStartZoom*re.scale),Kn.zoom({level:Qn,renderedPosition:{x:Wa[0],y:Wa[1]}}),Kn.emit(re.type==="gesturechange"?"pinchzoom":"scrollzoom")}}};y.registerBinding(y.container,"wheel",de,!0),y.registerBinding(window,"scroll",function(re){y.scrollingPage=!0,clearTimeout(y.scrollingPageTimeout),y.scrollingPageTimeout=setTimeout(function(){y.scrollingPage=!1},250)},!0),y.registerBinding(y.container,"gesturestart",function(re){y.gestureStartZoom=y.cy.zoom(),y.hasTouchStarted||re.preventDefault()},!0),y.registerBinding(y.container,"gesturechange",function(Nr){y.hasTouchStarted||de(Nr)},!0),y.registerBinding(y.container,"mouseout",function(re){var Kn=y.projectIntoViewport(re.clientX,re.clientY);y.cy.emit({originalEvent:re,type:"mouseout",position:{x:Kn[0],y:Kn[1]}})},!1),y.registerBinding(y.container,"mouseover",function(re){var Kn=y.projectIntoViewport(re.clientX,re.clientY);y.cy.emit({originalEvent:re,type:"mouseover",position:{x:Kn[0],y:Kn[1]}})},!1);var ze,ke,xn,tn,an,Sn,Vn,or,Rn,ar,yr,kr,br,dr=function(re,Kn,jr,hr){return Math.sqrt((jr-re)*(jr-re)+(hr-Kn)*(hr-Kn))},kn=function(re,Kn,jr,hr){return(jr-re)*(jr-re)+(hr-Kn)*(hr-Kn)},wr;y.registerBinding(y.container,"touchstart",wr=function(re){if(y.hasTouchStarted=!0,!!ue(re)){kt(),y.touchData.capture=!0,y.data.bgActivePosistion=void 0;var Kn=y.cy,jr=y.touchData.now,hr=y.touchData.earlier;if(re.touches[0]){var J=y.projectIntoViewport(re.touches[0].clientX,re.touches[0].clientY);jr[0]=J[0],jr[1]=J[1]}if(re.touches[1]){var J=y.projectIntoViewport(re.touches[1].clientX,re.touches[1].clientY);jr[2]=J[0],jr[3]=J[1]}if(re.touches[2]){var J=y.projectIntoViewport(re.touches[2].clientX,re.touches[2].clientY);jr[4]=J[0],jr[5]=J[1]}if(re.touches[1]){y.touchData.singleTouchMoved=!0,vt(y.dragData.touchDragEles);var Wa=y.findContainerClientCoords();Rn=Wa[0],ar=Wa[1],yr=Wa[2],kr=Wa[3],ze=re.touches[0].clientX-Rn,ke=re.touches[0].clientY-ar,xn=re.touches[1].clientX-Rn,tn=re.touches[1].clientY-ar,br=0<=ze&&ze<=yr&&0<=xn&&xn<=yr&&0<=ke&&ke<=kr&&0<=tn&&tn<=kr;var $r=Kn.pan(),as=Kn.zoom();an=dr(ze,ke,xn,tn),Sn=kn(ze,ke,xn,tn),Vn=[(ze+xn)/2,(ke+tn)/2],or=[(Vn[0]-$r.x)/as,(Vn[1]-$r.y)/as];var Qn=200,Jc=Qn*Qn;if(Sn=1){for(var db=y.touchData.startPosition=[],w1=0;w1=y.touchTapThreshold2}if(Kn&&y.touchData.cxt){re.preventDefault();var db=re.touches[0].clientX-Rn,w1=re.touches[0].clientY-ar,Mf=re.touches[1].clientX-Rn,Od=re.touches[1].clientY-ar,om=kn(db,w1,Mf,Od),by=om/Sn,w6=150,_4=w6*w6,m6=1.5,SC=m6*m6;if(by>=SC||om>=_4){y.touchData.cxt=!1,y.data.bgActivePosistion=void 0,y.redrawHint("select",!0);var S4={originalEvent:re,type:"cxttapend",position:{x:J[0],y:J[1]}};y.touchData.start?(y.touchData.start.unactivate().emit(S4),y.touchData.start=null):hr.emit(S4)}}if(Kn&&y.touchData.cxt){var S4={originalEvent:re,type:"cxtdrag",position:{x:J[0],y:J[1]}};y.data.bgActivePosistion=void 0,y.redrawHint("select",!0),y.touchData.start?y.touchData.start.emit(S4):hr.emit(S4),y.touchData.start&&(y.touchData.start._private.grabbed=!1),y.touchData.cxtDragged=!0;var y0=y.findNearestElement(J[0],J[1],!0,!0);(!y.touchData.cxtOver||y0!==y.touchData.cxtOver)&&(y.touchData.cxtOver&&y.touchData.cxtOver.emit({originalEvent:re,type:"cxtdragout",position:{x:J[0],y:J[1]}}),y.touchData.cxtOver=y0,y0&&y0.emit({originalEvent:re,type:"cxtdragover",position:{x:J[0],y:J[1]}}))}else if(Kn&&re.touches[2]&&hr.boxSelectionEnabled())re.preventDefault(),y.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,y.touchData.selecting||hr.emit({originalEvent:re,type:"boxstart",position:{x:J[0],y:J[1]}}),y.touchData.selecting=!0,y.touchData.didSelect=!0,jr[4]=1,!jr||jr.length===0||jr[0]===void 0?(jr[0]=(J[0]+J[2]+J[4])/3,jr[1]=(J[1]+J[3]+J[5])/3,jr[2]=(J[0]+J[2]+J[4])/3+1,jr[3]=(J[1]+J[3]+J[5])/3+1):(jr[2]=(J[0]+J[2]+J[4])/3,jr[3]=(J[1]+J[3]+J[5])/3),y.redrawHint("select",!0),y.redraw();else if(Kn&&re.touches[1]&&!y.touchData.didSelect&&hr.zoomingEnabled()&&hr.panningEnabled()&&hr.userZoomingEnabled()&&hr.userPanningEnabled()){re.preventDefault(),y.data.bgActivePosistion=void 0,y.redrawHint("select",!0);var G1=y.dragData.touchDragEles;if(G1){y.redrawHint("drag",!0);for(var x0=0;x00&&!y.hoverData.draggingEles&&!y.swipePanning&&y.data.bgActivePosistion!=null&&(y.data.bgActivePosistion=void 0,y.redrawHint("select",!0),y.redraw())}},!1);var ci;y.registerBinding(window,"touchcancel",ci=function(re){var Kn=y.touchData.start;y.touchData.capture=!1,Kn&&Kn.unactivate()});var ui,ps,ga,Li;if(y.registerBinding(window,"touchend",ui=function(re){var Kn=y.touchData.start,jr=y.touchData.capture;if(jr)re.touches.length===0&&(y.touchData.capture=!1),re.preventDefault();else return;var hr=y.selection;y.swipePanning=!1,y.hoverData.draggingEles=!1;var J=y.cy,Wa=J.zoom(),$r=y.touchData.now,as=y.touchData.earlier;if(re.touches[0]){var Qn=y.projectIntoViewport(re.touches[0].clientX,re.touches[0].clientY);$r[0]=Qn[0],$r[1]=Qn[1]}if(re.touches[1]){var Qn=y.projectIntoViewport(re.touches[1].clientX,re.touches[1].clientY);$r[2]=Qn[0],$r[3]=Qn[1]}if(re.touches[2]){var Qn=y.projectIntoViewport(re.touches[2].clientX,re.touches[2].clientY);$r[4]=Qn[0],$r[5]=Qn[1]}Kn&&Kn.unactivate();var Jc;if(y.touchData.cxt){if(Jc={originalEvent:re,type:"cxttapend",position:{x:$r[0],y:$r[1]}},Kn?Kn.emit(Jc):J.emit(Jc),!y.touchData.cxtDragged){var uo={originalEvent:re,type:"cxttap",position:{x:$r[0],y:$r[1]}};Kn?Kn.emit(uo):J.emit(uo)}y.touchData.start&&(y.touchData.start._private.grabbed=!1),y.touchData.cxt=!1,y.touchData.start=null,y.redraw();return}if(!re.touches[2]&&J.boxSelectionEnabled()&&y.touchData.selecting){y.touchData.selecting=!1;var Dc=J.collection(y.getAllInBox(hr[0],hr[1],hr[2],hr[3]));hr[0]=void 0,hr[1]=void 0,hr[2]=void 0,hr[3]=void 0,hr[4]=0,y.redrawHint("select",!0),J.emit({type:"boxend",originalEvent:re,position:{x:$r[0],y:$r[1]}});var za=function(_4){return _4.selectable()&&!_4.selected()};Dc.emit("box").stdFilter(za).select().emit("boxselect"),Dc.nonempty()&&y.redrawHint("eles",!0),y.redraw()}if(Kn!=null&&Kn.unactivate(),re.touches[2])y.data.bgActivePosistion=void 0,y.redrawHint("select",!0);else if(!re.touches[1]){if(!re.touches[0]){if(!re.touches[0]){y.data.bgActivePosistion=void 0,y.redrawHint("select",!0);var lo=y.dragData.touchDragEles;if(Kn!=null){var _l=Kn._private.grabbed;vt(lo),y.redrawHint("drag",!0),y.redrawHint("eles",!0),_l&&(Kn.emit("freeon"),lo.emit("free"),y.dragData.didDrag&&(Kn.emit("dragfreeon"),lo.emit("dragfree"))),x(Kn,["touchend","tapend","vmouseup","tapdragout"],re,{x:$r[0],y:$r[1]}),Kn.unactivate(),y.touchData.start=null}else{var Lf=y.findNearestElement($r[0],$r[1],!0,!0);x(Lf,["touchend","tapend","vmouseup","tapdragout"],re,{x:$r[0],y:$r[1]})}var b1=y.touchData.startPosition[0]-$r[0],db=b1*b1,w1=y.touchData.startPosition[1]-$r[1],Mf=w1*w1,Od=db+Mf,om=Od*Wa*Wa;y.touchData.singleTouchMoved||(Kn||J.$(":selected").unselect(["tapunselect"]),x(Kn,["tap","vclick"],re,{x:$r[0],y:$r[1]}),ps=!1,re.timeStamp-Li<=J.multiClickDebounceTime()?(ga&&clearTimeout(ga),ps=!0,Li=null,x(Kn,["dbltap","vdblclick"],re,{x:$r[0],y:$r[1]})):(ga=setTimeout(function(){ps||x(Kn,["onetap","voneclick"],re,{x:$r[0],y:$r[1]})},J.multiClickDebounceTime()),Li=re.timeStamp)),Kn!=null&&!y.dragData.didDrag&&Kn._private.selectable&&om"u"){var mi=[],ys=function(re){return{clientX:re.clientX,clientY:re.clientY,force:1,identifier:re.pointerId,pageX:re.pageX,pageY:re.pageY,radiusX:re.width/2,radiusY:re.height/2,screenX:re.screenX,screenY:re.screenY,target:re.target}},Xi=function(re){return{event:re,touch:ys(re)}},li=function(re){mi.push(Xi(re))},qi=function(re){for(var Kn=0;Kn0)return Rn[0]}return null},lt=Object.keys(Q),dt=0;dt0?it:MB(O,P,p,x,C,L,$)},checkPoint:function(p,x,C,L,O,P,$){var H=N8(L,O),z=2*H;if(em(p,x,this.points,P,$,L,O-z,[0,-1],C)||em(p,x,this.points,P,$,L-z,O,[0,-1],C))return!0;var G=L/2+2*C,Q=O/2+2*C,it=[P-G,$-Q,P-G,$,P+G,$,P+G,$-Q];return!!(v0(p,x,it)||w4(p,x,z,z,P+L/2-H,$+O/2-H,C)||w4(p,x,z,z,P-L/2+H,$+O/2-H,C))}}},rm.registerNodeShapes=function(){var y=this.nodeShapes={},p=this;this.generateEllipse(),this.generatePolygon("triangle",Dd(3,0)),this.generateRoundPolygon("round-triangle",Dd(3,0)),this.generatePolygon("rectangle",Dd(4,0)),y.square=y.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var x=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",x),this.generateRoundPolygon("round-diamond",x)}this.generatePolygon("pentagon",Dd(5,0)),this.generateRoundPolygon("round-pentagon",Dd(5,0)),this.generatePolygon("hexagon",Dd(6,0)),this.generateRoundPolygon("round-hexagon",Dd(6,0)),this.generatePolygon("heptagon",Dd(7,0)),this.generateRoundPolygon("round-heptagon",Dd(7,0)),this.generatePolygon("octagon",Dd(8,0)),this.generateRoundPolygon("round-octagon",Dd(8,0));var C=new Array(20);{var L=NM(5,0),O=NM(5,Math.PI/5),P=.5*(3-Math.sqrt(5));P*=1.57;for(var $=0;$=p.deqFastCost*qt)break}else if(z){if(It>=p.deqCost*lt||It>=p.deqAvgCost*it)break}else if(Pt>=p.deqNoDrawCost*fD)break;var ce=p.deq(C,Mt,vt);if(ce.length>0)for(var ee=0;ee0&&(p.onDeqd(C,dt),!z&&p.shouldRedraw(C,dt,Mt,vt)&&O())},$=p.priority||LM;L.beforeRender(P,$(C))}}}},jet=function(){function y(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:sy;g(this,y),this.idsByKey=new M2,this.keyForId=new M2,this.cachesByLvl=new M2,this.lvls=[],this.getKey=p,this.doesEleInvalidateKey=x}return v(y,[{key:"getIdsFor",value:function(x){x==null&&jl("Can not get id list for null key");var C=this.idsByKey,L=this.idsByKey.get(x);return L||(L=new Ux,C.set(x,L)),L}},{key:"addIdForKey",value:function(x,C){x!=null&&this.getIdsFor(x).add(C)}},{key:"deleteIdForKey",value:function(x,C){x!=null&&this.getIdsFor(x).delete(C)}},{key:"getNumberOfIdsForKey",value:function(x){return x==null?0:this.getIdsFor(x).size}},{key:"updateKeyMappingFor",value:function(x){var C=x.id(),L=this.keyForId.get(C),O=this.getKey(x);this.deleteIdForKey(L,C),this.addIdForKey(O,C),this.keyForId.set(C,O)}},{key:"deleteKeyMappingFor",value:function(x){var C=x.id(),L=this.keyForId.get(C);this.deleteIdForKey(L,C),this.keyForId.delete(C)}},{key:"keyHasChangedFor",value:function(x){var C=x.id(),L=this.keyForId.get(C),O=this.getKey(x);return L!==O}},{key:"isInvalid",value:function(x){return this.keyHasChangedFor(x)||this.doesEleInvalidateKey(x)}},{key:"getCachesAt",value:function(x){var C=this.cachesByLvl,L=this.lvls,O=C.get(x);return O||(O=new M2,C.set(x,O),L.push(x)),O}},{key:"getCache",value:function(x,C){return this.getCachesAt(C).get(x)}},{key:"get",value:function(x,C){var L=this.getKey(x),O=this.getCache(L,C);return O!=null&&this.updateKeyMappingFor(x),O}},{key:"getForCachedKey",value:function(x,C){var L=this.keyForId.get(x.id()),O=this.getCache(L,C);return O}},{key:"hasCache",value:function(x,C){return this.getCachesAt(C).has(x)}},{key:"has",value:function(x,C){var L=this.getKey(x);return this.hasCache(L,C)}},{key:"setCache",value:function(x,C,L){L.key=x,this.getCachesAt(C).set(x,L)}},{key:"set",value:function(x,C,L){var O=this.getKey(x);this.setCache(O,C,L),this.updateKeyMappingFor(x)}},{key:"deleteCache",value:function(x,C){this.getCachesAt(C).delete(x)}},{key:"delete",value:function(x,C){var L=this.getKey(x);this.deleteCache(L,C)}},{key:"invalidateKey",value:function(x){var C=this;this.lvls.forEach(function(L){return C.deleteCache(x,L)})}},{key:"invalidate",value:function(x){var C=x.id(),L=this.keyForId.get(C);this.deleteKeyMappingFor(x);var O=this.doesEleInvalidateKey(x);return O&&this.invalidateKey(L),O||this.getNumberOfIdsForKey(L)===0}}]),y}(),_j=25,kC=50,EC=-4,dD=3,$et=7.99,zet=8,qet=1024,Het=1024,Vet=1024,Uet=.2,Get=.8,Ket=10,Wet=.15,Yet=.1,Xet=.9,Qet=.9,Jet=100,Zet=1,f6={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},tnt=f1({getKey:null,doesEleInvalidateKey:sy,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:g4,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),Z8=function(p,x){var C=this;C.renderer=p,C.onDequeues=[];var L=tnt(x);we(C,L),C.lookup=new jet(L.getKey,L.doesEleInvalidateKey),C.setupDequeueing()},Yh=Z8.prototype;Yh.reasons=f6,Yh.getTextureQueue=function(y){var p=this;return p.eleImgCaches=p.eleImgCaches||{},p.eleImgCaches[y]=p.eleImgCaches[y]||[]},Yh.getRetiredTextureQueue=function(y){var p=this,x=p.eleImgCaches.retired=p.eleImgCaches.retired||{},C=x[y]=x[y]||[];return C},Yh.getElementQueue=function(){var y=this,p=y.eleCacheQueue=y.eleCacheQueue||new D8(function(x,C){return C.reqs-x.reqs});return p},Yh.getElementKeyToQueue=function(){var y=this,p=y.eleKeyToCacheQueue=y.eleKeyToCacheQueue||{};return p},Yh.getElement=function(y,p,x,C,L){var O=this,P=this.renderer,$=P.cy.zoom(),H=this.lookup;if(!p||p.w===0||p.h===0||isNaN(p.w)||isNaN(p.h)||!y.visible()||y.removed()||!O.allowEdgeTxrCaching&&y.isEdge()||!O.allowParentTxrCaching&&y.isParent())return null;if(C==null&&(C=Math.ceil(DM($*x))),C=$et||C>dD)return null;var z=Math.pow(2,C),G=p.h*z,Q=p.w*z,it=P.eleTextBiggerThanMin(y,z);if(!this.isVisible(y,it))return null;var lt=H.get(y,C);if(lt&<.invalidated&&(lt.invalidated=!1,lt.texture.invalidatedWidth-=lt.width),lt)return lt;var dt;if(G<=_j?dt=_j:G<=kC?dt=kC:dt=Math.ceil(G/kC)*kC,G>Vet||Q>Het)return null;var vt=O.getTextureQueue(dt),Mt=vt[vt.length-2],kt=function(){return O.recycleTexture(dt,Q)||O.addTexture(dt,Q)};Mt||(Mt=vt[vt.length-1]),Mt||(Mt=kt()),Mt.width-Mt.usedWidthC;xe--)Yt=O.getElement(y,p,x,xe,f6.downscale);ye()}else return O.queueElement(y,ee.level-1),ee;else{var de;if(!Pt&&!qt&&!ce)for(var ze=C-1;ze>=EC;ze--){var ke=H.get(y,ze);if(ke){de=ke;break}}if(It(de))return O.queueElement(y,C),de;Mt.context.translate(Mt.usedWidth,0),Mt.context.scale(z,z),this.drawElement(Mt.context,y,p,it,!1),Mt.context.scale(1/z,1/z),Mt.context.translate(-Mt.usedWidth,0)}return lt={x:Mt.usedWidth,texture:Mt,level:C,scale:z,width:Q,height:G,scaledLabelShown:it},Mt.usedWidth+=Math.ceil(Q+zet),Mt.eleCaches.push(lt),H.set(y,C,lt),O.checkTextureFullness(Mt),lt},Yh.invalidateElements=function(y){for(var p=0;p=Uet*y.width&&this.retireTexture(y)},Yh.checkTextureFullness=function(y){var p=this,x=p.getTextureQueue(y.height);y.usedWidth/y.width>Get&&y.fullnessChecks>=Ket?ay(x,y):y.fullnessChecks++},Yh.retireTexture=function(y){var p=this,x=y.height,C=p.getTextureQueue(x),L=this.lookup;ay(C,y),y.retired=!0;for(var O=y.eleCaches,P=0;P=p)return P.retired=!1,P.usedWidth=0,P.invalidatedWidth=0,P.fullnessChecks=0,q9(P.eleCaches),P.context.setTransform(1,0,0,1,0,0),P.context.clearRect(0,0,P.width,P.height),ay(L,P),C.push(P),P}},Yh.queueElement=function(y,p){var x=this,C=x.getElementQueue(),L=x.getElementKeyToQueue(),O=this.getKey(y),P=L[O];if(P)P.level=Math.max(P.level,p),P.eles.merge(y),P.reqs++,C.updateItem(P);else{var $={eles:y.spawn().merge(y),level:p,reqs:1,key:O};C.push($),L[O]=$}},Yh.dequeue=function(y){for(var p=this,x=p.getElementQueue(),C=p.getElementKeyToQueue(),L=[],O=p.lookup,P=0;P0;P++){var $=x.pop(),H=$.key,z=$.eles[0],G=O.hasCache(z,$.level);if(C[H]=null,G)continue;L.push($);var Q=p.getBoundingBox(z);p.getElement(z,Q,y,$.level,f6.dequeue)}return L},Yh.removeFromQueue=function(y){var p=this,x=p.getElementQueue(),C=p.getElementKeyToQueue(),L=this.getKey(y),O=C[L];O!=null&&(O.eles.length===1?(O.reqs=Vx,x.updateItem(O),x.pop(),C[L]=null):O.eles.unmerge(y))},Yh.onDequeue=function(y){this.onDequeues.push(y)},Yh.offDequeue=function(y){ay(this.onDequeues,y)},Yh.setupDequeueing=Cj.setupDequeueing({deqRedrawThreshold:Jet,deqCost:Wet,deqAvgCost:Yet,deqNoDrawCost:Xet,deqFastCost:Qet,deq:function(p,x,C){return p.dequeue(x,C)},onDeqd:function(p,x){for(var C=0;C=nnt||x>TC)return null}C.validateLayersElesOrdering(x,y);var H=C.layersByLevel,z=Math.pow(2,x),G=H[x]=H[x]||[],Q,it=C.levelIsComplete(x,y),lt,dt=function(){var ye=function(xn){if(C.validateLayersElesOrdering(xn,y),C.levelIsComplete(xn,y))return lt=H[xn],!0},xe=function(xn){if(!lt)for(var tn=x+xn;tE<=tn&&tn<=TC&&!ye(tn);tn+=xn);};xe(1),xe(-1);for(var de=G.length-1;de>=0;de--){var ze=G[de];ze.invalid&&ay(G,ze)}};if(!it)dt();else return G;var vt=function(){if(!Q){Q=m0();for(var ye=0;yeAj)return null;var ze=C.makeLayer(Q,x);if(xe!=null){var ke=G.indexOf(xe)+1;G.splice(ke,0,ze)}else(ye.insert===void 0||ye.insert)&&G.unshift(ze);return ze};if(C.skipping&&!$)return null;for(var kt=null,It=y.length/ent,Pt=!$,qt=0;qt=It||!LB(kt.bb,ce.boundingBox()))&&(kt=Mt({insert:!0,after:kt}),!kt))return null;lt||Pt?C.queueLayer(kt,ce):C.drawEleInLayer(kt,ce,x,p),kt.eles.push(ce),Ut[x]=kt}return lt||(Pt?null:G)},Af.getEleLevelForLayerLevel=function(y,p){return y},Af.drawEleInLayer=function(y,p,x,C){var L=this,O=this.renderer,P=y.context,$=p.boundingBox();$.w===0||$.h===0||!p.visible()||(x=L.getEleLevelForLayerLevel(x,C),O.setImgSmoothing(P,!1),O.drawCachedElement(P,p,null,null,x,unt),O.setImgSmoothing(P,!0))},Af.levelIsComplete=function(y,p){var x=this,C=x.layersByLevel[y];if(!C||C.length===0)return!1;for(var L=0,O=0;O0||P.invalid)return!1;L+=P.eles.length}return L===p.length},Af.validateLayersElesOrdering=function(y,p){var x=this.layersByLevel[y];if(x)for(var C=0;C0){p=!0;break}}return p},Af.invalidateElements=function(y){var p=this;y.length!==0&&(p.lastInvalidationTime=rp(),!(y.length===0||!p.haveLayers())&&p.updateElementsInLayers(y,function(C,L,O){p.invalidateLayer(C)}))},Af.invalidateLayer=function(y){if(this.lastInvalidationTime=rp(),!y.invalid){var p=y.level,x=y.eles,C=this.layersByLevel[p];ay(C,y),y.elesQueue=[],y.invalid=!0,y.replacement&&(y.replacement.invalid=!0);for(var L=0;L3&&arguments[3]!==void 0?arguments[3]:!0,L=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,O=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,P=this,$=p._private.rscratch;if(!(O&&!p.visible())&&!($.badLine||$.allpts==null||isNaN($.allpts[0]))){var H;x&&(H=x,y.translate(-H.x1,-H.y1));var z=O?p.pstyle("opacity").value:1,G=O?p.pstyle("line-opacity").value:1,Q=p.pstyle("curve-style").value,it=p.pstyle("line-style").value,lt=p.pstyle("width").pfValue,dt=p.pstyle("line-cap").value,vt=z*G,Mt=z*G,kt=function(){var de=arguments.length>0&&arguments[0]!==void 0?arguments[0]:vt;Q==="straight-triangle"?(P.eleStrokeStyle(y,p,de),P.drawEdgeTrianglePath(p,y,$.allpts)):(y.lineWidth=lt,y.lineCap=dt,P.eleStrokeStyle(y,p,de),P.drawEdgePath(p,y,$.allpts,it),y.lineCap="butt")},It=function(){L&&P.drawEdgeOverlay(y,p)},Pt=function(){L&&P.drawEdgeUnderlay(y,p)},qt=function(){var de=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Mt;P.drawArrowheads(y,p,de)},ce=function(){P.drawElementText(y,p,null,C)};y.lineJoin="round";var ee=p.pstyle("ghost").value==="yes";if(ee){var Ut=p.pstyle("ghost-offset-x").pfValue,ue=p.pstyle("ghost-offset-y").pfValue,Yt=p.pstyle("ghost-opacity").value,ye=vt*Yt;y.translate(Ut,ue),kt(ye),qt(ye),y.translate(-Ut,-ue)}Pt(),kt(),qt(),It(),ce(),x&&y.translate(H.x1,H.y1)}};var Pj=function(p){if(!["overlay","underlay"].includes(p))throw new Error("Invalid state");return function(x,C){if(C.visible()){var L=C.pstyle("".concat(p,"-opacity")).value;if(L!==0){var O=this,P=O.usePaths(),$=C._private.rscratch,H=C.pstyle("".concat(p,"-padding")).pfValue,z=2*H,G=C.pstyle("".concat(p,"-color")).value;x.lineWidth=z,$.edgeType==="self"&&!P?x.lineCap="butt":x.lineCap="round",O.colorStrokeStyle(x,G[0],G[1],G[2],L),O.drawEdgePath(C,x,$.allpts,"solid")}}}};im.drawEdgeOverlay=Pj("overlay"),im.drawEdgeUnderlay=Pj("underlay"),im.drawEdgePath=function(y,p,x,C){var L=y._private.rscratch,O=p,P,$=!1,H=this.usePaths(),z=y.pstyle("line-dash-pattern").pfValue,G=y.pstyle("line-dash-offset").pfValue;if(H){var Q=x.join("$"),it=L.pathCacheKey&&L.pathCacheKey===Q;it?(P=p=L.pathCache,$=!0):(P=p=new Path2D,L.pathCacheKey=Q,L.pathCache=P)}if(O.setLineDash)switch(C){case"dotted":O.setLineDash([1,1]);break;case"dashed":O.setLineDash(z),O.lineDashOffset=G;break;case"solid":O.setLineDash([]);break}if(!$&&!L.badLine)switch(p.beginPath&&p.beginPath(),p.moveTo(x[0],x[1]),L.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var lt=2;lt+35&&arguments[5]!==void 0?arguments[5]:!0,P=this;if(C==null){if(O&&!P.eleTextBiggerThanMin(p))return}else if(C===!1)return;if(p.isNode()){var $=p.pstyle("label");if(!$||!$.value)return;var H=P.getLabelJustification(p);y.textAlign=H,y.textBaseline="bottom"}else{var z=p.element()._private.rscratch.badLine,G=p.pstyle("label"),Q=p.pstyle("source-label"),it=p.pstyle("target-label");if(z||(!G||!G.value)&&(!Q||!Q.value)&&(!it||!it.value))return;y.textAlign="center",y.textBaseline="bottom"}var lt=!x,dt;x&&(dt=x,y.translate(-dt.x1,-dt.y1)),L==null?(P.drawText(y,p,null,lt,O),p.isEdge()&&(P.drawText(y,p,"source",lt,O),P.drawText(y,p,"target",lt,O))):P.drawText(y,p,L,lt,O),x&&y.translate(dt.x1,dt.y1)},sm.getFontCache=function(y){var p;this.fontCaches=this.fontCaches||[];for(var x=0;x2&&arguments[2]!==void 0?arguments[2]:!0,C=p.pstyle("font-style").strValue,L=p.pstyle("font-size").pfValue+"px",O=p.pstyle("font-family").strValue,P=p.pstyle("font-weight").strValue,$=x?p.effectiveOpacity()*p.pstyle("text-opacity").value:1,H=p.pstyle("text-outline-opacity").value*$,z=p.pstyle("color").value,G=p.pstyle("text-outline-color").value;y.font=C+" "+P+" "+L+" "+O,y.lineJoin="round",this.colorFillStyle(y,z[0],z[1],z[2],$),this.colorStrokeStyle(y,G[0],G[1],G[2],H)};function wnt(y,p,x,C,L){var O=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5;y.beginPath(),y.moveTo(p+O,x),y.lineTo(p+C-O,x),y.quadraticCurveTo(p+C,x,p+C,x+O),y.lineTo(p+C,x+L-O),y.quadraticCurveTo(p+C,x+L,p+C-O,x+L),y.lineTo(p+O,x+L),y.quadraticCurveTo(p,x+L,p,x+L-O),y.lineTo(p,x+O),y.quadraticCurveTo(p,x,p+O,x),y.closePath(),y.fill()}sm.getTextAngle=function(y,p){var x,C=y._private,L=C.rscratch,O=p?p+"-":"",P=y.pstyle(O+"text-rotation"),$=ub(L,"labelAngle",p);return P.strValue==="autorotate"?x=y.isEdge()?$:0:P.strValue==="none"?x=0:x=P.pfValue,x},sm.drawText=function(y,p,x){var C=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,L=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,O=p._private,P=O.rscratch,$=L?p.effectiveOpacity():1;if(!(L&&($===0||p.pstyle("text-opacity").value===0))){x==="main"&&(x=null);var H=ub(P,"labelX",x),z=ub(P,"labelY",x),G,Q,it=this.getLabelText(p,x);if(it!=null&&it!==""&&!isNaN(H)&&!isNaN(z)){this.setupTextStyle(y,p,L);var lt=x?x+"-":"",dt=ub(P,"labelWidth",x),vt=ub(P,"labelHeight",x),Mt=p.pstyle(lt+"text-margin-x").pfValue,kt=p.pstyle(lt+"text-margin-y").pfValue,It=p.isEdge(),Pt=p.pstyle("text-halign").value,qt=p.pstyle("text-valign").value;It&&(Pt="center",qt="center"),H+=Mt,z+=kt;var ce;switch(C?ce=this.getTextAngle(p,x):ce=0,ce!==0&&(G=H,Q=z,y.translate(G,Q),y.rotate(ce),H=0,z=0),qt){case"top":break;case"center":z+=vt/2;break;case"bottom":z+=vt;break}var ee=p.pstyle("text-background-opacity").value,Ut=p.pstyle("text-border-opacity").value,ue=p.pstyle("text-border-width").pfValue,Yt=p.pstyle("text-background-padding").pfValue;if(ee>0||ue>0&&Ut>0){var ye=H-Yt;switch(Pt){case"left":ye-=dt;break;case"center":ye-=dt/2;break}var xe=z-vt-Yt,de=dt+2*Yt,ze=vt+2*Yt;if(ee>0){var ke=y.fillStyle,xn=p.pstyle("text-background-color").value;y.fillStyle="rgba("+xn[0]+","+xn[1]+","+xn[2]+","+ee*$+")";var tn=p.pstyle("text-background-shape").strValue;tn.indexOf("round")===0?wnt(y,ye,xe,de,ze,2):y.fillRect(ye,xe,de,ze),y.fillStyle=ke}if(ue>0&&Ut>0){var an=y.strokeStyle,Sn=y.lineWidth,Vn=p.pstyle("text-border-color").value,or=p.pstyle("text-border-style").value;if(y.strokeStyle="rgba("+Vn[0]+","+Vn[1]+","+Vn[2]+","+Ut*$+")",y.lineWidth=ue,y.setLineDash)switch(or){case"dotted":y.setLineDash([1,1]);break;case"dashed":y.setLineDash([4,2]);break;case"double":y.lineWidth=ue/4,y.setLineDash([]);break;case"solid":y.setLineDash([]);break}if(y.strokeRect(ye,xe,de,ze),or==="double"){var Rn=ue/2;y.strokeRect(ye+Rn,xe+Rn,de-Rn*2,ze-Rn*2)}y.setLineDash&&y.setLineDash([]),y.lineWidth=Sn,y.strokeStyle=an}}var ar=2*p.pstyle("text-outline-width").pfValue;if(ar>0&&(y.lineWidth=ar),p.pstyle("text-wrap").value==="wrap"){var yr=ub(P,"labelWrapCachedLines",x),kr=ub(P,"labelLineHeight",x),br=dt/2,dr=this.getLabelJustification(p);switch(dr==="auto"||(Pt==="left"?dr==="left"?H+=-dt:dr==="center"&&(H+=-br):Pt==="center"?dr==="left"?H+=-br:dr==="right"&&(H+=br):Pt==="right"&&(dr==="center"?H+=br:dr==="right"&&(H+=dt))),qt){case"top":z-=(yr.length-1)*kr;break;case"center":case"bottom":z-=(yr.length-1)*kr;break}for(var kn=0;kn0&&y.strokeText(yr[kn],H,z),y.fillText(yr[kn],H,z),z+=kr}else ar>0&&y.strokeText(it,H,z),y.fillText(it,H,z);ce!==0&&(y.rotate(-ce),y.translate(-G,-Q))}}};var py={};py.drawNode=function(y,p,x){var C=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,L=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,O=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,P=this,$,H,z=p._private,G=z.rscratch,Q=p.position();if(!(!Z(Q.x)||!Z(Q.y))&&!(O&&!p.visible())){var it=O?p.effectiveOpacity():1,lt=P.usePaths(),dt,vt=!1,Mt=p.padding();$=p.width()+2*Mt,H=p.height()+2*Mt;var kt;x&&(kt=x,y.translate(-kt.x1,-kt.y1));for(var It=p.pstyle("background-image"),Pt=It.value,qt=new Array(Pt.length),ce=new Array(Pt.length),ee=0,Ut=0;Ut0&&arguments[0]!==void 0?arguments[0]:ze;P.eleFillStyle(y,p,li)},Sn=function(){var li=arguments.length>0&&arguments[0]!==void 0?arguments[0]:tn;P.colorStrokeStyle(y,ke[0],ke[1],ke[2],li)},Vn=p.pstyle("shape").strValue,or=p.pstyle("shape-polygon-points").pfValue;if(lt){y.translate(Q.x,Q.y);var Rn=P.nodePathCache=P.nodePathCache||[],ar=Md(Vn==="polygon"?Vn+","+or.join(","):Vn,""+H,""+$),yr=Rn[ar];yr!=null?(dt=yr,vt=!0,G.pathCache=dt):(dt=new Path2D,Rn[ar]=G.pathCache=dt)}var kr=function(){if(!vt){var li=Q;lt&&(li={x:0,y:0}),P.nodeShapes[P.getNodeShape(p)].draw(dt||y,li.x,li.y,$,H)}lt?y.fill(dt):y.fill()},br=function(){for(var li=arguments.length>0&&arguments[0]!==void 0?arguments[0]:it,qi=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,Ao=z.backgrounding,Ka=0,Ws=0;Ws0&&arguments[0]!==void 0?arguments[0]:!1,qi=arguments.length>1&&arguments[1]!==void 0?arguments[1]:it;P.hasPie(p)&&(P.drawPie(y,p,qi),li&&(lt||P.nodeShapes[P.getNodeShape(p)].draw(y,Q.x,Q.y,$,H)))},kn=function(){var li=arguments.length>0&&arguments[0]!==void 0?arguments[0]:it,qi=(xe>0?xe:-xe)*li,Ao=xe>0?0:255;xe!==0&&(P.colorFillStyle(y,Ao,Ao,Ao,qi),lt?y.fill(dt):y.fill())},wr=function(){if(de>0){if(y.lineWidth=de,y.lineCap="butt",y.setLineDash)switch(xn){case"dotted":y.setLineDash([1,1]);break;case"dashed":y.setLineDash([4,2]);break;case"solid":case"double":y.setLineDash([]);break}if(lt?y.stroke(dt):y.stroke(),xn==="double"){y.lineWidth=de/3;var li=y.globalCompositeOperation;y.globalCompositeOperation="destination-out",lt?y.stroke(dt):y.stroke(),y.globalCompositeOperation=li}y.setLineDash&&y.setLineDash([])}},Ar=function(){L&&P.drawNodeOverlay(y,p,Q,$,H)},ci=function(){L&&P.drawNodeUnderlay(y,p,Q,$,H)},ui=function(){P.drawElementText(y,p,null,C)},ps=p.pstyle("ghost").value==="yes";if(ps){var ga=p.pstyle("ghost-offset-x").pfValue,Li=p.pstyle("ghost-offset-y").pfValue,mi=p.pstyle("ghost-opacity").value,ys=mi*it;y.translate(ga,Li),an(mi*ze),kr(),br(ys,!0),Sn(mi*tn),wr(),dr(xe!==0||de!==0),br(ys,!1),kn(ys),y.translate(-ga,-Li)}lt&&y.translate(-Q.x,-Q.y),ci(),lt&&y.translate(Q.x,Q.y),an(),kr(),br(it,!0),Sn(),wr(),dr(xe!==0||de!==0),br(it,!1),kn(),lt&&y.translate(-Q.x,-Q.y),ui(),Ar(),x&&y.translate(kt.x1,kt.y1)}};var Nj=function(p){if(!["overlay","underlay"].includes(p))throw new Error("Invalid state");return function(x,C,L,O,P){var $=this;if(C.visible()){var H=C.pstyle("".concat(p,"-padding")).pfValue,z=C.pstyle("".concat(p,"-opacity")).value,G=C.pstyle("".concat(p,"-color")).value,Q=C.pstyle("".concat(p,"-shape")).value;if(z>0){if(L=L||C.position(),O==null||P==null){var it=C.padding();O=C.width()+2*it,P=C.height()+2*it}$.colorFillStyle(x,G[0],G[1],G[2],z),$.nodeShapes[Q].draw(x,L.x,L.y,O+H*2,P+H*2),x.fill()}}}};py.drawNodeOverlay=Nj("overlay"),py.drawNodeUnderlay=Nj("underlay"),py.hasPie=function(y){return y=y[0],y._private.hasPie},py.drawPie=function(y,p,x,C){p=p[0],C=C||p.position();var L=p.cy().style(),O=p.pstyle("pie-size"),P=C.x,$=C.y,H=p.width(),z=p.height(),G=Math.min(H,z)/2,Q=0,it=this.usePaths();it&&(P=0,$=0),O.units==="%"?G=G*O.pfValue:O.pfValue!==void 0&&(G=O.pfValue/2);for(var lt=1;lt<=L.pieBackgroundN;lt++){var dt=p.pstyle("pie-"+lt+"-background-size").value,vt=p.pstyle("pie-"+lt+"-background-color").value,Mt=p.pstyle("pie-"+lt+"-background-opacity").value*x,kt=dt/100;kt+Q>1&&(kt=1-Q);var It=1.5*Math.PI+2*Math.PI*Q,Pt=2*Math.PI*kt,qt=It+Pt;dt===0||Q>=1||Q+kt>1||(y.beginPath(),y.moveTo(P,$),y.arc(P,$,G,It,qt),y.closePath(),this.colorFillStyle(y,vt[0],vt[1],vt[2],Mt),y.fill(),Q+=kt)}};var ug={},mnt=100;ug.getPixelRatio=function(){var y=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var p=y.backingStorePixelRatio||y.webkitBackingStorePixelRatio||y.mozBackingStorePixelRatio||y.msBackingStorePixelRatio||y.oBackingStorePixelRatio||y.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/p},ug.paintCache=function(y){for(var p=this.paintCaches=this.paintCaches||[],x=!0,C,L=0;LP.minMbLowQualFrames&&(P.motionBlurPxRatio=P.mbPxRBlurry)),P.clearingMotionBlur&&(P.motionBlurPxRatio=1),P.textureDrawLastFrame&&!Q&&(G[P.NODE]=!0,G[P.SELECT_BOX]=!0);var It=H.style(),Pt=H.zoom(),qt=L!==void 0?L:Pt,ce=H.pan(),ee={x:ce.x,y:ce.y},Ut={zoom:Pt,pan:{x:ce.x,y:ce.y}},ue=P.prevViewport,Yt=ue===void 0||Ut.zoom!==ue.zoom||Ut.pan.x!==ue.pan.x||Ut.pan.y!==ue.pan.y;!Yt&&!(vt&&!dt)&&(P.motionBlurPxRatio=1),O&&(ee=O),qt*=$,ee.x*=$,ee.y*=$;var ye=P.getCachedZSortedEles();function xe(Li,mi,ys,Xi,li){var qi=Li.globalCompositeOperation;Li.globalCompositeOperation="destination-out",P.colorFillStyle(Li,255,255,255,P.motionBlurTransparency),Li.fillRect(mi,ys,Xi,li),Li.globalCompositeOperation=qi}function de(Li,mi){var ys,Xi,li,qi;!P.clearingMotionBlur&&(Li===z.bufferContexts[P.MOTIONBLUR_BUFFER_NODE]||Li===z.bufferContexts[P.MOTIONBLUR_BUFFER_DRAG])?(ys={x:ce.x*lt,y:ce.y*lt},Xi=Pt*lt,li=P.canvasWidth*lt,qi=P.canvasHeight*lt):(ys=ee,Xi=qt,li=P.canvasWidth,qi=P.canvasHeight),Li.setTransform(1,0,0,1,0,0),mi==="motionBlur"?xe(Li,0,0,li,qi):!p&&(mi===void 0||mi)&&Li.clearRect(0,0,li,qi),x||(Li.translate(ys.x,ys.y),Li.scale(Xi,Xi)),O&&Li.translate(O.x,O.y),L&&Li.scale(L,L)}if(Q||(P.textureDrawLastFrame=!1),Q){if(P.textureDrawLastFrame=!0,!P.textureCache){P.textureCache={},P.textureCache.bb=H.mutableElements().boundingBox(),P.textureCache.texture=P.data.bufferCanvases[P.TEXTURE_BUFFER];var ze=P.data.bufferContexts[P.TEXTURE_BUFFER];ze.setTransform(1,0,0,1,0,0),ze.clearRect(0,0,P.canvasWidth*P.textureMult,P.canvasHeight*P.textureMult),P.render({forcedContext:ze,drawOnlyNodeLayer:!0,forcedPxRatio:$*P.textureMult});var Ut=P.textureCache.viewport={zoom:H.zoom(),pan:H.pan(),width:P.canvasWidth,height:P.canvasHeight};Ut.mpan={x:(0-Ut.pan.x)/Ut.zoom,y:(0-Ut.pan.y)/Ut.zoom}}G[P.DRAG]=!1,G[P.NODE]=!1;var ke=z.contexts[P.NODE],xn=P.textureCache.texture,Ut=P.textureCache.viewport;ke.setTransform(1,0,0,1,0,0),it?xe(ke,0,0,Ut.width,Ut.height):ke.clearRect(0,0,Ut.width,Ut.height);var tn=It.core("outside-texture-bg-color").value,an=It.core("outside-texture-bg-opacity").value;P.colorFillStyle(ke,tn[0],tn[1],tn[2],an),ke.fillRect(0,0,Ut.width,Ut.height);var Pt=H.zoom();de(ke,!1),ke.clearRect(Ut.mpan.x,Ut.mpan.y,Ut.width/Ut.zoom/$,Ut.height/Ut.zoom/$),ke.drawImage(xn,Ut.mpan.x,Ut.mpan.y,Ut.width/Ut.zoom/$,Ut.height/Ut.zoom/$)}else P.textureOnViewport&&!p&&(P.textureCache=null);var Sn=H.extent(),Vn=P.pinching||P.hoverData.dragging||P.swipePanning||P.data.wheelZooming||P.hoverData.draggingEles||P.cy.animated(),or=P.hideEdgesOnViewport&&Vn,Rn=[];if(Rn[P.NODE]=!G[P.NODE]&&it&&!P.clearedForMotionBlur[P.NODE]||P.clearingMotionBlur,Rn[P.NODE]&&(P.clearedForMotionBlur[P.NODE]=!0),Rn[P.DRAG]=!G[P.DRAG]&&it&&!P.clearedForMotionBlur[P.DRAG]||P.clearingMotionBlur,Rn[P.DRAG]&&(P.clearedForMotionBlur[P.DRAG]=!0),G[P.NODE]||x||C||Rn[P.NODE]){var ar=it&&!Rn[P.NODE]&<!==1,ke=p||(ar?P.data.bufferContexts[P.MOTIONBLUR_BUFFER_NODE]:z.contexts[P.NODE]),yr=it&&!ar?"motionBlur":void 0;de(ke,yr),or?P.drawCachedNodes(ke,ye.nondrag,$,Sn):P.drawLayeredElements(ke,ye.nondrag,$,Sn),P.debug&&P.drawDebugPoints(ke,ye.nondrag),!x&&!it&&(G[P.NODE]=!1)}if(!C&&(G[P.DRAG]||x||Rn[P.DRAG])){var ar=it&&!Rn[P.DRAG]&<!==1,ke=p||(ar?P.data.bufferContexts[P.MOTIONBLUR_BUFFER_DRAG]:z.contexts[P.DRAG]);de(ke,it&&!ar?"motionBlur":void 0),or?P.drawCachedNodes(ke,ye.drag,$,Sn):P.drawCachedElements(ke,ye.drag,$,Sn),P.debug&&P.drawDebugPoints(ke,ye.drag),!x&&!it&&(G[P.DRAG]=!1)}if(P.showFps||!C&&G[P.SELECT_BOX]&&!x){var ke=p||z.contexts[P.SELECT_BOX];if(de(ke),P.selection[4]==1&&(P.hoverData.selecting||P.touchData.selecting)){var Pt=P.cy.zoom(),kr=It.core("selection-box-border-width").value/Pt;ke.lineWidth=kr,ke.fillStyle="rgba("+It.core("selection-box-color").value[0]+","+It.core("selection-box-color").value[1]+","+It.core("selection-box-color").value[2]+","+It.core("selection-box-opacity").value+")",ke.fillRect(P.selection[0],P.selection[1],P.selection[2]-P.selection[0],P.selection[3]-P.selection[1]),kr>0&&(ke.strokeStyle="rgba("+It.core("selection-box-border-color").value[0]+","+It.core("selection-box-border-color").value[1]+","+It.core("selection-box-border-color").value[2]+","+It.core("selection-box-opacity").value+")",ke.strokeRect(P.selection[0],P.selection[1],P.selection[2]-P.selection[0],P.selection[3]-P.selection[1]))}if(z.bgActivePosistion&&!P.hoverData.selecting){var Pt=P.cy.zoom(),br=z.bgActivePosistion;ke.fillStyle="rgba("+It.core("active-bg-color").value[0]+","+It.core("active-bg-color").value[1]+","+It.core("active-bg-color").value[2]+","+It.core("active-bg-opacity").value+")",ke.beginPath(),ke.arc(br.x,br.y,It.core("active-bg-size").pfValue/Pt,0,2*Math.PI),ke.fill()}var dr=P.lastRedrawTime;if(P.showFps&&dr){dr=Math.round(dr);var kn=Math.round(1e3/dr);ke.setTransform(1,0,0,1,0,0),ke.fillStyle="rgba(255, 0, 0, 0.75)",ke.strokeStyle="rgba(255, 0, 0, 0.75)",ke.lineWidth=1,ke.fillText("1 frame = "+dr+" ms = "+kn+" fps",0,20);var wr=60;ke.strokeRect(0,30,250,20),ke.fillRect(0,30,250*Math.min(kn/wr,1),20)}x||(G[P.SELECT_BOX]=!1)}if(it&<!==1){var Ar=z.contexts[P.NODE],ci=P.data.bufferCanvases[P.MOTIONBLUR_BUFFER_NODE],ui=z.contexts[P.DRAG],ps=P.data.bufferCanvases[P.MOTIONBLUR_BUFFER_DRAG],ga=function(mi,ys,Xi){mi.setTransform(1,0,0,1,0,0),Xi||!kt?mi.clearRect(0,0,P.canvasWidth,P.canvasHeight):xe(mi,0,0,P.canvasWidth,P.canvasHeight);var li=lt;mi.drawImage(ys,0,0,P.canvasWidth*li,P.canvasHeight*li,0,0,P.canvasWidth,P.canvasHeight)};(G[P.NODE]||Rn[P.NODE])&&(ga(Ar,ci,Rn[P.NODE]),G[P.NODE]=!1),(G[P.DRAG]||Rn[P.DRAG])&&(ga(ui,ps,Rn[P.DRAG]),G[P.DRAG]=!1)}P.prevViewport=Ut,P.clearingMotionBlur&&(P.clearingMotionBlur=!1,P.motionBlurCleared=!0,P.motionBlur=!0),it&&(P.motionBlurTimeout=setTimeout(function(){P.motionBlurTimeout=null,P.clearedForMotionBlur[P.NODE]=!1,P.clearedForMotionBlur[P.DRAG]=!1,P.motionBlur=!1,P.clearingMotionBlur=!Q,P.mbFrames=0,G[P.NODE]=!0,G[P.DRAG]=!0,P.redraw()},mnt)),p||H.emit("render")};var am={};am.drawPolygonPath=function(y,p,x,C,L,O){var P=C/2,$=L/2;y.beginPath&&y.beginPath(),y.moveTo(p+P*O[0],x+$*O[1]);for(var H=1;H0&&P>0){lt.clearRect(0,0,O,P),lt.globalCompositeOperation="source-over";var dt=this.getCachedZSortedEles();if(y.full)lt.translate(-C.x1*z,-C.y1*z),lt.scale(z,z),this.drawElements(lt,dt),lt.scale(1/z,1/z),lt.translate(C.x1*z,C.y1*z);else{var vt=p.pan(),Mt={x:vt.x*z,y:vt.y*z};z*=p.zoom(),lt.translate(Mt.x,Mt.y),lt.scale(z,z),this.drawElements(lt,dt),lt.scale(1/z,1/z),lt.translate(-Mt.x,-Mt.y)}y.bg&&(lt.globalCompositeOperation="destination-over",lt.fillStyle=y.bg,lt.rect(0,0,O,P),lt.fill())}return it};function vnt(y,p){for(var x=atob(y),C=new ArrayBuffer(x.length),L=new Uint8Array(C),O=0;O"u"?"undefined":f(OffscreenCanvas))!=="undefined"?x=new OffscreenCanvas(y,p):(x=document.createElement("canvas"),x.width=y,x.height=p),x},[pD,O2,im,nE,sm,py,ug,am,rE,zj].forEach(function(y){we(Mc,y)});var Vj=[{name:"null",impl:gj},{name:"base",impl:Tj},{name:"canvas",impl:ynt}],_C=[{type:"layout",extensions:Net},{type:"renderer",extensions:Vj}],g6={},lg={};function Uj(y,p,x){var C=x,L=function(ue){Vc("Can not register `"+p+"` for `"+y+"` since `"+ue+"` already exists in the prototype and can not be overridden")};if(y==="core"){if(X8.prototype[p])return L(p);X8.prototype[p]=x}else if(y==="collection"){if(g1.prototype[p])return L(p);g1.prototype[p]=x}else if(y==="layout"){for(var O=function(ue){this.options=ue,x.call(this,ue),ht(this._private)||(this._private={}),this._private.cy=ue.cy,this._private.listeners=[],this.createEmitter()},P=O.prototype=Object.create(x.prototype),$=[],H=0;H<$.length;H++){var z=$[H];P[z]=P[z]||function(){return this}}P.start&&!P.run?P.run=function(){return this.start(),this}:!P.start&&P.run&&(P.start=function(){return this.run(),this});var G=x.prototype.stop;P.stop=function(){var Ut=this.options;if(Ut&&Ut.animate){var ue=this.animations;if(ue)for(var Yt=0;Ytq&&(this.rect.x-=(this.labelWidth-q)/2,this.setWidth(this.labelWidth)),this.labelHeight>X&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-X)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-X),this.setHeight(this.labelHeight))}}},B.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==b.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},B.prototype.transform=function(R){var q=this.rect.x;q>_.WORLD_BOUNDARY?q=_.WORLD_BOUNDARY:q<-_.WORLD_BOUNDARY&&(q=-_.WORLD_BOUNDARY);var X=this.rect.y;X>_.WORLD_BOUNDARY?X=_.WORLD_BOUNDARY:X<-_.WORLD_BOUNDARY&&(X=-_.WORLD_BOUNDARY);var rt=new I(q,X),at=R.inverseTransformPoint(rt);this.setLocation(at.x,at.y)},B.prototype.getLeft=function(){return this.rect.x},B.prototype.getRight=function(){return this.rect.x+this.rect.width},B.prototype.getTop=function(){return this.rect.y},B.prototype.getBottom=function(){return this.rect.y+this.rect.height},B.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},f.exports=B},function(f,g,w){function v(b,E){b==null&&E==null?(this.x=0,this.y=0):(this.x=b,this.y=E)}v.prototype.getX=function(){return this.x},v.prototype.getY=function(){return this.y},v.prototype.setX=function(b){this.x=b},v.prototype.setY=function(b){this.y=b},v.prototype.getDifference=function(b){return new DimensionD(this.x-b.x,this.y-b.y)},v.prototype.getCopy=function(){return new v(this.x,this.y)},v.prototype.translate=function(b){return this.x+=b.width,this.y+=b.height,this},f.exports=v},function(f,g,w){var v=w(2),b=w(10),E=w(0),_=w(6),S=w(3),I=w(1),B=w(13),F=w(12),R=w(11);function q(rt,at,ut){v.call(this,ut),this.estimatedSize=b.MIN_VALUE,this.margin=E.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=rt,at!=null&&at instanceof _?this.graphManager=at:at!=null&&at instanceof Layout&&(this.graphManager=at.graphManager)}q.prototype=Object.create(v.prototype);for(var X in v)q[X]=v[X];q.prototype.getNodes=function(){return this.nodes},q.prototype.getEdges=function(){return this.edges},q.prototype.getGraphManager=function(){return this.graphManager},q.prototype.getParent=function(){return this.parent},q.prototype.getLeft=function(){return this.left},q.prototype.getRight=function(){return this.right},q.prototype.getTop=function(){return this.top},q.prototype.getBottom=function(){return this.bottom},q.prototype.isConnected=function(){return this.isConnected},q.prototype.add=function(rt,at,ut){if(at==null&&ut==null){var pt=rt;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(pt)>-1)throw"Node already in graph!";return pt.owner=this,this.getNodes().push(pt),pt}else{var yt=rt;if(!(this.getNodes().indexOf(at)>-1&&this.getNodes().indexOf(ut)>-1))throw"Source or target not in graph!";if(!(at.owner==ut.owner&&at.owner==this))throw"Both owners must be this graph!";return at.owner!=ut.owner?null:(yt.source=at,yt.target=ut,yt.isInterGraph=!1,this.getEdges().push(yt),at.edges.push(yt),ut!=at&&ut.edges.push(yt),yt)}},q.prototype.remove=function(rt){var at=rt;if(rt instanceof S){if(at==null)throw"Node is null!";if(!(at.owner!=null&&at.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var ut=at.edges.slice(),pt,yt=ut.length,mt=0;mt-1&&bt>-1))throw"Source and/or target doesn't know this edge!";pt.source.edges.splice(ht,1),pt.target!=pt.source&&pt.target.edges.splice(bt,1);var gt=pt.source.owner.getEdges().indexOf(pt);if(gt==-1)throw"Not in owner's edge list!";pt.source.owner.getEdges().splice(gt,1)}},q.prototype.updateLeftTop=function(){for(var rt=b.MAX_VALUE,at=b.MAX_VALUE,ut,pt,yt,mt=this.getNodes(),gt=mt.length,ht=0;htut&&(rt=ut),at>pt&&(at=pt)}return rt==b.MAX_VALUE?null:(mt[0].getParent().paddingLeft!=null?yt=mt[0].getParent().paddingLeft:yt=this.margin,this.left=at-yt,this.top=rt-yt,new F(this.left,this.top))},q.prototype.updateBounds=function(rt){for(var at=b.MAX_VALUE,ut=-b.MAX_VALUE,pt=b.MAX_VALUE,yt=-b.MAX_VALUE,mt,gt,ht,bt,Z,ft=this.nodes,Y=ft.length,Et=0;Etmt&&(at=mt),utht&&(pt=ht),ytmt&&(at=mt),utht&&(pt=ht),yt=this.nodes.length){var Y=0;ut.forEach(function(Et){Et.owner==rt&&Y++}),Y==this.nodes.length&&(this.isConnected=!0)}},f.exports=q},function(f,g,w){var v,b=w(1);function E(_){v=w(5),this.layout=_,this.graphs=[],this.edges=[]}E.prototype.addRoot=function(){var _=this.layout.newGraph(),S=this.layout.newNode(null),I=this.add(_,S);return this.setRootGraph(I),this.rootGraph},E.prototype.add=function(_,S,I,B,F){if(I==null&&B==null&&F==null){if(_==null)throw"Graph is null!";if(S==null)throw"Parent node is null!";if(this.graphs.indexOf(_)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(_),_.parent!=null)throw"Already has a parent!";if(S.child!=null)throw"Already has a child!";return _.parent=S,S.child=_,_}else{F=I,B=S,I=_;var R=B.getOwner(),q=F.getOwner();if(!(R!=null&&R.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(q!=null&&q.getGraphManager()==this))throw"Target not in this graph mgr!";if(R==q)return I.isInterGraph=!1,R.add(I,B,F);if(I.isInterGraph=!0,I.source=B,I.target=F,this.edges.indexOf(I)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(I),!(I.source!=null&&I.target!=null))throw"Edge source and/or target is null!";if(!(I.source.edges.indexOf(I)==-1&&I.target.edges.indexOf(I)==-1))throw"Edge already in source and/or target incidency list!";return I.source.edges.push(I),I.target.edges.push(I),I}},E.prototype.remove=function(_){if(_ instanceof v){var S=_;if(S.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(S==this.rootGraph||S.parent!=null&&S.parent.graphManager==this))throw"Invalid parent node!";var I=[];I=I.concat(S.getEdges());for(var B,F=I.length,R=0;R=_.getRight()?S[0]+=Math.min(_.getX()-E.getX(),E.getRight()-_.getRight()):_.getX()<=E.getX()&&_.getRight()>=E.getRight()&&(S[0]+=Math.min(E.getX()-_.getX(),_.getRight()-E.getRight())),E.getY()<=_.getY()&&E.getBottom()>=_.getBottom()?S[1]+=Math.min(_.getY()-E.getY(),E.getBottom()-_.getBottom()):_.getY()<=E.getY()&&_.getBottom()>=E.getBottom()&&(S[1]+=Math.min(E.getY()-_.getY(),_.getBottom()-E.getBottom()));var F=Math.abs((_.getCenterY()-E.getCenterY())/(_.getCenterX()-E.getCenterX()));_.getCenterY()===E.getCenterY()&&_.getCenterX()===E.getCenterX()&&(F=1);var R=F*S[0],q=S[1]/F;S[0]R)return S[0]=I,S[1]=X,S[2]=F,S[3]=ft,!1;if(BF)return S[0]=q,S[1]=B,S[2]=bt,S[3]=R,!1;if(IF?(S[0]=at,S[1]=ut,Nt=!0):(S[0]=rt,S[1]=X,Nt=!0):jt===Ft&&(I>F?(S[0]=q,S[1]=X,Nt=!0):(S[0]=pt,S[1]=ut,Nt=!0)),-Ct===Ft?F>I?(S[2]=Z,S[3]=ft,Dt=!0):(S[2]=bt,S[3]=ht,Dt=!0):Ct===Ft&&(F>I?(S[2]=gt,S[3]=ht,Dt=!0):(S[2]=Y,S[3]=ft,Dt=!0)),Nt&&Dt)return!1;if(I>F?B>R?(_t=this.getCardinalDirection(jt,Ft,4),xt=this.getCardinalDirection(Ct,Ft,2)):(_t=this.getCardinalDirection(-jt,Ft,3),xt=this.getCardinalDirection(-Ct,Ft,1)):B>R?(_t=this.getCardinalDirection(-jt,Ft,1),xt=this.getCardinalDirection(-Ct,Ft,3)):(_t=this.getCardinalDirection(jt,Ft,2),xt=this.getCardinalDirection(Ct,Ft,4)),!Nt)switch(_t){case 1:Be=X,Gt=I+-mt/Ft,S[0]=Gt,S[1]=Be;break;case 2:Gt=pt,Be=B+yt*Ft,S[0]=Gt,S[1]=Be;break;case 3:Be=ut,Gt=I+mt/Ft,S[0]=Gt,S[1]=Be;break;case 4:Gt=at,Be=B+-yt*Ft,S[0]=Gt,S[1]=Be;break}if(!Dt)switch(xt){case 1:vn=ht,Ot=F+-V/Ft,S[2]=Ot,S[3]=vn;break;case 2:Ot=Y,vn=R+Et*Ft,S[2]=Ot,S[3]=vn;break;case 3:vn=ft,Ot=F+V/Ft,S[2]=Ot,S[3]=vn;break;case 4:Ot=Z,vn=R+-Et*Ft,S[2]=Ot,S[3]=vn;break}}return!1},b.getCardinalDirection=function(E,_,S){return E>_?S:1+S%4},b.getIntersection=function(E,_,S,I){if(I==null)return this.getIntersection2(E,_,S);var B=E.x,F=E.y,R=_.x,q=_.y,X=S.x,rt=S.y,at=I.x,ut=I.y,pt=void 0,yt=void 0,mt=void 0,gt=void 0,ht=void 0,bt=void 0,Z=void 0,ft=void 0,Y=void 0;return mt=q-F,ht=B-R,Z=R*F-B*q,gt=ut-rt,bt=X-at,ft=at*rt-X*ut,Y=mt*bt-gt*ht,Y===0?null:(pt=(ht*ft-bt*Z)/Y,yt=(gt*Z-mt*ft)/Y,new v(pt,yt))},b.angleOfVector=function(E,_,S,I){var B=void 0;return E!==S?(B=Math.atan((I-_)/(S-E)),S0?1:b<0?-1:0},v.floor=function(b){return b<0?Math.ceil(b):Math.floor(b)},v.ceil=function(b){return b<0?Math.floor(b):Math.ceil(b)},f.exports=v},function(f,g,w){function v(){}v.MAX_VALUE=2147483647,v.MIN_VALUE=-2147483648,f.exports=v},function(f,g,w){var v=function(){function B(F,R){for(var q=0;q"u"?"undefined":v(E);return E==null||_!="object"&&_!="function"},f.exports=b},function(f,g,w){function v(X){if(Array.isArray(X)){for(var rt=0,at=Array(X.length);rt0&&rt;){for(mt.push(ht[0]);mt.length>0&&rt;){var bt=mt[0];mt.splice(0,1),yt.add(bt);for(var Z=bt.getEdges(),pt=0;pt-1&&ht.splice(V,1)}yt=new Set,gt=new Map}}return X},q.prototype.createDummyNodesForBendpoints=function(X){for(var rt=[],at=X.source,ut=this.graphManager.calcLowestCommonAncestor(X.source,X.target),pt=0;pt0){for(var ut=this.edgeToDummyNodes.get(at),pt=0;pt=0&&rt.splice(ft,1);var Y=gt.getNeighborsList();Y.forEach(function(Nt){if(at.indexOf(Nt)<0){var Dt=ut.get(Nt),jt=Dt-1;jt==1&&bt.push(Nt),ut.set(Nt,jt)}})}at=at.concat(bt),(rt.length==1||rt.length==2)&&(pt=!0,yt=rt[0])}return yt},q.prototype.setGraphManager=function(X){this.graphManager=X},f.exports=q},function(f,g,w){function v(){}v.seed=1,v.x=0,v.nextDouble=function(){return v.x=Math.sin(v.seed++)*1e4,v.x-Math.floor(v.x)},f.exports=v},function(f,g,w){var v=w(4);function b(E,_){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}b.prototype.getWorldOrgX=function(){return this.lworldOrgX},b.prototype.setWorldOrgX=function(E){this.lworldOrgX=E},b.prototype.getWorldOrgY=function(){return this.lworldOrgY},b.prototype.setWorldOrgY=function(E){this.lworldOrgY=E},b.prototype.getWorldExtX=function(){return this.lworldExtX},b.prototype.setWorldExtX=function(E){this.lworldExtX=E},b.prototype.getWorldExtY=function(){return this.lworldExtY},b.prototype.setWorldExtY=function(E){this.lworldExtY=E},b.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},b.prototype.setDeviceOrgX=function(E){this.ldeviceOrgX=E},b.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},b.prototype.setDeviceOrgY=function(E){this.ldeviceOrgY=E},b.prototype.getDeviceExtX=function(){return this.ldeviceExtX},b.prototype.setDeviceExtX=function(E){this.ldeviceExtX=E},b.prototype.getDeviceExtY=function(){return this.ldeviceExtY},b.prototype.setDeviceExtY=function(E){this.ldeviceExtY=E},b.prototype.transformX=function(E){var _=0,S=this.lworldExtX;return S!=0&&(_=this.ldeviceOrgX+(E-this.lworldOrgX)*this.ldeviceExtX/S),_},b.prototype.transformY=function(E){var _=0,S=this.lworldExtY;return S!=0&&(_=this.ldeviceOrgY+(E-this.lworldOrgY)*this.ldeviceExtY/S),_},b.prototype.inverseTransformX=function(E){var _=0,S=this.ldeviceExtX;return S!=0&&(_=this.lworldOrgX+(E-this.ldeviceOrgX)*this.lworldExtX/S),_},b.prototype.inverseTransformY=function(E){var _=0,S=this.ldeviceExtY;return S!=0&&(_=this.lworldOrgY+(E-this.ldeviceOrgY)*this.lworldExtY/S),_},b.prototype.inverseTransformPoint=function(E){var _=new v(this.inverseTransformX(E.x),this.inverseTransformY(E.y));return _},f.exports=b},function(f,g,w){function v(R){if(Array.isArray(R)){for(var q=0,X=Array(R.length);qE.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*E.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(R-E.ADAPTATION_LOWER_NODE_LIMIT)/(E.ADAPTATION_UPPER_NODE_LIMIT-E.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-E.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=E.MAX_NODE_DISPLACEMENT_INCREMENTAL):(R>E.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(E.COOLING_ADAPTATION_FACTOR,1-(R-E.ADAPTATION_LOWER_NODE_LIMIT)/(E.ADAPTATION_UPPER_NODE_LIMIT-E.ADAPTATION_LOWER_NODE_LIMIT)*(1-E.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=E.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},B.prototype.calcSpringForces=function(){for(var R=this.getAllEdges(),q,X=0;X0&&arguments[0]!==void 0?arguments[0]:!0,q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,X,rt,at,ut,pt=this.getAllNodes(),yt;if(this.useFRGridVariant)for(this.totalIterations%E.GRID_CALCULATION_CHECK_PERIOD==1&&R&&this.updateGrid(),yt=new Set,X=0;Xmt||yt>mt)&&(R.gravitationForceX=-this.gravityConstant*at,R.gravitationForceY=-this.gravityConstant*ut)):(mt=q.getEstimatedSize()*this.compoundGravityRangeFactor,(pt>mt||yt>mt)&&(R.gravitationForceX=-this.gravityConstant*at*this.compoundGravityConstant,R.gravitationForceY=-this.gravityConstant*ut*this.compoundGravityConstant))},B.prototype.isConverged=function(){var R,q=!1;return this.totalIterations>this.maxIterations/3&&(q=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),R=this.totalDisplacement=pt.length||mt>=pt[0].length)){for(var gt=0;gtB}}]),S}();f.exports=_},function(f,g,w){var v=function(){function _(S,I){for(var B=0;B2&&arguments[2]!==void 0?arguments[2]:1,F=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,R=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;b(this,_),this.sequence1=S,this.sequence2=I,this.match_score=B,this.mismatch_penalty=F,this.gap_penalty=R,this.iMax=S.length+1,this.jMax=I.length+1,this.grid=new Array(this.iMax);for(var q=0;q=0;S--){var I=this.listeners[S];I.event===E&&I.callback===_&&this.listeners.splice(S,1)}},b.emit=function(E,_){for(var S=0;SI.coolingFactor*I.maxNodeDisplacement&&(this.displacementX=I.coolingFactor*I.maxNodeDisplacement*E.sign(this.displacementX)),Math.abs(this.displacementY)>I.coolingFactor*I.maxNodeDisplacement&&(this.displacementY=I.coolingFactor*I.maxNodeDisplacement*E.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),I.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},_.prototype.propogateDisplacementToChildren=function(I,B){for(var F=this.getChild().getNodes(),R,q=0;q0)this.positionNodesRadially(ht);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var bt=new Set(this.getAllNodes()),Z=this.nodesWithGravity.filter(function(ft){return bt.has(ft)});this.graphManager.setAllNodesToApplyGravitation(Z),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},mt.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%F.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 ht=new Set(this.getAllNodes()),bt=this.nodesWithGravity.filter(function(Y){return ht.has(Y)});this.graphManager.setAllNodesToApplyGravitation(bt),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=F.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=F.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var Z=!this.isTreeGrowing&&!this.isGrowthFinished,ft=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(Z,ft),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},mt.prototype.getPositionsData=function(){for(var ht=this.graphManager.getAllNodes(),bt={},Z=0;Z1){var Nt;for(Nt=0;Ntft&&(ft=Math.floor(V.y)),Et=Math.floor(V.x+B.DEFAULT_COMPONENT_SEPERATION)}this.transform(new X(R.WORLD_CENTER_X-V.x/2,R.WORLD_CENTER_Y-V.y/2))},mt.radialLayout=function(ht,bt,Z){var ft=Math.max(this.maxDiagonalInTree(ht),B.DEFAULT_RADIAL_SEPARATION);mt.branchRadialLayout(bt,null,0,359,0,ft);var Y=pt.calculateBounds(ht),Et=new yt;Et.setDeviceOrgX(Y.getMinX()),Et.setDeviceOrgY(Y.getMinY()),Et.setWorldOrgX(Z.x),Et.setWorldOrgY(Z.y);for(var V=0;V1;){var vn=Ot[0];Ot.splice(0,1);var Pe=Ft.indexOf(vn);Pe>=0&&Ft.splice(Pe,1),Gt--,_t--}bt!=null?Be=(Ft.indexOf(Ot[0])+1)%Gt:Be=0;for(var Ee=Math.abs(ft-Z)/_t,nn=Be;xt!=_t;nn=++nn%Gt){var sn=Ft[nn].getOtherEnd(ht);if(sn!=bt){var me=(Z+xt*Ee)%360,Fe=(me+Ee)%360;mt.branchRadialLayout(sn,ht,me,Fe,Y+Et,Et),xt++}}},mt.maxDiagonalInTree=function(ht){for(var bt=at.MIN_VALUE,Z=0;Zbt&&(bt=Y)}return bt},mt.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},mt.prototype.groupZeroDegreeMembers=function(){var ht=this,bt={};this.memberGroups={},this.idToDummyNode={};for(var Z=[],ft=this.graphManager.getAllNodes(),Y=0;Y"u"&&(bt[Nt]=[]),bt[Nt]=bt[Nt].concat(Et)}Object.keys(bt).forEach(function(Dt){if(bt[Dt].length>1){var jt="DummyCompound_"+Dt;ht.memberGroups[jt]=bt[Dt];var Ct=bt[Dt][0].getParent(),Ft=new S(ht.graphManager);Ft.id=jt,Ft.paddingLeft=Ct.paddingLeft||0,Ft.paddingRight=Ct.paddingRight||0,Ft.paddingBottom=Ct.paddingBottom||0,Ft.paddingTop=Ct.paddingTop||0,ht.idToDummyNode[jt]=Ft;var _t=ht.getGraphManager().add(ht.newGraph(),Ft),xt=Ct.getChild();xt.add(Ft);for(var Gt=0;Gt=0;ht--){var bt=this.compoundOrder[ht],Z=bt.id,ft=bt.paddingLeft,Y=bt.paddingTop;this.adjustLocations(this.tiledMemberPack[Z],bt.rect.x,bt.rect.y,ft,Y)}},mt.prototype.repopulateZeroDegreeMembers=function(){var ht=this,bt=this.tiledZeroDegreePack;Object.keys(bt).forEach(function(Z){var ft=ht.idToDummyNode[Z],Y=ft.paddingLeft,Et=ft.paddingTop;ht.adjustLocations(bt[Z],ft.rect.x,ft.rect.y,Y,Et)})},mt.prototype.getToBeTiled=function(ht){var bt=ht.id;if(this.toBeTiled[bt]!=null)return this.toBeTiled[bt];var Z=ht.getChild();if(Z==null)return this.toBeTiled[bt]=!1,!1;for(var ft=Z.getNodes(),Y=0;Y0)return this.toBeTiled[bt]=!1,!1;if(Et.getChild()==null){this.toBeTiled[Et.id]=!1;continue}if(!this.getToBeTiled(Et))return this.toBeTiled[bt]=!1,!1}return this.toBeTiled[bt]=!0,!0},mt.prototype.getNodeDegree=function(ht){ht.id;for(var bt=ht.getEdges(),Z=0,ft=0;ftDt&&(Dt=Ct.rect.height)}Z+=Dt+ht.verticalPadding}},mt.prototype.tileCompoundMembers=function(ht,bt){var Z=this;this.tiledMemberPack=[],Object.keys(ht).forEach(function(ft){var Y=bt[ft];Z.tiledMemberPack[ft]=Z.tileNodes(ht[ft],Y.paddingLeft+Y.paddingRight),Y.rect.width=Z.tiledMemberPack[ft].width,Y.rect.height=Z.tiledMemberPack[ft].height})},mt.prototype.tileNodes=function(ht,bt){var Z=B.TILING_PADDING_VERTICAL,ft=B.TILING_PADDING_HORIZONTAL,Y={rows:[],rowWidth:[],rowHeight:[],width:0,height:bt,verticalPadding:Z,horizontalPadding:ft};ht.sort(function(Nt,Dt){return Nt.rect.width*Nt.rect.height>Dt.rect.width*Dt.rect.height?-1:Nt.rect.width*Nt.rect.height0&&(V+=ht.horizontalPadding),ht.rowWidth[Z]=V,ht.width0&&(Nt+=ht.verticalPadding);var Dt=0;Nt>ht.rowHeight[Z]&&(Dt=ht.rowHeight[Z],ht.rowHeight[Z]=Nt,Dt=ht.rowHeight[Z]-Dt),ht.height+=Dt,ht.rows[Z].push(bt)},mt.prototype.getShortestRowIndex=function(ht){for(var bt=-1,Z=Number.MAX_VALUE,ft=0;ftZ&&(bt=ft,Z=ht.rowWidth[ft]);return bt},mt.prototype.canAddHorizontal=function(ht,bt,Z){var ft=this.getShortestRowIndex(ht);if(ft<0)return!0;var Y=ht.rowWidth[ft];if(Y+ht.horizontalPadding+bt<=ht.width)return!0;var Et=0;ht.rowHeight[ft]0&&(Et=Z+ht.verticalPadding-ht.rowHeight[ft]);var V;ht.width-Y>=bt+ht.horizontalPadding?V=(ht.height+Et)/(Y+bt+ht.horizontalPadding):V=(ht.height+Et)/ht.width,Et=Z+ht.verticalPadding;var Nt;return ht.widthEt&&bt!=Z){ft.splice(-1,1),ht.rows[Z].push(Y),ht.rowWidth[bt]=ht.rowWidth[bt]-Et,ht.rowWidth[Z]=ht.rowWidth[Z]+Et,ht.width=ht.rowWidth[instance.getLongestRowIndex(ht)];for(var V=Number.MIN_VALUE,Nt=0;NtV&&(V=ft[Nt].height);bt>0&&(V+=ht.verticalPadding);var Dt=ht.rowHeight[bt]+ht.rowHeight[Z];ht.rowHeight[bt]=V,ht.rowHeight[Z]0)for(var xt=Y;xt<=Et;xt++)_t[0]+=this.grid[xt][V-1].length+this.grid[xt][V].length-1;if(Et0)for(var xt=V;xt<=Nt;xt++)_t[3]+=this.grid[Y-1][xt].length+this.grid[Y][xt].length-1;for(var Gt=at.MAX_VALUE,Be,Ot,vn=0;vn<_t.length;vn++)_t[vn]0){var Nt;Nt=yt.getGraphManager().add(yt.newGraph(),Z),this.processChildrenList(Nt,bt,yt)}}},X.prototype.stop=function(){return this.stopped=!0,this};var at=function(pt){pt("layout","cose-bilkent",X)};typeof cytoscape<"u"&&at(cytoscape),g.exports=at}])})})(FHt);var Xtn=FHt.exports;const Qtn=JT(Xtn);NHt.use(Qtn);function jHt(i,a,f,g){OHt.drawNode(i,a,f,g),a.children&&a.children.forEach((w,v)=>{jHt(i,w,f<0?v:f,g)})}function Jtn(i,a){a.edges().map((f,g)=>{const w=f.data();if(f[0]._private.bodyBounds){const v=f[0]._private.rscratch;Wt.trace("Edge: ",g,w),i.insert("path").attr("d",`M ${v.startX},${v.startY} L ${v.midX},${v.midY} L${v.endX},${v.endY} `).attr("class","edge section-edge-"+w.section+" edge-depth-"+w.depth)}})}function $Ht(i,a,f,g){a.add({group:"nodes",data:{id:i.id,labelText:i.descr,height:i.height,width:i.width,level:g,nodeId:i.id,padding:i.padding,type:i.type},position:{x:i.x,y:i.y}}),i.children&&i.children.forEach(w=>{$Ht(w,a,f,g+1),a.add({group:"edges",data:{id:`${i.id}_${w.id}`,source:i.id,target:w.id,depth:g,section:w.section}})})}function Ztn(i,a){return new Promise(f=>{const g=xr("body").append("div").attr("id","cy").attr("style","display:none"),w=NHt({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});g.remove(),$Ht(i,w,a,0),w.nodes().forEach(function(v){v.layoutDimensions=()=>{const b=v.data();return{w:b.width,h:b.height}}}),w.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),w.ready(v=>{Wt.info("Ready",v),f(w)})})}function ten(i){i.nodes().map((a,f)=>{const g=a.data();g.x=a.position().x,g.y=a.position().y,OHt.positionNode(g);const w=i2t(g.nodeId);Wt.info("Id:",f,"Position: (",a.position().x,", ",a.position().y,")",g),w.attr("transform",`translate(${a.position().x-g.width/2}, ${a.position().y-g.height/2})`),w.attr("attr",`apa-${f})`)})}const een={draw:async(i,a,f,g)=>{const w=Re();w.htmlLabels=!1,Wt.debug(`Rendering mindmap diagram +`+i,g.parser);const v=Re().securityLevel;let b;v==="sandbox"&&(b=xr("#i"+a));const _=xr(v==="sandbox"?b.nodes()[0].contentDocument.body:"body").select("#"+a);_.append("g");const S=g.db.getMindmap(),I=_.append("g");I.attr("class","mindmap-edges");const B=_.append("g");B.attr("class","mindmap-nodes"),jHt(B,S,-1,w);const F=await Ztn(S,w);Jtn(I,F),ten(F),g8(void 0,_,w.mindmap.padding,w.mindmap.useMaxWidth)}},nen=i=>{let a="";for(let f=0;f` + .edge { + stroke-width: 3; + } + ${nen(i)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${i.git0}; + } + .section-root text { + fill: ${i.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; + } +`}},Symbol.toStringTag,{value:"Module"}));var o2t=function(){var i=function(E,_,S,I){for(S=S||{},I=E.length;I--;S[E[I]]=_);return S},a=[1,9],f=[1,10],g=[1,5,10,12],w={trace:function(){},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:function(_,S,I,B,F,R,q){var X=R.length-1;switch(F){case 7:const rt=B.findOrCreateNode(R[X-4].trim().replaceAll('""','"')),at=B.findOrCreateNode(R[X-2].trim().replaceAll('""','"')),ut=parseFloat(R[X].trim());B.addLink(rt,at,ut);break;case 8:case 9:case 11:this.$=R[X];break;case 10:this.$=R[X-1];break}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:a,20:f},{1:[2,6],7:11,10:[1,12]},i(f,[2,4],{9:13,5:[1,14]}),{12:[1,15]},i(g,[2,8]),i(g,[2,9]),{19:[1,16]},i(g,[2,11]),{1:[2,1]},{1:[2,5]},i(f,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:a,20:f},{15:18,16:7,17:8,18:a,20:f},{18:[1,19]},i(f,[2,3]),{12:[1,20]},i(g,[2,10]),{15:21,16:7,17:8,18:a,20:f},i([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:function(_,S){if(S.recoverable)this.trace(_);else{var I=new Error(_);throw I.hash=S,I}},parse:function(_){var S=this,I=[0],B=[],F=[null],R=[],q=this.table,X="",rt=0,at=0,ut=2,pt=1,yt=R.slice.call(arguments,1),mt=Object.create(this.lexer),gt={yy:{}};for(var ht in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ht)&&(gt.yy[ht]=this.yy[ht]);mt.setInput(_,gt.yy),gt.yy.lexer=mt,gt.yy.parser=this,typeof mt.yylloc>"u"&&(mt.yylloc={});var bt=mt.yylloc;R.push(bt);var Z=mt.options&&mt.options.ranges;typeof gt.yy.parseError=="function"?this.parseError=gt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ft(){var Gt;return Gt=B.pop()||mt.lex()||pt,typeof Gt!="number"&&(Gt instanceof Array&&(B=Gt,Gt=B.pop()),Gt=S.symbols_[Gt]||Gt),Gt}for(var Y,Et,V,Nt,Dt={},jt,Ct,Ft,_t;;){if(Et=I[I.length-1],this.defaultActions[Et]?V=this.defaultActions[Et]:((Y===null||typeof Y>"u")&&(Y=ft()),V=q[Et]&&q[Et][Y]),typeof V>"u"||!V.length||!V[0]){var xt="";_t=[];for(jt in q[Et])this.terminals_[jt]&&jt>ut&&_t.push("'"+this.terminals_[jt]+"'");mt.showPosition?xt="Parse error on line "+(rt+1)+`: +`+mt.showPosition()+` +Expecting `+_t.join(", ")+", got '"+(this.terminals_[Y]||Y)+"'":xt="Parse error on line "+(rt+1)+": Unexpected "+(Y==pt?"end of input":"'"+(this.terminals_[Y]||Y)+"'"),this.parseError(xt,{text:mt.match,token:this.terminals_[Y]||Y,line:mt.yylineno,loc:bt,expected:_t})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Et+", token: "+Y);switch(V[0]){case 1:I.push(Y),F.push(mt.yytext),R.push(mt.yylloc),I.push(V[1]),Y=null,at=mt.yyleng,X=mt.yytext,rt=mt.yylineno,bt=mt.yylloc;break;case 2:if(Ct=this.productions_[V[1]][1],Dt.$=F[F.length-Ct],Dt._$={first_line:R[R.length-(Ct||1)].first_line,last_line:R[R.length-1].last_line,first_column:R[R.length-(Ct||1)].first_column,last_column:R[R.length-1].last_column},Z&&(Dt._$.range=[R[R.length-(Ct||1)].range[0],R[R.length-1].range[1]]),Nt=this.performAction.apply(Dt,[X,at,rt,gt.yy,V[1],F,R].concat(yt)),typeof Nt<"u")return Nt;Ct&&(I=I.slice(0,-1*Ct*2),F=F.slice(0,-1*Ct),R=R.slice(0,-1*Ct)),I.push(this.productions_[V[1]][0]),F.push(Dt.$),R.push(Dt._$),Ft=q[I[I.length-2]][I[I.length-1]],I.push(Ft);break;case 3:return!0}}return!0}},v=function(){var E={EOF:1,parseError:function(S,I){if(this.yy.parser)this.yy.parser.parseError(S,I);else throw new Error(S)},setInput:function(_,S){return this.yy=S||this.yy||{},this._input=_,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},input:function(){var _=this._input[0];this.yytext+=_,this.yyleng++,this.offset++,this.match+=_,this.matched+=_;var S=_.match(/(?:\r\n?|\n).*/g);return S?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),_},unput:function(_){var S=_.length,I=_.split(/(?:\r\n?|\n)/g);this._input=_+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-S),this.offset-=S;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),I.length-1&&(this.yylineno-=I.length-1);var F=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:I?(I.length===B.length?this.yylloc.first_column:0)+B[B.length-I.length].length-I[0].length:this.yylloc.first_column-S},this.options.ranges&&(this.yylloc.range=[F[0],F[0]+this.yyleng-S]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject: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},less:function(_){this.unput(this.match.slice(_))},pastInput:function(){var _=this.matched.substr(0,this.matched.length-this.match.length);return(_.length>20?"...":"")+_.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var _=this.match;return _.length<20&&(_+=this._input.substr(0,20-_.length)),(_.substr(0,20)+(_.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var _=this.pastInput(),S=new Array(_.length+1).join("-");return _+this.upcomingInput()+` +`+S+"^"},test_match:function(_,S){var I,B,F;if(this.options.backtrack_lexer&&(F={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&&(F.yylloc.range=this.yylloc.range.slice(0))),B=_[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+_[0].length},this.yytext+=_[0],this.match+=_[0],this.matches=_,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(_[0].length),this.matched+=_[0],I=this.performAction.call(this,this.yy,this,S,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),I)return I;if(this._backtrack){for(var R in F)this[R]=F[R];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var _,S,I,B;this._more||(this.yytext="",this.match="");for(var F=this._currentRules(),R=0;RS[0].length)){if(S=I,B=R,this.options.backtrack_lexer){if(_=this.test_match(I,F[R]),_!==!1)return _;if(this._backtrack){S=!1;continue}else return!1}else if(!this.options.flex)break}return S?(_=this.test_match(S,F[B]),_!==!1?_:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var S=this.next();return S||this.lex()},begin:function(S){this.conditionStack.push(S)},popState:function(){var S=this.conditionStack.length-1;return S>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(S){return S=this.conditionStack.length-1-Math.abs(S||0),S>=0?this.conditionStack[S]:"INITIAL"},pushState:function(S){this.begin(S)},stateStackSize:function(){return this.conditionStack.length},options:{easy_keword_rules:!0},performAction:function(S,I,B,F){switch(B){case 0:return this.pushState("csv"),4;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;case 5:return 20;case 6:return this.popState("escaped_text"),18;case 7:return 19}},rules:[/^(?:sankey-beta\b)/,/^(?:$)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:(\u002C))/,/^(?:(\u0022))/,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/,/^(?:(\u0022)(?!(\u0022)))/,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/],conditions:{csv:{rules:[1,2,3,4,5,6,7],inclusive:!1},escaped_text:{rules:[6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return E}();w.lexer=v;function b(){this.yy={}}return b.prototype=w,w.Parser=b,new b}();o2t.parser=o2t;const LX=o2t;let MX=[],DX=[],AM={};const ien=()=>{MX=[],DX=[],AM={},Wg()};class sen{constructor(a,f,g=0){this.source=a,this.target=f,this.value=g}}const aen=(i,a,f)=>{MX.push(new sen(i,a,f))};class oen{constructor(a){this.ID=a}}const cen={nodesMap:AM,getConfig:()=>Re().sankey,getNodes:()=>DX,getLinks:()=>MX,getGraph:()=>({nodes:DX.map(i=>({id:i.ID})),links:MX.map(i=>({source:i.source.ID,target:i.target.ID,value:i.value}))}),addLink:aen,findOrCreateNode:i=>(i=ei.sanitizeText(i,Re()),AM[i]||(AM[i]=new oen(i),DX.push(AM[i])),AM[i]),getAccTitle:Yg,setAccTitle:ng,getAccDescription:Qg,setAccDescription:Xg,getDiagramTitle:Jg,setDiagramTitle:y2,clear:ien};function zHt(i,a){let f;if(a===void 0)for(const g of i)g!=null&&(f=g)&&(f=g);else{let g=-1;for(let w of i)(w=a(w,++g,i))!=null&&(f=w)&&(f=w)}return f}function qHt(i,a){let f;if(a===void 0)for(const g of i)g!=null&&(f>g||f===void 0&&g>=g)&&(f=g);else{let g=-1;for(let w of i)(w=a(w,++g,i))!=null&&(f>w||f===void 0&&w>=w)&&(f=w)}return f}function c2t(i,a){let f=0;if(a===void 0)for(let g of i)(g=+g)&&(f+=g);else{let g=-1;for(let w of i)(w=+a(w,++g,i))&&(f+=w)}return f}function uen(i){return i.target.depth}function len(i){return i.depth}function hen(i,a){return a-1-i.height}function HHt(i,a){return i.sourceLinks.length?i.depth:a-1}function fen(i){return i.targetLinks.length?i.depth:i.sourceLinks.length?qHt(i.sourceLinks,uen)-1:0}function IX(i){return function(){return i}}function VHt(i,a){return OX(i.source,a.source)||i.index-a.index}function UHt(i,a){return OX(i.target,a.target)||i.index-a.index}function OX(i,a){return i.y0-a.y0}function u2t(i){return i.value}function den(i){return i.index}function gen(i){return i.nodes}function pen(i){return i.links}function GHt(i,a){const f=i.get(a);if(!f)throw new Error("missing: "+a);return f}function KHt({nodes:i}){for(const a of i){let f=a.y0,g=f;for(const w of a.sourceLinks)w.y0=f+w.width/2,f+=w.width;for(const w of a.targetLinks)w.y1=g+w.width/2,g+=w.width}}function ben(){let i=0,a=0,f=1,g=1,w=24,v=8,b,E=den,_=HHt,S,I,B=gen,F=pen,R=6;function q(){const Dt={nodes:B.apply(null,arguments),links:F.apply(null,arguments)};return X(Dt),rt(Dt),at(Dt),ut(Dt),mt(Dt),KHt(Dt),Dt}q.update=function(Dt){return KHt(Dt),Dt},q.nodeId=function(Dt){return arguments.length?(E=typeof Dt=="function"?Dt:IX(Dt),q):E},q.nodeAlign=function(Dt){return arguments.length?(_=typeof Dt=="function"?Dt:IX(Dt),q):_},q.nodeSort=function(Dt){return arguments.length?(S=Dt,q):S},q.nodeWidth=function(Dt){return arguments.length?(w=+Dt,q):w},q.nodePadding=function(Dt){return arguments.length?(v=b=+Dt,q):v},q.nodes=function(Dt){return arguments.length?(B=typeof Dt=="function"?Dt:IX(Dt),q):B},q.links=function(Dt){return arguments.length?(F=typeof Dt=="function"?Dt:IX(Dt),q):F},q.linkSort=function(Dt){return arguments.length?(I=Dt,q):I},q.size=function(Dt){return arguments.length?(i=a=0,f=+Dt[0],g=+Dt[1],q):[f-i,g-a]},q.extent=function(Dt){return arguments.length?(i=+Dt[0][0],f=+Dt[1][0],a=+Dt[0][1],g=+Dt[1][1],q):[[i,a],[f,g]]},q.iterations=function(Dt){return arguments.length?(R=+Dt,q):R};function X({nodes:Dt,links:jt}){for(const[Ft,_t]of Dt.entries())_t.index=Ft,_t.sourceLinks=[],_t.targetLinks=[];const Ct=new Map(Dt.map((Ft,_t)=>[E(Ft,_t,Dt),Ft]));for(const[Ft,_t]of jt.entries()){_t.index=Ft;let{source:xt,target:Gt}=_t;typeof xt!="object"&&(xt=_t.source=GHt(Ct,xt)),typeof Gt!="object"&&(Gt=_t.target=GHt(Ct,Gt)),xt.sourceLinks.push(_t),Gt.targetLinks.push(_t)}if(I!=null)for(const{sourceLinks:Ft,targetLinks:_t}of Dt)Ft.sort(I),_t.sort(I)}function rt({nodes:Dt}){for(const jt of Dt)jt.value=jt.fixedValue===void 0?Math.max(c2t(jt.sourceLinks,u2t),c2t(jt.targetLinks,u2t)):jt.fixedValue}function at({nodes:Dt}){const jt=Dt.length;let Ct=new Set(Dt),Ft=new Set,_t=0;for(;Ct.size;){for(const xt of Ct){xt.depth=_t;for(const{target:Gt}of xt.sourceLinks)Ft.add(Gt)}if(++_t>jt)throw new Error("circular link");Ct=Ft,Ft=new Set}}function ut({nodes:Dt}){const jt=Dt.length;let Ct=new Set(Dt),Ft=new Set,_t=0;for(;Ct.size;){for(const xt of Ct){xt.height=_t;for(const{source:Gt}of xt.targetLinks)Ft.add(Gt)}if(++_t>jt)throw new Error("circular link");Ct=Ft,Ft=new Set}}function pt({nodes:Dt}){const jt=zHt(Dt,_t=>_t.depth)+1,Ct=(f-i-w)/(jt-1),Ft=new Array(jt);for(const _t of Dt){const xt=Math.max(0,Math.min(jt-1,Math.floor(_.call(null,_t,jt))));_t.layer=xt,_t.x0=i+xt*Ct,_t.x1=_t.x0+w,Ft[xt]?Ft[xt].push(_t):Ft[xt]=[_t]}if(S)for(const _t of Ft)_t.sort(S);return Ft}function yt(Dt){const jt=qHt(Dt,Ct=>(g-a-(Ct.length-1)*b)/c2t(Ct,u2t));for(const Ct of Dt){let Ft=a;for(const _t of Ct){_t.y0=Ft,_t.y1=Ft+_t.value*jt,Ft=_t.y1+b;for(const xt of _t.sourceLinks)xt.width=xt.value*jt}Ft=(g-Ft+b)/(Ct.length+1);for(let _t=0;_tCt.length)-1)),yt(jt);for(let Ct=0;Ct0))continue;let vn=(Be/Ot-Gt.y0)*jt;Gt.y0+=vn,Gt.y1+=vn,Y(Gt)}S===void 0&&xt.sort(OX),bt(xt,Ct)}}function ht(Dt,jt,Ct){for(let Ft=Dt.length,_t=Ft-2;_t>=0;--_t){const xt=Dt[_t];for(const Gt of xt){let Be=0,Ot=0;for(const{target:Pe,value:Ee}of Gt.sourceLinks){let nn=Ee*(Pe.layer-Gt.layer);Be+=Nt(Gt,Pe)*nn,Ot+=nn}if(!(Ot>0))continue;let vn=(Be/Ot-Gt.y0)*jt;Gt.y0+=vn,Gt.y1+=vn,Y(Gt)}S===void 0&&xt.sort(OX),bt(xt,Ct)}}function bt(Dt,jt){const Ct=Dt.length>>1,Ft=Dt[Ct];ft(Dt,Ft.y0-b,Ct-1,jt),Z(Dt,Ft.y1+b,Ct+1,jt),ft(Dt,g,Dt.length-1,jt),Z(Dt,a,0,jt)}function Z(Dt,jt,Ct,Ft){for(;Ct1e-6&&(_t.y0+=xt,_t.y1+=xt),jt=_t.y1+b}}function ft(Dt,jt,Ct,Ft){for(;Ct>=0;--Ct){const _t=Dt[Ct],xt=(_t.y1-jt)*Ft;xt>1e-6&&(_t.y0-=xt,_t.y1-=xt),jt=_t.y0-b}}function Y({sourceLinks:Dt,targetLinks:jt}){if(I===void 0){for(const{source:{sourceLinks:Ct}}of jt)Ct.sort(UHt);for(const{target:{targetLinks:Ct}}of Dt)Ct.sort(VHt)}}function Et(Dt){if(I===void 0)for(const{sourceLinks:jt,targetLinks:Ct}of Dt)jt.sort(UHt),Ct.sort(VHt)}function V(Dt,jt){let Ct=Dt.y0-(Dt.sourceLinks.length-1)*b/2;for(const{target:Ft,width:_t}of Dt.sourceLinks){if(Ft===jt)break;Ct+=_t+b}for(const{source:Ft,width:_t}of jt.targetLinks){if(Ft===Dt)break;Ct-=_t}return Ct}function Nt(Dt,jt){let Ct=jt.y0-(jt.targetLinks.length-1)*b/2;for(const{source:Ft,width:_t}of jt.targetLinks){if(Ft===Dt)break;Ct+=_t+b}for(const{target:Ft,width:_t}of Dt.sourceLinks){if(Ft===jt)break;Ct-=_t}return Ct}return q}var l2t=Math.PI,h2t=2*l2t,$9=1e-6,wen=h2t-$9;function f2t(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function WHt(){return new f2t}f2t.prototype=WHt.prototype={constructor:f2t,moveTo:function(i,a){this._+="M"+(this._x0=this._x1=+i)+","+(this._y0=this._y1=+a)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(i,a){this._+="L"+(this._x1=+i)+","+(this._y1=+a)},quadraticCurveTo:function(i,a,f,g){this._+="Q"+ +i+","+ +a+","+(this._x1=+f)+","+(this._y1=+g)},bezierCurveTo:function(i,a,f,g,w,v){this._+="C"+ +i+","+ +a+","+ +f+","+ +g+","+(this._x1=+w)+","+(this._y1=+v)},arcTo:function(i,a,f,g,w){i=+i,a=+a,f=+f,g=+g,w=+w;var v=this._x1,b=this._y1,E=f-i,_=g-a,S=v-i,I=b-a,B=S*S+I*I;if(w<0)throw new Error("negative radius: "+w);if(this._x1===null)this._+="M"+(this._x1=i)+","+(this._y1=a);else if(B>$9)if(!(Math.abs(I*E-_*S)>$9)||!w)this._+="L"+(this._x1=i)+","+(this._y1=a);else{var F=f-v,R=g-b,q=E*E+_*_,X=F*F+R*R,rt=Math.sqrt(q),at=Math.sqrt(B),ut=w*Math.tan((l2t-Math.acos((q+B-X)/(2*rt*at)))/2),pt=ut/at,yt=ut/rt;Math.abs(pt-1)>$9&&(this._+="L"+(i+pt*S)+","+(a+pt*I)),this._+="A"+w+","+w+",0,0,"+ +(I*F>S*R)+","+(this._x1=i+yt*E)+","+(this._y1=a+yt*_)}},arc:function(i,a,f,g,w,v){i=+i,a=+a,f=+f,v=!!v;var b=f*Math.cos(g),E=f*Math.sin(g),_=i+b,S=a+E,I=1^v,B=v?g-w:w-g;if(f<0)throw new Error("negative radius: "+f);this._x1===null?this._+="M"+_+","+S:(Math.abs(this._x1-_)>$9||Math.abs(this._y1-S)>$9)&&(this._+="L"+_+","+S),f&&(B<0&&(B=B%h2t+h2t),B>wen?this._+="A"+f+","+f+",0,1,"+I+","+(i-b)+","+(a-E)+"A"+f+","+f+",0,1,"+I+","+(this._x1=_)+","+(this._y1=S):B>$9&&(this._+="A"+f+","+f+",0,"+ +(B>=l2t)+","+I+","+(this._x1=i+f*Math.cos(w))+","+(this._y1=a+f*Math.sin(w))))},rect:function(i,a,f,g){this._+="M"+(this._x0=this._x1=+i)+","+(this._y0=this._y1=+a)+"h"+ +f+"v"+ +g+"h"+-f+"Z"},toString:function(){return this._}};function YHt(i){return function(){return i}}function men(i){return i[0]}function ven(i){return i[1]}var yen=Array.prototype.slice;function xen(i){return i.source}function ken(i){return i.target}function Een(i){var a=xen,f=ken,g=men,w=ven,v=null;function b(){var E,_=yen.call(arguments),S=a.apply(this,_),I=f.apply(this,_);if(v||(v=E=WHt()),i(v,+g.apply(this,(_[0]=S,_)),+w.apply(this,_),+g.apply(this,(_[0]=I,_)),+w.apply(this,_)),E)return v=null,E+""||null}return b.source=function(E){return arguments.length?(a=E,b):a},b.target=function(E){return arguments.length?(f=E,b):f},b.x=function(E){return arguments.length?(g=typeof E=="function"?E:YHt(+E),b):g},b.y=function(E){return arguments.length?(w=typeof E=="function"?E:YHt(+E),b):w},b.context=function(E){return arguments.length?(v=E??null,b):v},b}function Ten(i,a,f,g,w){i.moveTo(a,f),i.bezierCurveTo(a=(a+g)/2,f,a,w,g,w)}function Cen(){return Een(Ten)}function _en(i){return[i.source.x1,i.y0]}function Sen(i){return[i.target.x0,i.y1]}function Aen(){return Cen().source(_en).target(Sen)}const XHt=class aOt{static next(a){return new aOt(a+ ++aOt.count)}constructor(a){this.id=a,this.href=`#${a}`}toString(){return"url("+this.href+")"}};XHt.count=0;let QHt=XHt;const Len={left:len,right:hen,center:fen,justify:HHt},Men={draw:function(i,a,f,g){const{securityLevel:w,sankey:v}=Re(),b=YFt.sankey;let E;w==="sandbox"&&(E=xr("#i"+a));const _=xr(w==="sandbox"?E.nodes()[0].contentDocument.body:"body"),S=w==="sandbox"?_.select(`[id="${a}"]`):xr(`[id="${a}"]`),I=(v==null?void 0:v.width)??b.width,B=(v==null?void 0:v.height)??b.width,F=(v==null?void 0:v.useMaxWidth)??b.useMaxWidth,R=(v==null?void 0:v.nodeAlignment)??b.nodeAlignment,q=(v==null?void 0:v.prefix)??b.prefix,X=(v==null?void 0:v.suffix)??b.suffix,rt=(v==null?void 0:v.showValues)??b.showValues,at=g.db.getGraph(),ut=Len[R],pt=10;ben().nodeId(ft=>ft.id).nodeWidth(pt).nodePadding(10+(rt?15:0)).nodeAlign(ut).extent([[0,0],[I,B]])(at);const mt=TW(NLe);S.append("g").attr("class","nodes").selectAll(".node").data(at.nodes).join("g").attr("class","node").attr("id",ft=>(ft.uid=QHt.next("node-")).id).attr("transform",function(ft){return"translate("+ft.x0+","+ft.y0+")"}).attr("x",ft=>ft.x0).attr("y",ft=>ft.y0).append("rect").attr("height",ft=>ft.y1-ft.y0).attr("width",ft=>ft.x1-ft.x0).attr("fill",ft=>mt(ft.id));const gt=({id:ft,value:Y})=>rt?`${ft} +${q}${Math.round(Y*100)/100}${X}`:ft;S.append("g").attr("class","node-labels").attr("font-family","sans-serif").attr("font-size",14).selectAll("text").data(at.nodes).join("text").attr("x",ft=>ft.x0(ft.y1+ft.y0)/2).attr("dy",`${rt?"0":"0.35"}em`).attr("text-anchor",ft=>ft.x0(Y.uid=QHt.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",Y=>Y.source.x1).attr("x2",Y=>Y.target.x0);ft.append("stop").attr("offset","0%").attr("stop-color",Y=>mt(Y.source.id)),ft.append("stop").attr("offset","100%").attr("stop-color",Y=>mt(Y.target.id))}let Z;switch(bt){case"gradient":Z=ft=>ft.uid;break;case"source":Z=ft=>mt(ft.source.id);break;case"target":Z=ft=>mt(ft.target.id);break;default:Z=bt}ht.append("path").attr("d",Aen()).attr("stroke",Z).attr("stroke-width",ft=>Math.max(1,ft.width)),g8(void 0,S,0,F)}},Den=i=>i.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` +`).trim(),Ien=LX.parse.bind(LX);LX.parse=i=>Ien(Den(i));const Oen=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:LX,db:cen,renderer:Men}},Symbol.toStringTag,{value:"Module"}));return x2}); diff --git a/assets/favicon.png b/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..d011bad7e1dcb9e2ec886a03cf662b0a4d19422a GIT binary patch literal 1673 zcmciBk3ZA-0|)T;=d)jCe$ChXI(2hISQ#<*B@{;bvWA&2C6gZ|l$D?3E+z6KT}pim zIlmjRNPf+_xsJ)0ToLo*7i*x_Py&jL(>-85rbLcb=Rb_o;0D!9JAvfRc zC;nX}#P+&X<%$460J;~0>JjI)^^XJ`0`Pwz*cCu007L~44M3-05Co8+$j^U%0lokV zgOtKiuswj2AP@qu=P__F1OmXu=RctX;3QrJVF&xGV7xI15C|X!z%meHcT|+PPM#WTa7}4i#xQS zG{9Tr#~WyGMf0 z3VYk(sc}yj{5~`wJnXo%p@@aylB)$AtiJzZ887G#QdC8ElvK4C(A zT5f%TaojHb>*$J^Mw2I&)xk#>rQ>%exjVxRf0wVw74LP}2Kp7a{<&fOD_>vQMXZ}| zYmPgcZKN~xOHb!aul_Au(+j?Aexd(StI! z^M;$0Tt+q)1$z55FvO2q!nN^t9IRIIIcM7A$L3~C!z>2pN8wi>bD+TBk&dnl-1%Cx za+;BCxyL@!_REE+mi^ZHX0VxHPfz1xH)DdksdCjpy8}i_yG$W2>!{;HoAe{5d@It? zb35FRYnj)4W6wEoiOHN~v-oWS+e9b5$!~glCAB4$M-rK(t+7|ONf^cZ()>V)*HxSn zE9#&@VeBblTxLK{{14i#sFU5P$22NQrj!>CJHOL(Y}%$n@N_%K__jZcRfb@N&dEY` zbl%Q{vu?qU#!}j)ReH%%skB47f$UCKMBXeevUkuSy`Qxy-cf)rD8O4e6esy~Z+iFj zO{l%gwp#ES6pM=}v5U`l*HSP1fAyo+lj{>N#ff|E?8rkBiM+tkb@vvZpoQt)^eG1Q)hnpIevoR;n}qM70aJzkFS24K(rQ05~lmCX;SOG zZ@2cN?*&9K_wtyf+FQDQH--!IKNgP2v@Cw}eK|73U{mg~L|u%#ucIUIQMVf1hL_tO zRp;hbEAGYQJP@P*ZGKx;mtvqIIDSMB>_Q?be_tQ8I_yLB_NMNMk`4H|izz|kplL~! zo^IjZo}d);e>+I2t?@T<>S`P6YHt@8x8`>=WbyrQM&z>gYpF=PNVJ`7-Lk~yS6aw4 zP568&I7DbSJlMC!HKt!2Du+iO+iYd<40jUbCX15OizX5dC(9)3^tGbYv2^A6q(3}5 z+tJC$WX_MHjJ78KQQr~YSB?H7zW&nd5*(xJv~br*#j~F2r!VKq%bP26c$HZ-%?0_q z(yUkZK5;Q@+bVQC)!jYFLpWp|;Nx6*qAav5hF4cnHzC3>yIO6#FC5;g5A%np$(adG`K%k3D z;Nz9qb@wHG^CkXLjjV=0s85S-FY|P7G;FnSZg^JlI+#lJeNp1%>_GhJN0EeGGH3Dc z1Syg?6qy#z-+gXB(bJC!HNCdXn>aNbYXbWdEByFlbDVPft;&4S@IMc z(8VVG!HJBkS=ZEKYHN4Q1{Zx&8+Z4QBxP5fb$0x1e4Mix6-g{U|2B~jp&Id~CGAj( zE3wXL_inC}a=66<>E)%OqNUYCl=L+5?g7$(5}S~xvCmmZbT&mi0pL@~x<`2TG-KNn N@TAh*crL6Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/assets/javascripts/bundle.0e2aa882.min.js b/assets/javascripts/bundle.0e2aa882.min.js new file mode 100644 index 000000000..f8630885a --- /dev/null +++ b/assets/javascripts/bundle.0e2aa882.min.js @@ -0,0 +1,3 @@ +"use strict";(()=>{var Bi=Object.create;var _r=Object.defineProperty;var Gi=Object.getOwnPropertyDescriptor;var Ji=Object.getOwnPropertyNames,Bt=Object.getOwnPropertySymbols,Xi=Object.getPrototypeOf,Ar=Object.prototype.hasOwnProperty,ho=Object.prototype.propertyIsEnumerable;var uo=(e,t,r)=>t in e?_r(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,k=(e,t)=>{for(var r in t||(t={}))Ar.call(t,r)&&uo(e,r,t[r]);if(Bt)for(var r of Bt(t))ho.call(t,r)&&uo(e,r,t[r]);return e};var bo=(e,t)=>{var r={};for(var o in e)Ar.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&Bt)for(var o of Bt(e))t.indexOf(o)<0&&ho.call(e,o)&&(r[o]=e[o]);return r};var Cr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Zi=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Ji(t))!Ar.call(e,n)&&n!==r&&_r(e,n,{get:()=>t[n],enumerable:!(o=Gi(t,n))||o.enumerable});return e};var Gt=(e,t,r)=>(r=e!=null?Bi(Xi(e)):{},Zi(t||!e||!e.__esModule?_r(r,"default",{value:e,enumerable:!0}):r,e));var vo=(e,t,r)=>new Promise((o,n)=>{var i=c=>{try{a(r.next(c))}catch(p){n(p)}},s=c=>{try{a(r.throw(c))}catch(p){n(p)}},a=c=>c.done?o(c.value):Promise.resolve(c.value).then(i,s);a((r=r.apply(e,t)).next())});var xo=Cr((Hr,go)=>{(function(e,t){typeof Hr=="object"&&typeof go!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(Hr,function(){"use strict";function e(r){var o=!0,n=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(H){return!!(H&&H!==document&&H.nodeName!=="HTML"&&H.nodeName!=="BODY"&&"classList"in H&&"contains"in H.classList)}function c(H){var mt=H.type,Fe=H.tagName;return!!(Fe==="INPUT"&&s[mt]&&!H.readOnly||Fe==="TEXTAREA"&&!H.readOnly||H.isContentEditable)}function p(H){H.classList.contains("focus-visible")||(H.classList.add("focus-visible"),H.setAttribute("data-focus-visible-added",""))}function l(H){H.hasAttribute("data-focus-visible-added")&&(H.classList.remove("focus-visible"),H.removeAttribute("data-focus-visible-added"))}function f(H){H.metaKey||H.altKey||H.ctrlKey||(a(r.activeElement)&&p(r.activeElement),o=!0)}function u(H){o=!1}function d(H){a(H.target)&&(o||c(H.target))&&p(H.target)}function g(H){a(H.target)&&(H.target.classList.contains("focus-visible")||H.target.hasAttribute("data-focus-visible-added"))&&(n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),l(H.target))}function M(H){document.visibilityState==="hidden"&&(n&&(o=!0),ee())}function ee(){document.addEventListener("mousemove",Z),document.addEventListener("mousedown",Z),document.addEventListener("mouseup",Z),document.addEventListener("pointermove",Z),document.addEventListener("pointerdown",Z),document.addEventListener("pointerup",Z),document.addEventListener("touchmove",Z),document.addEventListener("touchstart",Z),document.addEventListener("touchend",Z)}function ne(){document.removeEventListener("mousemove",Z),document.removeEventListener("mousedown",Z),document.removeEventListener("mouseup",Z),document.removeEventListener("pointermove",Z),document.removeEventListener("pointerdown",Z),document.removeEventListener("pointerup",Z),document.removeEventListener("touchmove",Z),document.removeEventListener("touchstart",Z),document.removeEventListener("touchend",Z)}function Z(H){H.target.nodeName&&H.target.nodeName.toLowerCase()==="html"||(o=!1,ne())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",u,!0),document.addEventListener("pointerdown",u,!0),document.addEventListener("touchstart",u,!0),document.addEventListener("visibilitychange",M,!0),ee(),r.addEventListener("focus",d,!0),r.addEventListener("blur",g,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var ao=Cr((Vt,io)=>{(function(t,r){typeof Vt=="object"&&typeof io=="object"?io.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Vt=="object"?Vt.ClipboardJS=r():t.ClipboardJS=r()})(Vt,function(){return function(){var e={686:function(o,n,i){"use strict";i.d(n,{default:function(){return Yi}});var s=i(279),a=i.n(s),c=i(370),p=i.n(c),l=i(817),f=i.n(l);function u(z){try{return document.execCommand(z)}catch(A){return!1}}var d=function(A){var L=f()(A);return u("cut"),L},g=d;function M(z){var A=document.documentElement.getAttribute("dir")==="rtl",L=document.createElement("textarea");L.style.fontSize="12pt",L.style.border="0",L.style.padding="0",L.style.margin="0",L.style.position="absolute",L.style[A?"right":"left"]="-9999px";var D=window.pageYOffset||document.documentElement.scrollTop;return L.style.top="".concat(D,"px"),L.setAttribute("readonly",""),L.value=z,L}var ee=function(A,L){var D=M(A);L.container.appendChild(D);var N=f()(D);return u("copy"),D.remove(),N},ne=function(A){var L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},D="";return typeof A=="string"?D=ee(A,L):A instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(A==null?void 0:A.type)?D=ee(A.value,L):(D=f()(A),u("copy")),D},Z=ne;function H(z){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?H=function(L){return typeof L}:H=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},H(z)}var mt=function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},L=A.action,D=L===void 0?"copy":L,N=A.container,G=A.target,We=A.text;if(D!=="copy"&&D!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(G!==void 0)if(G&&H(G)==="object"&&G.nodeType===1){if(D==="copy"&&G.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(D==="cut"&&(G.hasAttribute("readonly")||G.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(We)return Z(We,{container:N});if(G)return D==="cut"?g(G):Z(G,{container:N})},Fe=mt;function P(z){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?P=function(L){return typeof L}:P=function(L){return L&&typeof Symbol=="function"&&L.constructor===Symbol&&L!==Symbol.prototype?"symbol":typeof L},P(z)}function se(z,A){if(!(z instanceof A))throw new TypeError("Cannot call a class as a function")}function ce(z,A){for(var L=0;L0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof N.action=="function"?N.action:this.defaultAction,this.target=typeof N.target=="function"?N.target:this.defaultTarget,this.text=typeof N.text=="function"?N.text:this.defaultText,this.container=P(N.container)==="object"?N.container:document.body}},{key:"listenClick",value:function(N){var G=this;this.listener=p()(N,"click",function(We){return G.onClick(We)})}},{key:"onClick",value:function(N){var G=N.delegateTarget||N.currentTarget,We=this.action(G)||"copy",Yt=Fe({action:We,container:this.container,target:this.target(G),text:this.text(G)});this.emit(Yt?"success":"error",{action:We,text:Yt,trigger:G,clearSelection:function(){G&&G.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(N){return Lr("action",N)}},{key:"defaultTarget",value:function(N){var G=Lr("target",N);if(G)return document.querySelector(G)}},{key:"defaultText",value:function(N){return Lr("text",N)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(N){var G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return Z(N,G)}},{key:"cut",value:function(N){return g(N)}},{key:"isSupported",value:function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],G=typeof N=="string"?[N]:N,We=!!document.queryCommandSupported;return G.forEach(function(Yt){We=We&&!!document.queryCommandSupported(Yt)}),We}}]),L}(a()),Yi=Qi},828:function(o){var n=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==n;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}o.exports=s},438:function(o,n,i){var s=i(828);function a(l,f,u,d,g){var M=p.apply(this,arguments);return l.addEventListener(u,M,g),{destroy:function(){l.removeEventListener(u,M,g)}}}function c(l,f,u,d,g){return typeof l.addEventListener=="function"?a.apply(null,arguments):typeof u=="function"?a.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(M){return a(M,f,u,d,g)}))}function p(l,f,u,d){return function(g){g.delegateTarget=s(g.target,f),g.delegateTarget&&d.call(l,g)}}o.exports=c},879:function(o,n){n.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},n.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||n.node(i[0]))},n.string=function(i){return typeof i=="string"||i instanceof String},n.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(o,n,i){var s=i(879),a=i(438);function c(u,d,g){if(!u&&!d&&!g)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(g))throw new TypeError("Third argument must be a Function");if(s.node(u))return p(u,d,g);if(s.nodeList(u))return l(u,d,g);if(s.string(u))return f(u,d,g);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function p(u,d,g){return u.addEventListener(d,g),{destroy:function(){u.removeEventListener(d,g)}}}function l(u,d,g){return Array.prototype.forEach.call(u,function(M){M.addEventListener(d,g)}),{destroy:function(){Array.prototype.forEach.call(u,function(M){M.removeEventListener(d,g)})}}}function f(u,d,g){return a(document.body,u,d,g)}o.exports=c},817:function(o){function n(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),p=document.createRange();p.selectNodeContents(i),c.removeAllRanges(),c.addRange(p),s=c.toString()}return s}o.exports=n},279:function(o){function n(){}n.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function p(){c.off(i,p),s.apply(a,arguments)}return p._=s,this.on(i,p,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,p=a.length;for(c;c{"use strict";var ms=/["'&<>]/;di.exports=fs;function fs(e){var t=""+e,r=ms.exec(t);if(!r)return t;var o,n="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(p[0]===6||p[0]===2)){r=0;continue}if(p[0]===3&&(!i||p[1]>i[0]&&p[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function K(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var o=r.call(e),n,i=[],s;try{for(;(t===void 0||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(s)throw s.error}}return i}function Y(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,i;o1||a(u,d)})})}function a(u,d){try{c(o[u](d))}catch(g){f(i[0][3],g)}}function c(u){u.value instanceof ft?Promise.resolve(u.value.v).then(p,l):f(i[0][2],u)}function p(u){a("next",u)}function l(u){a("throw",u)}function f(u,d){u(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function wo(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Oe=="function"?Oe(e):e[Symbol.iterator](),r={},o("next"),o("throw"),o("return"),r[Symbol.asyncIterator]=function(){return this},r);function o(i){r[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),n(a,c,s.done,s.value)})}}function n(i,s,a,c){Promise.resolve(c).then(function(p){i({value:p,done:a})},s)}}function I(e){return typeof e=="function"}function gt(e){var t=function(o){Error.call(o),o.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var Xt=gt(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(o,n){return n+1+") "+o.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Je(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var ze=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Oe(s),c=a.next();!c.done;c=a.next()){var p=c.value;p.remove(this)}}catch(M){t={error:M}}finally{try{c&&!c.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var l=this.initialTeardown;if(I(l))try{l()}catch(M){i=M instanceof Xt?M.errors:[M]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var u=Oe(f),d=u.next();!d.done;d=u.next()){var g=d.value;try{To(g)}catch(M){i=i!=null?i:[],M instanceof Xt?i=Y(Y([],K(i)),K(M.errors)):i.push(M)}}}catch(M){o={error:M}}finally{try{d&&!d.done&&(n=u.return)&&n.call(u)}finally{if(o)throw o.error}}}if(i)throw new Xt(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)To(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Je(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Je(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var kr=ze.EMPTY;function Zt(e){return e instanceof ze||e&&"closed"in e&&I(e.remove)&&I(e.add)&&I(e.unsubscribe)}function To(e){I(e)?e():e.unsubscribe()}var Ue={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var xt={setTimeout:function(e,t){for(var r=[],o=2;o0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var o=this,n=this,i=n.hasError,s=n.isStopped,a=n.observers;return i||s?kr:(this.currentObservers=null,a.push(r),new ze(function(){o.currentObservers=null,Je(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var o=this,n=o.hasError,i=o.thrownError,s=o.isStopped;n?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new j;return r.source=this,r},t.create=function(r,o){return new Ho(r,o)},t}(j);var Ho=function(e){ie(t,e);function t(r,o){var n=e.call(this)||this;return n.destination=r,n.source=o,n}return t.prototype.next=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.next)===null||n===void 0||n.call(o,r)},t.prototype.error=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.error)===null||n===void 0||n.call(o,r)},t.prototype.complete=function(){var r,o;(o=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||o===void 0||o.call(r)},t.prototype._subscribe=function(r){var o,n;return(n=(o=this.source)===null||o===void 0?void 0:o.subscribe(r))!==null&&n!==void 0?n:kr},t}(w);var jr=function(e){ie(t,e);function t(r){var o=e.call(this)||this;return o._value=r,o}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(r){var o=e.prototype._subscribe.call(this,r);return!o.closed&&r.next(this._value),o},t.prototype.getValue=function(){var r=this,o=r.hasError,n=r.thrownError,i=r._value;if(o)throw n;return this._throwIfClosed(),i},t.prototype.next=function(r){e.prototype.next.call(this,this._value=r)},t}(w);var Pt={now:function(){return(Pt.delegate||Date).now()},delegate:void 0};var It=function(e){ie(t,e);function t(r,o,n){r===void 0&&(r=1/0),o===void 0&&(o=1/0),n===void 0&&(n=Pt);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=o,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=o===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,o),i}return t.prototype.next=function(r){var o=this,n=o.isStopped,i=o._buffer,s=o._infiniteTimeWindow,a=o._timestampProvider,c=o._windowTime;n||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var o=this._innerSubscribe(r),n=this,i=n._infiniteTimeWindow,s=n._buffer,a=s.slice(),c=0;c0?e.prototype.schedule.call(this,r,o):(this.delay=o,this.state=r,this.scheduler.flush(this),this)},t.prototype.execute=function(r,o){return o>0||this.closed?e.prototype.execute.call(this,r,o):this._execute(r,o)},t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!=null&&n>0||n==null&&this.delay>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.flush(this),0)},t}(Tt);var Ro=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(St);var Dr=new Ro(ko);var Po=function(e){ie(t,e);function t(r,o){var n=e.call(this,r,o)||this;return n.scheduler=r,n.work=o,n}return t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!==null&&n>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.actions.push(this),r._scheduled||(r._scheduled=wt.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,o,n){var i;if(n===void 0&&(n=0),n!=null?n>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,o,n);var s=r.actions;o!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==o&&(wt.cancelAnimationFrame(o),r._scheduled=void 0)},t}(Tt);var Io=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var o=this._scheduled;this._scheduled=void 0;var n=this.actions,i;r=r||n.shift();do if(i=r.execute(r.state,r.delay))break;while((r=n[0])&&r.id===o&&n.shift());if(this._active=!1,i){for(;(r=n[0])&&r.id===o&&n.shift();)r.unsubscribe();throw i}},t}(St);var ge=new Io(Po);var x=new j(function(e){return e.complete()});function rr(e){return e&&I(e.schedule)}function Nr(e){return e[e.length-1]}function st(e){return I(Nr(e))?e.pop():void 0}function Ie(e){return rr(Nr(e))?e.pop():void 0}function or(e,t){return typeof Nr(e)=="number"?e.pop():t}var Ot=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function nr(e){return I(e==null?void 0:e.then)}function ir(e){return I(e[Et])}function ar(e){return Symbol.asyncIterator&&I(e==null?void 0:e[Symbol.asyncIterator])}function sr(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function ca(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var cr=ca();function pr(e){return I(e==null?void 0:e[cr])}function lr(e){return Eo(this,arguments,function(){var r,o,n,i;return Jt(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,ft(r.read())];case 3:return o=s.sent(),n=o.value,i=o.done,i?[4,ft(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,ft(n)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function mr(e){return I(e==null?void 0:e.getReader)}function W(e){if(e instanceof j)return e;if(e!=null){if(ir(e))return pa(e);if(Ot(e))return la(e);if(nr(e))return ma(e);if(ar(e))return Fo(e);if(pr(e))return fa(e);if(mr(e))return ua(e)}throw sr(e)}function pa(e){return new j(function(t){var r=e[Et]();if(I(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function la(e){return new j(function(t){for(var r=0;r=2;return function(o){return o.pipe(e?v(function(n,i){return e(n,i,o)}):be,ye(1),r?tt(t):en(function(){return new ur}))}}function Yr(e){return e<=0?function(){return x}:y(function(t,r){var o=[];t.subscribe(E(r,function(n){o.push(n),e=2,!0))}function le(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new w}:t,o=e.resetOnError,n=o===void 0?!0:o,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(p){var l,f,u,d=0,g=!1,M=!1,ee=function(){f==null||f.unsubscribe(),f=void 0},ne=function(){ee(),l=u=void 0,g=M=!1},Z=function(){var H=l;ne(),H==null||H.unsubscribe()};return y(function(H,mt){d++,!M&&!g&&ee();var Fe=u=u!=null?u:r();mt.add(function(){d--,d===0&&!M&&!g&&(f=Br(Z,c))}),Fe.subscribe(mt),!l&&d>0&&(l=new dt({next:function(P){return Fe.next(P)},error:function(P){M=!0,ee(),f=Br(ne,n,P),Fe.error(P)},complete:function(){g=!0,ee(),f=Br(ne,s),Fe.complete()}}),W(H).subscribe(l))})(p)}}function Br(e,t){for(var r=[],o=2;oe.next(document)),e}function C(e,t=document){return Array.from(t.querySelectorAll(e))}function F(e,t=document){let r=fe(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function fe(e,t=document){return t.querySelector(e)||void 0}function Ve(){var e,t,r,o;return(o=(r=(t=(e=document.activeElement)==null?void 0:e.shadowRoot)==null?void 0:t.activeElement)!=null?r:document.activeElement)!=null?o:void 0}var Ha=T(h(document.body,"focusin"),h(document.body,"focusout")).pipe(Ae(1),q(void 0),m(()=>Ve()||document.body),X(1));function Ke(e){return Ha.pipe(m(t=>e.contains(t)),Q())}function ot(e,t){return $(()=>T(h(e,"mouseenter").pipe(m(()=>!0)),h(e,"mouseleave").pipe(m(()=>!1))).pipe(t?jt(r=>He(+!r*t)):be,q(e.matches(":hover"))))}function an(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)an(e,r)}function O(e,t,...r){let o=document.createElement(e);if(t)for(let n of Object.keys(t))typeof t[n]!="undefined"&&(typeof t[n]!="boolean"?o.setAttribute(n,t[n]):o.setAttribute(n,""));for(let n of r)an(o,n);return o}function br(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function _t(e){let t=O("script",{src:e});return $(()=>(document.head.appendChild(t),T(h(t,"load"),h(t,"error").pipe(b(()=>Vr(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),_(()=>document.head.removeChild(t)),ye(1))))}var sn=new w,$a=$(()=>typeof ResizeObserver=="undefined"?_t("https://unpkg.com/resize-observer-polyfill"):R(void 0)).pipe(m(()=>new ResizeObserver(e=>e.forEach(t=>sn.next(t)))),b(e=>T(Ze,R(e)).pipe(_(()=>e.disconnect()))),X(1));function ue(e){return{width:e.offsetWidth,height:e.offsetHeight}}function we(e){let t=e;for(;t.clientWidth===0&&t.parentElement;)t=t.parentElement;return $a.pipe(S(r=>r.observe(t)),b(r=>sn.pipe(v(o=>o.target===t),_(()=>r.unobserve(t)))),m(()=>ue(e)),q(ue(e)))}function At(e){return{width:e.scrollWidth,height:e.scrollHeight}}function vr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}function cn(e){let t=[],r=e.parentElement;for(;r;)(e.clientWidth>r.clientWidth||e.clientHeight>r.clientHeight)&&t.push(r),r=(e=r).parentElement;return t.length===0&&t.push(document.body),t}function Qe(e){return{x:e.offsetLeft,y:e.offsetTop}}function pn(e){let t=e.getBoundingClientRect();return{x:t.x+window.scrollX,y:t.y+window.scrollY}}function Zr(e){return T(h(window,"load"),h(window,"resize")).pipe($e(0,ge),m(()=>Qe(e)),q(Qe(e)))}function ln(e){return T(Zr(e),we(document.body)).pipe(m(()=>pn(e)),q(pn(e)))}function gr(e){return{x:e.scrollLeft,y:e.scrollTop}}function Ye(e){return T(h(e,"scroll"),h(window,"resize")).pipe($e(0,ge),m(()=>gr(e)),q(gr(e)))}var mn=new w,ka=$(()=>R(new IntersectionObserver(e=>{for(let t of e)mn.next(t)},{threshold:0}))).pipe(b(e=>T(Ze,R(e)).pipe(_(()=>e.disconnect()))),X(1));function Ct(e){return ka.pipe(S(t=>t.observe(e)),b(t=>mn.pipe(v(({target:r})=>r===e),_(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function fn(e,t=16){return Ye(e).pipe(m(({y:r})=>{let o=ue(e),n=At(e);return r>=n.height-o.height-t}),Q())}var xr={drawer:F("[data-md-toggle=drawer]"),search:F("[data-md-toggle=search]")};function un(e){return xr[e].checked}function nt(e,t){xr[e].checked!==t&&xr[e].click()}function Be(e){let t=xr[e];return h(t,"change").pipe(m(()=>t.checked),q(t.checked))}function Ra(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Pa(){return T(h(window,"compositionstart").pipe(m(()=>!0)),h(window,"compositionend").pipe(m(()=>!1))).pipe(q(!1))}function dn(){let e=h(window,"keydown").pipe(v(t=>!(t.metaKey||t.ctrlKey)),m(t=>({mode:un("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),v(({mode:t,type:r})=>{if(t==="global"){let o=Ve();if(typeof o!="undefined")return!Ra(o,r)}return!0}),le());return Pa().pipe(b(t=>t?x:e))}function Ee(){return new URL(location.href)}function it(e,t=!1){if(B("navigation.instant")&&!t){let r=O("a",{href:e.href});document.body.appendChild(r),r.click(),r.remove()}else location.href=e.href}function hn(){return new w}function bn(){return location.hash.slice(1)}function vn(e){let t=O("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function eo(e){return T(h(window,"hashchange"),e).pipe(m(bn),q(bn()),v(t=>t.length>0),X(1))}function gn(e){return eo(e).pipe(m(t=>fe(`[id="${t}"]`)),v(t=>typeof t!="undefined"))}function Ut(e){let t=matchMedia(e);return dr(r=>t.addListener(()=>r(t.matches))).pipe(q(t.matches))}function xn(){let e=matchMedia("print");return T(h(window,"beforeprint").pipe(m(()=>!0)),h(window,"afterprint").pipe(m(()=>!1))).pipe(q(e.matches))}function to(e,t){return e.pipe(b(r=>r?t():x))}function ro(e,t){return new j(r=>{let o=new XMLHttpRequest;return o.open("GET",`${e}`),o.responseType="blob",o.addEventListener("load",()=>{o.status>=200&&o.status<300?(r.next(o.response),r.complete()):r.error(new Error(o.statusText))}),o.addEventListener("error",()=>{r.error(new Error("Network error"))}),o.addEventListener("abort",()=>{r.complete()}),typeof(t==null?void 0:t.progress$)!="undefined"&&(o.addEventListener("progress",n=>{var i;if(n.lengthComputable)t.progress$.next(n.loaded/n.total*100);else{let s=(i=o.getResponseHeader("Content-Length"))!=null?i:0;t.progress$.next(n.loaded/+s*100)}}),t.progress$.next(5)),o.send(),()=>o.abort()})}function Ge(e,t){return ro(e,t).pipe(b(r=>r.text()),m(r=>JSON.parse(r)),X(1))}function yr(e,t){let r=new DOMParser;return ro(e,t).pipe(b(o=>o.text()),m(o=>r.parseFromString(o,"text/html")),X(1))}function yn(e,t){let r=new DOMParser;return ro(e,t).pipe(b(o=>o.text()),m(o=>r.parseFromString(o,"text/xml")),X(1))}function En(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function wn(){return T(h(window,"scroll",{passive:!0}),h(window,"resize",{passive:!0})).pipe(m(En),q(En()))}function Tn(){return{width:innerWidth,height:innerHeight}}function Sn(){return h(window,"resize",{passive:!0}).pipe(m(Tn),q(Tn()))}function On(){return V([wn(),Sn()]).pipe(m(([e,t])=>({offset:e,size:t})),X(1))}function Er(e,{viewport$:t,header$:r}){let o=t.pipe(re("size")),n=V([o,r]).pipe(m(()=>Qe(e)));return V([r,t,n]).pipe(m(([{height:i},{offset:s,size:a},{x:c,y:p}])=>({offset:{x:s.x-c,y:s.y-p+i},size:a})))}function Ia(e){return h(e,"message",t=>t.data)}function Fa(e){let t=new w;return t.subscribe(r=>e.postMessage(r)),t}function Mn(e,t=new Worker(e)){let r=Ia(t),o=Fa(t),n=new w;n.subscribe(o);let i=o.pipe(te(),ae(!0));return n.pipe(te(),Ne(r.pipe(U(i))),le())}var ja=F("#__config"),Ht=JSON.parse(ja.textContent);Ht.base=`${new URL(Ht.base,Ee())}`;function Te(){return Ht}function B(e){return Ht.features.includes(e)}function Le(e,t){return typeof t!="undefined"?Ht.translations[e].replace("#",t.toString()):Ht.translations[e]}function Ce(e,t=document){return F(`[data-md-component=${e}]`,t)}function me(e,t=document){return C(`[data-md-component=${e}]`,t)}function Wa(e){let t=F(".md-typeset > :first-child",e);return h(t,"click",{once:!0}).pipe(m(()=>F(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function Ln(e){if(!B("announce.dismiss")||!e.childElementCount)return x;if(!e.hidden){let t=F(".md-typeset",e);__md_hash(t.innerHTML)===__md_get("__announce")&&(e.hidden=!0)}return $(()=>{let t=new w;return t.subscribe(({hash:r})=>{e.hidden=!0,__md_set("__announce",r)}),Wa(e).pipe(S(r=>t.next(r)),_(()=>t.complete()),m(r=>k({ref:e},r)))})}function Ua(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function _n(e,t){let r=new w;return r.subscribe(({hidden:o})=>{e.hidden=o}),Ua(e,t).pipe(S(o=>r.next(o)),_(()=>r.complete()),m(o=>k({ref:e},o)))}function Dt(e,t){return t==="inline"?O("div",{class:"md-tooltip md-tooltip--inline",id:e,role:"tooltip"},O("div",{class:"md-tooltip__inner md-typeset"})):O("div",{class:"md-tooltip",id:e,role:"tooltip"},O("div",{class:"md-tooltip__inner md-typeset"}))}function wr(...e){return O("div",{class:"md-tooltip2",role:"dialog"},O("div",{class:"md-tooltip2__inner md-typeset"},e))}function An(...e){return O("div",{class:"md-tooltip2",role:"tooltip"},O("div",{class:"md-tooltip2__inner md-typeset"},e))}function Cn(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return O("aside",{class:"md-annotation",tabIndex:0},Dt(t),O("a",{href:r,class:"md-annotation__index",tabIndex:-1},O("span",{"data-md-annotation-id":e})))}else return O("aside",{class:"md-annotation",tabIndex:0},Dt(t),O("span",{class:"md-annotation__index",tabIndex:-1},O("span",{"data-md-annotation-id":e})))}function Hn(e){return O("button",{class:"md-code__button",title:Le("clipboard.copy"),"data-clipboard-target":`#${e} > code`,"data-md-type":"copy"})}function $n(){return O("button",{class:"md-code__button",title:"Toggle line selection","data-md-type":"select"})}function kn(){return O("nav",{class:"md-code__nav"})}function oo(e,t){let r=t&2,o=t&1,n=Object.keys(e.terms).filter(c=>!e.terms[c]).reduce((c,p)=>[...c,O("del",null,p)," "],[]).slice(0,-1),i=Te(),s=new URL(e.location,i.base);B("search.highlight")&&s.searchParams.set("h",Object.entries(e.terms).filter(([,c])=>c).reduce((c,[p])=>`${c} ${p}`.trim(),""));let{tags:a}=Te();return O("a",{href:`${s}`,class:"md-search-result__link",tabIndex:-1},O("article",{class:"md-search-result__article md-typeset","data-md-score":e.score.toFixed(2)},r>0&&O("div",{class:"md-search-result__icon md-icon"}),r>0&&O("h1",null,e.title),r<=0&&O("h2",null,e.title),o>0&&e.text.length>0&&e.text,e.tags&&e.tags.map(c=>{let p=a?c in a?`md-tag-icon md-tag--${a[c]}`:"md-tag-icon":"";return O("span",{class:`md-tag ${p}`},c)}),o>0&&n.length>0&&O("p",{class:"md-search-result__terms"},Le("search.result.term.missing"),": ",...n)))}function Rn(e){let t=e[0].score,r=[...e],o=Te(),n=r.findIndex(l=>!`${new URL(l.location,o.base)}`.includes("#")),[i]=r.splice(n,1),s=r.findIndex(l=>l.scoreoo(l,1)),...c.length?[O("details",{class:"md-search-result__more"},O("summary",{tabIndex:-1},O("div",null,c.length>0&&c.length===1?Le("search.result.more.one"):Le("search.result.more.other",c.length))),...c.map(l=>oo(l,1)))]:[]];return O("li",{class:"md-search-result__item"},p)}function Pn(e){return O("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>O("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?br(r):r)))}function no(e){let t=`tabbed-control tabbed-control--${e}`;return O("div",{class:t,hidden:!0},O("button",{class:"tabbed-button",tabIndex:-1,"aria-hidden":"true"}))}function In(e){return O("div",{class:"md-typeset__scrollwrap"},O("div",{class:"md-typeset__table"},e))}function Da(e){let t=Te(),r=new URL(`../${e.version}/`,t.base);return O("li",{class:"md-version__item"},O("a",{href:`${r}`,class:"md-version__link"},e.title))}function Fn(e,t){return O("div",{class:"md-version"},O("button",{class:"md-version__current","aria-label":Le("select.version")},t.title),O("ul",{class:"md-version__list"},e.map(Da)))}var Na=0;function Va(e){let t=V([Ke(e),ot(e,250)]).pipe(m(([o,n])=>o||n),Q()),r=$(()=>cn(e)).pipe(J(Ye),vt(1),b(()=>ln(e)));return t.pipe(ke(o=>o),b(()=>V([t,r])),m(([o,n])=>({active:o,offset:n})),le())}function Nt(e,t){let{content$:r,viewport$:o}=t,n=`__tooltip2_${Na++}`;return $(()=>{let i=new w,s=new jr(!1);i.pipe(te(),ae(!1)).subscribe(s);let a=s.pipe(jt(p=>He(+!p*250,Dr)),Q(),b(p=>p?r:x),S(p=>p.id=n),le());V([i.pipe(m(({active:p})=>p)),a.pipe(b(p=>ot(p,250)),q(!1))]).pipe(m(p=>p.some(l=>l))).subscribe(s);let c=s.pipe(v(p=>p),oe(a,o),m(([p,l,{size:f}])=>{let u=e.getBoundingClientRect(),d=u.width/2;if(l.role==="tooltip")return{x:d,y:8+u.height};if(u.y>=f.height/2){let{height:g}=ue(l);return{x:d,y:-16-g}}else return{x:d,y:16+u.height}}));return V([a,i,c]).subscribe(([p,{offset:l},f])=>{p.style.setProperty("--md-tooltip-host-x",`${l.x}px`),p.style.setProperty("--md-tooltip-host-y",`${l.y}px`),p.style.setProperty("--md-tooltip-x",`${f.x}px`),p.style.setProperty("--md-tooltip-y",`${f.y}px`),p.classList.toggle("md-tooltip2--top",f.y<0),p.classList.toggle("md-tooltip2--bottom",f.y>=0)}),s.pipe(v(p=>p),oe(a,(p,l)=>l),v(p=>p.role==="tooltip")).subscribe(p=>{let l=ue(F(":scope > *",p));p.style.setProperty("--md-tooltip-width",`${l.width}px`),p.style.setProperty("--md-tooltip-tail","0px")}),s.pipe(Q(),xe(ge),oe(a)).subscribe(([p,l])=>{l.classList.toggle("md-tooltip2--active",p)}),V([s.pipe(v(p=>p)),a]).subscribe(([p,l])=>{l.role==="dialog"?(e.setAttribute("aria-controls",n),e.setAttribute("aria-haspopup","dialog")):e.setAttribute("aria-describedby",n)}),s.pipe(v(p=>!p)).subscribe(()=>{e.removeAttribute("aria-controls"),e.removeAttribute("aria-describedby"),e.removeAttribute("aria-haspopup")}),Va(e).pipe(S(p=>i.next(p)),_(()=>i.complete()),m(p=>k({ref:e},p)))})}function za(e,t){let r=$(()=>V([Zr(e),Ye(t)])).pipe(m(([{x:o,y:n},i])=>{let{width:s,height:a}=ue(e);return{x:o-i.x+s/2,y:n-i.y+a/2}}));return Ke(e).pipe(b(o=>r.pipe(m(n=>({active:o,offset:n})),ye(+!o||1/0))))}function jn(e,t,{target$:r}){let[o,n]=Array.from(e.children);return $(()=>{let i=new w,s=i.pipe(te(),ae(!0));return i.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),Ct(e).pipe(U(s)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),T(i.pipe(v(({active:a})=>a)),i.pipe(Ae(250),v(({active:a})=>!a))).subscribe({next({active:a}){a?e.prepend(o):o.remove()},complete(){e.prepend(o)}}),i.pipe($e(16,ge)).subscribe(({active:a})=>{o.classList.toggle("md-tooltip--active",a)}),i.pipe(vt(125,ge),v(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),h(n,"click").pipe(U(s),v(a=>!(a.metaKey||a.ctrlKey))).subscribe(a=>{a.stopPropagation(),a.preventDefault()}),h(n,"mousedown").pipe(U(s),oe(i)).subscribe(([a,{active:c}])=>{var p;if(a.button!==0||a.metaKey||a.ctrlKey)a.preventDefault();else if(c){a.preventDefault();let l=e.parentElement.closest(".md-annotation");l instanceof HTMLElement?l.focus():(p=Ve())==null||p.blur()}}),r.pipe(U(s),v(a=>a===o),rt(125)).subscribe(()=>e.focus()),za(e,t).pipe(S(a=>i.next(a)),_(()=>i.complete()),m(a=>k({ref:e},a)))})}function qa(e){let t=Te();if(e.tagName!=="CODE")return[e];let r=[".c",".c1",".cm"];if(typeof t.annotate!="undefined"){let o=e.closest("[class|=language]");if(o)for(let n of Array.from(o.classList)){if(!n.startsWith("language-"))continue;let[,i]=n.split("-");i in t.annotate&&r.push(...t.annotate[i])}}return C(r.join(", "),e)}function Ka(e){let t=[];for(let r of qa(e)){let o=[],n=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=n.nextNode();i;i=n.nextNode())o.push(i);for(let i of o){let s;for(;s=/(\(\d+\))(!)?/.exec(i.textContent);){let[,a,c]=s;if(typeof c=="undefined"){let p=i.splitText(s.index);i=p.splitText(a.length),t.push(p)}else{i.textContent=a,t.push(i);break}}}}return t}function Wn(e,t){t.append(...Array.from(e.childNodes))}function Tr(e,t,{target$:r,print$:o}){let n=t.closest("[id]"),i=n==null?void 0:n.id,s=new Map;for(let a of Ka(t)){let[,c]=a.textContent.match(/\((\d+)\)/);fe(`:scope > li:nth-child(${c})`,e)&&(s.set(c,Cn(c,i)),a.replaceWith(s.get(c)))}return s.size===0?x:$(()=>{let a=new w,c=a.pipe(te(),ae(!0)),p=[];for(let[l,f]of s)p.push([F(".md-typeset",f),F(`:scope > li:nth-child(${l})`,e)]);return o.pipe(U(c)).subscribe(l=>{e.hidden=!l,e.classList.toggle("md-annotation-list",l);for(let[f,u]of p)l?Wn(f,u):Wn(u,f)}),T(...[...s].map(([,l])=>jn(l,t,{target$:r}))).pipe(_(()=>a.complete()),le())})}function Un(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return Un(t)}}function Dn(e,t){return $(()=>{let r=Un(e);return typeof r!="undefined"?Tr(r,e,t):x})}var Vn=Gt(ao());var Qa=0;function Ya(e,t){document.body.append(e);let{width:r}=ue(e);e.style.setProperty("--md-tooltip-width",`${r}px`),e.remove();let o=vr(t),n=typeof o!="undefined"?Ye(o):R({x:0,y:0}),i=T(Ke(t),ot(t)).pipe(Q());return V([i,n]).pipe(m(([s,a])=>{let{x:c,y:p}=Qe(t),l=ue(t),f=t.closest("table");return f&&t.parentElement&&(c+=f.offsetLeft+t.parentElement.offsetLeft,p+=f.offsetTop+t.parentElement.offsetTop),{active:s,offset:{x:c-a.x+l.width/2-r/2,y:p-a.y+l.height+8}}}))}function pt(e){let t=e.title;if(!t.length)return x;let r=`__tooltip_${Qa++}`,o=Dt(r,"inline"),n=F(".md-typeset",o);return n.innerHTML=t,$(()=>{let i=new w;return i.subscribe({next({offset:s}){o.style.setProperty("--md-tooltip-x",`${s.x}px`),o.style.setProperty("--md-tooltip-y",`${s.y}px`)},complete(){o.style.removeProperty("--md-tooltip-x"),o.style.removeProperty("--md-tooltip-y")}}),T(i.pipe(v(({active:s})=>s)),i.pipe(Ae(250),v(({active:s})=>!s))).subscribe({next({active:s}){s?(e.insertAdjacentElement("afterend",o),e.setAttribute("aria-describedby",r),e.removeAttribute("title")):(o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t))},complete(){o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t)}}),i.pipe($e(16,ge)).subscribe(({active:s})=>{o.classList.toggle("md-tooltip--active",s)}),i.pipe(vt(125,ge),v(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:s})=>s)).subscribe({next(s){s?o.style.setProperty("--md-tooltip-0",`${-s}px`):o.style.removeProperty("--md-tooltip-0")},complete(){o.style.removeProperty("--md-tooltip-0")}}),Ya(o,e).pipe(S(s=>i.next(s)),_(()=>i.complete()),m(s=>k({ref:e},s)))}).pipe(Xe(pe))}var Ba=0,Nn=T(h(window,"keydown").pipe(m(()=>!0)),T(h(window,"keyup"),h(window,"contextmenu")).pipe(m(()=>!1))).pipe(q(!1),X(1));function zn(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return zn(t)}}function Ga(e){return we(e).pipe(m(({width:t})=>({scrollable:At(e).width>t})),re("scrollable"))}function qn(e,t){let{matches:r}=matchMedia("(hover)"),o=$(()=>{let n=new w,i=n.pipe(Yr(1));n.subscribe(({scrollable:d})=>{d&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")});let s=[],a=e.closest("pre"),c=a.closest("[id]"),p=c?c.id:Ba++;a.id=`__code_${p}`;let l=[],f=e.closest(".highlight");if(f instanceof HTMLElement){let d=zn(f);if(typeof d!="undefined"&&(f.classList.contains("annotate")||B("content.code.annotate"))){let g=Tr(d,e,t);l.push(we(f).pipe(U(i),m(({width:M,height:ee})=>M&&ee),Q(),b(M=>M?g:x)))}}let u=C(":scope > span[id]",e);if(u.length&&(e.classList.add("md-code__content"),e.closest(".select")||B("content.code.select")&&!e.closest(".no-select"))){let d=+u[0].id.split("-").pop(),g=$n();s.push(g),B("content.tooltips")&&l.push(pt(g));let M=h(g,"click").pipe(Wt(P=>!P,!1),S(()=>g.blur()),le());M.subscribe(P=>{g.classList.toggle("md-code__button--active",P)});let ee=de(u).pipe(J(P=>ot(P).pipe(m(se=>[P,se]))));M.pipe(b(P=>P?ee:x)).subscribe(([P,se])=>{let ce=fe(".hll.select",P);if(ce&&!se)ce.replaceWith(...Array.from(ce.childNodes));else if(!ce&&se){let he=document.createElement("span");he.className="hll select",he.append(...Array.from(P.childNodes).slice(1)),P.append(he)}});let ne=de(u).pipe(J(P=>h(P,"mousedown").pipe(S(se=>se.preventDefault()),m(()=>P)))),Z=M.pipe(b(P=>P?ne:x),oe(Nn),m(([P,se])=>{var he;let ce=u.indexOf(P)+d;if(se===!1)return[ce,ce];{let Se=C(".hll",e).map(je=>u.indexOf(je.parentElement)+d);return(he=window.getSelection())==null||he.removeAllRanges(),[Math.min(ce,...Se),Math.max(ce,...Se)]}})),H=eo(x).pipe(v(P=>P.startsWith(`__codelineno-${p}-`)));H.subscribe(P=>{let[,,se]=P.split("-"),ce=se.split(":").map(Se=>+Se-d+1);ce.length===1&&ce.push(ce[0]);for(let Se of C(".hll:not(.select)",e))Se.replaceWith(...Array.from(Se.childNodes));let he=u.slice(ce[0]-1,ce[1]);for(let Se of he){let je=document.createElement("span");je.className="hll",je.append(...Array.from(Se.childNodes).slice(1)),Se.append(je)}}),H.pipe(ye(1),xe(pe)).subscribe(P=>{if(P.includes(":")){let se=document.getElementById(P.split(":")[0]);se&&setTimeout(()=>{let ce=se,he=-64;for(;ce!==document.body;)he+=ce.offsetTop,ce=ce.offsetParent;window.scrollTo({top:he})},1)}});let Fe=de(C('a[href^="#__codelineno"]',f)).pipe(J(P=>h(P,"click").pipe(S(se=>se.preventDefault()),m(()=>P)))).pipe(U(i),oe(Nn),m(([P,se])=>{let he=+F(`[id="${P.hash.slice(1)}"]`).parentElement.id.split("-").pop();if(se===!1)return[he,he];{let Se=C(".hll",e).map(je=>+je.parentElement.id.split("-").pop());return[Math.min(he,...Se),Math.max(he,...Se)]}}));T(Z,Fe).subscribe(P=>{let se=`#__codelineno-${p}-`;P[0]===P[1]?se+=P[0]:se+=`${P[0]}:${P[1]}`,history.replaceState({},"",se),window.dispatchEvent(new HashChangeEvent("hashchange",{newURL:window.location.origin+window.location.pathname+se,oldURL:window.location.href}))})}if(Vn.default.isSupported()&&(e.closest(".copy")||B("content.code.copy")&&!e.closest(".no-copy"))){let d=Hn(a.id);s.push(d),B("content.tooltips")&&l.push(pt(d))}if(s.length){let d=kn();d.append(...s),a.insertBefore(d,e)}return Ga(e).pipe(S(d=>n.next(d)),_(()=>n.complete()),m(d=>k({ref:e},d)),Ne(T(...l).pipe(U(i))))});return B("content.lazy")?Ct(e).pipe(v(n=>n),ye(1),b(()=>o)):o}function Ja(e,{target$:t,print$:r}){let o=!0;return T(t.pipe(m(n=>n.closest("details:not([open])")),v(n=>e===n),m(()=>({action:"open",reveal:!0}))),r.pipe(v(n=>n||!o),S(()=>o=e.open),m(n=>({action:n?"open":"close"}))))}function Kn(e,t){return $(()=>{let r=new w;return r.subscribe(({action:o,reveal:n})=>{e.toggleAttribute("open",o==="open"),n&&e.scrollIntoView()}),Ja(e,t).pipe(S(o=>r.next(o)),_(()=>r.complete()),m(o=>k({ref:e},o)))})}function Xa(e){let t=document.createElement("h3");t.innerHTML=e.innerHTML;let r=[t],o=e.nextElementSibling;for(;o&&!(o instanceof HTMLHeadingElement);)r.push(o),o=o.nextElementSibling;return r}function Qn(e,t){let{sitemap$:r}=t;if(!(e instanceof HTMLAnchorElement))return x;if(e.pathname===location.pathname)return x;if(!(B("navigation.instant.preview")||e.hasAttribute("data-preview")))return x;let o=V([Ke(e),ot(e)]).pipe(m(([i,s])=>i||s),Q(),v(i=>i));return ht([r,o]).pipe(b(([i])=>{let s=new URL(e.href);return s.search=s.hash="",i.has(`${s}`)?R(s):x}),b(i=>yr(i)),b(i=>{let s=e.hash?`article [id="${e.hash.slice(1)}"]`:"article h1",a=fe(s,i);return typeof a=="undefined"?x:R(Xa(a))})).pipe(b(i=>{let s=new j(a=>{let c=wr(...i);return a.next(c),document.body.append(c),()=>c.remove()});return Nt(e,k({content$:s},t))}))}var Yn=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color);stroke-width:.05rem}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}g #flowchart-circleEnd,g #flowchart-circleStart,g #flowchart-crossEnd,g #flowchart-crossStart,g #flowchart-pointEnd,g #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel,.nodeLabel p{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.attributeBoxEven,.attributeBoxOdd{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{fill:var(--md-mermaid-sequence-actor-bg-color);stroke:var(--md-mermaid-sequence-actor-border-color)}text.actor>tspan{fill:var(--md-mermaid-sequence-actor-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-mermaid-sequence-actor-line-color)}.actor-man circle,.actor-man line{fill:var(--md-mermaid-sequence-actorman-bg-color);stroke:var(--md-mermaid-sequence-actorman-line-color)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-sequence-message-line-color)}.note{fill:var(--md-mermaid-sequence-note-bg-color);stroke:var(--md-mermaid-sequence-note-border-color)}.loopText,.loopText>tspan,.messageText,.noteText>tspan{stroke:none;font-family:var(--md-mermaid-font-family)!important}.messageText{fill:var(--md-mermaid-sequence-message-fg-color)}.loopText,.loopText>tspan{fill:var(--md-mermaid-sequence-loop-fg-color)}.noteText>tspan{fill:var(--md-mermaid-sequence-note-fg-color)}#arrowhead path{fill:var(--md-mermaid-sequence-message-line-color);stroke:none}.loopLine{fill:var(--md-mermaid-sequence-loop-bg-color);stroke:var(--md-mermaid-sequence-loop-border-color)}.labelBox{fill:var(--md-mermaid-sequence-label-bg-color);stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-sequence-label-fg-color);font-family:var(--md-mermaid-font-family)}.sequenceNumber{fill:var(--md-mermaid-sequence-number-fg-color)}rect.rect{fill:var(--md-mermaid-sequence-box-bg-color);stroke:none}rect.rect+text.text{fill:var(--md-mermaid-sequence-box-fg-color)}defs #sequencenumber{fill:var(--md-mermaid-sequence-number-bg-color)!important}";var so,es=0;function ts(){return typeof mermaid=="undefined"||mermaid instanceof Element?_t("https://wpbrowser.wptestkit.dev/assets/external/unpkg.com/mermaid@10.7.0/dist/mermaid.min.js"):R(void 0)}function Bn(e){return e.classList.remove("mermaid"),so||(so=ts().pipe(S(()=>mermaid.initialize({startOnLoad:!1,themeCSS:Yn,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),X(1))),so.subscribe(()=>vo(this,null,function*(){e.classList.add("mermaid");let t=`__mermaid_${es++}`,r=O("div",{class:"mermaid"}),o=e.textContent,{svg:n,fn:i}=yield mermaid.render(t,o),s=r.attachShadow({mode:"closed"});s.innerHTML=n,e.replaceWith(r),i==null||i(s)})),so.pipe(m(()=>({ref:e})))}var Gn=O("table");function Jn(e){return e.replaceWith(Gn),Gn.replaceWith(In(e)),R({ref:e})}function rs(e){let t=e.find(r=>r.checked)||e[0];return T(...e.map(r=>h(r,"change").pipe(m(()=>F(`label[for="${r.id}"]`))))).pipe(q(F(`label[for="${t.id}"]`)),m(r=>({active:r})))}function Xn(e,{viewport$:t,target$:r}){let o=F(".tabbed-labels",e),n=C(":scope > input",e),i=no("prev");e.append(i);let s=no("next");return e.append(s),$(()=>{let a=new w,c=a.pipe(te(),ae(!0));V([a,we(e)]).pipe(U(c),$e(1,ge)).subscribe({next([{active:p},l]){let f=Qe(p),{width:u}=ue(p);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let d=gr(o);(f.xd.x+l.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),V([Ye(o),we(o)]).pipe(U(c)).subscribe(([p,l])=>{let f=At(o);i.hidden=p.x<16,s.hidden=p.x>f.width-l.width-16}),T(h(i,"click").pipe(m(()=>-1)),h(s,"click").pipe(m(()=>1))).pipe(U(c)).subscribe(p=>{let{width:l}=ue(o);o.scrollBy({left:l*p,behavior:"smooth"})}),r.pipe(U(c),v(p=>n.includes(p))).subscribe(p=>p.click()),o.classList.add("tabbed-labels--linked");for(let p of n){let l=F(`label[for="${p.id}"]`);l.replaceChildren(O("a",{href:`#${l.htmlFor}`,tabIndex:-1},...Array.from(l.childNodes))),h(l.firstElementChild,"click").pipe(U(c),v(f=>!(f.metaKey||f.ctrlKey)),S(f=>{f.preventDefault(),f.stopPropagation()})).subscribe(()=>{history.replaceState({},"",`#${l.htmlFor}`),l.click()})}return B("content.tabs.link")&&a.pipe(Re(1),oe(t)).subscribe(([{active:p},{offset:l}])=>{let f=p.innerText.trim();if(p.hasAttribute("data-md-switching"))p.removeAttribute("data-md-switching");else{let u=e.offsetTop-l.y;for(let g of C("[data-tabs]"))for(let M of C(":scope > input",g)){let ee=F(`label[for="${M.id}"]`);if(ee!==p&&ee.innerText.trim()===f){ee.setAttribute("data-md-switching",""),M.click();break}}window.scrollTo({top:e.offsetTop-u});let d=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...d])])}}),a.pipe(U(c)).subscribe(()=>{for(let p of C("audio, video",e))p.pause()}),rs(n).pipe(S(p=>a.next(p)),_(()=>a.complete()),m(p=>k({ref:e},p)))}).pipe(Xe(pe))}function Zn(e,t){let{viewport$:r,target$:o,print$:n}=t;return T(...C(".annotate:not(.highlight)",e).map(i=>Dn(i,{target$:o,print$:n})),...C("pre:not(.mermaid) > code",e).map(i=>qn(i,{target$:o,print$:n})),...C("a:not([title])",e).map(i=>Qn(i,t)),...C("pre.mermaid",e).map(i=>Bn(i)),...C("table:not([class])",e).map(i=>Jn(i)),...C("details",e).map(i=>Kn(i,{target$:o,print$:n})),...C("[data-tabs]",e).map(i=>Xn(i,{viewport$:r,target$:o})),...C("[title]",e).filter(()=>B("content.tooltips")).map(i=>Nt(i,k({content$:new j(s=>{let a=i.title,c=An(a);return s.next(c),i.removeAttribute("title"),document.body.append(c),()=>{c.remove(),i.setAttribute("title",a)}})},t))),...C(".footnote-ref",e).filter(()=>B("content.footnote.tooltips")).map(i=>Nt(i,k({content$:new j(s=>{let a=new URL(i.href).hash.slice(1),c=Array.from(document.getElementById(a).cloneNode(!0).children),p=wr(...c);return s.next(p),document.body.append(p),()=>p.remove()})},t))))}function os(e,{alert$:t}){return t.pipe(b(r=>T(R(!0),R(!1).pipe(rt(2e3))).pipe(m(o=>({message:r,active:o})))))}function ei(e,t){let r=F(".md-typeset",e);return $(()=>{let o=new w;return o.subscribe(({message:n,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=n}),os(e,t).pipe(S(n=>o.next(n)),_(()=>o.complete()),m(n=>k({ref:e},n)))})}function ns({viewport$:e}){if(!B("header.autohide"))return R(!1);let t=e.pipe(m(({offset:{y:n}})=>n),et(2,1),m(([n,i])=>[nMath.abs(i-n.y)>100),m(([,[n]])=>n),Q()),o=Be("search");return V([e,o]).pipe(m(([{offset:n},i])=>n.y>400&&!i),Q(),b(n=>n?r:R(!1)),q(!1))}function ti(e,t){return $(()=>V([we(e),ns(t)])).pipe(m(([{height:r},o])=>({height:r,hidden:o})),Q((r,o)=>r.height===o.height&&r.hidden===o.hidden),X(1))}function ri(e,{header$:t,main$:r}){return $(()=>{let o=new w,n=o.pipe(te(),ae(!0));o.pipe(re("active"),De(t)).subscribe(([{active:s},{hidden:a}])=>{e.classList.toggle("md-header--shadow",s&&!a),e.hidden=a});let i=de(C("[title]",e)).pipe(v(()=>B("content.tooltips")),J(s=>pt(s)));return r.subscribe(o),t.pipe(U(n),m(s=>k({ref:e},s)),Ne(i.pipe(U(n))))})}function is(e,{viewport$:t,header$:r}){return Er(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:o}})=>{let{height:n}=ue(e);return{active:o>=n}}),re("active"))}function oi(e,t){return $(()=>{let r=new w;r.subscribe({next({active:n}){e.classList.toggle("md-header__title--active",n)},complete(){e.classList.remove("md-header__title--active")}});let o=fe(".md-content h1");return typeof o=="undefined"?x:is(o,t).pipe(S(n=>r.next(n)),_(()=>r.complete()),m(n=>k({ref:e},n)))})}function ni(e,{viewport$:t,header$:r}){let o=r.pipe(m(({height:i})=>i),Q()),n=o.pipe(b(()=>we(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),re("bottom"))));return V([o,n,t]).pipe(m(([i,{top:s,bottom:a},{offset:{y:c},size:{height:p}}])=>(p=Math.max(0,p-Math.max(0,s-c,i)-Math.max(0,p+c-a)),{offset:s-i,height:p,active:s-i<=c})),Q((i,s)=>i.offset===s.offset&&i.height===s.height&&i.active===s.active))}function as(e){let t=__md_get("__palette")||{index:e.findIndex(o=>matchMedia(o.getAttribute("data-md-color-media")).matches)},r=Math.max(0,Math.min(t.index,e.length-1));return R(...e).pipe(J(o=>h(o,"change").pipe(m(()=>o))),q(e[r]),m(o=>({index:e.indexOf(o),color:{media:o.getAttribute("data-md-color-media"),scheme:o.getAttribute("data-md-color-scheme"),primary:o.getAttribute("data-md-color-primary"),accent:o.getAttribute("data-md-color-accent")}})),X(1))}function ii(e){let t=C("input",e),r=O("meta",{name:"theme-color"});document.head.appendChild(r);let o=O("meta",{name:"color-scheme"});document.head.appendChild(o);let n=Ut("(prefers-color-scheme: light)");return $(()=>{let i=new w;return i.subscribe(s=>{if(document.body.setAttribute("data-md-color-switching",""),s.color.media==="(prefers-color-scheme)"){let a=matchMedia("(prefers-color-scheme: light)"),c=document.querySelector(a.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");s.color.scheme=c.getAttribute("data-md-color-scheme"),s.color.primary=c.getAttribute("data-md-color-primary"),s.color.accent=c.getAttribute("data-md-color-accent")}for(let[a,c]of Object.entries(s.color))document.body.setAttribute(`data-md-color-${a}`,c);for(let a=0;a{let s=Ce("header"),a=window.getComputedStyle(s);return o.content=a.colorScheme,a.backgroundColor.match(/\d+/g).map(c=>(+c).toString(16).padStart(2,"0")).join("")})).subscribe(s=>r.content=`#${s}`),i.pipe(xe(pe)).subscribe(()=>{document.body.removeAttribute("data-md-color-switching")}),as(t).pipe(U(n.pipe(Re(1))),bt(),S(s=>i.next(s)),_(()=>i.complete()),m(s=>k({ref:e},s)))})}function ai(e,{progress$:t}){return $(()=>{let r=new w;return r.subscribe(({value:o})=>{e.style.setProperty("--md-progress-value",`${o}`)}),t.pipe(S(o=>r.next({value:o})),_(()=>r.complete()),m(o=>({ref:e,value:o})))})}function si(e,t){return e.protocol=t.protocol,e.hostname=t.hostname,e}function ss(e,t){let r=new Map;for(let o of C("url",e)){let n=F("loc",o),i=[si(new URL(n.textContent),t)];r.set(`${i[0]}`,i);for(let s of C("[rel=alternate]",o)){let a=s.getAttribute("href");a!=null&&i.push(si(new URL(a),t))}}return r}function $t(e){return yn(new URL("sitemap.xml",e)).pipe(m(t=>ss(t,new URL(e))),Me(()=>R(new Map)),le())}function ci({document$:e}){let t=new Map;e.pipe(b(()=>C("link[rel=alternate]")),m(r=>new URL(r.href)),v(r=>!t.has(r.toString())),J(r=>$t(r).pipe(m(o=>[r,o])))).subscribe(([r,o])=>{t.set(r.toString().replace(/\/$/,""),o)}),h(document.body,"click").pipe(v(r=>!r.metaKey&&!r.ctrlKey),b(r=>{if(r.target instanceof Element){let o=r.target.closest("a");if(o&&!o.target){let n=[...t].find(([f])=>o.href.startsWith(f));if(typeof n=="undefined")return x;let[i,s]=n,a=Ee();if(a.href.startsWith(i))return x;let c=Te(),p=a.href.replace(c.base,"");p=`${i}/${p}`;let l=s.has(p.split("#")[0])?new URL(p,c.base):new URL(i);return r.preventDefault(),R(l)}}return x})).subscribe(r=>it(r,!0))}var co=Gt(ao());function cs(e){e.setAttribute("data-md-copying","");let t=e.closest("[data-copy]"),r=t?t.getAttribute("data-copy"):e.innerText;return e.removeAttribute("data-md-copying"),r.trimEnd()}function pi({alert$:e}){co.default.isSupported()&&new j(t=>{new co.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||cs(F(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(S(t=>{t.trigger.focus()}),m(()=>Le("clipboard.copied"))).subscribe(e)}function li(e,t){if(!(e.target instanceof Element))return x;let r=e.target.closest("a");if(r===null)return x;if(r.target||e.metaKey||e.ctrlKey)return x;let o=new URL(r.href);return o.search=o.hash="",t.has(`${o}`)?(e.preventDefault(),R(r)):x}function mi(e){let t=new Map;for(let r of C(":scope > *",e.head))t.set(r.outerHTML,r);return t}function fi(e){for(let t of C("[href], [src]",e))for(let r of["href","src"]){let o=t.getAttribute(r);if(o&&!/^(?:[a-z]+:)?\/\//i.test(o)){t[r]=t[r];break}}return R(e)}function ps(e){for(let o of["[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...B("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let n=fe(o),i=fe(o,e);typeof n!="undefined"&&typeof i!="undefined"&&n.replaceWith(i)}let t=mi(document);for(let[o,n]of mi(e))t.has(o)?t.delete(o):document.head.appendChild(n);for(let o of t.values())o.remove();let r=Ce("container");return qe(C("script",r)).pipe(b(o=>{let n=e.createElement("script");if(o.src){for(let i of o.getAttributeNames())n.setAttribute(i,o.getAttribute(i));return o.replaceWith(n),new j(i=>{n.onload=()=>i.complete()})}else return n.textContent=o.textContent,o.replaceWith(n),x}),te(),ae(e))}function ui({sitemap$:e,location$:t,viewport$:r,progress$:o}){if(location.protocol==="file:")return x;R(document).subscribe(fi);let n=h(document.body,"click").pipe(De(e),b(([a,c])=>li(a,c)),m(({href:a})=>new URL(a)),le()),i=h(window,"popstate").pipe(m(Ee),le());n.pipe(oe(r)).subscribe(([a,{offset:c}])=>{history.replaceState(c,""),history.pushState(null,"",a)}),T(n,i).subscribe(t);let s=t.pipe(re("pathname"),b(a=>yr(a,{progress$:o}).pipe(Me(()=>(it(a,!0),x)))),b(fi),b(ps),le());return T(s.pipe(oe(t,(a,c)=>c)),t.pipe(re("pathname"),b(()=>t),re("hash")),t.pipe(Q((a,c)=>a.pathname===c.pathname&&a.hash===c.hash),b(()=>n),S(()=>history.back()))).subscribe(a=>{var c,p;history.state!==null||!a.hash?window.scrollTo(0,(p=(c=history.state)==null?void 0:c.y)!=null?p:0):(history.scrollRestoration="auto",vn(a.hash),history.scrollRestoration="manual")}),t.subscribe(()=>{history.scrollRestoration="manual"}),h(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}),r.pipe(re("offset"),Ae(100)).subscribe(({offset:a})=>{history.replaceState(a,"")}),B("navigation.instant.prefetch")&&T(h(document.body,"mousemove"),h(document.body,"focusin")).pipe(De(e),b(([a,c])=>li(a,c)),Ae(25),Qr(({href:a})=>a),hr(a=>{let c=document.createElement("link");return c.rel="prefetch",c.href=a.toString(),document.head.appendChild(c),h(c,"load").pipe(m(()=>c),ye(1))})).subscribe(a=>a.remove()),s}var bi=Gt(hi());function vi(e){let t=e.separator.split("|").map(n=>n.replace(/(\(\?[!=<][^)]+\))/g,"").length===0?"\uFFFD":n).join("|"),r=new RegExp(t,"img"),o=(n,i,s)=>`${i}${s}`;return n=>{n=n.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator}|)(${n.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return s=>(0,bi.default)(s).replace(i,o).replace(/<\/mark>(\s+)]*>/img,"$1")}}function zt(e){return e.type===1}function Sr(e){return e.type===3}function gi(e,t){let r=Mn(e);return T(R(location.protocol!=="file:"),Be("search")).pipe(ke(o=>o),b(()=>t)).subscribe(({config:o,docs:n})=>r.next({type:0,data:{config:o,docs:n,options:{suggest:B("search.suggest")}}})),r}function xi({document$:e}){let t=Te(),r=Ge(new URL("../versions.json",t.base)).pipe(Me(()=>x)),o=r.pipe(m(n=>{let[,i]=t.base.match(/([^/]+)\/?$/);return n.find(({version:s,aliases:a})=>s===i||a.includes(i))||n[0]}));r.pipe(m(n=>new Map(n.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),b(n=>h(document.body,"click").pipe(v(i=>!i.metaKey&&!i.ctrlKey),oe(o),b(([i,s])=>{if(i.target instanceof Element){let a=i.target.closest("a");if(a&&!a.target&&n.has(a.href)){let c=a.href;return!i.target.closest(".md-version")&&n.get(c)===s?x:(i.preventDefault(),R(c))}}return x}),b(i=>{let{version:s}=n.get(i);return $t(new URL(i)).pipe(m(a=>{let p=Ee().href.replace(t.base,"");return a.has(p.split("#")[0])?new URL(`../${s}/${p}`,t.base):new URL(i)}))})))).subscribe(n=>it(n,!0)),V([r,o]).subscribe(([n,i])=>{F(".md-header__topic").appendChild(Fn(n,i))}),e.pipe(b(()=>o)).subscribe(n=>{var s;let i=__md_get("__outdated",sessionStorage);if(i===null){i=!0;let a=((s=t.version)==null?void 0:s.default)||"latest";Array.isArray(a)||(a=[a]);e:for(let c of a)for(let p of n.aliases.concat(n.version))if(new RegExp(c,"i").test(p)){i=!1;break e}__md_set("__outdated",i,sessionStorage)}if(i)for(let a of me("outdated"))a.hidden=!1})}function ds(e,{worker$:t}){let{searchParams:r}=Ee();r.has("q")&&(nt("search",!0),e.value=r.get("q"),e.focus(),Be("search").pipe(ke(i=>!i)).subscribe(()=>{let i=Ee();i.searchParams.delete("q"),history.replaceState({},"",`${i}`)}));let o=Ke(e),n=T(t.pipe(ke(zt)),h(e,"keyup"),o).pipe(m(()=>e.value),Q());return V([n,o]).pipe(m(([i,s])=>({value:i,focus:s})),X(1))}function yi(e,{worker$:t}){let r=new w,o=r.pipe(te(),ae(!0));V([t.pipe(ke(zt)),r],(i,s)=>s).pipe(re("value")).subscribe(({value:i})=>t.next({type:2,data:i})),r.pipe(re("focus")).subscribe(({focus:i})=>{i&&nt("search",i)}),h(e.form,"reset").pipe(U(o)).subscribe(()=>e.focus());let n=F("header [for=__search]");return h(n,"click").subscribe(()=>e.focus()),ds(e,{worker$:t}).pipe(S(i=>r.next(i)),_(()=>r.complete()),m(i=>k({ref:e},i)),X(1))}function Ei(e,{worker$:t,query$:r}){let o=new w,n=fn(e.parentElement).pipe(v(Boolean)),i=e.parentElement,s=F(":scope > :first-child",e),a=F(":scope > :last-child",e);Be("search").subscribe(l=>a.setAttribute("role",l?"list":"presentation")),o.pipe(oe(r),Gr(t.pipe(ke(zt)))).subscribe(([{items:l},{value:f}])=>{switch(l.length){case 0:s.textContent=f.length?Le("search.result.none"):Le("search.result.placeholder");break;case 1:s.textContent=Le("search.result.one");break;default:let u=br(l.length);s.textContent=Le("search.result.other",u)}});let c=o.pipe(S(()=>a.innerHTML=""),b(({items:l})=>T(R(...l.slice(0,10)),R(...l.slice(10)).pipe(et(4),Xr(n),b(([f])=>f)))),m(Rn),le());return c.subscribe(l=>a.appendChild(l)),c.pipe(J(l=>{let f=fe("details",l);return typeof f=="undefined"?x:h(f,"toggle").pipe(U(o),m(()=>f))})).subscribe(l=>{l.open===!1&&l.offsetTop<=i.scrollTop&&i.scrollTo({top:l.offsetTop})}),t.pipe(v(Sr),m(({data:l})=>l)).pipe(S(l=>o.next(l)),_(()=>o.complete()),m(l=>k({ref:e},l)))}function hs(e,{query$:t}){return t.pipe(m(({value:r})=>{let o=Ee();return o.hash="",r=r.replace(/\s+/g,"+").replace(/&/g,"%26").replace(/=/g,"%3D"),o.search=`q=${r}`,{url:o}}))}function wi(e,t){let r=new w,o=r.pipe(te(),ae(!0));return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),h(e,"click").pipe(U(o)).subscribe(n=>n.preventDefault()),hs(e,t).pipe(S(n=>r.next(n)),_(()=>r.complete()),m(n=>k({ref:e},n)))}function Ti(e,{worker$:t,keyboard$:r}){let o=new w,n=Ce("search-query"),i=T(h(n,"keydown"),h(n,"focus")).pipe(xe(pe),m(()=>n.value),Q());return o.pipe(De(i),m(([{suggest:a},c])=>{let p=c.split(/([\s-]+)/);if(a!=null&&a.length&&p[p.length-1]){let l=a[a.length-1];l.startsWith(p[p.length-1])&&(p[p.length-1]=l)}else p.length=0;return p})).subscribe(a=>e.innerHTML=a.join("").replace(/\s/g," ")),r.pipe(v(({mode:a})=>a==="search")).subscribe(a=>{switch(a.type){case"ArrowRight":e.innerText.length&&n.selectionStart===n.value.length&&(n.value=e.innerText);break}}),t.pipe(v(Sr),m(({data:a})=>a)).pipe(S(a=>o.next(a)),_(()=>o.complete()),m(()=>({ref:e})))}function Si(e,{index$:t,keyboard$:r}){let o=Te();try{let n=gi(o.search,t),i=Ce("search-query",e),s=Ce("search-result",e);h(e,"click").pipe(v(({target:c})=>c instanceof Element&&!!c.closest("a"))).subscribe(()=>nt("search",!1)),r.pipe(v(({mode:c})=>c==="search")).subscribe(c=>{let p=Ve();switch(c.type){case"Enter":if(p===i){let l=new Map;for(let f of C(":first-child [href]",s)){let u=f.firstElementChild;l.set(f,parseFloat(u.getAttribute("data-md-score")))}if(l.size){let[[f]]=[...l].sort(([,u],[,d])=>d-u);f.click()}c.claim()}break;case"Escape":case"Tab":nt("search",!1),i.blur();break;case"ArrowUp":case"ArrowDown":if(typeof p=="undefined")i.focus();else{let l=[i,...C(":not(details) > [href], summary, details[open] [href]",s)],f=Math.max(0,(Math.max(0,l.indexOf(p))+l.length+(c.type==="ArrowUp"?-1:1))%l.length);l[f].focus()}c.claim();break;default:i!==Ve()&&i.focus()}}),r.pipe(v(({mode:c})=>c==="global")).subscribe(c=>{switch(c.type){case"f":case"s":case"/":i.focus(),i.select(),c.claim();break}});let a=yi(i,{worker$:n});return T(a,Ei(s,{worker$:n,query$:a})).pipe(Ne(...me("search-share",e).map(c=>wi(c,{query$:a})),...me("search-suggest",e).map(c=>Ti(c,{worker$:n,keyboard$:r}))))}catch(n){return e.hidden=!0,Ze}}function Oi(e,{index$:t,location$:r}){return V([t,r.pipe(q(Ee()),v(o=>!!o.searchParams.get("h")))]).pipe(m(([o,n])=>vi(o.config)(n.searchParams.get("h"))),m(o=>{var s;let n=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let a=i.nextNode();a;a=i.nextNode())if((s=a.parentElement)!=null&&s.offsetHeight){let c=a.textContent,p=o(c);p.length>c.length&&n.set(a,p)}for(let[a,c]of n){let{childNodes:p}=O("span",null,c);a.replaceWith(...Array.from(p))}return{ref:e,nodes:n}}))}function bs(e,{viewport$:t,main$:r}){let o=e.closest(".md-grid"),n=o.offsetTop-o.parentElement.offsetTop;return V([r,t]).pipe(m(([{offset:i,height:s},{offset:{y:a}}])=>(s=s+Math.min(n,Math.max(0,a-i))-n,{height:s,locked:a>=i+n})),Q((i,s)=>i.height===s.height&&i.locked===s.locked))}function po(e,o){var n=o,{header$:t}=n,r=bo(n,["header$"]);let i=F(".md-sidebar__scrollwrap",e),{y:s}=Qe(i);return $(()=>{let a=new w,c=a.pipe(te(),ae(!0)),p=a.pipe($e(0,ge));return p.pipe(oe(t)).subscribe({next([{height:l},{height:f}]){i.style.height=`${l-2*s}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),p.pipe(ke()).subscribe(()=>{for(let l of C(".md-nav__link--active[href]",e)){if(!l.clientHeight)continue;let f=l.closest(".md-sidebar__scrollwrap");if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=ue(f);f.scrollTo({top:u-d/2})}}}),de(C("label[tabindex]",e)).pipe(J(l=>h(l,"click").pipe(xe(pe),m(()=>l),U(c)))).subscribe(l=>{let f=F(`[id="${l.htmlFor}"]`);F(`[aria-labelledby="${l.id}"]`).setAttribute("aria-expanded",`${f.checked}`)}),bs(e,r).pipe(S(l=>a.next(l)),_(()=>a.complete()),m(l=>k({ref:e},l)))})}function Mi(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return ht(Ge(`${r}/releases/latest`).pipe(Me(()=>x),m(o=>({version:o.tag_name})),tt({})),Ge(r).pipe(Me(()=>x),m(o=>({stars:o.stargazers_count,forks:o.forks_count})),tt({}))).pipe(m(([o,n])=>k(k({},o),n)))}else{let r=`https://api.github.com/users/${e}`;return Ge(r).pipe(m(o=>({repositories:o.public_repos})),tt({}))}}function Li(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return Ge(r).pipe(Me(()=>x),m(({star_count:o,forks_count:n})=>({stars:o,forks:n})),tt({}))}function _i(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,o]=t;return Mi(r,o)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,o]=t;return Li(r,o)}return x}var vs;function gs(e){return vs||(vs=$(()=>{let t=__md_get("__source",sessionStorage);if(t)return R(t);if(me("consent").length){let o=__md_get("__consent");if(!(o&&o.github))return x}return _i(e.href).pipe(S(o=>__md_set("__source",o,sessionStorage)))}).pipe(Me(()=>x),v(t=>Object.keys(t).length>0),m(t=>({facts:t})),X(1)))}function Ai(e){let t=F(":scope > :last-child",e);return $(()=>{let r=new w;return r.subscribe(({facts:o})=>{t.appendChild(Pn(o)),t.classList.add("md-source__repository--active")}),gs(e).pipe(S(o=>r.next(o)),_(()=>r.complete()),m(o=>k({ref:e},o)))})}function xs(e,{viewport$:t,header$:r}){return we(document.body).pipe(b(()=>Er(e,{header$:r,viewport$:t})),m(({offset:{y:o}})=>({hidden:o>=10})),re("hidden"))}function Ci(e,t){return $(()=>{let r=new w;return r.subscribe({next({hidden:o}){e.hidden=o},complete(){e.hidden=!1}}),(B("navigation.tabs.sticky")?R({hidden:!1}):xs(e,t)).pipe(S(o=>r.next(o)),_(()=>r.complete()),m(o=>k({ref:e},o)))})}function ys(e,{viewport$:t,header$:r}){let o=new Map,n=C(".md-nav__link",e);for(let a of n){let c=decodeURIComponent(a.hash.substring(1)),p=fe(`[id="${c}"]`);typeof p!="undefined"&&o.set(a,p)}let i=r.pipe(re("height"),m(({height:a})=>{let c=Ce("main"),p=F(":scope > :first-child",c);return a+.8*(p.offsetTop-c.offsetTop)}),le());return we(document.body).pipe(re("height"),b(a=>$(()=>{let c=[];return R([...o].reduce((p,[l,f])=>{for(;c.length&&o.get(c[c.length-1]).tagName>=f.tagName;)c.pop();let u=f.offsetTop;for(;!u&&f.parentElement;)f=f.parentElement,u=f.offsetTop;let d=f.offsetParent;for(;d;d=d.offsetParent)u+=d.offsetTop;return p.set([...c=[...c,l]].reverse(),u)},new Map))}).pipe(m(c=>new Map([...c].sort(([,p],[,l])=>p-l))),De(i),b(([c,p])=>t.pipe(Wt(([l,f],{offset:{y:u},size:d})=>{let g=u+d.height>=Math.floor(a.height);for(;f.length;){let[,M]=f[0];if(M-p=u&&!g)f=[l.pop(),...f];else break}return[l,f]},[[],[...c]]),Q((l,f)=>l[0]===f[0]&&l[1]===f[1])))))).pipe(m(([a,c])=>({prev:a.map(([p])=>p),next:c.map(([p])=>p)})),q({prev:[],next:[]}),et(2,1),m(([a,c])=>a.prev.length{let i=new w,s=i.pipe(te(),ae(!0));if(i.subscribe(({prev:a,next:c})=>{for(let[p]of c)p.classList.remove("md-nav__link--passed"),p.classList.remove("md-nav__link--active");for(let[p,[l]]of a.entries())l.classList.add("md-nav__link--passed"),l.classList.toggle("md-nav__link--active",p===a.length-1)}),B("toc.follow")){let a=T(t.pipe(Ae(1),m(()=>{})),t.pipe(Ae(250),m(()=>"smooth")));i.pipe(v(({prev:c})=>c.length>0),De(o.pipe(xe(pe))),oe(a)).subscribe(([[{prev:c}],p])=>{let[l]=c[c.length-1];if(l.offsetHeight){let f=vr(l);if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=ue(f);f.scrollTo({top:u-d/2,behavior:p})}}})}return B("navigation.tracking")&&t.pipe(U(s),re("offset"),Ae(250),Re(1),U(n.pipe(Re(1))),bt({delay:250}),oe(i)).subscribe(([,{prev:a}])=>{let c=Ee(),p=a[a.length-1];if(p&&p.length){let[l]=p,{hash:f}=new URL(l.href);c.hash!==f&&(c.hash=f,history.replaceState({},"",`${c}`))}else c.hash="",history.replaceState({},"",`${c}`)}),ys(e,{viewport$:t,header$:r}).pipe(S(a=>i.next(a)),_(()=>i.complete()),m(a=>k({ref:e},a)))})}function Es(e,{viewport$:t,main$:r,target$:o}){let n=t.pipe(m(({offset:{y:s}})=>s),et(2,1),m(([s,a])=>s>a&&a>0),Q()),i=r.pipe(m(({active:s})=>s));return V([i,n]).pipe(m(([s,a])=>!(s&&a)),Q(),U(o.pipe(Re(1))),ae(!0),bt({delay:250}),m(s=>({hidden:s})))}function $i(e,{viewport$:t,header$:r,main$:o,target$:n}){let i=new w,s=i.pipe(te(),ae(!0));return i.subscribe({next({hidden:a}){e.hidden=a,a?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(U(s),re("height")).subscribe(({height:a})=>{e.style.top=`${a+16}px`}),h(e,"click").subscribe(a=>{a.preventDefault(),window.scrollTo({top:0})}),Es(e,{viewport$:t,main$:o,target$:n}).pipe(S(a=>i.next(a)),_(()=>i.complete()),m(a=>k({ref:e},a)))}function ki({document$:e}){e.pipe(b(()=>C(".md-ellipsis")),J(t=>Ct(t).pipe(U(e.pipe(Re(1))),v(r=>r),m(()=>t),ye(1))),v(t=>t.offsetWidth{let r=t.innerText,o=t.closest("a")||t;return o.title=r,pt(o).pipe(U(e.pipe(Re(1))),_(()=>o.removeAttribute("title")))})).subscribe(),e.pipe(b(()=>C(".md-status")),J(t=>pt(t))).subscribe()}function Ri({document$:e,tablet$:t}){e.pipe(b(()=>C(".md-toggle--indeterminate")),S(r=>{r.indeterminate=!0,r.checked=!1}),J(r=>h(r,"change").pipe(Jr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),oe(t)).subscribe(([r,o])=>{r.classList.remove("md-toggle--indeterminate"),o&&(r.checked=!1)})}function ws(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function Pi({document$:e}){e.pipe(b(()=>C("[data-md-scrollfix]")),S(t=>t.removeAttribute("data-md-scrollfix")),v(ws),J(t=>h(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function Ii({viewport$:e,tablet$:t}){V([Be("search"),t]).pipe(m(([r,o])=>r&&!o),b(r=>R(r).pipe(rt(r?400:100))),oe(e)).subscribe(([r,{offset:{y:o}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${o}px`;else{let n=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",n&&window.scrollTo(0,n)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let o=e[r];typeof o=="string"?o=document.createTextNode(o):o.parentNode&&o.parentNode.removeChild(o),r?t.insertBefore(this.previousSibling,o):t.replaceChild(o,this)}}}));function Ts(){return location.protocol==="file:"?_t(`${new URL("search/search_index.js",Or.base)}`).pipe(m(()=>__index),X(1)):Ge(new URL("search/search_index.json",Or.base))}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var at=nn(),Kt=hn(),kt=gn(Kt),lo=dn(),Pe=On(),Mr=Ut("(min-width: 960px)"),ji=Ut("(min-width: 1220px)"),Wi=xn(),Or=Te(),Ui=document.forms.namedItem("search")?Ts():Ze,mo=new w;pi({alert$:mo});ci({document$:at});var fo=new w,Di=$t(Or.base);B("navigation.instant")&&ui({sitemap$:Di,location$:Kt,viewport$:Pe,progress$:fo}).subscribe(at);var Fi;((Fi=Or.version)==null?void 0:Fi.provider)==="mike"&&xi({document$:at});T(Kt,kt).pipe(rt(125)).subscribe(()=>{nt("drawer",!1),nt("search",!1)});lo.pipe(v(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=fe("link[rel=prev]");typeof t!="undefined"&&it(t);break;case"n":case".":let r=fe("link[rel=next]");typeof r!="undefined"&&it(r);break;case"Enter":let o=Ve();o instanceof HTMLLabelElement&&o.click()}});ki({document$:at});Ri({document$:at,tablet$:Mr});Pi({document$:at});Ii({viewport$:Pe,tablet$:Mr});var lt=ti(Ce("header"),{viewport$:Pe}),qt=at.pipe(m(()=>Ce("main")),b(e=>ni(e,{viewport$:Pe,header$:lt})),X(1)),Ss=T(...me("consent").map(e=>_n(e,{target$:kt})),...me("dialog").map(e=>ei(e,{alert$:mo})),...me("header").map(e=>ri(e,{viewport$:Pe,header$:lt,main$:qt})),...me("palette").map(e=>ii(e)),...me("progress").map(e=>ai(e,{progress$:fo})),...me("search").map(e=>Si(e,{index$:Ui,keyboard$:lo})),...me("source").map(e=>Ai(e))),Os=$(()=>T(...me("announce").map(e=>Ln(e)),...me("content").map(e=>Zn(e,{sitemap$:Di,viewport$:Pe,target$:kt,print$:Wi})),...me("content").map(e=>B("search.highlight")?Oi(e,{index$:Ui,location$:Kt}):x),...me("header-title").map(e=>oi(e,{viewport$:Pe,header$:lt})),...me("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?to(ji,()=>po(e,{viewport$:Pe,header$:lt,main$:qt})):to(Mr,()=>po(e,{viewport$:Pe,header$:lt,main$:qt}))),...me("tabs").map(e=>Ci(e,{viewport$:Pe,header$:lt})),...me("toc").map(e=>Hi(e,{viewport$:Pe,header$:lt,main$:qt,target$:kt})),...me("top").map(e=>$i(e,{viewport$:Pe,header$:lt,main$:qt,target$:kt})))),Ni=at.pipe(b(()=>Os),Ne(Ss),X(1));Ni.subscribe();window.document$=at;window.location$=Kt;window.target$=kt;window.keyboard$=lo;window.viewport$=Pe;window.tablet$=Mr;window.screen$=ji;window.print$=Wi;window.alert$=mo;window.progress$=fo;window.component$=Ni;})(); diff --git a/assets/javascripts/lunr/min/lunr.ar.min.js b/assets/javascripts/lunr/min/lunr.ar.min.js new file mode 100644 index 000000000..9b06c26c1 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ar.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ar=function(){this.pipeline.reset(),this.pipeline.add(e.ar.trimmer,e.ar.stopWordFilter,e.ar.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ar.stemmer))},e.ar.wordCharacters="ء-ٛٱـ",e.ar.trimmer=e.trimmerSupport.generateTrimmer(e.ar.wordCharacters),e.Pipeline.registerFunction(e.ar.trimmer,"trimmer-ar"),e.ar.stemmer=function(){var e=this;return e.result=!1,e.preRemoved=!1,e.sufRemoved=!1,e.pre={pre1:"ف ك ب و س ل ن ا ي ت",pre2:"ال لل",pre3:"بال وال فال تال كال ولل",pre4:"فبال كبال وبال وكال"},e.suf={suf1:"ه ك ت ن ا ي",suf2:"نك نه ها وك يا اه ون ين تن تم نا وا ان كم كن ني نن ما هم هن تك ته ات يه",suf3:"تين كهم نيه نهم ونه وها يهم ونا ونك وني وهم تكم تنا تها تني تهم كما كها ناه نكم هنا تان يها",suf4:"كموه ناها ونني ونهم تكما تموه تكاه كماه ناكم ناهم نيها وننا"},e.patterns=JSON.parse('{"pt43":[{"pt":[{"c":"ا","l":1}]},{"pt":[{"c":"ا,ت,ن,ي","l":0}],"mPt":[{"c":"ف","l":0,"m":1},{"c":"ع","l":1,"m":2},{"c":"ل","l":2,"m":3}]},{"pt":[{"c":"و","l":2}],"mPt":[{"c":"ف","l":0,"m":0},{"c":"ع","l":1,"m":1},{"c":"ل","l":2,"m":3}]},{"pt":[{"c":"ا","l":2}]},{"pt":[{"c":"ي","l":2}],"mPt":[{"c":"ف","l":0,"m":0},{"c":"ع","l":1,"m":1},{"c":"ا","l":2},{"c":"ل","l":3,"m":3}]},{"pt":[{"c":"م","l":0}]}],"pt53":[{"pt":[{"c":"ت","l":0},{"c":"ا","l":2}]},{"pt":[{"c":"ا,ن,ت,ي","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":0},{"c":"ا","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":3},{"c":"ل","l":3,"m":4},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":0},{"c":"ا","l":3}],"mPt":[{"c":"ف","l":0,"m":1},{"c":"ع","l":1,"m":2},{"c":"ل","l":2,"m":4}]},{"pt":[{"c":"ا","l":3},{"c":"ن","l":4}]},{"pt":[{"c":"ت","l":0},{"c":"ي","l":3}]},{"pt":[{"c":"م","l":0},{"c":"و","l":3}]},{"pt":[{"c":"ا","l":1},{"c":"و","l":3}]},{"pt":[{"c":"و","l":1},{"c":"ا","l":2}]},{"pt":[{"c":"م","l":0},{"c":"ا","l":3}]},{"pt":[{"c":"م","l":0},{"c":"ي","l":3}]},{"pt":[{"c":"ا","l":2},{"c":"ن","l":3}]},{"pt":[{"c":"م","l":0},{"c":"ن","l":1}],"mPt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ف","l":2,"m":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"م","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"م","l":0},{"c":"ا","l":2}]},{"pt":[{"c":"م","l":1},{"c":"ا","l":3}]},{"pt":[{"c":"ي,ت,ا,ن","l":0},{"c":"ت","l":1}],"mPt":[{"c":"ف","l":0,"m":2},{"c":"ع","l":1,"m":3},{"c":"ا","l":2},{"c":"ل","l":3,"m":4}]},{"pt":[{"c":"ت,ي,ا,ن","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":2},{"c":"ي","l":3}]},{"pt":[{"c":"ا,ي,ت,ن","l":0},{"c":"ن","l":1}],"mPt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ف","l":2,"m":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":3},{"c":"ء","l":4}]}],"pt63":[{"pt":[{"c":"ا","l":0},{"c":"ت","l":2},{"c":"ا","l":4}]},{"pt":[{"c":"ا,ت,ن,ي","l":0},{"c":"س","l":1},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ف","l":3,"m":3},{"c":"ع","l":4,"m":4},{"c":"ا","l":5},{"c":"ل","l":6,"m":5}]},{"pt":[{"c":"ا,ن,ت,ي","l":0},{"c":"و","l":3}]},{"pt":[{"c":"م","l":0},{"c":"س","l":1},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ف","l":3,"m":3},{"c":"ع","l":4,"m":4},{"c":"ا","l":5},{"c":"ل","l":6,"m":5}]},{"pt":[{"c":"ي","l":1},{"c":"ي","l":3},{"c":"ا","l":4},{"c":"ء","l":5}]},{"pt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ا","l":4}]}],"pt54":[{"pt":[{"c":"ت","l":0}]},{"pt":[{"c":"ا,ي,ت,ن","l":0}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":2},{"c":"ل","l":3,"m":3},{"c":"ر","l":4,"m":4},{"c":"ا","l":5},{"c":"ر","l":6,"m":4}]},{"pt":[{"c":"م","l":0}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":2},{"c":"ل","l":3,"m":3},{"c":"ر","l":4,"m":4},{"c":"ا","l":5},{"c":"ر","l":6,"m":4}]},{"pt":[{"c":"ا","l":2}]},{"pt":[{"c":"ا","l":0},{"c":"ن","l":2}]}],"pt64":[{"pt":[{"c":"ا","l":0},{"c":"ا","l":4}]},{"pt":[{"c":"م","l":0},{"c":"ت","l":1}]}],"pt73":[{"pt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ا","l":5}]}],"pt75":[{"pt":[{"c":"ا","l":0},{"c":"ا","l":5}]}]}'),e.execArray=["cleanWord","removeDiacritics","cleanAlef","removeStopWords","normalizeHamzaAndAlef","removeStartWaw","removePre432","removeEndTaa","wordCheck"],e.stem=function(){var r=0;for(e.result=!1,e.preRemoved=!1,e.sufRemoved=!1;r=0)return!0},e.normalizeHamzaAndAlef=function(){return e.word=e.word.replace("ؤ","ء"),e.word=e.word.replace("ئ","ء"),e.word=e.word.replace(/([\u0627])\1+/gi,"ا"),!1},e.removeEndTaa=function(){return!(e.word.length>2)||(e.word=e.word.replace(/[\u0627]$/,""),e.word=e.word.replace("ة",""),!1)},e.removeStartWaw=function(){return e.word.length>3&&"و"==e.word[0]&&"و"==e.word[1]&&(e.word=e.word.slice(1)),!1},e.removePre432=function(){var r=e.word;if(e.word.length>=7){var t=new RegExp("^("+e.pre.pre4.split(" ").join("|")+")");e.word=e.word.replace(t,"")}if(e.word==r&&e.word.length>=6){var c=new RegExp("^("+e.pre.pre3.split(" ").join("|")+")");e.word=e.word.replace(c,"")}if(e.word==r&&e.word.length>=5){var l=new RegExp("^("+e.pre.pre2.split(" ").join("|")+")");e.word=e.word.replace(l,"")}return r!=e.word&&(e.preRemoved=!0),!1},e.patternCheck=function(r){for(var t=0;t3){var t=new RegExp("^("+e.pre.pre1.split(" ").join("|")+")");e.word=e.word.replace(t,"")}return r!=e.word&&(e.preRemoved=!0),!1},e.removeSuf1=function(){var r=e.word;if(0==e.sufRemoved&&e.word.length>3){var t=new RegExp("("+e.suf.suf1.split(" ").join("|")+")$");e.word=e.word.replace(t,"")}return r!=e.word&&(e.sufRemoved=!0),!1},e.removeSuf432=function(){var r=e.word;if(e.word.length>=6){var t=new RegExp("("+e.suf.suf4.split(" ").join("|")+")$");e.word=e.word.replace(t,"")}if(e.word==r&&e.word.length>=5){var c=new RegExp("("+e.suf.suf3.split(" ").join("|")+")$");e.word=e.word.replace(c,"")}if(e.word==r&&e.word.length>=4){var l=new RegExp("("+e.suf.suf2.split(" ").join("|")+")$");e.word=e.word.replace(l,"")}return r!=e.word&&(e.sufRemoved=!0),!1},e.wordCheck=function(){for(var r=(e.word,[e.removeSuf432,e.removeSuf1,e.removePre1]),t=0,c=!1;e.word.length>=7&&!e.result&&t=f.limit)return;f.cursor++}for(;!f.out_grouping(w,97,248);){if(f.cursor>=f.limit)return;f.cursor++}d=f.cursor,d=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(c,32),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del();break;case 2:f.in_grouping_b(p,97,229)&&f.slice_del()}}function t(){var e,r=f.limit-f.cursor;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.find_among_b(l,4)?(f.bra=f.cursor,f.limit_backward=e,f.cursor=f.limit-r,f.cursor>f.limit_backward&&(f.cursor--,f.bra=f.cursor,f.slice_del())):f.limit_backward=e)}function s(){var e,r,i,n=f.limit-f.cursor;if(f.ket=f.cursor,f.eq_s_b(2,"st")&&(f.bra=f.cursor,f.eq_s_b(2,"ig")&&f.slice_del()),f.cursor=f.limit-n,f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(m,5),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del(),i=f.limit-f.cursor,t(),f.cursor=f.limit-i;break;case 2:f.slice_from("løs")}}function o(){var e;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.out_grouping_b(w,97,248)?(f.bra=f.cursor,u=f.slice_to(u),f.limit_backward=e,f.eq_v_b(u)&&f.slice_del()):f.limit_backward=e)}var a,d,u,c=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],l=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],p=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],f=new i;this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var r=f.cursor;return e(),f.limit_backward=r,f.cursor=f.limit,n(),f.cursor=f.limit,t(),f.cursor=f.limit,s(),f.cursor=f.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.de.min.js b/assets/javascripts/lunr/min/lunr.de.min.js new file mode 100644 index 000000000..f3b5c108c --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.de.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `German` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWordFilter,e.de.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.de.stemmer))},e.de.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.de.trimmer=e.trimmerSupport.generateTrimmer(e.de.wordCharacters),e.Pipeline.registerFunction(e.de.trimmer,"trimmer-de"),e.de.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,n){return!(!v.eq_s(1,e)||(v.ket=v.cursor,!v.in_grouping(p,97,252)))&&(v.slice_from(r),v.cursor=n,!0)}function i(){for(var r,n,i,s,t=v.cursor;;)if(r=v.cursor,v.bra=r,v.eq_s(1,"ß"))v.ket=v.cursor,v.slice_from("ss");else{if(r>=v.limit)break;v.cursor=r+1}for(v.cursor=t;;)for(n=v.cursor;;){if(i=v.cursor,v.in_grouping(p,97,252)){if(s=v.cursor,v.bra=s,e("u","U",i))break;if(v.cursor=s,e("y","Y",i))break}if(i>=v.limit)return void(v.cursor=n);v.cursor=i+1}}function s(){for(;!v.in_grouping(p,97,252);){if(v.cursor>=v.limit)return!0;v.cursor++}for(;!v.out_grouping(p,97,252);){if(v.cursor>=v.limit)return!0;v.cursor++}return!1}function t(){m=v.limit,l=m;var e=v.cursor+3;0<=e&&e<=v.limit&&(d=e,s()||(m=v.cursor,m=v.limit)return;v.cursor++}}}function c(){return m<=v.cursor}function u(){return l<=v.cursor}function a(){var e,r,n,i,s=v.limit-v.cursor;if(v.ket=v.cursor,(e=v.find_among_b(w,7))&&(v.bra=v.cursor,c()))switch(e){case 1:v.slice_del();break;case 2:v.slice_del(),v.ket=v.cursor,v.eq_s_b(1,"s")&&(v.bra=v.cursor,v.eq_s_b(3,"nis")&&v.slice_del());break;case 3:v.in_grouping_b(g,98,116)&&v.slice_del()}if(v.cursor=v.limit-s,v.ket=v.cursor,(e=v.find_among_b(f,4))&&(v.bra=v.cursor,c()))switch(e){case 1:v.slice_del();break;case 2:if(v.in_grouping_b(k,98,116)){var t=v.cursor-3;v.limit_backward<=t&&t<=v.limit&&(v.cursor=t,v.slice_del())}}if(v.cursor=v.limit-s,v.ket=v.cursor,(e=v.find_among_b(_,8))&&(v.bra=v.cursor,u()))switch(e){case 1:v.slice_del(),v.ket=v.cursor,v.eq_s_b(2,"ig")&&(v.bra=v.cursor,r=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-r,u()&&v.slice_del()));break;case 2:n=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-n,v.slice_del());break;case 3:if(v.slice_del(),v.ket=v.cursor,i=v.limit-v.cursor,!v.eq_s_b(2,"er")&&(v.cursor=v.limit-i,!v.eq_s_b(2,"en")))break;v.bra=v.cursor,c()&&v.slice_del();break;case 4:v.slice_del(),v.ket=v.cursor,e=v.find_among_b(b,2),e&&(v.bra=v.cursor,u()&&1==e&&v.slice_del())}}var d,l,m,h=[new r("",-1,6),new r("U",0,2),new r("Y",0,1),new r("ä",0,3),new r("ö",0,4),new r("ü",0,5)],w=[new r("e",-1,2),new r("em",-1,1),new r("en",-1,2),new r("ern",-1,1),new r("er",-1,1),new r("s",-1,3),new r("es",5,2)],f=[new r("en",-1,1),new r("er",-1,1),new r("st",-1,2),new r("est",2,1)],b=[new r("ig",-1,1),new r("lich",-1,1)],_=[new r("end",-1,1),new r("ig",-1,2),new r("ung",-1,1),new r("lich",-1,3),new r("isch",-1,2),new r("ik",-1,2),new r("heit",-1,3),new r("keit",-1,4)],p=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],g=[117,30,5],k=[117,30,4],v=new n;this.setCurrent=function(e){v.setCurrent(e)},this.getCurrent=function(){return v.getCurrent()},this.stem=function(){var e=v.cursor;return i(),v.cursor=e,t(),v.limit_backward=e,v.cursor=v.limit,a(),v.cursor=v.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.de.stemmer,"stemmer-de"),e.de.stopWordFilter=e.generateStopWordFilter("aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über".split(" ")),e.Pipeline.registerFunction(e.de.stopWordFilter,"stopWordFilter-de")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.du.min.js b/assets/javascripts/lunr/min/lunr.du.min.js new file mode 100644 index 000000000..49a0f3f0a --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.du.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Dutch` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");console.warn('[Lunr Languages] Please use the "nl" instead of the "du". The "nl" code is the standard code for Dutch language, and "du" will be removed in the next major versions.'),e.du=function(){this.pipeline.reset(),this.pipeline.add(e.du.trimmer,e.du.stopWordFilter,e.du.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.du.stemmer))},e.du.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.du.trimmer=e.trimmerSupport.generateTrimmer(e.du.wordCharacters),e.Pipeline.registerFunction(e.du.trimmer,"trimmer-du"),e.du.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){for(var e,r,i,o=C.cursor;;){if(C.bra=C.cursor,e=C.find_among(b,11))switch(C.ket=C.cursor,e){case 1:C.slice_from("a");continue;case 2:C.slice_from("e");continue;case 3:C.slice_from("i");continue;case 4:C.slice_from("o");continue;case 5:C.slice_from("u");continue;case 6:if(C.cursor>=C.limit)break;C.cursor++;continue}break}for(C.cursor=o,C.bra=o,C.eq_s(1,"y")?(C.ket=C.cursor,C.slice_from("Y")):C.cursor=o;;)if(r=C.cursor,C.in_grouping(q,97,232)){if(i=C.cursor,C.bra=i,C.eq_s(1,"i"))C.ket=C.cursor,C.in_grouping(q,97,232)&&(C.slice_from("I"),C.cursor=r);else if(C.cursor=i,C.eq_s(1,"y"))C.ket=C.cursor,C.slice_from("Y"),C.cursor=r;else if(n(r))break}else if(n(r))break}function n(e){return C.cursor=e,e>=C.limit||(C.cursor++,!1)}function o(){_=C.limit,f=_,t()||(_=C.cursor,_<3&&(_=3),t()||(f=C.cursor))}function t(){for(;!C.in_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}for(;!C.out_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}return!1}function s(){for(var e;;)if(C.bra=C.cursor,e=C.find_among(p,3))switch(C.ket=C.cursor,e){case 1:C.slice_from("y");break;case 2:C.slice_from("i");break;case 3:if(C.cursor>=C.limit)return;C.cursor++}}function u(){return _<=C.cursor}function c(){return f<=C.cursor}function a(){var e=C.limit-C.cursor;C.find_among_b(g,3)&&(C.cursor=C.limit-e,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del()))}function l(){var e;w=!1,C.ket=C.cursor,C.eq_s_b(1,"e")&&(C.bra=C.cursor,u()&&(e=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-e,C.slice_del(),w=!0,a())))}function m(){var e;u()&&(e=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-e,C.eq_s_b(3,"gem")||(C.cursor=C.limit-e,C.slice_del(),a())))}function d(){var e,r,i,n,o,t,s=C.limit-C.cursor;if(C.ket=C.cursor,e=C.find_among_b(h,5))switch(C.bra=C.cursor,e){case 1:u()&&C.slice_from("heid");break;case 2:m();break;case 3:u()&&C.out_grouping_b(z,97,232)&&C.slice_del()}if(C.cursor=C.limit-s,l(),C.cursor=C.limit-s,C.ket=C.cursor,C.eq_s_b(4,"heid")&&(C.bra=C.cursor,c()&&(r=C.limit-C.cursor,C.eq_s_b(1,"c")||(C.cursor=C.limit-r,C.slice_del(),C.ket=C.cursor,C.eq_s_b(2,"en")&&(C.bra=C.cursor,m())))),C.cursor=C.limit-s,C.ket=C.cursor,e=C.find_among_b(k,6))switch(C.bra=C.cursor,e){case 1:if(c()){if(C.slice_del(),i=C.limit-C.cursor,C.ket=C.cursor,C.eq_s_b(2,"ig")&&(C.bra=C.cursor,c()&&(n=C.limit-C.cursor,!C.eq_s_b(1,"e")))){C.cursor=C.limit-n,C.slice_del();break}C.cursor=C.limit-i,a()}break;case 2:c()&&(o=C.limit-C.cursor,C.eq_s_b(1,"e")||(C.cursor=C.limit-o,C.slice_del()));break;case 3:c()&&(C.slice_del(),l());break;case 4:c()&&C.slice_del();break;case 5:c()&&w&&C.slice_del()}C.cursor=C.limit-s,C.out_grouping_b(j,73,232)&&(t=C.limit-C.cursor,C.find_among_b(v,4)&&C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-t,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del())))}var f,_,w,b=[new r("",-1,6),new r("á",0,1),new r("ä",0,1),new r("é",0,2),new r("ë",0,2),new r("í",0,3),new r("ï",0,3),new r("ó",0,4),new r("ö",0,4),new r("ú",0,5),new r("ü",0,5)],p=[new r("",-1,3),new r("I",0,2),new r("Y",0,1)],g=[new r("dd",-1,-1),new r("kk",-1,-1),new r("tt",-1,-1)],h=[new r("ene",-1,2),new r("se",-1,3),new r("en",-1,2),new r("heden",2,1),new r("s",-1,3)],k=[new r("end",-1,1),new r("ig",-1,2),new r("ing",-1,1),new r("lijk",-1,3),new r("baar",-1,4),new r("bar",-1,5)],v=[new r("aa",-1,-1),new r("ee",-1,-1),new r("oo",-1,-1),new r("uu",-1,-1)],q=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],j=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],z=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],C=new i;this.setCurrent=function(e){C.setCurrent(e)},this.getCurrent=function(){return C.getCurrent()},this.stem=function(){var r=C.cursor;return e(),C.cursor=r,o(),C.limit_backward=r,C.cursor=C.limit,d(),C.cursor=C.limit_backward,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.du.stemmer,"stemmer-du"),e.du.stopWordFilter=e.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),e.Pipeline.registerFunction(e.du.stopWordFilter,"stopWordFilter-du")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.el.min.js b/assets/javascripts/lunr/min/lunr.el.min.js new file mode 100644 index 000000000..ace017bd6 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.el.min.js @@ -0,0 +1 @@ +!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.el=function(){this.pipeline.reset(),void 0===this.searchPipeline&&this.pipeline.add(e.el.trimmer,e.el.normilizer),this.pipeline.add(e.el.stopWordFilter,e.el.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.el.stemmer))},e.el.wordCharacters="A-Za-zΑαΒβΓγΔδΕεΖζΗηΘθΙιΚκΛλΜμΝνΞξΟοΠπΡρΣσςΤτΥυΦφΧχΨψΩωΆάΈέΉήΊίΌόΎύΏώΪΐΫΰΐΰ",e.el.trimmer=e.trimmerSupport.generateTrimmer(e.el.wordCharacters),e.Pipeline.registerFunction(e.el.trimmer,"trimmer-el"),e.el.stemmer=function(){function e(e){return s.test(e)}function t(e){return/[ΑΕΗΙΟΥΩ]$/.test(e)}function r(e){return/[ΑΕΗΙΟΩ]$/.test(e)}function n(n){var s=n;if(n.length<3)return s;if(!e(n))return s;if(i.indexOf(n)>=0)return s;var u=new RegExp("(.*)("+Object.keys(l).join("|")+")$"),o=u.exec(s);return null!==o&&(s=o[1]+l[o[2]]),null!==(o=/^(.+?)(ΑΔΕΣ|ΑΔΩΝ)$/.exec(s))&&(s=o[1],/(ΟΚ|ΜΑΜ|ΜΑΝ|ΜΠΑΜΠ|ΠΑΤΕΡ|ΓΙΑΓΙ|ΝΤΑΝΤ|ΚΥΡ|ΘΕΙ|ΠΕΘΕΡ|ΜΟΥΣΑΜ|ΚΑΠΛΑΜ|ΠΑΡ|ΨΑΡ|ΤΖΟΥΡ|ΤΑΜΠΟΥΡ|ΓΑΛΑΤ|ΦΑΦΛΑΤ)$/.test(o[1])||(s+="ΑΔ")),null!==(o=/^(.+?)(ΕΔΕΣ|ΕΔΩΝ)$/.exec(s))&&(s=o[1],/(ΟΠ|ΙΠ|ΕΜΠ|ΥΠ|ΓΗΠ|ΔΑΠ|ΚΡΑΣΠ|ΜΙΛ)$/.test(o[1])&&(s+="ΕΔ")),null!==(o=/^(.+?)(ΟΥΔΕΣ|ΟΥΔΩΝ)$/.exec(s))&&(s=o[1],/(ΑΡΚ|ΚΑΛΙΑΚ|ΠΕΤΑΛ|ΛΙΧ|ΠΛΕΞ|ΣΚ|Σ|ΦΛ|ΦΡ|ΒΕΛ|ΛΟΥΛ|ΧΝ|ΣΠ|ΤΡΑΓ|ΦΕ)$/.test(o[1])&&(s+="ΟΥΔ")),null!==(o=/^(.+?)(ΕΩΣ|ΕΩΝ|ΕΑΣ|ΕΑ)$/.exec(s))&&(s=o[1],/^(Θ|Δ|ΕΛ|ΓΑΛ|Ν|Π|ΙΔ|ΠΑΡ|ΣΤΕΡ|ΟΡΦ|ΑΝΔΡ|ΑΝΤΡ)$/.test(o[1])&&(s+="Ε")),null!==(o=/^(.+?)(ΕΙΟ|ΕΙΟΣ|ΕΙΟΙ|ΕΙΑ|ΕΙΑΣ|ΕΙΕΣ|ΕΙΟΥ|ΕΙΟΥΣ|ΕΙΩΝ)$/.exec(s))&&o[1].length>4&&(s=o[1]),null!==(o=/^(.+?)(ΙΟΥΣ|ΙΑΣ|ΙΕΣ|ΙΟΣ|ΙΟΥ|ΙΟΙ|ΙΩΝ|ΙΟΝ|ΙΑ|ΙΟ)$/.exec(s))&&(s=o[1],(t(s)||s.length<2||/^(ΑΓ|ΑΓΓΕΛ|ΑΓΡ|ΑΕΡ|ΑΘΛ|ΑΚΟΥΣ|ΑΞ|ΑΣ|Β|ΒΙΒΛ|ΒΥΤ|Γ|ΓΙΑΓ|ΓΩΝ|Δ|ΔΑΝ|ΔΗΛ|ΔΗΜ|ΔΟΚΙΜ|ΕΛ|ΖΑΧΑΡ|ΗΛ|ΗΠ|ΙΔ|ΙΣΚ|ΙΣΤ|ΙΟΝ|ΙΩΝ|ΚΙΜΩΛ|ΚΟΛΟΝ|ΚΟΡ|ΚΤΗΡ|ΚΥΡ|ΛΑΓ|ΛΟΓ|ΜΑΓ|ΜΠΑΝ|ΜΠΡ|ΝΑΥΤ|ΝΟΤ|ΟΠΑΛ|ΟΞ|ΟΡ|ΟΣ|ΠΑΝΑΓ|ΠΑΤΡ|ΠΗΛ|ΠΗΝ|ΠΛΑΙΣ|ΠΟΝΤ|ΡΑΔ|ΡΟΔ|ΣΚ|ΣΚΟΡΠ|ΣΟΥΝ|ΣΠΑΝ|ΣΤΑΔ|ΣΥΡ|ΤΗΛ|ΤΙΜ|ΤΟΚ|ΤΟΠ|ΤΡΟΧ|ΦΙΛ|ΦΩΤ|Χ|ΧΙΛ|ΧΡΩΜ|ΧΩΡ)$/.test(o[1]))&&(s+="Ι"),/^(ΠΑΛ)$/.test(o[1])&&(s+="ΑΙ")),null!==(o=/^(.+?)(ΙΚΟΣ|ΙΚΟΝ|ΙΚΕΙΣ|ΙΚΟΙ|ΙΚΕΣ|ΙΚΟΥΣ|ΙΚΗ|ΙΚΗΣ|ΙΚΟ|ΙΚΑ|ΙΚΟΥ|ΙΚΩΝ|ΙΚΩΣ)$/.exec(s))&&(s=o[1],(t(s)||/^(ΑΔ|ΑΛ|ΑΜΑΝ|ΑΜΕΡ|ΑΜΜΟΧΑΛ|ΑΝΗΘ|ΑΝΤΙΔ|ΑΠΛ|ΑΤΤ|ΑΦΡ|ΒΑΣ|ΒΡΩΜ|ΓΕΝ|ΓΕΡ|Δ|ΔΙΚΑΝ|ΔΥΤ|ΕΙΔ|ΕΝΔ|ΕΞΩΔ|ΗΘ|ΘΕΤ|ΚΑΛΛΙΝ|ΚΑΛΠ|ΚΑΤΑΔ|ΚΟΥΖΙΝ|ΚΡ|ΚΩΔ|ΛΟΓ|Μ|ΜΕΡ|ΜΟΝΑΔ|ΜΟΥΛ|ΜΟΥΣ|ΜΠΑΓΙΑΤ|ΜΠΑΝ|ΜΠΟΛ|ΜΠΟΣ|ΜΥΣΤ|Ν|ΝΙΤ|ΞΙΚ|ΟΠΤ|ΠΑΝ|ΠΕΤΣ|ΠΙΚΑΝΤ|ΠΙΤΣ|ΠΛΑΣΤ|ΠΛΙΑΤΣ|ΠΟΝΤ|ΠΟΣΤΕΛΝ|ΠΡΩΤΟΔ|ΣΕΡΤ|ΣΗΜΑΝΤ|ΣΤΑΤ|ΣΥΝΑΔ|ΣΥΝΟΜΗΛ|ΤΕΛ|ΤΕΧΝ|ΤΡΟΠ|ΤΣΑΜ|ΥΠΟΔ|Φ|ΦΙΛΟΝ|ΦΥΛΟΔ|ΦΥΣ|ΧΑΣ)$/.test(o[1])||/(ΦΟΙΝ)$/.test(o[1]))&&(s+="ΙΚ")),"ΑΓΑΜΕ"===s&&(s="ΑΓΑΜ"),null!==(o=/^(.+?)(ΑΓΑΜΕ|ΗΣΑΜΕ|ΟΥΣΑΜΕ|ΗΚΑΜΕ|ΗΘΗΚΑΜΕ)$/.exec(s))&&(s=o[1]),null!==(o=/^(.+?)(ΑΜΕ)$/.exec(s))&&(s=o[1],/^(ΑΝΑΠ|ΑΠΟΘ|ΑΠΟΚ|ΑΠΟΣΤ|ΒΟΥΒ|ΞΕΘ|ΟΥΛ|ΠΕΘ|ΠΙΚΡ|ΠΟΤ|ΣΙΧ|Χ)$/.test(o[1])&&(s+="ΑΜ")),null!==(o=/^(.+?)(ΑΓΑΝΕ|ΗΣΑΝΕ|ΟΥΣΑΝΕ|ΙΟΝΤΑΝΕ|ΙΟΤΑΝΕ|ΙΟΥΝΤΑΝΕ|ΟΝΤΑΝΕ|ΟΤΑΝΕ|ΟΥΝΤΑΝΕ|ΗΚΑΝΕ|ΗΘΗΚΑΝΕ)$/.exec(s))&&(s=o[1],/^(ΤΡ|ΤΣ)$/.test(o[1])&&(s+="ΑΓΑΝ")),null!==(o=/^(.+?)(ΑΝΕ)$/.exec(s))&&(s=o[1],(r(s)||/^(ΒΕΤΕΡ|ΒΟΥΛΚ|ΒΡΑΧΜ|Γ|ΔΡΑΔΟΥΜ|Θ|ΚΑΛΠΟΥΖ|ΚΑΣΤΕΛ|ΚΟΡΜΟΡ|ΛΑΟΠΛ|ΜΩΑΜΕΘ|Μ|ΜΟΥΣΟΥΛΜΑΝ|ΟΥΛ|Π|ΠΕΛΕΚ|ΠΛ|ΠΟΛΙΣ|ΠΟΡΤΟΛ|ΣΑΡΑΚΑΤΣ|ΣΟΥΛΤ|ΤΣΑΡΛΑΤ|ΟΡΦ|ΤΣΙΓΓ|ΤΣΟΠ|ΦΩΤΟΣΤΕΦ|Χ|ΨΥΧΟΠΛ|ΑΓ|ΟΡΦ|ΓΑΛ|ΓΕΡ|ΔΕΚ|ΔΙΠΛ|ΑΜΕΡΙΚΑΝ|ΟΥΡ|ΠΙΘ|ΠΟΥΡΙΤ|Σ|ΖΩΝΤ|ΙΚ|ΚΑΣΤ|ΚΟΠ|ΛΙΧ|ΛΟΥΘΗΡ|ΜΑΙΝΤ|ΜΕΛ|ΣΙΓ|ΣΠ|ΣΤΕΓ|ΤΡΑΓ|ΤΣΑΓ|Φ|ΕΡ|ΑΔΑΠ|ΑΘΙΓΓ|ΑΜΗΧ|ΑΝΙΚ|ΑΝΟΡΓ|ΑΠΗΓ|ΑΠΙΘ|ΑΤΣΙΓΓ|ΒΑΣ|ΒΑΣΚ|ΒΑΘΥΓΑΛ|ΒΙΟΜΗΧ|ΒΡΑΧΥΚ|ΔΙΑΤ|ΔΙΑΦ|ΕΝΟΡΓ|ΘΥΣ|ΚΑΠΝΟΒΙΟΜΗΧ|ΚΑΤΑΓΑΛ|ΚΛΙΒ|ΚΟΙΛΑΡΦ|ΛΙΒ|ΜΕΓΛΟΒΙΟΜΗΧ|ΜΙΚΡΟΒΙΟΜΗΧ|ΝΤΑΒ|ΞΗΡΟΚΛΙΒ|ΟΛΙΓΟΔΑΜ|ΟΛΟΓΑΛ|ΠΕΝΤΑΡΦ|ΠΕΡΗΦ|ΠΕΡΙΤΡ|ΠΛΑΤ|ΠΟΛΥΔΑΠ|ΠΟΛΥΜΗΧ|ΣΤΕΦ|ΤΑΒ|ΤΕΤ|ΥΠΕΡΗΦ|ΥΠΟΚΟΠ|ΧΑΜΗΛΟΔΑΠ|ΨΗΛΟΤΑΒ)$/.test(o[1]))&&(s+="ΑΝ")),null!==(o=/^(.+?)(ΗΣΕΤΕ)$/.exec(s))&&(s=o[1]),null!==(o=/^(.+?)(ΕΤΕ)$/.exec(s))&&(s=o[1],(r(s)||/(ΟΔ|ΑΙΡ|ΦΟΡ|ΤΑΘ|ΔΙΑΘ|ΣΧ|ΕΝΔ|ΕΥΡ|ΤΙΘ|ΥΠΕΡΘ|ΡΑΘ|ΕΝΘ|ΡΟΘ|ΣΘ|ΠΥΡ|ΑΙΝ|ΣΥΝΔ|ΣΥΝ|ΣΥΝΘ|ΧΩΡ|ΠΟΝ|ΒΡ|ΚΑΘ|ΕΥΘ|ΕΚΘ|ΝΕΤ|ΡΟΝ|ΑΡΚ|ΒΑΡ|ΒΟΛ|ΩΦΕΛ)$/.test(o[1])||/^(ΑΒΑΡ|ΒΕΝ|ΕΝΑΡ|ΑΒΡ|ΑΔ|ΑΘ|ΑΝ|ΑΠΛ|ΒΑΡΟΝ|ΝΤΡ|ΣΚ|ΚΟΠ|ΜΠΟΡ|ΝΙΦ|ΠΑΓ|ΠΑΡΑΚΑΛ|ΣΕΡΠ|ΣΚΕΛ|ΣΥΡΦ|ΤΟΚ|Υ|Δ|ΕΜ|ΘΑΡΡ|Θ)$/.test(o[1]))&&(s+="ΕΤ")),null!==(o=/^(.+?)(ΟΝΤΑΣ|ΩΝΤΑΣ)$/.exec(s))&&(s=o[1],/^ΑΡΧ$/.test(o[1])&&(s+="ΟΝΤ"),/ΚΡΕ$/.test(o[1])&&(s+="ΩΝΤ")),null!==(o=/^(.+?)(ΟΜΑΣΤΕ|ΙΟΜΑΣΤΕ)$/.exec(s))&&(s=o[1],/^ΟΝ$/.test(o[1])&&(s+="ΟΜΑΣΤ")),null!==(o=/^(.+?)(ΙΕΣΤΕ)$/.exec(s))&&(s=o[1],/^(Π|ΑΠ|ΣΥΜΠ|ΑΣΥΜΠ|ΑΚΑΤΑΠ|ΑΜΕΤΑΜΦ)$/.test(o[1])&&(s+="ΙΕΣΤ")),null!==(o=/^(.+?)(ΕΣΤΕ)$/.exec(s))&&(s=o[1],/^(ΑΛ|ΑΡ|ΕΚΤΕΛ|Ζ|Μ|Ξ|ΠΑΡΑΚΑΛ|ΠΡΟ|ΝΙΣ)$/.test(o[1])&&(s+="ΕΣΤ")),null!==(o=/^(.+?)(ΗΘΗΚΑ|ΗΘΗΚΕΣ|ΗΘΗΚΕ)$/.exec(s))&&(s=o[1]),null!==(o=/^(.+?)(ΗΚΑ|ΗΚΕΣ|ΗΚΕ)$/.exec(s))&&(s=o[1],(/(ΣΚΩΛ|ΣΚΟΥΛ|ΝΑΡΘ|ΣΦ|ΟΘ|ΠΙΘ)$/.test(o[1])||/^(ΔΙΑΘ|Θ|ΠΑΡΑΚΑΤΑΘ|ΠΡΟΣΘ|ΣΥΝΘ)$/.test(o[1]))&&(s+="ΗΚ")),null!==(o=/^(.+?)(ΟΥΣΑ|ΟΥΣΕΣ|ΟΥΣΕ)$/.exec(s))&&(s=o[1],(t(s)||/^(ΦΑΡΜΑΚ|ΧΑΔ|ΑΓΚ|ΑΝΑΡΡ|ΒΡΟΜ|ΕΚΛΙΠ|ΛΑΜΠΙΔ|ΛΕΧ|Μ|ΠΑΤ|Ρ|Λ|ΜΕΔ|ΜΕΣΑΖ|ΥΠΟΤΕΙΝ|ΑΜ|ΑΙΘ|ΑΝΗΚ|ΔΕΣΠΟΖ|ΕΝΔΙΑΦΕΡ)$/.test(o[1])||/(ΠΟΔΑΡ|ΒΛΕΠ|ΠΑΝΤΑΧ|ΦΡΥΔ|ΜΑΝΤΙΛ|ΜΑΛΛ|ΚΥΜΑΤ|ΛΑΧ|ΛΗΓ|ΦΑΓ|ΟΜ|ΠΡΩΤ)$/.test(o[1]))&&(s+="ΟΥΣ")),null!==(o=/^(.+?)(ΑΓΑ|ΑΓΕΣ|ΑΓΕ)$/.exec(s))&&(s=o[1],(/^(ΑΒΑΣΤ|ΠΟΛΥΦ|ΑΔΗΦ|ΠΑΜΦ|Ρ|ΑΣΠ|ΑΦ|ΑΜΑΛ|ΑΜΑΛΛΙ|ΑΝΥΣΤ|ΑΠΕΡ|ΑΣΠΑΡ|ΑΧΑΡ|ΔΕΡΒΕΝ|ΔΡΟΣΟΠ|ΞΕΦ|ΝΕΟΠ|ΝΟΜΟΤ|ΟΛΟΠ|ΟΜΟΤ|ΠΡΟΣΤ|ΠΡΟΣΩΠΟΠ|ΣΥΜΠ|ΣΥΝΤ|Τ|ΥΠΟΤ|ΧΑΡ|ΑΕΙΠ|ΑΙΜΟΣΤ|ΑΝΥΠ|ΑΠΟΤ|ΑΡΤΙΠ|ΔΙΑΤ|ΕΝ|ΕΠΙΤ|ΚΡΟΚΑΛΟΠ|ΣΙΔΗΡΟΠ|Λ|ΝΑΥ|ΟΥΛΑΜ|ΟΥΡ|Π|ΤΡ|Μ)$/.test(o[1])||/(ΟΦ|ΠΕΛ|ΧΟΡΤ|ΛΛ|ΣΦ|ΡΠ|ΦΡ|ΠΡ|ΛΟΧ|ΣΜΗΝ)$/.test(o[1])&&!/^(ΨΟΦ|ΝΑΥΛΟΧ)$/.test(o[1])||/(ΚΟΛΛ)$/.test(o[1]))&&(s+="ΑΓ")),null!==(o=/^(.+?)(ΗΣΕ|ΗΣΟΥ|ΗΣΑ)$/.exec(s))&&(s=o[1],/^(Ν|ΧΕΡΣΟΝ|ΔΩΔΕΚΑΝ|ΕΡΗΜΟΝ|ΜΕΓΑΛΟΝ|ΕΠΤΑΝ|Ι)$/.test(o[1])&&(s+="ΗΣ")),null!==(o=/^(.+?)(ΗΣΤΕ)$/.exec(s))&&(s=o[1],/^(ΑΣΒ|ΣΒ|ΑΧΡ|ΧΡ|ΑΠΛ|ΑΕΙΜΝ|ΔΥΣΧΡ|ΕΥΧΡ|ΚΟΙΝΟΧΡ|ΠΑΛΙΜΨ)$/.test(o[1])&&(s+="ΗΣΤ")),null!==(o=/^(.+?)(ΟΥΝΕ|ΗΣΟΥΝΕ|ΗΘΟΥΝΕ)$/.exec(s))&&(s=o[1],/^(Ν|Ρ|ΣΠΙ|ΣΤΡΑΒΟΜΟΥΤΣ|ΚΑΚΟΜΟΥΤΣ|ΕΞΩΝ)$/.test(o[1])&&(s+="ΟΥΝ")),null!==(o=/^(.+?)(ΟΥΜΕ|ΗΣΟΥΜΕ|ΗΘΟΥΜΕ)$/.exec(s))&&(s=o[1],/^(ΠΑΡΑΣΟΥΣ|Φ|Χ|ΩΡΙΟΠΛ|ΑΖ|ΑΛΛΟΣΟΥΣ|ΑΣΟΥΣ)$/.test(o[1])&&(s+="ΟΥΜ")),null!=(o=/^(.+?)(ΜΑΤΟΙ|ΜΑΤΟΥΣ|ΜΑΤΟ|ΜΑΤΑ|ΜΑΤΩΣ|ΜΑΤΩΝ|ΜΑΤΟΣ|ΜΑΤΕΣ|ΜΑΤΗ|ΜΑΤΗΣ|ΜΑΤΟΥ)$/.exec(s))&&(s=o[1]+"Μ",/^(ΓΡΑΜ)$/.test(o[1])?s+="Α":/^(ΓΕ|ΣΤΑ)$/.test(o[1])&&(s+="ΑΤ")),null!==(o=/^(.+?)(ΟΥΑ)$/.exec(s))&&(s=o[1]+"ΟΥ"),n.length===s.length&&null!==(o=/^(.+?)(Α|ΑΓΑΤΕ|ΑΓΑΝ|ΑΕΙ|ΑΜΑΙ|ΑΝ|ΑΣ|ΑΣΑΙ|ΑΤΑΙ|ΑΩ|Ε|ΕΙ|ΕΙΣ|ΕΙΤΕ|ΕΣΑΙ|ΕΣ|ΕΤΑΙ|Ι|ΙΕΜΑΙ|ΙΕΜΑΣΤΕ|ΙΕΤΑΙ|ΙΕΣΑΙ|ΙΕΣΑΣΤΕ|ΙΟΜΑΣΤΑΝ|ΙΟΜΟΥΝ|ΙΟΜΟΥΝΑ|ΙΟΝΤΑΝ|ΙΟΝΤΟΥΣΑΝ|ΙΟΣΑΣΤΑΝ|ΙΟΣΑΣΤΕ|ΙΟΣΟΥΝ|ΙΟΣΟΥΝΑ|ΙΟΤΑΝ|ΙΟΥΜΑ|ΙΟΥΜΑΣΤΕ|ΙΟΥΝΤΑΙ|ΙΟΥΝΤΑΝ|Η|ΗΔΕΣ|ΗΔΩΝ|ΗΘΕΙ|ΗΘΕΙΣ|ΗΘΕΙΤΕ|ΗΘΗΚΑΤΕ|ΗΘΗΚΑΝ|ΗΘΟΥΝ|ΗΘΩ|ΗΚΑΤΕ|ΗΚΑΝ|ΗΣ|ΗΣΑΝ|ΗΣΑΤΕ|ΗΣΕΙ|ΗΣΕΣ|ΗΣΟΥΝ|ΗΣΩ|Ο|ΟΙ|ΟΜΑΙ|ΟΜΑΣΤΑΝ|ΟΜΟΥΝ|ΟΜΟΥΝΑ|ΟΝΤΑΙ|ΟΝΤΑΝ|ΟΝΤΟΥΣΑΝ|ΟΣ|ΟΣΑΣΤΑΝ|ΟΣΑΣΤΕ|ΟΣΟΥΝ|ΟΣΟΥΝΑ|ΟΤΑΝ|ΟΥ|ΟΥΜΑΙ|ΟΥΜΑΣΤΕ|ΟΥΝ|ΟΥΝΤΑΙ|ΟΥΝΤΑΝ|ΟΥΣ|ΟΥΣΑΝ|ΟΥΣΑΤΕ|Υ||ΥΑ|ΥΣ|Ω|ΩΝ|ΟΙΣ)$/.exec(s))&&(s=o[1]),null!=(o=/^(.+?)(ΕΣΤΕΡ|ΕΣΤΑΤ|ΟΤΕΡ|ΟΤΑΤ|ΥΤΕΡ|ΥΤΑΤ|ΩΤΕΡ|ΩΤΑΤ)$/.exec(s))&&(/^(ΕΞ|ΕΣ|ΑΝ|ΚΑΤ|Κ|ΠΡ)$/.test(o[1])||(s=o[1]),/^(ΚΑ|Μ|ΕΛΕ|ΛΕ|ΔΕ)$/.test(o[1])&&(s+="ΥΤ")),s}var l={"ΦΑΓΙΑ":"ΦΑ","ΦΑΓΙΟΥ":"ΦΑ","ΦΑΓΙΩΝ":"ΦΑ","ΣΚΑΓΙΑ":"ΣΚΑ","ΣΚΑΓΙΟΥ":"ΣΚΑ","ΣΚΑΓΙΩΝ":"ΣΚΑ","ΣΟΓΙΟΥ":"ΣΟ","ΣΟΓΙΑ":"ΣΟ","ΣΟΓΙΩΝ":"ΣΟ","ΤΑΤΟΓΙΑ":"ΤΑΤΟ","ΤΑΤΟΓΙΟΥ":"ΤΑΤΟ","ΤΑΤΟΓΙΩΝ":"ΤΑΤΟ","ΚΡΕΑΣ":"ΚΡΕ","ΚΡΕΑΤΟΣ":"ΚΡΕ","ΚΡΕΑΤΑ":"ΚΡΕ","ΚΡΕΑΤΩΝ":"ΚΡΕ","ΠΕΡΑΣ":"ΠΕΡ","ΠΕΡΑΤΟΣ":"ΠΕΡ","ΠΕΡΑΤΑ":"ΠΕΡ","ΠΕΡΑΤΩΝ":"ΠΕΡ","ΤΕΡΑΣ":"ΤΕΡ","ΤΕΡΑΤΟΣ":"ΤΕΡ","ΤΕΡΑΤΑ":"ΤΕΡ","ΤΕΡΑΤΩΝ":"ΤΕΡ","ΦΩΣ":"ΦΩ","ΦΩΤΟΣ":"ΦΩ","ΦΩΤΑ":"ΦΩ","ΦΩΤΩΝ":"ΦΩ","ΚΑΘΕΣΤΩΣ":"ΚΑΘΕΣΤ","ΚΑΘΕΣΤΩΤΟΣ":"ΚΑΘΕΣΤ","ΚΑΘΕΣΤΩΤΑ":"ΚΑΘΕΣΤ","ΚΑΘΕΣΤΩΤΩΝ":"ΚΑΘΕΣΤ","ΓΕΓΟΝΟΣ":"ΓΕΓΟΝ","ΓΕΓΟΝΟΤΟΣ":"ΓΕΓΟΝ","ΓΕΓΟΝΟΤΑ":"ΓΕΓΟΝ","ΓΕΓΟΝΟΤΩΝ":"ΓΕΓΟΝ","ΕΥΑ":"ΕΥ"},i=["ΑΚΡΙΒΩΣ","ΑΛΑ","ΑΛΛΑ","ΑΛΛΙΩΣ","ΑΛΛΟΤΕ","ΑΜΑ","ΑΝΩ","ΑΝΑ","ΑΝΑΜΕΣΑ","ΑΝΑΜΕΤΑΞΥ","ΑΝΕΥ","ΑΝΤΙ","ΑΝΤΙΠΕΡΑ","ΑΝΤΙΟ","ΑΞΑΦΝΑ","ΑΠΟ","ΑΠΟΨΕ","ΑΡΑ","ΑΡΑΓΕ","ΑΥΡΙΟ","ΑΦΟΙ","ΑΦΟΥ","ΑΦΟΤΟΥ","ΒΡΕ","ΓΕΙΑ","ΓΙΑ","ΓΙΑΤΙ","ΓΡΑΜΜΑ","ΔΕΗ","ΔΕΝ","ΔΗΛΑΔΗ","ΔΙΧΩΣ","ΔΥΟ","ΕΑΝ","ΕΓΩ","ΕΔΩ","ΕΔΑ","ΕΙΘΕ","ΕΙΜΑΙ","ΕΙΜΑΣΤΕ","ΕΙΣΑΙ","ΕΙΣΑΣΤΕ","ΕΙΝΑΙ","ΕΙΣΤΕ","ΕΙΤΕ","ΕΚΕΙ","ΕΚΟ","ΕΛΑ","ΕΜΑΣ","ΕΜΕΙΣ","ΕΝΤΕΛΩΣ","ΕΝΤΟΣ","ΕΝΤΩΜΕΤΑΞΥ","ΕΝΩ","ΕΞΙ","ΕΞΙΣΟΥ","ΕΞΗΣ","ΕΞΩ","ΕΟΚ","ΕΠΑΝΩ","ΕΠΕΙΔΗ","ΕΠΕΙΤΑ","ΕΠΙ","ΕΠΙΣΗΣ","ΕΠΟΜΕΝΩΣ","ΕΠΤΑ","ΕΣΑΣ","ΕΣΕΙΣ","ΕΣΤΩ","ΕΣΥ","ΕΣΩ","ΕΤΣΙ","ΕΥΓΕ","ΕΦΕ","ΕΦΕΞΗΣ","ΕΧΤΕΣ","ΕΩΣ","ΗΔΗ","ΗΜΙ","ΗΠΑ","ΗΤΟΙ","ΘΕΣ","ΙΔΙΩΣ","ΙΔΗ","ΙΚΑ","ΙΣΩΣ","ΚΑΘΕ","ΚΑΘΕΤΙ","ΚΑΘΟΛΟΥ","ΚΑΘΩΣ","ΚΑΙ","ΚΑΝ","ΚΑΠΟΤΕ","ΚΑΠΟΥ","ΚΑΤΑ","ΚΑΤΙ","ΚΑΤΟΠΙΝ","ΚΑΤΩ","ΚΕΙ","ΚΙΧ","ΚΚΕ","ΚΟΛΑΝ","ΚΥΡΙΩΣ","ΚΩΣ","ΜΑΚΑΡΙ","ΜΑΛΙΣΤΑ","ΜΑΛΛΟΝ","ΜΑΙ","ΜΑΟ","ΜΑΟΥΣ","ΜΑΣ","ΜΕΘΑΥΡΙΟ","ΜΕΣ","ΜΕΣΑ","ΜΕΤΑ","ΜΕΤΑΞΥ","ΜΕΧΡΙ","ΜΗΔΕ","ΜΗΝ","ΜΗΠΩΣ","ΜΗΤΕ","ΜΙΑ","ΜΙΑΣ","ΜΙΣ","ΜΜΕ","ΜΟΛΟΝΟΤΙ","ΜΟΥ","ΜΠΑ","ΜΠΑΣ","ΜΠΟΥΦΑΝ","ΜΠΡΟΣ","ΝΑΙ","ΝΕΣ","ΝΤΑ","ΝΤΕ","ΞΑΝΑ","ΟΗΕ","ΟΚΤΩ","ΟΜΩΣ","ΟΝΕ","ΟΠΑ","ΟΠΟΥ","ΟΠΩΣ","ΟΣΟ","ΟΤΑΝ","ΟΤΕ","ΟΤΙ","ΟΥΤΕ","ΟΧΙ","ΠΑΛΙ","ΠΑΝ","ΠΑΝΟ","ΠΑΝΤΟΤΕ","ΠΑΝΤΟΥ","ΠΑΝΤΩΣ","ΠΑΝΩ","ΠΑΡΑ","ΠΕΡΑ","ΠΕΡΙ","ΠΕΡΙΠΟΥ","ΠΙΑ","ΠΙΟ","ΠΙΣΩ","ΠΛΑΙ","ΠΛΕΟΝ","ΠΛΗΝ","ΠΟΤΕ","ΠΟΥ","ΠΡΟ","ΠΡΟΣ","ΠΡΟΧΤΕΣ","ΠΡΟΧΘΕΣ","ΡΟΔΙ","ΠΩΣ","ΣΑΙ","ΣΑΣ","ΣΑΝ","ΣΕΙΣ","ΣΙΑ","ΣΚΙ","ΣΟΙ","ΣΟΥ","ΣΡΙ","ΣΥΝ","ΣΥΝΑΜΑ","ΣΧΕΔΟΝ","ΤΑΔΕ","ΤΑΞΙ","ΤΑΧΑ","ΤΕΙ","ΤΗΝ","ΤΗΣ","ΤΙΠΟΤΑ","ΤΙΠΟΤΕ","ΤΙΣ","ΤΟΝ","ΤΟΤΕ","ΤΟΥ","ΤΟΥΣ","ΤΣΑ","ΤΣΕ","ΤΣΙ","ΤΣΟΥ","ΤΩΝ","ΥΠΟ","ΥΠΟΨΗ","ΥΠΟΨΙΝ","ΥΣΤΕΡΑ","ΦΕΤΟΣ","ΦΙΣ","ΦΠΑ","ΧΑΦ","ΧΘΕΣ","ΧΤΕΣ","ΧΩΡΙΣ","ΩΣ","ΩΣΑΝ","ΩΣΟΤΟΥ","ΩΣΠΟΥ","ΩΣΤΕ","ΩΣΤΟΣΟ"],s=new RegExp("^[ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ]+$");return function(e){return"function"==typeof e.update?e.update(function(e){return n(e.toUpperCase()).toLowerCase()}):n(e.toUpperCase()).toLowerCase()}}(),e.Pipeline.registerFunction(e.el.stemmer,"stemmer-el"),e.el.stopWordFilter=e.generateStopWordFilter("αλλα αν αντι απο αυτα αυτεσ αυτη αυτο αυτοι αυτοσ αυτουσ αυτων για δε δεν εαν ειμαι ειμαστε ειναι εισαι ειστε εκεινα εκεινεσ εκεινη εκεινο εκεινοι εκεινοσ εκεινουσ εκεινων ενω επι η θα ισωσ κ και κατα κι μα με μετα μη μην να ο οι ομωσ οπωσ οσο οτι παρα ποια ποιεσ ποιο ποιοι ποιοσ ποιουσ ποιων που προσ πωσ σε στη στην στο στον τα την τησ το τον τοτε του των ωσ".split(" ")),e.Pipeline.registerFunction(e.el.stopWordFilter,"stopWordFilter-el"),e.el.normilizer=function(){var e={"Ά":"Α","ά":"α","Έ":"Ε","έ":"ε","Ή":"Η","ή":"η","Ί":"Ι","ί":"ι","Ό":"Ο","ο":"ο","Ύ":"Υ","ύ":"υ","Ώ":"Ω","ώ":"ω","Ϊ":"Ι","ϊ":"ι","Ϋ":"Υ","ϋ":"υ","ΐ":"ι","ΰ":"υ"};return function(t){if("function"==typeof t.update)return t.update(function(t){for(var r="",n=0;n=A.limit)return!0;A.cursor++}return!1}return!0}function n(){if(A.in_grouping(x,97,252)){var s=A.cursor;if(e()){if(A.cursor=s,!A.in_grouping(x,97,252))return!0;for(;!A.out_grouping(x,97,252);){if(A.cursor>=A.limit)return!0;A.cursor++}}return!1}return!0}function i(){var s,r=A.cursor;if(n()){if(A.cursor=r,!A.out_grouping(x,97,252))return;if(s=A.cursor,e()){if(A.cursor=s,!A.in_grouping(x,97,252)||A.cursor>=A.limit)return;A.cursor++}}g=A.cursor}function a(){for(;!A.in_grouping(x,97,252);){if(A.cursor>=A.limit)return!1;A.cursor++}for(;!A.out_grouping(x,97,252);){if(A.cursor>=A.limit)return!1;A.cursor++}return!0}function t(){var e=A.cursor;g=A.limit,p=g,v=g,i(),A.cursor=e,a()&&(p=A.cursor,a()&&(v=A.cursor))}function o(){for(var e;;){if(A.bra=A.cursor,e=A.find_among(k,6))switch(A.ket=A.cursor,e){case 1:A.slice_from("a");continue;case 2:A.slice_from("e");continue;case 3:A.slice_from("i");continue;case 4:A.slice_from("o");continue;case 5:A.slice_from("u");continue;case 6:if(A.cursor>=A.limit)break;A.cursor++;continue}break}}function u(){return g<=A.cursor}function w(){return p<=A.cursor}function c(){return v<=A.cursor}function m(){var e;if(A.ket=A.cursor,A.find_among_b(y,13)&&(A.bra=A.cursor,(e=A.find_among_b(q,11))&&u()))switch(e){case 1:A.bra=A.cursor,A.slice_from("iendo");break;case 2:A.bra=A.cursor,A.slice_from("ando");break;case 3:A.bra=A.cursor,A.slice_from("ar");break;case 4:A.bra=A.cursor,A.slice_from("er");break;case 5:A.bra=A.cursor,A.slice_from("ir");break;case 6:A.slice_del();break;case 7:A.eq_s_b(1,"u")&&A.slice_del()}}function l(e,s){if(!c())return!0;A.slice_del(),A.ket=A.cursor;var r=A.find_among_b(e,s);return r&&(A.bra=A.cursor,1==r&&c()&&A.slice_del()),!1}function d(e){return!c()||(A.slice_del(),A.ket=A.cursor,A.eq_s_b(2,e)&&(A.bra=A.cursor,c()&&A.slice_del()),!1)}function b(){var e;if(A.ket=A.cursor,e=A.find_among_b(S,46)){switch(A.bra=A.cursor,e){case 1:if(!c())return!1;A.slice_del();break;case 2:if(d("ic"))return!1;break;case 3:if(!c())return!1;A.slice_from("log");break;case 4:if(!c())return!1;A.slice_from("u");break;case 5:if(!c())return!1;A.slice_from("ente");break;case 6:if(!w())return!1;A.slice_del(),A.ket=A.cursor,e=A.find_among_b(C,4),e&&(A.bra=A.cursor,c()&&(A.slice_del(),1==e&&(A.ket=A.cursor,A.eq_s_b(2,"at")&&(A.bra=A.cursor,c()&&A.slice_del()))));break;case 7:if(l(P,3))return!1;break;case 8:if(l(F,3))return!1;break;case 9:if(d("at"))return!1}return!0}return!1}function f(){var e,s;if(A.cursor>=g&&(s=A.limit_backward,A.limit_backward=g,A.ket=A.cursor,e=A.find_among_b(W,12),A.limit_backward=s,e)){if(A.bra=A.cursor,1==e){if(!A.eq_s_b(1,"u"))return!1;A.slice_del()}return!0}return!1}function _(){var e,s,r,n;if(A.cursor>=g&&(s=A.limit_backward,A.limit_backward=g,A.ket=A.cursor,e=A.find_among_b(L,96),A.limit_backward=s,e))switch(A.bra=A.cursor,e){case 1:r=A.limit-A.cursor,A.eq_s_b(1,"u")?(n=A.limit-A.cursor,A.eq_s_b(1,"g")?A.cursor=A.limit-n:A.cursor=A.limit-r):A.cursor=A.limit-r,A.bra=A.cursor;case 2:A.slice_del()}}function h(){var e,s;if(A.ket=A.cursor,e=A.find_among_b(z,8))switch(A.bra=A.cursor,e){case 1:u()&&A.slice_del();break;case 2:u()&&(A.slice_del(),A.ket=A.cursor,A.eq_s_b(1,"u")&&(A.bra=A.cursor,s=A.limit-A.cursor,A.eq_s_b(1,"g")&&(A.cursor=A.limit-s,u()&&A.slice_del())))}}var v,p,g,k=[new s("",-1,6),new s("á",0,1),new s("é",0,2),new s("í",0,3),new s("ó",0,4),new s("ú",0,5)],y=[new s("la",-1,-1),new s("sela",0,-1),new s("le",-1,-1),new s("me",-1,-1),new s("se",-1,-1),new s("lo",-1,-1),new s("selo",5,-1),new s("las",-1,-1),new s("selas",7,-1),new s("les",-1,-1),new s("los",-1,-1),new s("selos",10,-1),new s("nos",-1,-1)],q=[new s("ando",-1,6),new s("iendo",-1,6),new s("yendo",-1,7),new s("ándo",-1,2),new s("iéndo",-1,1),new s("ar",-1,6),new s("er",-1,6),new s("ir",-1,6),new s("ár",-1,3),new s("ér",-1,4),new s("ír",-1,5)],C=[new s("ic",-1,-1),new s("ad",-1,-1),new s("os",-1,-1),new s("iv",-1,1)],P=[new s("able",-1,1),new s("ible",-1,1),new s("ante",-1,1)],F=[new s("ic",-1,1),new s("abil",-1,1),new s("iv",-1,1)],S=[new s("ica",-1,1),new s("ancia",-1,2),new s("encia",-1,5),new s("adora",-1,2),new s("osa",-1,1),new s("ista",-1,1),new s("iva",-1,9),new s("anza",-1,1),new s("logía",-1,3),new s("idad",-1,8),new s("able",-1,1),new s("ible",-1,1),new s("ante",-1,2),new s("mente",-1,7),new s("amente",13,6),new s("ación",-1,2),new s("ución",-1,4),new s("ico",-1,1),new s("ismo",-1,1),new s("oso",-1,1),new s("amiento",-1,1),new s("imiento",-1,1),new s("ivo",-1,9),new s("ador",-1,2),new s("icas",-1,1),new s("ancias",-1,2),new s("encias",-1,5),new s("adoras",-1,2),new s("osas",-1,1),new s("istas",-1,1),new s("ivas",-1,9),new s("anzas",-1,1),new s("logías",-1,3),new s("idades",-1,8),new s("ables",-1,1),new s("ibles",-1,1),new s("aciones",-1,2),new s("uciones",-1,4),new s("adores",-1,2),new s("antes",-1,2),new s("icos",-1,1),new s("ismos",-1,1),new s("osos",-1,1),new s("amientos",-1,1),new s("imientos",-1,1),new s("ivos",-1,9)],W=[new s("ya",-1,1),new s("ye",-1,1),new s("yan",-1,1),new s("yen",-1,1),new s("yeron",-1,1),new s("yendo",-1,1),new s("yo",-1,1),new s("yas",-1,1),new s("yes",-1,1),new s("yais",-1,1),new s("yamos",-1,1),new s("yó",-1,1)],L=[new s("aba",-1,2),new s("ada",-1,2),new s("ida",-1,2),new s("ara",-1,2),new s("iera",-1,2),new s("ía",-1,2),new s("aría",5,2),new s("ería",5,2),new s("iría",5,2),new s("ad",-1,2),new s("ed",-1,2),new s("id",-1,2),new s("ase",-1,2),new s("iese",-1,2),new s("aste",-1,2),new s("iste",-1,2),new s("an",-1,2),new s("aban",16,2),new s("aran",16,2),new s("ieran",16,2),new s("ían",16,2),new s("arían",20,2),new s("erían",20,2),new s("irían",20,2),new s("en",-1,1),new s("asen",24,2),new s("iesen",24,2),new s("aron",-1,2),new s("ieron",-1,2),new s("arán",-1,2),new s("erán",-1,2),new s("irán",-1,2),new s("ado",-1,2),new s("ido",-1,2),new s("ando",-1,2),new s("iendo",-1,2),new s("ar",-1,2),new s("er",-1,2),new s("ir",-1,2),new s("as",-1,2),new s("abas",39,2),new s("adas",39,2),new s("idas",39,2),new s("aras",39,2),new s("ieras",39,2),new s("ías",39,2),new s("arías",45,2),new s("erías",45,2),new s("irías",45,2),new s("es",-1,1),new s("ases",49,2),new s("ieses",49,2),new s("abais",-1,2),new s("arais",-1,2),new s("ierais",-1,2),new s("íais",-1,2),new s("aríais",55,2),new s("eríais",55,2),new s("iríais",55,2),new s("aseis",-1,2),new s("ieseis",-1,2),new s("asteis",-1,2),new s("isteis",-1,2),new s("áis",-1,2),new s("éis",-1,1),new s("aréis",64,2),new s("eréis",64,2),new s("iréis",64,2),new s("ados",-1,2),new s("idos",-1,2),new s("amos",-1,2),new s("ábamos",70,2),new s("áramos",70,2),new s("iéramos",70,2),new s("íamos",70,2),new s("aríamos",74,2),new s("eríamos",74,2),new s("iríamos",74,2),new s("emos",-1,1),new s("aremos",78,2),new s("eremos",78,2),new s("iremos",78,2),new s("ásemos",78,2),new s("iésemos",78,2),new s("imos",-1,2),new s("arás",-1,2),new s("erás",-1,2),new s("irás",-1,2),new s("ís",-1,2),new s("ará",-1,2),new s("erá",-1,2),new s("irá",-1,2),new s("aré",-1,2),new s("eré",-1,2),new s("iré",-1,2),new s("ió",-1,2)],z=[new s("a",-1,1),new s("e",-1,2),new s("o",-1,1),new s("os",-1,1),new s("á",-1,1),new s("é",-1,2),new s("í",-1,1),new s("ó",-1,1)],x=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,4,10],A=new r;this.setCurrent=function(e){A.setCurrent(e)},this.getCurrent=function(){return A.getCurrent()},this.stem=function(){var e=A.cursor;return t(),A.limit_backward=e,A.cursor=A.limit,m(),A.cursor=A.limit,b()||(A.cursor=A.limit,f()||(A.cursor=A.limit,_())),A.cursor=A.limit,h(),A.cursor=A.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.es.stemmer,"stemmer-es"),e.es.stopWordFilter=e.generateStopWordFilter("a al algo algunas algunos ante antes como con contra cual cuando de del desde donde durante e el ella ellas ellos en entre era erais eran eras eres es esa esas ese eso esos esta estaba estabais estaban estabas estad estada estadas estado estados estamos estando estar estaremos estará estarán estarás estaré estaréis estaría estaríais estaríamos estarían estarías estas este estemos esto estos estoy estuve estuviera estuvierais estuvieran estuvieras estuvieron estuviese estuvieseis estuviesen estuvieses estuvimos estuviste estuvisteis estuviéramos estuviésemos estuvo está estábamos estáis están estás esté estéis estén estés fue fuera fuerais fueran fueras fueron fuese fueseis fuesen fueses fui fuimos fuiste fuisteis fuéramos fuésemos ha habida habidas habido habidos habiendo habremos habrá habrán habrás habré habréis habría habríais habríamos habrían habrías habéis había habíais habíamos habían habías han has hasta hay haya hayamos hayan hayas hayáis he hemos hube hubiera hubierais hubieran hubieras hubieron hubiese hubieseis hubiesen hubieses hubimos hubiste hubisteis hubiéramos hubiésemos hubo la las le les lo los me mi mis mucho muchos muy más mí mía mías mío míos nada ni no nos nosotras nosotros nuestra nuestras nuestro nuestros o os otra otras otro otros para pero poco por porque que quien quienes qué se sea seamos sean seas seremos será serán serás seré seréis sería seríais seríamos serían serías seáis sido siendo sin sobre sois somos son soy su sus suya suyas suyo suyos sí también tanto te tendremos tendrá tendrán tendrás tendré tendréis tendría tendríais tendríamos tendrían tendrías tened tenemos tenga tengamos tengan tengas tengo tengáis tenida tenidas tenido tenidos teniendo tenéis tenía teníais teníamos tenían tenías ti tiene tienen tienes todo todos tu tus tuve tuviera tuvierais tuvieran tuvieras tuvieron tuviese tuvieseis tuviesen tuvieses tuvimos tuviste tuvisteis tuviéramos tuviésemos tuvo tuya tuyas tuyo tuyos tú un una uno unos vosotras vosotros vuestra vuestras vuestro vuestros y ya yo él éramos".split(" ")),e.Pipeline.registerFunction(e.es.stopWordFilter,"stopWordFilter-es")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.fi.min.js b/assets/javascripts/lunr/min/lunr.fi.min.js new file mode 100644 index 000000000..29f5dfcea --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.fi.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Finnish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(i,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(i.lunr)}(this,function(){return function(i){if(void 0===i)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===i.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");i.fi=function(){this.pipeline.reset(),this.pipeline.add(i.fi.trimmer,i.fi.stopWordFilter,i.fi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(i.fi.stemmer))},i.fi.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",i.fi.trimmer=i.trimmerSupport.generateTrimmer(i.fi.wordCharacters),i.Pipeline.registerFunction(i.fi.trimmer,"trimmer-fi"),i.fi.stemmer=function(){var e=i.stemmerSupport.Among,r=i.stemmerSupport.SnowballProgram,n=new function(){function i(){f=A.limit,d=f,n()||(f=A.cursor,n()||(d=A.cursor))}function n(){for(var i;;){if(i=A.cursor,A.in_grouping(W,97,246))break;if(A.cursor=i,i>=A.limit)return!0;A.cursor++}for(A.cursor=i;!A.out_grouping(W,97,246);){if(A.cursor>=A.limit)return!0;A.cursor++}return!1}function t(){return d<=A.cursor}function s(){var i,e;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(h,10)){switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:if(!A.in_grouping_b(x,97,246))return;break;case 2:if(!t())return}A.slice_del()}else A.limit_backward=e}function o(){var i,e,r;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(v,9))switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:r=A.limit-A.cursor,A.eq_s_b(1,"k")||(A.cursor=A.limit-r,A.slice_del());break;case 2:A.slice_del(),A.ket=A.cursor,A.eq_s_b(3,"kse")&&(A.bra=A.cursor,A.slice_from("ksi"));break;case 3:A.slice_del();break;case 4:A.find_among_b(p,6)&&A.slice_del();break;case 5:A.find_among_b(g,6)&&A.slice_del();break;case 6:A.find_among_b(j,2)&&A.slice_del()}else A.limit_backward=e}function l(){return A.find_among_b(q,7)}function a(){return A.eq_s_b(1,"i")&&A.in_grouping_b(L,97,246)}function u(){var i,e,r;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(C,30)){switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:if(!A.eq_s_b(1,"a"))return;break;case 2:case 9:if(!A.eq_s_b(1,"e"))return;break;case 3:if(!A.eq_s_b(1,"i"))return;break;case 4:if(!A.eq_s_b(1,"o"))return;break;case 5:if(!A.eq_s_b(1,"ä"))return;break;case 6:if(!A.eq_s_b(1,"ö"))return;break;case 7:if(r=A.limit-A.cursor,!l()&&(A.cursor=A.limit-r,!A.eq_s_b(2,"ie"))){A.cursor=A.limit-r;break}if(A.cursor=A.limit-r,A.cursor<=A.limit_backward){A.cursor=A.limit-r;break}A.cursor--,A.bra=A.cursor;break;case 8:if(!A.in_grouping_b(W,97,246)||!A.out_grouping_b(W,97,246))return}A.slice_del(),k=!0}else A.limit_backward=e}function c(){var i,e,r;if(A.cursor>=d)if(e=A.limit_backward,A.limit_backward=d,A.ket=A.cursor,i=A.find_among_b(P,14)){if(A.bra=A.cursor,A.limit_backward=e,1==i){if(r=A.limit-A.cursor,A.eq_s_b(2,"po"))return;A.cursor=A.limit-r}A.slice_del()}else A.limit_backward=e}function m(){var i;A.cursor>=f&&(i=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,A.find_among_b(F,2)?(A.bra=A.cursor,A.limit_backward=i,A.slice_del()):A.limit_backward=i)}function w(){var i,e,r,n,t,s;if(A.cursor>=f){if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,A.eq_s_b(1,"t")&&(A.bra=A.cursor,r=A.limit-A.cursor,A.in_grouping_b(W,97,246)&&(A.cursor=A.limit-r,A.slice_del(),A.limit_backward=e,n=A.limit-A.cursor,A.cursor>=d&&(A.cursor=d,t=A.limit_backward,A.limit_backward=A.cursor,A.cursor=A.limit-n,A.ket=A.cursor,i=A.find_among_b(S,2))))){if(A.bra=A.cursor,A.limit_backward=t,1==i){if(s=A.limit-A.cursor,A.eq_s_b(2,"po"))return;A.cursor=A.limit-s}return void A.slice_del()}A.limit_backward=e}}function _(){var i,e,r,n;if(A.cursor>=f){for(i=A.limit_backward,A.limit_backward=f,e=A.limit-A.cursor,l()&&(A.cursor=A.limit-e,A.ket=A.cursor,A.cursor>A.limit_backward&&(A.cursor--,A.bra=A.cursor,A.slice_del())),A.cursor=A.limit-e,A.ket=A.cursor,A.in_grouping_b(y,97,228)&&(A.bra=A.cursor,A.out_grouping_b(W,97,246)&&A.slice_del()),A.cursor=A.limit-e,A.ket=A.cursor,A.eq_s_b(1,"j")&&(A.bra=A.cursor,r=A.limit-A.cursor,A.eq_s_b(1,"o")?A.slice_del():(A.cursor=A.limit-r,A.eq_s_b(1,"u")&&A.slice_del())),A.cursor=A.limit-e,A.ket=A.cursor,A.eq_s_b(1,"o")&&(A.bra=A.cursor,A.eq_s_b(1,"j")&&A.slice_del()),A.cursor=A.limit-e,A.limit_backward=i;;){if(n=A.limit-A.cursor,A.out_grouping_b(W,97,246)){A.cursor=A.limit-n;break}if(A.cursor=A.limit-n,A.cursor<=A.limit_backward)return;A.cursor--}A.ket=A.cursor,A.cursor>A.limit_backward&&(A.cursor--,A.bra=A.cursor,b=A.slice_to(),A.eq_v_b(b)&&A.slice_del())}}var k,b,d,f,h=[new e("pa",-1,1),new e("sti",-1,2),new e("kaan",-1,1),new e("han",-1,1),new e("kin",-1,1),new e("hän",-1,1),new e("kään",-1,1),new e("ko",-1,1),new e("pä",-1,1),new e("kö",-1,1)],p=[new e("lla",-1,-1),new e("na",-1,-1),new e("ssa",-1,-1),new e("ta",-1,-1),new e("lta",3,-1),new e("sta",3,-1)],g=[new e("llä",-1,-1),new e("nä",-1,-1),new e("ssä",-1,-1),new e("tä",-1,-1),new e("ltä",3,-1),new e("stä",3,-1)],j=[new e("lle",-1,-1),new e("ine",-1,-1)],v=[new e("nsa",-1,3),new e("mme",-1,3),new e("nne",-1,3),new e("ni",-1,2),new e("si",-1,1),new e("an",-1,4),new e("en",-1,6),new e("än",-1,5),new e("nsä",-1,3)],q=[new e("aa",-1,-1),new e("ee",-1,-1),new e("ii",-1,-1),new e("oo",-1,-1),new e("uu",-1,-1),new e("ää",-1,-1),new e("öö",-1,-1)],C=[new e("a",-1,8),new e("lla",0,-1),new e("na",0,-1),new e("ssa",0,-1),new e("ta",0,-1),new e("lta",4,-1),new e("sta",4,-1),new e("tta",4,9),new e("lle",-1,-1),new e("ine",-1,-1),new e("ksi",-1,-1),new e("n",-1,7),new e("han",11,1),new e("den",11,-1,a),new e("seen",11,-1,l),new e("hen",11,2),new e("tten",11,-1,a),new e("hin",11,3),new e("siin",11,-1,a),new e("hon",11,4),new e("hän",11,5),new e("hön",11,6),new e("ä",-1,8),new e("llä",22,-1),new e("nä",22,-1),new e("ssä",22,-1),new e("tä",22,-1),new e("ltä",26,-1),new e("stä",26,-1),new e("ttä",26,9)],P=[new e("eja",-1,-1),new e("mma",-1,1),new e("imma",1,-1),new e("mpa",-1,1),new e("impa",3,-1),new e("mmi",-1,1),new e("immi",5,-1),new e("mpi",-1,1),new e("impi",7,-1),new e("ejä",-1,-1),new e("mmä",-1,1),new e("immä",10,-1),new e("mpä",-1,1),new e("impä",12,-1)],F=[new e("i",-1,-1),new e("j",-1,-1)],S=[new e("mma",-1,1),new e("imma",0,-1)],y=[17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8],W=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],L=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],x=[17,97,24,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],A=new r;this.setCurrent=function(i){A.setCurrent(i)},this.getCurrent=function(){return A.getCurrent()},this.stem=function(){var e=A.cursor;return i(),k=!1,A.limit_backward=e,A.cursor=A.limit,s(),A.cursor=A.limit,o(),A.cursor=A.limit,u(),A.cursor=A.limit,c(),A.cursor=A.limit,k?(m(),A.cursor=A.limit):(A.cursor=A.limit,w(),A.cursor=A.limit),_(),!0}};return function(i){return"function"==typeof i.update?i.update(function(i){return n.setCurrent(i),n.stem(),n.getCurrent()}):(n.setCurrent(i),n.stem(),n.getCurrent())}}(),i.Pipeline.registerFunction(i.fi.stemmer,"stemmer-fi"),i.fi.stopWordFilter=i.generateStopWordFilter("ei eivät emme en et ette että he heidän heidät heihin heille heillä heiltä heissä heistä heitä hän häneen hänelle hänellä häneltä hänen hänessä hänestä hänet häntä itse ja johon joiden joihin joiksi joilla joille joilta joina joissa joista joita joka joksi jolla jolle jolta jona jonka jos jossa josta jota jotka kanssa keiden keihin keiksi keille keillä keiltä keinä keissä keistä keitä keneen keneksi kenelle kenellä keneltä kenen kenenä kenessä kenestä kenet ketkä ketkä ketä koska kuin kuka kun me meidän meidät meihin meille meillä meiltä meissä meistä meitä mihin miksi mikä mille millä miltä minkä minkä minua minulla minulle minulta minun minussa minusta minut minuun minä minä missä mistä mitkä mitä mukaan mutta ne niiden niihin niiksi niille niillä niiltä niin niin niinä niissä niistä niitä noiden noihin noiksi noilla noille noilta noin noina noissa noista noita nuo nyt näiden näihin näiksi näille näillä näiltä näinä näissä näistä näitä nämä ole olemme olen olet olette oli olimme olin olisi olisimme olisin olisit olisitte olisivat olit olitte olivat olla olleet ollut on ovat poikki se sekä sen siihen siinä siitä siksi sille sillä sillä siltä sinua sinulla sinulle sinulta sinun sinussa sinusta sinut sinuun sinä sinä sitä tai te teidän teidät teihin teille teillä teiltä teissä teistä teitä tuo tuohon tuoksi tuolla tuolle tuolta tuon tuona tuossa tuosta tuota tähän täksi tälle tällä tältä tämä tämän tänä tässä tästä tätä vaan vai vaikka yli".split(" ")),i.Pipeline.registerFunction(i.fi.stopWordFilter,"stopWordFilter-fi")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.fr.min.js b/assets/javascripts/lunr/min/lunr.fr.min.js new file mode 100644 index 000000000..68cd0094a --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.fr.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `French` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.fr=function(){this.pipeline.reset(),this.pipeline.add(e.fr.trimmer,e.fr.stopWordFilter,e.fr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.fr.stemmer))},e.fr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.fr.trimmer=e.trimmerSupport.generateTrimmer(e.fr.wordCharacters),e.Pipeline.registerFunction(e.fr.trimmer,"trimmer-fr"),e.fr.stemmer=function(){var r=e.stemmerSupport.Among,s=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,s){return!(!W.eq_s(1,e)||(W.ket=W.cursor,!W.in_grouping(F,97,251)))&&(W.slice_from(r),W.cursor=s,!0)}function i(e,r,s){return!!W.eq_s(1,e)&&(W.ket=W.cursor,W.slice_from(r),W.cursor=s,!0)}function n(){for(var r,s;;){if(r=W.cursor,W.in_grouping(F,97,251)){if(W.bra=W.cursor,s=W.cursor,e("u","U",r))continue;if(W.cursor=s,e("i","I",r))continue;if(W.cursor=s,i("y","Y",r))continue}if(W.cursor=r,W.bra=r,!e("y","Y",r)){if(W.cursor=r,W.eq_s(1,"q")&&(W.bra=W.cursor,i("u","U",r)))continue;if(W.cursor=r,r>=W.limit)return;W.cursor++}}}function t(){for(;!W.in_grouping(F,97,251);){if(W.cursor>=W.limit)return!0;W.cursor++}for(;!W.out_grouping(F,97,251);){if(W.cursor>=W.limit)return!0;W.cursor++}return!1}function u(){var e=W.cursor;if(q=W.limit,g=q,p=q,W.in_grouping(F,97,251)&&W.in_grouping(F,97,251)&&W.cursor=W.limit){W.cursor=q;break}W.cursor++}while(!W.in_grouping(F,97,251))}q=W.cursor,W.cursor=e,t()||(g=W.cursor,t()||(p=W.cursor))}function o(){for(var e,r;;){if(r=W.cursor,W.bra=r,!(e=W.find_among(h,4)))break;switch(W.ket=W.cursor,e){case 1:W.slice_from("i");break;case 2:W.slice_from("u");break;case 3:W.slice_from("y");break;case 4:if(W.cursor>=W.limit)return;W.cursor++}}}function c(){return q<=W.cursor}function a(){return g<=W.cursor}function l(){return p<=W.cursor}function w(){var e,r;if(W.ket=W.cursor,e=W.find_among_b(C,43)){switch(W.bra=W.cursor,e){case 1:if(!l())return!1;W.slice_del();break;case 2:if(!l())return!1;W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"ic")&&(W.bra=W.cursor,l()?W.slice_del():W.slice_from("iqU"));break;case 3:if(!l())return!1;W.slice_from("log");break;case 4:if(!l())return!1;W.slice_from("u");break;case 5:if(!l())return!1;W.slice_from("ent");break;case 6:if(!c())return!1;if(W.slice_del(),W.ket=W.cursor,e=W.find_among_b(z,6))switch(W.bra=W.cursor,e){case 1:l()&&(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"at")&&(W.bra=W.cursor,l()&&W.slice_del()));break;case 2:l()?W.slice_del():a()&&W.slice_from("eux");break;case 3:l()&&W.slice_del();break;case 4:c()&&W.slice_from("i")}break;case 7:if(!l())return!1;if(W.slice_del(),W.ket=W.cursor,e=W.find_among_b(y,3))switch(W.bra=W.cursor,e){case 1:l()?W.slice_del():W.slice_from("abl");break;case 2:l()?W.slice_del():W.slice_from("iqU");break;case 3:l()&&W.slice_del()}break;case 8:if(!l())return!1;if(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"at")&&(W.bra=W.cursor,l()&&(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"ic")))){W.bra=W.cursor,l()?W.slice_del():W.slice_from("iqU");break}break;case 9:W.slice_from("eau");break;case 10:if(!a())return!1;W.slice_from("al");break;case 11:if(l())W.slice_del();else{if(!a())return!1;W.slice_from("eux")}break;case 12:if(!a()||!W.out_grouping_b(F,97,251))return!1;W.slice_del();break;case 13:return c()&&W.slice_from("ant"),!1;case 14:return c()&&W.slice_from("ent"),!1;case 15:return r=W.limit-W.cursor,W.in_grouping_b(F,97,251)&&c()&&(W.cursor=W.limit-r,W.slice_del()),!1}return!0}return!1}function f(){var e,r;if(W.cursor=q){if(s=W.limit_backward,W.limit_backward=q,W.ket=W.cursor,e=W.find_among_b(P,7))switch(W.bra=W.cursor,e){case 1:if(l()){if(i=W.limit-W.cursor,!W.eq_s_b(1,"s")&&(W.cursor=W.limit-i,!W.eq_s_b(1,"t")))break;W.slice_del()}break;case 2:W.slice_from("i");break;case 3:W.slice_del();break;case 4:W.eq_s_b(2,"gu")&&W.slice_del()}W.limit_backward=s}}function b(){var e=W.limit-W.cursor;W.find_among_b(U,5)&&(W.cursor=W.limit-e,W.ket=W.cursor,W.cursor>W.limit_backward&&(W.cursor--,W.bra=W.cursor,W.slice_del()))}function d(){for(var e,r=1;W.out_grouping_b(F,97,251);)r--;if(r<=0){if(W.ket=W.cursor,e=W.limit-W.cursor,!W.eq_s_b(1,"é")&&(W.cursor=W.limit-e,!W.eq_s_b(1,"è")))return;W.bra=W.cursor,W.slice_from("e")}}function k(){if(!w()&&(W.cursor=W.limit,!f()&&(W.cursor=W.limit,!m())))return W.cursor=W.limit,void _();W.cursor=W.limit,W.ket=W.cursor,W.eq_s_b(1,"Y")?(W.bra=W.cursor,W.slice_from("i")):(W.cursor=W.limit,W.eq_s_b(1,"ç")&&(W.bra=W.cursor,W.slice_from("c")))}var p,g,q,v=[new r("col",-1,-1),new r("par",-1,-1),new r("tap",-1,-1)],h=[new r("",-1,4),new r("I",0,1),new r("U",0,2),new r("Y",0,3)],z=[new r("iqU",-1,3),new r("abl",-1,3),new r("Ièr",-1,4),new r("ièr",-1,4),new r("eus",-1,2),new r("iv",-1,1)],y=[new r("ic",-1,2),new r("abil",-1,1),new r("iv",-1,3)],C=[new r("iqUe",-1,1),new r("atrice",-1,2),new r("ance",-1,1),new r("ence",-1,5),new r("logie",-1,3),new r("able",-1,1),new r("isme",-1,1),new r("euse",-1,11),new r("iste",-1,1),new r("ive",-1,8),new r("if",-1,8),new r("usion",-1,4),new r("ation",-1,2),new r("ution",-1,4),new r("ateur",-1,2),new r("iqUes",-1,1),new r("atrices",-1,2),new r("ances",-1,1),new r("ences",-1,5),new r("logies",-1,3),new r("ables",-1,1),new r("ismes",-1,1),new r("euses",-1,11),new r("istes",-1,1),new r("ives",-1,8),new r("ifs",-1,8),new r("usions",-1,4),new r("ations",-1,2),new r("utions",-1,4),new r("ateurs",-1,2),new r("ments",-1,15),new r("ements",30,6),new r("issements",31,12),new r("ités",-1,7),new r("ment",-1,15),new r("ement",34,6),new r("issement",35,12),new r("amment",34,13),new r("emment",34,14),new r("aux",-1,10),new r("eaux",39,9),new r("eux",-1,1),new r("ité",-1,7)],x=[new r("ira",-1,1),new r("ie",-1,1),new r("isse",-1,1),new r("issante",-1,1),new r("i",-1,1),new r("irai",4,1),new r("ir",-1,1),new r("iras",-1,1),new r("ies",-1,1),new r("îmes",-1,1),new r("isses",-1,1),new r("issantes",-1,1),new r("îtes",-1,1),new r("is",-1,1),new r("irais",13,1),new r("issais",13,1),new r("irions",-1,1),new r("issions",-1,1),new r("irons",-1,1),new r("issons",-1,1),new r("issants",-1,1),new r("it",-1,1),new r("irait",21,1),new r("issait",21,1),new r("issant",-1,1),new r("iraIent",-1,1),new r("issaIent",-1,1),new r("irent",-1,1),new r("issent",-1,1),new r("iront",-1,1),new r("ît",-1,1),new r("iriez",-1,1),new r("issiez",-1,1),new r("irez",-1,1),new r("issez",-1,1)],I=[new r("a",-1,3),new r("era",0,2),new r("asse",-1,3),new r("ante",-1,3),new r("ée",-1,2),new r("ai",-1,3),new r("erai",5,2),new r("er",-1,2),new r("as",-1,3),new r("eras",8,2),new r("âmes",-1,3),new r("asses",-1,3),new r("antes",-1,3),new r("âtes",-1,3),new r("ées",-1,2),new r("ais",-1,3),new r("erais",15,2),new r("ions",-1,1),new r("erions",17,2),new r("assions",17,3),new r("erons",-1,2),new r("ants",-1,3),new r("és",-1,2),new r("ait",-1,3),new r("erait",23,2),new r("ant",-1,3),new r("aIent",-1,3),new r("eraIent",26,2),new r("èrent",-1,2),new r("assent",-1,3),new r("eront",-1,2),new r("ât",-1,3),new r("ez",-1,2),new r("iez",32,2),new r("eriez",33,2),new r("assiez",33,3),new r("erez",32,2),new r("é",-1,2)],P=[new r("e",-1,3),new r("Ière",0,2),new r("ière",0,2),new r("ion",-1,1),new r("Ier",-1,2),new r("ier",-1,2),new r("ë",-1,4)],U=[new r("ell",-1,-1),new r("eill",-1,-1),new r("enn",-1,-1),new r("onn",-1,-1),new r("ett",-1,-1)],F=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,128,130,103,8,5],S=[1,65,20,0,0,0,0,0,0,0,0,0,0,0,0,0,128],W=new s;this.setCurrent=function(e){W.setCurrent(e)},this.getCurrent=function(){return W.getCurrent()},this.stem=function(){var e=W.cursor;return n(),W.cursor=e,u(),W.limit_backward=e,W.cursor=W.limit,k(),W.cursor=W.limit,b(),W.cursor=W.limit,d(),W.cursor=W.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.fr.stemmer,"stemmer-fr"),e.fr.stopWordFilter=e.generateStopWordFilter("ai aie aient aies ait as au aura aurai auraient aurais aurait auras aurez auriez aurions aurons auront aux avaient avais avait avec avez aviez avions avons ayant ayez ayons c ce ceci celà ces cet cette d dans de des du elle en es est et eu eue eues eurent eus eusse eussent eusses eussiez eussions eut eux eûmes eût eûtes furent fus fusse fussent fusses fussiez fussions fut fûmes fût fûtes ici il ils j je l la le les leur leurs lui m ma mais me mes moi mon même n ne nos notre nous on ont ou par pas pour qu que quel quelle quelles quels qui s sa sans se sera serai seraient serais serait seras serez seriez serions serons seront ses soi soient sois soit sommes son sont soyez soyons suis sur t ta te tes toi ton tu un une vos votre vous y à étaient étais était étant étiez étions été étée étées étés êtes".split(" ")),e.Pipeline.registerFunction(e.fr.stopWordFilter,"stopWordFilter-fr")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.he.min.js b/assets/javascripts/lunr/min/lunr.he.min.js new file mode 100644 index 000000000..b863d3eae --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.he.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.he=function(){this.pipeline.reset(),this.pipeline.add(e.he.trimmer,e.he.stopWordFilter,e.he.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.he.stemmer))},e.he.wordCharacters="֑-״א-תa-zA-Za-zA-Z0-90-9",e.he.trimmer=e.trimmerSupport.generateTrimmer(e.he.wordCharacters),e.Pipeline.registerFunction(e.he.trimmer,"trimmer-he"),e.he.stemmer=function(){var e=this;return e.result=!1,e.preRemoved=!1,e.sufRemoved=!1,e.pre={pre1:"ה ו י ת",pre2:"ב כ ל מ ש כש",pre3:"הב הכ הל המ הש בש לכ",pre4:"וב וכ ול ומ וש",pre5:"מה שה כל",pre6:"מב מכ מל ממ מש",pre7:"בה בו בי בת כה כו כי כת לה לו לי לת",pre8:"ובה ובו ובי ובת וכה וכו וכי וכת ולה ולו ולי ולת"},e.suf={suf1:"ך כ ם ן נ",suf2:"ים ות וך וכ ום ון ונ הם הן יכ יך ינ ים",suf3:"תי תך תכ תם תן תנ",suf4:"ותי ותך ותכ ותם ותן ותנ",suf5:"נו כם כן הם הן",suf6:"ונו וכם וכן והם והן",suf7:"תכם תכן תנו תהם תהן",suf8:"הוא היא הם הן אני אתה את אנו אתם אתן",suf9:"ני נו כי כו כם כן תי תך תכ תם תן",suf10:"י ך כ ם ן נ ת"},e.patterns=JSON.parse('{"hebrewPatterns": [{"pt1": [{"c": "ה", "l": 0}]}, {"pt2": [{"c": "ו", "l": 0}]}, {"pt3": [{"c": "י", "l": 0}]}, {"pt4": [{"c": "ת", "l": 0}]}, {"pt5": [{"c": "מ", "l": 0}]}, {"pt6": [{"c": "ל", "l": 0}]}, {"pt7": [{"c": "ב", "l": 0}]}, {"pt8": [{"c": "כ", "l": 0}]}, {"pt9": [{"c": "ש", "l": 0}]}, {"pt10": [{"c": "כש", "l": 0}]}, {"pt11": [{"c": "בה", "l": 0}]}, {"pt12": [{"c": "וב", "l": 0}]}, {"pt13": [{"c": "וכ", "l": 0}]}, {"pt14": [{"c": "ול", "l": 0}]}, {"pt15": [{"c": "ומ", "l": 0}]}, {"pt16": [{"c": "וש", "l": 0}]}, {"pt17": [{"c": "הב", "l": 0}]}, {"pt18": [{"c": "הכ", "l": 0}]}, {"pt19": [{"c": "הל", "l": 0}]}, {"pt20": [{"c": "המ", "l": 0}]}, {"pt21": [{"c": "הש", "l": 0}]}, {"pt22": [{"c": "מה", "l": 0}]}, {"pt23": [{"c": "שה", "l": 0}]}, {"pt24": [{"c": "כל", "l": 0}]}]}'),e.execArray=["cleanWord","removeDiacritics","removeStopWords","normalizeHebrewCharacters"],e.stem=function(){var r=0;for(e.result=!1,e.preRemoved=!1,e.sufRemoved=!1;r=0)return!0},e.normalizeHebrewCharacters=function(){return e.word=e.word.replace("ך","כ"),e.word=e.word.replace("ם","מ"),e.word=e.word.replace("ן","נ"),e.word=e.word.replace("ף","פ"),e.word=e.word.replace("ץ","צ"),!1},function(r){return"function"==typeof r.update?r.update(function(r){return e.setCurrent(r),e.stem(),e.getCurrent()}):(e.setCurrent(r),e.stem(),e.getCurrent())}}(),e.Pipeline.registerFunction(e.he.stemmer,"stemmer-he"),e.he.stopWordFilter=e.generateStopWordFilter("אבל או אולי אותו אותי אותך אותם אותן אותנו אז אחר אחרות אחרי אחריכן אחרים אחרת אי איזה איך אין איפה אל אלה אלו אם אנחנו אני אף אפשר את אתה אתכם אתכן אתם אתן באיזה באיזו בגלל בין בלבד בעבור בעזרת בכל בכן בלי במידה במקום שבו ברוב בשביל בשעה ש בתוך גם דרך הוא היא היה היי היכן היתה היתי הם הן הנה הסיבה שבגללה הרי ואילו ואת זאת זה זות יהיה יוכל יוכלו יותר מדי יכול יכולה יכולות יכולים יכל יכלה יכלו יש כאן כאשר כולם כולן כזה כי כיצד כך כל כלל כמו כן כפי כש לא לאו לאיזותך לאן לבין לה להיות להם להן לו לזה לזות לי לך לכם לכן למה למעלה למעלה מ למטה למטה מ למעט למקום שבו למרות לנו לעבר לעיכן לפיכך לפני מאד מאחורי מאיזו סיבה מאין מאיפה מבלי מבעד מדוע מה מהיכן מול מחוץ מי מידע מכאן מכל מכן מלבד מן מנין מסוגל מעט מעטים מעל מצד מקום בו מתחת מתי נגד נגר נו עד עז על עלי עליו עליה עליהם עליך עלינו עם עצמה עצמהם עצמהן עצמו עצמי עצמם עצמן עצמנו פה רק שוב של שלה שלהם שלהן שלו שלי שלך שלכה שלכם שלכן שלנו שם תהיה תחת".split(" ")),e.Pipeline.registerFunction(e.he.stopWordFilter,"stopWordFilter-he")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.hi.min.js b/assets/javascripts/lunr/min/lunr.hi.min.js new file mode 100644 index 000000000..7dbc41402 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.hi.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWordFilter,e.hi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hi.stemmer))},e.hi.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿa-zA-Za-zA-Z0-90-9",e.hi.trimmer=e.trimmerSupport.generateTrimmer(e.hi.wordCharacters),e.Pipeline.registerFunction(e.hi.trimmer,"trimmer-hi"),e.hi.stopWordFilter=e.generateStopWordFilter("अत अपना अपनी अपने अभी अंदर आदि आप इत्यादि इन इनका इन्हीं इन्हें इन्हों इस इसका इसकी इसके इसमें इसी इसे उन उनका उनकी उनके उनको उन्हीं उन्हें उन्हों उस उसके उसी उसे एक एवं एस ऐसे और कई कर करता करते करना करने करें कहते कहा का काफ़ी कि कितना किन्हें किन्हों किया किर किस किसी किसे की कुछ कुल के को कोई कौन कौनसा गया घर जब जहाँ जा जितना जिन जिन्हें जिन्हों जिस जिसे जीधर जैसा जैसे जो तक तब तरह तिन तिन्हें तिन्हों तिस तिसे तो था थी थे दबारा दिया दुसरा दूसरे दो द्वारा न नके नहीं ना निहायत नीचे ने पर पहले पूरा पे फिर बनी बही बहुत बाद बाला बिलकुल भी भीतर मगर मानो मे में यदि यह यहाँ यही या यिह ये रखें रहा रहे ऱ्वासा लिए लिये लेकिन व वग़ैरह वर्ग वह वहाँ वहीं वाले वुह वे वो सकता सकते सबसे सभी साथ साबुत साभ सारा से सो संग ही हुआ हुई हुए है हैं हो होता होती होते होना होने".split(" ")),e.hi.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.hi.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var t=i.toString().toLowerCase().replace(/^\s+/,"");return r.cut(t).split("|")},e.Pipeline.registerFunction(e.hi.stemmer,"stemmer-hi"),e.Pipeline.registerFunction(e.hi.stopWordFilter,"stopWordFilter-hi")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.hu.min.js b/assets/javascripts/lunr/min/lunr.hu.min.js new file mode 100644 index 000000000..ed9d909f7 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.hu.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Hungarian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hu=function(){this.pipeline.reset(),this.pipeline.add(e.hu.trimmer,e.hu.stopWordFilter,e.hu.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hu.stemmer))},e.hu.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.hu.trimmer=e.trimmerSupport.generateTrimmer(e.hu.wordCharacters),e.Pipeline.registerFunction(e.hu.trimmer,"trimmer-hu"),e.hu.stemmer=function(){var n=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,n=L.cursor;if(d=L.limit,L.in_grouping(W,97,252))for(;;){if(e=L.cursor,L.out_grouping(W,97,252))return L.cursor=e,L.find_among(g,8)||(L.cursor=e,e=L.limit)return void(d=e);L.cursor++}if(L.cursor=n,L.out_grouping(W,97,252)){for(;!L.in_grouping(W,97,252);){if(L.cursor>=L.limit)return;L.cursor++}d=L.cursor}}function i(){return d<=L.cursor}function a(){var e;if(L.ket=L.cursor,(e=L.find_among_b(h,2))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("a");break;case 2:L.slice_from("e")}}function t(){var e=L.limit-L.cursor;return!!L.find_among_b(p,23)&&(L.cursor=L.limit-e,!0)}function s(){if(L.cursor>L.limit_backward){L.cursor--,L.ket=L.cursor;var e=L.cursor-1;L.limit_backward<=e&&e<=L.limit&&(L.cursor=e,L.bra=e,L.slice_del())}}function c(){var e;if(L.ket=L.cursor,(e=L.find_among_b(_,2))&&(L.bra=L.cursor,i())){if((1==e||2==e)&&!t())return;L.slice_del(),s()}}function o(){L.ket=L.cursor,L.find_among_b(v,44)&&(L.bra=L.cursor,i()&&(L.slice_del(),a()))}function w(){var e;if(L.ket=L.cursor,(e=L.find_among_b(z,3))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("e");break;case 2:case 3:L.slice_from("a")}}function l(){var e;if(L.ket=L.cursor,(e=L.find_among_b(y,6))&&(L.bra=L.cursor,i()))switch(e){case 1:case 2:L.slice_del();break;case 3:L.slice_from("a");break;case 4:L.slice_from("e")}}function u(){var e;if(L.ket=L.cursor,(e=L.find_among_b(j,2))&&(L.bra=L.cursor,i())){if((1==e||2==e)&&!t())return;L.slice_del(),s()}}function m(){var e;if(L.ket=L.cursor,(e=L.find_among_b(C,7))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("a");break;case 2:L.slice_from("e");break;case 3:case 4:case 5:case 6:case 7:L.slice_del()}}function k(){var e;if(L.ket=L.cursor,(e=L.find_among_b(P,12))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 7:case 9:L.slice_del();break;case 2:case 5:case 8:L.slice_from("e");break;case 3:case 6:L.slice_from("a")}}function f(){var e;if(L.ket=L.cursor,(e=L.find_among_b(F,31))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 7:case 8:case 9:case 12:case 13:case 16:case 17:case 18:L.slice_del();break;case 2:case 5:case 10:case 14:case 19:L.slice_from("a");break;case 3:case 6:case 11:case 15:case 20:L.slice_from("e")}}function b(){var e;if(L.ket=L.cursor,(e=L.find_among_b(S,42))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 5:case 6:case 9:case 10:case 11:case 14:case 15:case 16:case 17:case 20:case 21:case 24:case 25:case 26:case 29:L.slice_del();break;case 2:case 7:case 12:case 18:case 22:case 27:L.slice_from("a");break;case 3:case 8:case 13:case 19:case 23:case 28:L.slice_from("e")}}var d,g=[new n("cs",-1,-1),new n("dzs",-1,-1),new n("gy",-1,-1),new n("ly",-1,-1),new n("ny",-1,-1),new n("sz",-1,-1),new n("ty",-1,-1),new n("zs",-1,-1)],h=[new n("á",-1,1),new n("é",-1,2)],p=[new n("bb",-1,-1),new n("cc",-1,-1),new n("dd",-1,-1),new n("ff",-1,-1),new n("gg",-1,-1),new n("jj",-1,-1),new n("kk",-1,-1),new n("ll",-1,-1),new n("mm",-1,-1),new n("nn",-1,-1),new n("pp",-1,-1),new n("rr",-1,-1),new n("ccs",-1,-1),new n("ss",-1,-1),new n("zzs",-1,-1),new n("tt",-1,-1),new n("vv",-1,-1),new n("ggy",-1,-1),new n("lly",-1,-1),new n("nny",-1,-1),new n("tty",-1,-1),new n("ssz",-1,-1),new n("zz",-1,-1)],_=[new n("al",-1,1),new n("el",-1,2)],v=[new n("ba",-1,-1),new n("ra",-1,-1),new n("be",-1,-1),new n("re",-1,-1),new n("ig",-1,-1),new n("nak",-1,-1),new n("nek",-1,-1),new n("val",-1,-1),new n("vel",-1,-1),new n("ul",-1,-1),new n("nál",-1,-1),new n("nél",-1,-1),new n("ból",-1,-1),new n("ról",-1,-1),new n("tól",-1,-1),new n("bõl",-1,-1),new n("rõl",-1,-1),new n("tõl",-1,-1),new n("ül",-1,-1),new n("n",-1,-1),new n("an",19,-1),new n("ban",20,-1),new n("en",19,-1),new n("ben",22,-1),new n("képpen",22,-1),new n("on",19,-1),new n("ön",19,-1),new n("képp",-1,-1),new n("kor",-1,-1),new n("t",-1,-1),new n("at",29,-1),new n("et",29,-1),new n("ként",29,-1),new n("anként",32,-1),new n("enként",32,-1),new n("onként",32,-1),new n("ot",29,-1),new n("ért",29,-1),new n("öt",29,-1),new n("hez",-1,-1),new n("hoz",-1,-1),new n("höz",-1,-1),new n("vá",-1,-1),new n("vé",-1,-1)],z=[new n("án",-1,2),new n("én",-1,1),new n("ánként",-1,3)],y=[new n("stul",-1,2),new n("astul",0,1),new n("ástul",0,3),new n("stül",-1,2),new n("estül",3,1),new n("éstül",3,4)],j=[new n("á",-1,1),new n("é",-1,2)],C=[new n("k",-1,7),new n("ak",0,4),new n("ek",0,6),new n("ok",0,5),new n("ák",0,1),new n("ék",0,2),new n("ök",0,3)],P=[new n("éi",-1,7),new n("áéi",0,6),new n("ééi",0,5),new n("é",-1,9),new n("ké",3,4),new n("aké",4,1),new n("eké",4,1),new n("oké",4,1),new n("áké",4,3),new n("éké",4,2),new n("öké",4,1),new n("éé",3,8)],F=[new n("a",-1,18),new n("ja",0,17),new n("d",-1,16),new n("ad",2,13),new n("ed",2,13),new n("od",2,13),new n("ád",2,14),new n("éd",2,15),new n("öd",2,13),new n("e",-1,18),new n("je",9,17),new n("nk",-1,4),new n("unk",11,1),new n("ánk",11,2),new n("énk",11,3),new n("ünk",11,1),new n("uk",-1,8),new n("juk",16,7),new n("ájuk",17,5),new n("ük",-1,8),new n("jük",19,7),new n("éjük",20,6),new n("m",-1,12),new n("am",22,9),new n("em",22,9),new n("om",22,9),new n("ám",22,10),new n("ém",22,11),new n("o",-1,18),new n("á",-1,19),new n("é",-1,20)],S=[new n("id",-1,10),new n("aid",0,9),new n("jaid",1,6),new n("eid",0,9),new n("jeid",3,6),new n("áid",0,7),new n("éid",0,8),new n("i",-1,15),new n("ai",7,14),new n("jai",8,11),new n("ei",7,14),new n("jei",10,11),new n("ái",7,12),new n("éi",7,13),new n("itek",-1,24),new n("eitek",14,21),new n("jeitek",15,20),new n("éitek",14,23),new n("ik",-1,29),new n("aik",18,26),new n("jaik",19,25),new n("eik",18,26),new n("jeik",21,25),new n("áik",18,27),new n("éik",18,28),new n("ink",-1,20),new n("aink",25,17),new n("jaink",26,16),new n("eink",25,17),new n("jeink",28,16),new n("áink",25,18),new n("éink",25,19),new n("aitok",-1,21),new n("jaitok",32,20),new n("áitok",-1,22),new n("im",-1,5),new n("aim",35,4),new n("jaim",36,1),new n("eim",35,4),new n("jeim",38,1),new n("áim",35,2),new n("éim",35,3)],W=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,52,14],L=new r;this.setCurrent=function(e){L.setCurrent(e)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){var n=L.cursor;return e(),L.limit_backward=n,L.cursor=L.limit,c(),L.cursor=L.limit,o(),L.cursor=L.limit,w(),L.cursor=L.limit,l(),L.cursor=L.limit,u(),L.cursor=L.limit,k(),L.cursor=L.limit,f(),L.cursor=L.limit,b(),L.cursor=L.limit,m(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.hu.stemmer,"stemmer-hu"),e.hu.stopWordFilter=e.generateStopWordFilter("a abban ahhoz ahogy ahol aki akik akkor alatt amely amelyek amelyekben amelyeket amelyet amelynek ami amikor amit amolyan amíg annak arra arról az azok azon azonban azt aztán azután azzal azért be belül benne bár cikk cikkek cikkeket csak de e ebben eddig egy egyes egyetlen egyik egyre egyéb egész ehhez ekkor el ellen elsõ elég elõ elõször elõtt emilyen ennek erre ez ezek ezen ezt ezzel ezért fel felé hanem hiszen hogy hogyan igen ill ill. illetve ilyen ilyenkor ismét ison itt jobban jó jól kell kellett keressünk keresztül ki kívül között közül legalább legyen lehet lehetett lenne lenni lesz lett maga magát majd majd meg mellett mely melyek mert mi mikor milyen minden mindenki mindent mindig mint mintha mit mivel miért most már más másik még míg nagy nagyobb nagyon ne nekem neki nem nincs néha néhány nélkül olyan ott pedig persze rá s saját sem semmi sok sokat sokkal szemben szerint szinte számára talán tehát teljes tovább továbbá több ugyanis utolsó után utána vagy vagyis vagyok valaki valami valamint való van vannak vele vissza viszont volna volt voltak voltam voltunk által általában át én éppen és így õ õk õket össze úgy új újabb újra".split(" ")),e.Pipeline.registerFunction(e.hu.stopWordFilter,"stopWordFilter-hu")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.hy.min.js b/assets/javascripts/lunr/min/lunr.hy.min.js new file mode 100644 index 000000000..b37f79298 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.hy.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hy=function(){this.pipeline.reset(),this.pipeline.add(e.hy.trimmer,e.hy.stopWordFilter)},e.hy.wordCharacters="[A-Za-z԰-֏ff-ﭏ]",e.hy.trimmer=e.trimmerSupport.generateTrimmer(e.hy.wordCharacters),e.Pipeline.registerFunction(e.hy.trimmer,"trimmer-hy"),e.hy.stopWordFilter=e.generateStopWordFilter("դու և եք էիր էիք հետո նաև նրանք որը վրա է որ պիտի են այս մեջ ն իր ու ի այդ որոնք այն կամ էր մի ես համար այլ իսկ էին ենք հետ ին թ էինք մենք նրա նա դուք եմ էի ըստ որպես ում".split(" ")),e.Pipeline.registerFunction(e.hy.stopWordFilter,"stopWordFilter-hy"),e.hy.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}(),e.Pipeline.registerFunction(e.hy.stemmer,"stemmer-hy")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.it.min.js b/assets/javascripts/lunr/min/lunr.it.min.js new file mode 100644 index 000000000..344b6a3c0 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.it.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Italian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.it=function(){this.pipeline.reset(),this.pipeline.add(e.it.trimmer,e.it.stopWordFilter,e.it.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.it.stemmer))},e.it.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.it.trimmer=e.trimmerSupport.generateTrimmer(e.it.wordCharacters),e.Pipeline.registerFunction(e.it.trimmer,"trimmer-it"),e.it.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,n){return!(!x.eq_s(1,e)||(x.ket=x.cursor,!x.in_grouping(L,97,249)))&&(x.slice_from(r),x.cursor=n,!0)}function i(){for(var r,n,i,o,t=x.cursor;;){if(x.bra=x.cursor,r=x.find_among(h,7))switch(x.ket=x.cursor,r){case 1:x.slice_from("à");continue;case 2:x.slice_from("è");continue;case 3:x.slice_from("ì");continue;case 4:x.slice_from("ò");continue;case 5:x.slice_from("ù");continue;case 6:x.slice_from("qU");continue;case 7:if(x.cursor>=x.limit)break;x.cursor++;continue}break}for(x.cursor=t;;)for(n=x.cursor;;){if(i=x.cursor,x.in_grouping(L,97,249)){if(x.bra=x.cursor,o=x.cursor,e("u","U",i))break;if(x.cursor=o,e("i","I",i))break}if(x.cursor=i,x.cursor>=x.limit)return void(x.cursor=n);x.cursor++}}function o(e){if(x.cursor=e,!x.in_grouping(L,97,249))return!1;for(;!x.out_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}return!0}function t(){if(x.in_grouping(L,97,249)){var e=x.cursor;if(x.out_grouping(L,97,249)){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return o(e);x.cursor++}return!0}return o(e)}return!1}function s(){var e,r=x.cursor;if(!t()){if(x.cursor=r,!x.out_grouping(L,97,249))return;if(e=x.cursor,x.out_grouping(L,97,249)){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return x.cursor=e,void(x.in_grouping(L,97,249)&&x.cursor=x.limit)return;x.cursor++}k=x.cursor}function a(){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}for(;!x.out_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}return!0}function u(){var e=x.cursor;k=x.limit,p=k,g=k,s(),x.cursor=e,a()&&(p=x.cursor,a()&&(g=x.cursor))}function c(){for(var e;;){if(x.bra=x.cursor,!(e=x.find_among(q,3)))break;switch(x.ket=x.cursor,e){case 1:x.slice_from("i");break;case 2:x.slice_from("u");break;case 3:if(x.cursor>=x.limit)return;x.cursor++}}}function w(){return k<=x.cursor}function l(){return p<=x.cursor}function m(){return g<=x.cursor}function f(){var e;if(x.ket=x.cursor,x.find_among_b(C,37)&&(x.bra=x.cursor,(e=x.find_among_b(z,5))&&w()))switch(e){case 1:x.slice_del();break;case 2:x.slice_from("e")}}function v(){var e;if(x.ket=x.cursor,!(e=x.find_among_b(S,51)))return!1;switch(x.bra=x.cursor,e){case 1:if(!m())return!1;x.slice_del();break;case 2:if(!m())return!1;x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"ic")&&(x.bra=x.cursor,m()&&x.slice_del());break;case 3:if(!m())return!1;x.slice_from("log");break;case 4:if(!m())return!1;x.slice_from("u");break;case 5:if(!m())return!1;x.slice_from("ente");break;case 6:if(!w())return!1;x.slice_del();break;case 7:if(!l())return!1;x.slice_del(),x.ket=x.cursor,e=x.find_among_b(P,4),e&&(x.bra=x.cursor,m()&&(x.slice_del(),1==e&&(x.ket=x.cursor,x.eq_s_b(2,"at")&&(x.bra=x.cursor,m()&&x.slice_del()))));break;case 8:if(!m())return!1;x.slice_del(),x.ket=x.cursor,e=x.find_among_b(F,3),e&&(x.bra=x.cursor,1==e&&m()&&x.slice_del());break;case 9:if(!m())return!1;x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"at")&&(x.bra=x.cursor,m()&&(x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"ic")&&(x.bra=x.cursor,m()&&x.slice_del())))}return!0}function b(){var e,r;x.cursor>=k&&(r=x.limit_backward,x.limit_backward=k,x.ket=x.cursor,e=x.find_among_b(W,87),e&&(x.bra=x.cursor,1==e&&x.slice_del()),x.limit_backward=r)}function d(){var e=x.limit-x.cursor;if(x.ket=x.cursor,x.in_grouping_b(y,97,242)&&(x.bra=x.cursor,w()&&(x.slice_del(),x.ket=x.cursor,x.eq_s_b(1,"i")&&(x.bra=x.cursor,w()))))return void x.slice_del();x.cursor=x.limit-e}function _(){d(),x.ket=x.cursor,x.eq_s_b(1,"h")&&(x.bra=x.cursor,x.in_grouping_b(U,99,103)&&w()&&x.slice_del())}var g,p,k,h=[new r("",-1,7),new r("qu",0,6),new r("á",0,1),new r("é",0,2),new r("í",0,3),new r("ó",0,4),new r("ú",0,5)],q=[new r("",-1,3),new r("I",0,1),new r("U",0,2)],C=[new r("la",-1,-1),new r("cela",0,-1),new r("gliela",0,-1),new r("mela",0,-1),new r("tela",0,-1),new r("vela",0,-1),new r("le",-1,-1),new r("cele",6,-1),new r("gliele",6,-1),new r("mele",6,-1),new r("tele",6,-1),new r("vele",6,-1),new r("ne",-1,-1),new r("cene",12,-1),new r("gliene",12,-1),new r("mene",12,-1),new r("sene",12,-1),new r("tene",12,-1),new r("vene",12,-1),new r("ci",-1,-1),new r("li",-1,-1),new r("celi",20,-1),new r("glieli",20,-1),new r("meli",20,-1),new r("teli",20,-1),new r("veli",20,-1),new r("gli",20,-1),new r("mi",-1,-1),new r("si",-1,-1),new r("ti",-1,-1),new r("vi",-1,-1),new r("lo",-1,-1),new r("celo",31,-1),new r("glielo",31,-1),new r("melo",31,-1),new r("telo",31,-1),new r("velo",31,-1)],z=[new r("ando",-1,1),new r("endo",-1,1),new r("ar",-1,2),new r("er",-1,2),new r("ir",-1,2)],P=[new r("ic",-1,-1),new r("abil",-1,-1),new r("os",-1,-1),new r("iv",-1,1)],F=[new r("ic",-1,1),new r("abil",-1,1),new r("iv",-1,1)],S=[new r("ica",-1,1),new r("logia",-1,3),new r("osa",-1,1),new r("ista",-1,1),new r("iva",-1,9),new r("anza",-1,1),new r("enza",-1,5),new r("ice",-1,1),new r("atrice",7,1),new r("iche",-1,1),new r("logie",-1,3),new r("abile",-1,1),new r("ibile",-1,1),new r("usione",-1,4),new r("azione",-1,2),new r("uzione",-1,4),new r("atore",-1,2),new r("ose",-1,1),new r("ante",-1,1),new r("mente",-1,1),new r("amente",19,7),new r("iste",-1,1),new r("ive",-1,9),new r("anze",-1,1),new r("enze",-1,5),new r("ici",-1,1),new r("atrici",25,1),new r("ichi",-1,1),new r("abili",-1,1),new r("ibili",-1,1),new r("ismi",-1,1),new r("usioni",-1,4),new r("azioni",-1,2),new r("uzioni",-1,4),new r("atori",-1,2),new r("osi",-1,1),new r("anti",-1,1),new r("amenti",-1,6),new r("imenti",-1,6),new r("isti",-1,1),new r("ivi",-1,9),new r("ico",-1,1),new r("ismo",-1,1),new r("oso",-1,1),new r("amento",-1,6),new r("imento",-1,6),new r("ivo",-1,9),new r("ità",-1,8),new r("istà",-1,1),new r("istè",-1,1),new r("istì",-1,1)],W=[new r("isca",-1,1),new r("enda",-1,1),new r("ata",-1,1),new r("ita",-1,1),new r("uta",-1,1),new r("ava",-1,1),new r("eva",-1,1),new r("iva",-1,1),new r("erebbe",-1,1),new r("irebbe",-1,1),new r("isce",-1,1),new r("ende",-1,1),new r("are",-1,1),new r("ere",-1,1),new r("ire",-1,1),new r("asse",-1,1),new r("ate",-1,1),new r("avate",16,1),new r("evate",16,1),new r("ivate",16,1),new r("ete",-1,1),new r("erete",20,1),new r("irete",20,1),new r("ite",-1,1),new r("ereste",-1,1),new r("ireste",-1,1),new r("ute",-1,1),new r("erai",-1,1),new r("irai",-1,1),new r("isci",-1,1),new r("endi",-1,1),new r("erei",-1,1),new r("irei",-1,1),new r("assi",-1,1),new r("ati",-1,1),new r("iti",-1,1),new r("eresti",-1,1),new r("iresti",-1,1),new r("uti",-1,1),new r("avi",-1,1),new r("evi",-1,1),new r("ivi",-1,1),new r("isco",-1,1),new r("ando",-1,1),new r("endo",-1,1),new r("Yamo",-1,1),new r("iamo",-1,1),new r("avamo",-1,1),new r("evamo",-1,1),new r("ivamo",-1,1),new r("eremo",-1,1),new r("iremo",-1,1),new r("assimo",-1,1),new r("ammo",-1,1),new r("emmo",-1,1),new r("eremmo",54,1),new r("iremmo",54,1),new r("immo",-1,1),new r("ano",-1,1),new r("iscano",58,1),new r("avano",58,1),new r("evano",58,1),new r("ivano",58,1),new r("eranno",-1,1),new r("iranno",-1,1),new r("ono",-1,1),new r("iscono",65,1),new r("arono",65,1),new r("erono",65,1),new r("irono",65,1),new r("erebbero",-1,1),new r("irebbero",-1,1),new r("assero",-1,1),new r("essero",-1,1),new r("issero",-1,1),new r("ato",-1,1),new r("ito",-1,1),new r("uto",-1,1),new r("avo",-1,1),new r("evo",-1,1),new r("ivo",-1,1),new r("ar",-1,1),new r("ir",-1,1),new r("erà",-1,1),new r("irà",-1,1),new r("erò",-1,1),new r("irò",-1,1)],L=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2,1],y=[17,65,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2],U=[17],x=new n;this.setCurrent=function(e){x.setCurrent(e)},this.getCurrent=function(){return x.getCurrent()},this.stem=function(){var e=x.cursor;return i(),x.cursor=e,u(),x.limit_backward=e,x.cursor=x.limit,f(),x.cursor=x.limit,v()||(x.cursor=x.limit,b()),x.cursor=x.limit,_(),x.cursor=x.limit_backward,c(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.it.stemmer,"stemmer-it"),e.it.stopWordFilter=e.generateStopWordFilter("a abbia abbiamo abbiano abbiate ad agl agli ai al all alla alle allo anche avemmo avendo avesse avessero avessi avessimo aveste avesti avete aveva avevamo avevano avevate avevi avevo avrai avranno avrebbe avrebbero avrei avremmo avremo avreste avresti avrete avrà avrò avuta avute avuti avuto c che chi ci coi col come con contro cui da dagl dagli dai dal dall dalla dalle dallo degl degli dei del dell della delle dello di dov dove e ebbe ebbero ebbi ed era erano eravamo eravate eri ero essendo faccia facciamo facciano facciate faccio facemmo facendo facesse facessero facessi facessimo faceste facesti faceva facevamo facevano facevate facevi facevo fai fanno farai faranno farebbe farebbero farei faremmo faremo fareste faresti farete farà farò fece fecero feci fosse fossero fossi fossimo foste fosti fu fui fummo furono gli ha hai hanno ho i il in io l la le lei li lo loro lui ma mi mia mie miei mio ne negl negli nei nel nell nella nelle nello noi non nostra nostre nostri nostro o per perché più quale quanta quante quanti quanto quella quelle quelli quello questa queste questi questo sarai saranno sarebbe sarebbero sarei saremmo saremo sareste saresti sarete sarà sarò se sei si sia siamo siano siate siete sono sta stai stando stanno starai staranno starebbe starebbero starei staremmo staremo stareste staresti starete starà starò stava stavamo stavano stavate stavi stavo stemmo stesse stessero stessi stessimo steste stesti stette stettero stetti stia stiamo stiano stiate sto su sua sue sugl sugli sui sul sull sulla sulle sullo suo suoi ti tra tu tua tue tuo tuoi tutti tutto un una uno vi voi vostra vostre vostri vostro è".split(" ")),e.Pipeline.registerFunction(e.it.stopWordFilter,"stopWordFilter-it")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ja.min.js b/assets/javascripts/lunr/min/lunr.ja.min.js new file mode 100644 index 000000000..5f254ebe9 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ja.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),r?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var t=new e.TinySegmenter;e.ja.tokenizer=function(i){var n,o,s,p,a,u,m,l,c,f;if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(o=i.toString().toLowerCase().replace(/^\s+/,""),n=o.length-1;n>=0;n--)if(/\S/.test(o.charAt(n))){o=o.substring(0,n+1);break}for(a=[],s=o.length,c=0,l=0;c<=s;c++)if(u=o.charAt(c),m=c-l,u.match(/\s/)||c==s){if(m>0)for(p=t.segment(o.slice(l,c)).filter(function(e){return!!e}),f=l,n=0;n=C.limit)break;C.cursor++;continue}break}for(C.cursor=o,C.bra=o,C.eq_s(1,"y")?(C.ket=C.cursor,C.slice_from("Y")):C.cursor=o;;)if(e=C.cursor,C.in_grouping(q,97,232)){if(i=C.cursor,C.bra=i,C.eq_s(1,"i"))C.ket=C.cursor,C.in_grouping(q,97,232)&&(C.slice_from("I"),C.cursor=e);else if(C.cursor=i,C.eq_s(1,"y"))C.ket=C.cursor,C.slice_from("Y"),C.cursor=e;else if(n(e))break}else if(n(e))break}function n(r){return C.cursor=r,r>=C.limit||(C.cursor++,!1)}function o(){_=C.limit,d=_,t()||(_=C.cursor,_<3&&(_=3),t()||(d=C.cursor))}function t(){for(;!C.in_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}for(;!C.out_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}return!1}function s(){for(var r;;)if(C.bra=C.cursor,r=C.find_among(p,3))switch(C.ket=C.cursor,r){case 1:C.slice_from("y");break;case 2:C.slice_from("i");break;case 3:if(C.cursor>=C.limit)return;C.cursor++}}function u(){return _<=C.cursor}function c(){return d<=C.cursor}function a(){var r=C.limit-C.cursor;C.find_among_b(g,3)&&(C.cursor=C.limit-r,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del()))}function l(){var r;w=!1,C.ket=C.cursor,C.eq_s_b(1,"e")&&(C.bra=C.cursor,u()&&(r=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-r,C.slice_del(),w=!0,a())))}function m(){var r;u()&&(r=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-r,C.eq_s_b(3,"gem")||(C.cursor=C.limit-r,C.slice_del(),a())))}function f(){var r,e,i,n,o,t,s=C.limit-C.cursor;if(C.ket=C.cursor,r=C.find_among_b(h,5))switch(C.bra=C.cursor,r){case 1:u()&&C.slice_from("heid");break;case 2:m();break;case 3:u()&&C.out_grouping_b(j,97,232)&&C.slice_del()}if(C.cursor=C.limit-s,l(),C.cursor=C.limit-s,C.ket=C.cursor,C.eq_s_b(4,"heid")&&(C.bra=C.cursor,c()&&(e=C.limit-C.cursor,C.eq_s_b(1,"c")||(C.cursor=C.limit-e,C.slice_del(),C.ket=C.cursor,C.eq_s_b(2,"en")&&(C.bra=C.cursor,m())))),C.cursor=C.limit-s,C.ket=C.cursor,r=C.find_among_b(k,6))switch(C.bra=C.cursor,r){case 1:if(c()){if(C.slice_del(),i=C.limit-C.cursor,C.ket=C.cursor,C.eq_s_b(2,"ig")&&(C.bra=C.cursor,c()&&(n=C.limit-C.cursor,!C.eq_s_b(1,"e")))){C.cursor=C.limit-n,C.slice_del();break}C.cursor=C.limit-i,a()}break;case 2:c()&&(o=C.limit-C.cursor,C.eq_s_b(1,"e")||(C.cursor=C.limit-o,C.slice_del()));break;case 3:c()&&(C.slice_del(),l());break;case 4:c()&&C.slice_del();break;case 5:c()&&w&&C.slice_del()}C.cursor=C.limit-s,C.out_grouping_b(z,73,232)&&(t=C.limit-C.cursor,C.find_among_b(v,4)&&C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-t,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del())))}var d,_,w,b=[new e("",-1,6),new e("á",0,1),new e("ä",0,1),new e("é",0,2),new e("ë",0,2),new e("í",0,3),new e("ï",0,3),new e("ó",0,4),new e("ö",0,4),new e("ú",0,5),new e("ü",0,5)],p=[new e("",-1,3),new e("I",0,2),new e("Y",0,1)],g=[new e("dd",-1,-1),new e("kk",-1,-1),new e("tt",-1,-1)],h=[new e("ene",-1,2),new e("se",-1,3),new e("en",-1,2),new e("heden",2,1),new e("s",-1,3)],k=[new e("end",-1,1),new e("ig",-1,2),new e("ing",-1,1),new e("lijk",-1,3),new e("baar",-1,4),new e("bar",-1,5)],v=[new e("aa",-1,-1),new e("ee",-1,-1),new e("oo",-1,-1),new e("uu",-1,-1)],q=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],z=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],j=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],C=new i;this.setCurrent=function(r){C.setCurrent(r)},this.getCurrent=function(){return C.getCurrent()},this.stem=function(){var e=C.cursor;return r(),C.cursor=e,o(),C.limit_backward=e,C.cursor=C.limit,f(),C.cursor=C.limit_backward,s(),!0}};return function(r){return"function"==typeof r.update?r.update(function(r){return n.setCurrent(r),n.stem(),n.getCurrent()}):(n.setCurrent(r),n.stem(),n.getCurrent())}}(),r.Pipeline.registerFunction(r.nl.stemmer,"stemmer-nl"),r.nl.stopWordFilter=r.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),r.Pipeline.registerFunction(r.nl.stopWordFilter,"stopWordFilter-nl")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.no.min.js b/assets/javascripts/lunr/min/lunr.no.min.js new file mode 100644 index 000000000..92bc7e4e8 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.no.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Norwegian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,r=w.cursor+3;if(a=w.limit,0<=r||r<=w.limit){for(s=r;;){if(e=w.cursor,w.in_grouping(d,97,248)){w.cursor=e;break}if(e>=w.limit)return;w.cursor=e+1}for(;!w.out_grouping(d,97,248);){if(w.cursor>=w.limit)return;w.cursor++}a=w.cursor,a=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(m,29),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:n=w.limit-w.cursor,w.in_grouping_b(c,98,122)?w.slice_del():(w.cursor=w.limit-n,w.eq_s_b(1,"k")&&w.out_grouping_b(d,97,248)&&w.slice_del());break;case 3:w.slice_from("er")}}function t(){var e,r=w.limit-w.cursor;w.cursor>=a&&(e=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,w.find_among_b(u,2)?(w.bra=w.cursor,w.limit_backward=e,w.cursor=w.limit-r,w.cursor>w.limit_backward&&(w.cursor--,w.bra=w.cursor,w.slice_del())):w.limit_backward=e)}function o(){var e,r;w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(l,11),e?(w.bra=w.cursor,w.limit_backward=r,1==e&&w.slice_del()):w.limit_backward=r)}var s,a,m=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],u=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],c=[119,125,149,1],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,i(),w.cursor=w.limit,t(),w.cursor=w.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.pt.min.js b/assets/javascripts/lunr/min/lunr.pt.min.js new file mode 100644 index 000000000..6c16996d6 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.pt.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Portuguese` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.pt=function(){this.pipeline.reset(),this.pipeline.add(e.pt.trimmer,e.pt.stopWordFilter,e.pt.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.pt.stemmer))},e.pt.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.pt.trimmer=e.trimmerSupport.generateTrimmer(e.pt.wordCharacters),e.Pipeline.registerFunction(e.pt.trimmer,"trimmer-pt"),e.pt.stemmer=function(){var r=e.stemmerSupport.Among,s=e.stemmerSupport.SnowballProgram,n=new function(){function e(){for(var e;;){if(z.bra=z.cursor,e=z.find_among(k,3))switch(z.ket=z.cursor,e){case 1:z.slice_from("a~");continue;case 2:z.slice_from("o~");continue;case 3:if(z.cursor>=z.limit)break;z.cursor++;continue}break}}function n(){if(z.out_grouping(y,97,250)){for(;!z.in_grouping(y,97,250);){if(z.cursor>=z.limit)return!0;z.cursor++}return!1}return!0}function i(){if(z.in_grouping(y,97,250))for(;!z.out_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}return g=z.cursor,!0}function o(){var e,r,s=z.cursor;if(z.in_grouping(y,97,250))if(e=z.cursor,n()){if(z.cursor=e,i())return}else g=z.cursor;if(z.cursor=s,z.out_grouping(y,97,250)){if(r=z.cursor,n()){if(z.cursor=r,!z.in_grouping(y,97,250)||z.cursor>=z.limit)return;z.cursor++}g=z.cursor}}function t(){for(;!z.in_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}for(;!z.out_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}return!0}function a(){var e=z.cursor;g=z.limit,b=g,h=g,o(),z.cursor=e,t()&&(b=z.cursor,t()&&(h=z.cursor))}function u(){for(var e;;){if(z.bra=z.cursor,e=z.find_among(q,3))switch(z.ket=z.cursor,e){case 1:z.slice_from("ã");continue;case 2:z.slice_from("õ");continue;case 3:if(z.cursor>=z.limit)break;z.cursor++;continue}break}}function w(){return g<=z.cursor}function m(){return b<=z.cursor}function c(){return h<=z.cursor}function l(){var e;if(z.ket=z.cursor,!(e=z.find_among_b(F,45)))return!1;switch(z.bra=z.cursor,e){case 1:if(!c())return!1;z.slice_del();break;case 2:if(!c())return!1;z.slice_from("log");break;case 3:if(!c())return!1;z.slice_from("u");break;case 4:if(!c())return!1;z.slice_from("ente");break;case 5:if(!m())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(j,4),e&&(z.bra=z.cursor,c()&&(z.slice_del(),1==e&&(z.ket=z.cursor,z.eq_s_b(2,"at")&&(z.bra=z.cursor,c()&&z.slice_del()))));break;case 6:if(!c())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(C,3),e&&(z.bra=z.cursor,1==e&&c()&&z.slice_del());break;case 7:if(!c())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(P,3),e&&(z.bra=z.cursor,1==e&&c()&&z.slice_del());break;case 8:if(!c())return!1;z.slice_del(),z.ket=z.cursor,z.eq_s_b(2,"at")&&(z.bra=z.cursor,c()&&z.slice_del());break;case 9:if(!w()||!z.eq_s_b(1,"e"))return!1;z.slice_from("ir")}return!0}function f(){var e,r;if(z.cursor>=g){if(r=z.limit_backward,z.limit_backward=g,z.ket=z.cursor,e=z.find_among_b(S,120))return z.bra=z.cursor,1==e&&z.slice_del(),z.limit_backward=r,!0;z.limit_backward=r}return!1}function d(){var e;z.ket=z.cursor,(e=z.find_among_b(W,7))&&(z.bra=z.cursor,1==e&&w()&&z.slice_del())}function v(e,r){if(z.eq_s_b(1,e)){z.bra=z.cursor;var s=z.limit-z.cursor;if(z.eq_s_b(1,r))return z.cursor=z.limit-s,w()&&z.slice_del(),!1}return!0}function p(){var e;if(z.ket=z.cursor,e=z.find_among_b(L,4))switch(z.bra=z.cursor,e){case 1:w()&&(z.slice_del(),z.ket=z.cursor,z.limit-z.cursor,v("u","g")&&v("i","c"));break;case 2:z.slice_from("c")}}function _(){if(!l()&&(z.cursor=z.limit,!f()))return z.cursor=z.limit,void d();z.cursor=z.limit,z.ket=z.cursor,z.eq_s_b(1,"i")&&(z.bra=z.cursor,z.eq_s_b(1,"c")&&(z.cursor=z.limit,w()&&z.slice_del()))}var h,b,g,k=[new r("",-1,3),new r("ã",0,1),new r("õ",0,2)],q=[new r("",-1,3),new r("a~",0,1),new r("o~",0,2)],j=[new r("ic",-1,-1),new r("ad",-1,-1),new r("os",-1,-1),new r("iv",-1,1)],C=[new r("ante",-1,1),new r("avel",-1,1),new r("ível",-1,1)],P=[new r("ic",-1,1),new r("abil",-1,1),new r("iv",-1,1)],F=[new r("ica",-1,1),new r("ância",-1,1),new r("ência",-1,4),new r("ira",-1,9),new r("adora",-1,1),new r("osa",-1,1),new r("ista",-1,1),new r("iva",-1,8),new r("eza",-1,1),new r("logía",-1,2),new r("idade",-1,7),new r("ante",-1,1),new r("mente",-1,6),new r("amente",12,5),new r("ável",-1,1),new r("ível",-1,1),new r("ución",-1,3),new r("ico",-1,1),new r("ismo",-1,1),new r("oso",-1,1),new r("amento",-1,1),new r("imento",-1,1),new r("ivo",-1,8),new r("aça~o",-1,1),new r("ador",-1,1),new r("icas",-1,1),new r("ências",-1,4),new r("iras",-1,9),new r("adoras",-1,1),new r("osas",-1,1),new r("istas",-1,1),new r("ivas",-1,8),new r("ezas",-1,1),new r("logías",-1,2),new r("idades",-1,7),new r("uciones",-1,3),new r("adores",-1,1),new r("antes",-1,1),new r("aço~es",-1,1),new r("icos",-1,1),new r("ismos",-1,1),new r("osos",-1,1),new r("amentos",-1,1),new r("imentos",-1,1),new r("ivos",-1,8)],S=[new r("ada",-1,1),new r("ida",-1,1),new r("ia",-1,1),new r("aria",2,1),new r("eria",2,1),new r("iria",2,1),new r("ara",-1,1),new r("era",-1,1),new r("ira",-1,1),new r("ava",-1,1),new r("asse",-1,1),new r("esse",-1,1),new r("isse",-1,1),new r("aste",-1,1),new r("este",-1,1),new r("iste",-1,1),new r("ei",-1,1),new r("arei",16,1),new r("erei",16,1),new r("irei",16,1),new r("am",-1,1),new r("iam",20,1),new r("ariam",21,1),new r("eriam",21,1),new r("iriam",21,1),new r("aram",20,1),new r("eram",20,1),new r("iram",20,1),new r("avam",20,1),new r("em",-1,1),new r("arem",29,1),new r("erem",29,1),new r("irem",29,1),new r("assem",29,1),new r("essem",29,1),new r("issem",29,1),new r("ado",-1,1),new r("ido",-1,1),new r("ando",-1,1),new r("endo",-1,1),new r("indo",-1,1),new r("ara~o",-1,1),new r("era~o",-1,1),new r("ira~o",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("ir",-1,1),new r("as",-1,1),new r("adas",47,1),new r("idas",47,1),new r("ias",47,1),new r("arias",50,1),new r("erias",50,1),new r("irias",50,1),new r("aras",47,1),new r("eras",47,1),new r("iras",47,1),new r("avas",47,1),new r("es",-1,1),new r("ardes",58,1),new r("erdes",58,1),new r("irdes",58,1),new r("ares",58,1),new r("eres",58,1),new r("ires",58,1),new r("asses",58,1),new r("esses",58,1),new r("isses",58,1),new r("astes",58,1),new r("estes",58,1),new r("istes",58,1),new r("is",-1,1),new r("ais",71,1),new r("eis",71,1),new r("areis",73,1),new r("ereis",73,1),new r("ireis",73,1),new r("áreis",73,1),new r("éreis",73,1),new r("íreis",73,1),new r("ásseis",73,1),new r("ésseis",73,1),new r("ísseis",73,1),new r("áveis",73,1),new r("íeis",73,1),new r("aríeis",84,1),new r("eríeis",84,1),new r("iríeis",84,1),new r("ados",-1,1),new r("idos",-1,1),new r("amos",-1,1),new r("áramos",90,1),new r("éramos",90,1),new r("íramos",90,1),new r("ávamos",90,1),new r("íamos",90,1),new r("aríamos",95,1),new r("eríamos",95,1),new r("iríamos",95,1),new r("emos",-1,1),new r("aremos",99,1),new r("eremos",99,1),new r("iremos",99,1),new r("ássemos",99,1),new r("êssemos",99,1),new r("íssemos",99,1),new r("imos",-1,1),new r("armos",-1,1),new r("ermos",-1,1),new r("irmos",-1,1),new r("ámos",-1,1),new r("arás",-1,1),new r("erás",-1,1),new r("irás",-1,1),new r("eu",-1,1),new r("iu",-1,1),new r("ou",-1,1),new r("ará",-1,1),new r("erá",-1,1),new r("irá",-1,1)],W=[new r("a",-1,1),new r("i",-1,1),new r("o",-1,1),new r("os",-1,1),new r("á",-1,1),new r("í",-1,1),new r("ó",-1,1)],L=[new r("e",-1,1),new r("ç",-1,2),new r("é",-1,1),new r("ê",-1,1)],y=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,12,2],z=new s;this.setCurrent=function(e){z.setCurrent(e)},this.getCurrent=function(){return z.getCurrent()},this.stem=function(){var r=z.cursor;return e(),z.cursor=r,a(),z.limit_backward=r,z.cursor=z.limit,_(),z.cursor=z.limit,p(),z.cursor=z.limit_backward,u(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.pt.stemmer,"stemmer-pt"),e.pt.stopWordFilter=e.generateStopWordFilter("a ao aos aquela aquelas aquele aqueles aquilo as até com como da das de dela delas dele deles depois do dos e ela elas ele eles em entre era eram essa essas esse esses esta estamos estas estava estavam este esteja estejam estejamos estes esteve estive estivemos estiver estivera estiveram estiverem estivermos estivesse estivessem estivéramos estivéssemos estou está estávamos estão eu foi fomos for fora foram forem formos fosse fossem fui fôramos fôssemos haja hajam hajamos havemos hei houve houvemos houver houvera houveram houverei houverem houveremos houveria houveriam houvermos houverá houverão houveríamos houvesse houvessem houvéramos houvéssemos há hão isso isto já lhe lhes mais mas me mesmo meu meus minha minhas muito na nas nem no nos nossa nossas nosso nossos num numa não nós o os ou para pela pelas pelo pelos por qual quando que quem se seja sejam sejamos sem serei seremos seria seriam será serão seríamos seu seus somos sou sua suas são só também te tem temos tenha tenham tenhamos tenho terei teremos teria teriam terá terão teríamos teu teus teve tinha tinham tive tivemos tiver tivera tiveram tiverem tivermos tivesse tivessem tivéramos tivéssemos tu tua tuas tém tínhamos um uma você vocês vos à às éramos".split(" ")),e.Pipeline.registerFunction(e.pt.stopWordFilter,"stopWordFilter-pt")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ro.min.js b/assets/javascripts/lunr/min/lunr.ro.min.js new file mode 100644 index 000000000..727714018 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ro.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Romanian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ro=function(){this.pipeline.reset(),this.pipeline.add(e.ro.trimmer,e.ro.stopWordFilter,e.ro.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ro.stemmer))},e.ro.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.ro.trimmer=e.trimmerSupport.generateTrimmer(e.ro.wordCharacters),e.Pipeline.registerFunction(e.ro.trimmer,"trimmer-ro"),e.ro.stemmer=function(){var i=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,n=new function(){function e(e,i){L.eq_s(1,e)&&(L.ket=L.cursor,L.in_grouping(W,97,259)&&L.slice_from(i))}function n(){for(var i,r;;){if(i=L.cursor,L.in_grouping(W,97,259)&&(r=L.cursor,L.bra=r,e("u","U"),L.cursor=r,e("i","I")),L.cursor=i,L.cursor>=L.limit)break;L.cursor++}}function t(){if(L.out_grouping(W,97,259)){for(;!L.in_grouping(W,97,259);){if(L.cursor>=L.limit)return!0;L.cursor++}return!1}return!0}function a(){if(L.in_grouping(W,97,259))for(;!L.out_grouping(W,97,259);){if(L.cursor>=L.limit)return!0;L.cursor++}return!1}function o(){var e,i,r=L.cursor;if(L.in_grouping(W,97,259)){if(e=L.cursor,!t())return void(h=L.cursor);if(L.cursor=e,!a())return void(h=L.cursor)}L.cursor=r,L.out_grouping(W,97,259)&&(i=L.cursor,t()&&(L.cursor=i,L.in_grouping(W,97,259)&&L.cursor=L.limit)return!1;L.cursor++}for(;!L.out_grouping(W,97,259);){if(L.cursor>=L.limit)return!1;L.cursor++}return!0}function c(){var e=L.cursor;h=L.limit,k=h,g=h,o(),L.cursor=e,u()&&(k=L.cursor,u()&&(g=L.cursor))}function s(){for(var e;;){if(L.bra=L.cursor,e=L.find_among(z,3))switch(L.ket=L.cursor,e){case 1:L.slice_from("i");continue;case 2:L.slice_from("u");continue;case 3:if(L.cursor>=L.limit)break;L.cursor++;continue}break}}function w(){return h<=L.cursor}function m(){return k<=L.cursor}function l(){return g<=L.cursor}function f(){var e,i;if(L.ket=L.cursor,(e=L.find_among_b(C,16))&&(L.bra=L.cursor,m()))switch(e){case 1:L.slice_del();break;case 2:L.slice_from("a");break;case 3:L.slice_from("e");break;case 4:L.slice_from("i");break;case 5:i=L.limit-L.cursor,L.eq_s_b(2,"ab")||(L.cursor=L.limit-i,L.slice_from("i"));break;case 6:L.slice_from("at");break;case 7:L.slice_from("aţi")}}function p(){var e,i=L.limit-L.cursor;if(L.ket=L.cursor,(e=L.find_among_b(P,46))&&(L.bra=L.cursor,m())){switch(e){case 1:L.slice_from("abil");break;case 2:L.slice_from("ibil");break;case 3:L.slice_from("iv");break;case 4:L.slice_from("ic");break;case 5:L.slice_from("at");break;case 6:L.slice_from("it")}return _=!0,L.cursor=L.limit-i,!0}return!1}function d(){var e,i;for(_=!1;;)if(i=L.limit-L.cursor,!p()){L.cursor=L.limit-i;break}if(L.ket=L.cursor,(e=L.find_among_b(F,62))&&(L.bra=L.cursor,l())){switch(e){case 1:L.slice_del();break;case 2:L.eq_s_b(1,"ţ")&&(L.bra=L.cursor,L.slice_from("t"));break;case 3:L.slice_from("ist")}_=!0}}function b(){var e,i,r;if(L.cursor>=h){if(i=L.limit_backward,L.limit_backward=h,L.ket=L.cursor,e=L.find_among_b(q,94))switch(L.bra=L.cursor,e){case 1:if(r=L.limit-L.cursor,!L.out_grouping_b(W,97,259)&&(L.cursor=L.limit-r,!L.eq_s_b(1,"u")))break;case 2:L.slice_del()}L.limit_backward=i}}function v(){var e;L.ket=L.cursor,(e=L.find_among_b(S,5))&&(L.bra=L.cursor,w()&&1==e&&L.slice_del())}var _,g,k,h,z=[new i("",-1,3),new i("I",0,1),new i("U",0,2)],C=[new i("ea",-1,3),new i("aţia",-1,7),new i("aua",-1,2),new i("iua",-1,4),new i("aţie",-1,7),new i("ele",-1,3),new i("ile",-1,5),new i("iile",6,4),new i("iei",-1,4),new i("atei",-1,6),new i("ii",-1,4),new i("ului",-1,1),new i("ul",-1,1),new i("elor",-1,3),new i("ilor",-1,4),new i("iilor",14,4)],P=[new i("icala",-1,4),new i("iciva",-1,4),new i("ativa",-1,5),new i("itiva",-1,6),new i("icale",-1,4),new i("aţiune",-1,5),new i("iţiune",-1,6),new i("atoare",-1,5),new i("itoare",-1,6),new i("ătoare",-1,5),new i("icitate",-1,4),new i("abilitate",-1,1),new i("ibilitate",-1,2),new i("ivitate",-1,3),new i("icive",-1,4),new i("ative",-1,5),new i("itive",-1,6),new i("icali",-1,4),new i("atori",-1,5),new i("icatori",18,4),new i("itori",-1,6),new i("ători",-1,5),new i("icitati",-1,4),new i("abilitati",-1,1),new i("ivitati",-1,3),new i("icivi",-1,4),new i("ativi",-1,5),new i("itivi",-1,6),new i("icităi",-1,4),new i("abilităi",-1,1),new i("ivităi",-1,3),new i("icităţi",-1,4),new i("abilităţi",-1,1),new i("ivităţi",-1,3),new i("ical",-1,4),new i("ator",-1,5),new i("icator",35,4),new i("itor",-1,6),new i("ător",-1,5),new i("iciv",-1,4),new i("ativ",-1,5),new i("itiv",-1,6),new i("icală",-1,4),new i("icivă",-1,4),new i("ativă",-1,5),new i("itivă",-1,6)],F=[new i("ica",-1,1),new i("abila",-1,1),new i("ibila",-1,1),new i("oasa",-1,1),new i("ata",-1,1),new i("ita",-1,1),new i("anta",-1,1),new i("ista",-1,3),new i("uta",-1,1),new i("iva",-1,1),new i("ic",-1,1),new i("ice",-1,1),new i("abile",-1,1),new i("ibile",-1,1),new i("isme",-1,3),new i("iune",-1,2),new i("oase",-1,1),new i("ate",-1,1),new i("itate",17,1),new i("ite",-1,1),new i("ante",-1,1),new i("iste",-1,3),new i("ute",-1,1),new i("ive",-1,1),new i("ici",-1,1),new i("abili",-1,1),new i("ibili",-1,1),new i("iuni",-1,2),new i("atori",-1,1),new i("osi",-1,1),new i("ati",-1,1),new i("itati",30,1),new i("iti",-1,1),new i("anti",-1,1),new i("isti",-1,3),new i("uti",-1,1),new i("işti",-1,3),new i("ivi",-1,1),new i("ităi",-1,1),new i("oşi",-1,1),new i("ităţi",-1,1),new i("abil",-1,1),new i("ibil",-1,1),new i("ism",-1,3),new i("ator",-1,1),new i("os",-1,1),new i("at",-1,1),new i("it",-1,1),new i("ant",-1,1),new i("ist",-1,3),new i("ut",-1,1),new i("iv",-1,1),new i("ică",-1,1),new i("abilă",-1,1),new i("ibilă",-1,1),new i("oasă",-1,1),new i("ată",-1,1),new i("ită",-1,1),new i("antă",-1,1),new i("istă",-1,3),new i("ută",-1,1),new i("ivă",-1,1)],q=[new i("ea",-1,1),new i("ia",-1,1),new i("esc",-1,1),new i("ăsc",-1,1),new i("ind",-1,1),new i("ând",-1,1),new i("are",-1,1),new i("ere",-1,1),new i("ire",-1,1),new i("âre",-1,1),new i("se",-1,2),new i("ase",10,1),new i("sese",10,2),new i("ise",10,1),new i("use",10,1),new i("âse",10,1),new i("eşte",-1,1),new i("ăşte",-1,1),new i("eze",-1,1),new i("ai",-1,1),new i("eai",19,1),new i("iai",19,1),new i("sei",-1,2),new i("eşti",-1,1),new i("ăşti",-1,1),new i("ui",-1,1),new i("ezi",-1,1),new i("âi",-1,1),new i("aşi",-1,1),new i("seşi",-1,2),new i("aseşi",29,1),new i("seseşi",29,2),new i("iseşi",29,1),new i("useşi",29,1),new i("âseşi",29,1),new i("işi",-1,1),new i("uşi",-1,1),new i("âşi",-1,1),new i("aţi",-1,2),new i("eaţi",38,1),new i("iaţi",38,1),new i("eţi",-1,2),new i("iţi",-1,2),new i("âţi",-1,2),new i("arăţi",-1,1),new i("serăţi",-1,2),new i("aserăţi",45,1),new i("seserăţi",45,2),new i("iserăţi",45,1),new i("userăţi",45,1),new i("âserăţi",45,1),new i("irăţi",-1,1),new i("urăţi",-1,1),new i("ârăţi",-1,1),new i("am",-1,1),new i("eam",54,1),new i("iam",54,1),new i("em",-1,2),new i("asem",57,1),new i("sesem",57,2),new i("isem",57,1),new i("usem",57,1),new i("âsem",57,1),new i("im",-1,2),new i("âm",-1,2),new i("ăm",-1,2),new i("arăm",65,1),new i("serăm",65,2),new i("aserăm",67,1),new i("seserăm",67,2),new i("iserăm",67,1),new i("userăm",67,1),new i("âserăm",67,1),new i("irăm",65,1),new i("urăm",65,1),new i("ârăm",65,1),new i("au",-1,1),new i("eau",76,1),new i("iau",76,1),new i("indu",-1,1),new i("ându",-1,1),new i("ez",-1,1),new i("ească",-1,1),new i("ară",-1,1),new i("seră",-1,2),new i("aseră",84,1),new i("seseră",84,2),new i("iseră",84,1),new i("useră",84,1),new i("âseră",84,1),new i("iră",-1,1),new i("ură",-1,1),new i("âră",-1,1),new i("ează",-1,1)],S=[new i("a",-1,1),new i("e",-1,1),new i("ie",1,1),new i("i",-1,1),new i("ă",-1,1)],W=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,0,0,4],L=new r;this.setCurrent=function(e){L.setCurrent(e)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){var e=L.cursor;return n(),L.cursor=e,c(),L.limit_backward=e,L.cursor=L.limit,f(),L.cursor=L.limit,d(),L.cursor=L.limit,_||(L.cursor=L.limit,b(),L.cursor=L.limit),v(),L.cursor=L.limit_backward,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.ro.stemmer,"stemmer-ro"),e.ro.stopWordFilter=e.generateStopWordFilter("acea aceasta această aceea acei aceia acel acela acele acelea acest acesta aceste acestea aceşti aceştia acolo acord acum ai aia aibă aici al ale alea altceva altcineva am ar are asemenea asta astea astăzi asupra au avea avem aveţi azi aş aşadar aţi bine bucur bună ca care caut ce cel ceva chiar cinci cine cineva contra cu cum cumva curând curînd când cât câte câtva câţi cînd cît cîte cîtva cîţi că căci cărei căror cărui către da dacă dar datorită dată dau de deci deja deoarece departe deşi din dinaintea dintr- dintre doi doilea două drept după dă ea ei el ele eram este eu eşti face fata fi fie fiecare fii fim fiu fiţi frumos fără graţie halbă iar ieri la le li lor lui lângă lîngă mai mea mei mele mereu meu mi mie mine mult multă mulţi mulţumesc mâine mîine mă ne nevoie nici nicăieri nimeni nimeri nimic nişte noastre noastră noi noroc nostru nouă noştri nu opt ori oricare orice oricine oricum oricând oricât oricînd oricît oriunde patra patru patrulea pe pentru peste pic poate pot prea prima primul prin puţin puţina puţină până pînă rog sa sale sau se spate spre sub sunt suntem sunteţi sută sînt sîntem sînteţi să săi său ta tale te timp tine toate toată tot totuşi toţi trei treia treilea tu tăi tău un una unde undeva unei uneia unele uneori unii unor unora unu unui unuia unul vi voastre voastră voi vostru vouă voştri vreme vreo vreun vă zece zero zi zice îi îl îmi împotriva în înainte înaintea încotro încât încît între întrucât întrucît îţi ăla ălea ăsta ăstea ăştia şapte şase şi ştiu ţi ţie".split(" ")),e.Pipeline.registerFunction(e.ro.stopWordFilter,"stopWordFilter-ro")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ru.min.js b/assets/javascripts/lunr/min/lunr.ru.min.js new file mode 100644 index 000000000..186cc485c --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ru.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Russian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ru=function(){this.pipeline.reset(),this.pipeline.add(e.ru.trimmer,e.ru.stopWordFilter,e.ru.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ru.stemmer))},e.ru.wordCharacters="Ѐ-҄҇-ԯᴫᵸⷠ-ⷿꙀ-ꚟ︮︯",e.ru.trimmer=e.trimmerSupport.generateTrimmer(e.ru.wordCharacters),e.Pipeline.registerFunction(e.ru.trimmer,"trimmer-ru"),e.ru.stemmer=function(){var n=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,t=new function(){function e(){for(;!W.in_grouping(S,1072,1103);){if(W.cursor>=W.limit)return!1;W.cursor++}return!0}function t(){for(;!W.out_grouping(S,1072,1103);){if(W.cursor>=W.limit)return!1;W.cursor++}return!0}function w(){b=W.limit,_=b,e()&&(b=W.cursor,t()&&e()&&t()&&(_=W.cursor))}function i(){return _<=W.cursor}function u(e,n){var r,t;if(W.ket=W.cursor,r=W.find_among_b(e,n)){switch(W.bra=W.cursor,r){case 1:if(t=W.limit-W.cursor,!W.eq_s_b(1,"а")&&(W.cursor=W.limit-t,!W.eq_s_b(1,"я")))return!1;case 2:W.slice_del()}return!0}return!1}function o(){return u(h,9)}function s(e,n){var r;return W.ket=W.cursor,!!(r=W.find_among_b(e,n))&&(W.bra=W.cursor,1==r&&W.slice_del(),!0)}function c(){return s(g,26)}function m(){return!!c()&&(u(C,8),!0)}function f(){return s(k,2)}function l(){return u(P,46)}function a(){s(v,36)}function p(){var e;W.ket=W.cursor,(e=W.find_among_b(F,2))&&(W.bra=W.cursor,i()&&1==e&&W.slice_del())}function d(){var e;if(W.ket=W.cursor,e=W.find_among_b(q,4))switch(W.bra=W.cursor,e){case 1:if(W.slice_del(),W.ket=W.cursor,!W.eq_s_b(1,"н"))break;W.bra=W.cursor;case 2:if(!W.eq_s_b(1,"н"))break;case 3:W.slice_del()}}var _,b,h=[new n("в",-1,1),new n("ив",0,2),new n("ыв",0,2),new n("вши",-1,1),new n("ивши",3,2),new n("ывши",3,2),new n("вшись",-1,1),new n("ившись",6,2),new n("ывшись",6,2)],g=[new n("ее",-1,1),new n("ие",-1,1),new n("ое",-1,1),new n("ые",-1,1),new n("ими",-1,1),new n("ыми",-1,1),new n("ей",-1,1),new n("ий",-1,1),new n("ой",-1,1),new n("ый",-1,1),new n("ем",-1,1),new n("им",-1,1),new n("ом",-1,1),new n("ым",-1,1),new n("его",-1,1),new n("ого",-1,1),new n("ему",-1,1),new n("ому",-1,1),new n("их",-1,1),new n("ых",-1,1),new n("ею",-1,1),new n("ою",-1,1),new n("ую",-1,1),new n("юю",-1,1),new n("ая",-1,1),new n("яя",-1,1)],C=[new n("ем",-1,1),new n("нн",-1,1),new n("вш",-1,1),new n("ивш",2,2),new n("ывш",2,2),new n("щ",-1,1),new n("ющ",5,1),new n("ующ",6,2)],k=[new n("сь",-1,1),new n("ся",-1,1)],P=[new n("ла",-1,1),new n("ила",0,2),new n("ыла",0,2),new n("на",-1,1),new n("ена",3,2),new n("ете",-1,1),new n("ите",-1,2),new n("йте",-1,1),new n("ейте",7,2),new n("уйте",7,2),new n("ли",-1,1),new n("или",10,2),new n("ыли",10,2),new n("й",-1,1),new n("ей",13,2),new n("уй",13,2),new n("л",-1,1),new n("ил",16,2),new n("ыл",16,2),new n("ем",-1,1),new n("им",-1,2),new n("ым",-1,2),new n("н",-1,1),new n("ен",22,2),new n("ло",-1,1),new n("ило",24,2),new n("ыло",24,2),new n("но",-1,1),new n("ено",27,2),new n("нно",27,1),new n("ет",-1,1),new n("ует",30,2),new n("ит",-1,2),new n("ыт",-1,2),new n("ют",-1,1),new n("уют",34,2),new n("ят",-1,2),new n("ны",-1,1),new n("ены",37,2),new n("ть",-1,1),new n("ить",39,2),new n("ыть",39,2),new n("ешь",-1,1),new n("ишь",-1,2),new n("ю",-1,2),new n("ую",44,2)],v=[new n("а",-1,1),new n("ев",-1,1),new n("ов",-1,1),new n("е",-1,1),new n("ие",3,1),new n("ье",3,1),new n("и",-1,1),new n("еи",6,1),new n("ии",6,1),new n("ами",6,1),new n("ями",6,1),new n("иями",10,1),new n("й",-1,1),new n("ей",12,1),new n("ией",13,1),new n("ий",12,1),new n("ой",12,1),new n("ам",-1,1),new n("ем",-1,1),new n("ием",18,1),new n("ом",-1,1),new n("ям",-1,1),new n("иям",21,1),new n("о",-1,1),new n("у",-1,1),new n("ах",-1,1),new n("ях",-1,1),new n("иях",26,1),new n("ы",-1,1),new n("ь",-1,1),new n("ю",-1,1),new n("ию",30,1),new n("ью",30,1),new n("я",-1,1),new n("ия",33,1),new n("ья",33,1)],F=[new n("ост",-1,1),new n("ость",-1,1)],q=[new n("ейше",-1,1),new n("н",-1,2),new n("ейш",-1,1),new n("ь",-1,3)],S=[33,65,8,232],W=new r;this.setCurrent=function(e){W.setCurrent(e)},this.getCurrent=function(){return W.getCurrent()},this.stem=function(){return w(),W.cursor=W.limit,!(W.cursor=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursors||e>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor>1),f=0,l=o0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o=0;m--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n-_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n-_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.sv.min.js b/assets/javascripts/lunr/min/lunr.sv.min.js new file mode 100644 index 000000000..3e5eb6400 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.sv.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Swedish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){function e(){var e,r=w.cursor+3;if(o=w.limit,0<=r||r<=w.limit){for(a=r;;){if(e=w.cursor,w.in_grouping(l,97,246)){w.cursor=e;break}if(w.cursor=e,w.cursor>=w.limit)return;w.cursor++}for(;!w.out_grouping(l,97,246);){if(w.cursor>=w.limit)return;w.cursor++}o=w.cursor,o=o&&(w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(u,37),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.in_grouping_b(d,98,121)&&w.slice_del()}}function i(){var e=w.limit_backward;w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.find_among_b(c,7)&&(w.cursor=w.limit,w.ket=w.cursor,w.cursor>w.limit_backward&&(w.bra=--w.cursor,w.slice_del())),w.limit_backward=e)}function s(){var e,r;if(w.cursor>=o){if(r=w.limit_backward,w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(m,5))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.slice_from("lös");break;case 3:w.slice_from("full")}w.limit_backward=r}}var a,o,u=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],c=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],d=[119,127,149],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,t(),w.cursor=w.limit,i(),w.cursor=w.limit,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ta.min.js b/assets/javascripts/lunr/min/lunr.ta.min.js new file mode 100644 index 000000000..a644bed22 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ta.min.js @@ -0,0 +1 @@ +!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ta=function(){this.pipeline.reset(),this.pipeline.add(e.ta.trimmer,e.ta.stopWordFilter,e.ta.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ta.stemmer))},e.ta.wordCharacters="஀-உஊ-ஏஐ-ஙச-ட஠-னப-யர-ஹ஺-ிீ-௉ொ-௏ௐ-௙௚-௟௠-௩௪-௯௰-௹௺-௿a-zA-Za-zA-Z0-90-9",e.ta.trimmer=e.trimmerSupport.generateTrimmer(e.ta.wordCharacters),e.Pipeline.registerFunction(e.ta.trimmer,"trimmer-ta"),e.ta.stopWordFilter=e.generateStopWordFilter("அங்கு அங்கே அது அதை அந்த அவர் அவர்கள் அவள் அவன் அவை ஆக ஆகவே ஆகையால் ஆதலால் ஆதலினால் ஆனாலும் ஆனால் இங்கு இங்கே இது இதை இந்த இப்படி இவர் இவர்கள் இவள் இவன் இவை இவ்வளவு உனக்கு உனது உன் உன்னால் எங்கு எங்கே எது எதை எந்த எப்படி எவர் எவர்கள் எவள் எவன் எவை எவ்வளவு எனக்கு எனது எனவே என் என்ன என்னால் ஏது ஏன் தனது தன்னால் தானே தான் நாங்கள் நாம் நான் நீ நீங்கள்".split(" ")),e.ta.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var t=e.wordcut;t.init(),e.ta.tokenizer=function(r){if(!arguments.length||null==r||void 0==r)return[];if(Array.isArray(r))return r.map(function(t){return isLunr2?new e.Token(t.toLowerCase()):t.toLowerCase()});var i=r.toString().toLowerCase().replace(/^\s+/,"");return t.cut(i).split("|")},e.Pipeline.registerFunction(e.ta.stemmer,"stemmer-ta"),e.Pipeline.registerFunction(e.ta.stopWordFilter,"stopWordFilter-ta")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.te.min.js b/assets/javascripts/lunr/min/lunr.te.min.js new file mode 100644 index 000000000..9fa7a93b9 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.te.min.js @@ -0,0 +1 @@ +!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.te=function(){this.pipeline.reset(),this.pipeline.add(e.te.trimmer,e.te.stopWordFilter,e.te.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.te.stemmer))},e.te.wordCharacters="ఀ-ఄఅ-ఔక-హా-ౌౕ-ౖౘ-ౚౠ-ౡౢ-ౣ౦-౯౸-౿఼ఽ్ౝ౷౤౥",e.te.trimmer=e.trimmerSupport.generateTrimmer(e.te.wordCharacters),e.Pipeline.registerFunction(e.te.trimmer,"trimmer-te"),e.te.stopWordFilter=e.generateStopWordFilter("అందరూ అందుబాటులో అడగండి అడగడం అడ్డంగా అనుగుణంగా అనుమతించు అనుమతిస్తుంది అయితే ఇప్పటికే ఉన్నారు ఎక్కడైనా ఎప్పుడు ఎవరైనా ఎవరో ఏ ఏదైనా ఏమైనప్పటికి ఒక ఒకరు కనిపిస్తాయి కాదు కూడా గా గురించి చుట్టూ చేయగలిగింది తగిన తర్వాత దాదాపు దూరంగా నిజంగా పై ప్రకారం ప్రక్కన మధ్య మరియు మరొక మళ్ళీ మాత్రమే మెచ్చుకో వద్ద వెంట వేరుగా వ్యతిరేకంగా సంబంధం".split(" ")),e.te.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var t=e.wordcut;t.init(),e.te.tokenizer=function(r){if(!arguments.length||null==r||void 0==r)return[];if(Array.isArray(r))return r.map(function(t){return isLunr2?new e.Token(t.toLowerCase()):t.toLowerCase()});var i=r.toString().toLowerCase().replace(/^\s+/,"");return t.cut(i).split("|")},e.Pipeline.registerFunction(e.te.stemmer,"stemmer-te"),e.Pipeline.registerFunction(e.te.stopWordFilter,"stopWordFilter-te")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.th.min.js b/assets/javascripts/lunr/min/lunr.th.min.js new file mode 100644 index 000000000..dee3aac6e --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.th.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.th=function(){this.pipeline.reset(),this.pipeline.add(e.th.trimmer),r?this.tokenizer=e.th.tokenizer:(e.tokenizer&&(e.tokenizer=e.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.th.tokenizer))},e.th.wordCharacters="[฀-๿]",e.th.trimmer=e.trimmerSupport.generateTrimmer(e.th.wordCharacters),e.Pipeline.registerFunction(e.th.trimmer,"trimmer-th");var t=e.wordcut;t.init(),e.th.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t):t});var n=i.toString().replace(/^\s+/,"");return t.cut(n).split("|")}}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.tr.min.js b/assets/javascripts/lunr/min/lunr.tr.min.js new file mode 100644 index 000000000..563f6ec1f --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.tr.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Turkish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(r,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");r.tr=function(){this.pipeline.reset(),this.pipeline.add(r.tr.trimmer,r.tr.stopWordFilter,r.tr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(r.tr.stemmer))},r.tr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.tr.trimmer=r.trimmerSupport.generateTrimmer(r.tr.wordCharacters),r.Pipeline.registerFunction(r.tr.trimmer,"trimmer-tr"),r.tr.stemmer=function(){var i=r.stemmerSupport.Among,e=r.stemmerSupport.SnowballProgram,n=new function(){function r(r,i,e){for(;;){var n=Dr.limit-Dr.cursor;if(Dr.in_grouping_b(r,i,e)){Dr.cursor=Dr.limit-n;break}if(Dr.cursor=Dr.limit-n,Dr.cursor<=Dr.limit_backward)return!1;Dr.cursor--}return!0}function n(){var i,e;i=Dr.limit-Dr.cursor,r(Wr,97,305);for(var n=0;nDr.limit_backward&&(Dr.cursor--,e=Dr.limit-Dr.cursor,i()))?(Dr.cursor=Dr.limit-e,!0):(Dr.cursor=Dr.limit-n,r()?(Dr.cursor=Dr.limit-n,!1):(Dr.cursor=Dr.limit-n,!(Dr.cursor<=Dr.limit_backward)&&(Dr.cursor--,!!i()&&(Dr.cursor=Dr.limit-n,!0))))}function u(r){return t(r,function(){return Dr.in_grouping_b(Wr,97,305)})}function o(){return u(function(){return Dr.eq_s_b(1,"n")})}function s(){return u(function(){return Dr.eq_s_b(1,"s")})}function c(){return u(function(){return Dr.eq_s_b(1,"y")})}function l(){return t(function(){return Dr.in_grouping_b(Lr,105,305)},function(){return Dr.out_grouping_b(Wr,97,305)})}function a(){return Dr.find_among_b(ur,10)&&l()}function m(){return n()&&Dr.in_grouping_b(Lr,105,305)&&s()}function d(){return Dr.find_among_b(or,2)}function f(){return n()&&Dr.in_grouping_b(Lr,105,305)&&c()}function b(){return n()&&Dr.find_among_b(sr,4)}function w(){return n()&&Dr.find_among_b(cr,4)&&o()}function _(){return n()&&Dr.find_among_b(lr,2)&&c()}function k(){return n()&&Dr.find_among_b(ar,2)}function p(){return n()&&Dr.find_among_b(mr,4)}function g(){return n()&&Dr.find_among_b(dr,2)}function y(){return n()&&Dr.find_among_b(fr,4)}function z(){return n()&&Dr.find_among_b(br,2)}function v(){return n()&&Dr.find_among_b(wr,2)&&c()}function h(){return Dr.eq_s_b(2,"ki")}function q(){return n()&&Dr.find_among_b(_r,2)&&o()}function C(){return n()&&Dr.find_among_b(kr,4)&&c()}function P(){return n()&&Dr.find_among_b(pr,4)}function F(){return n()&&Dr.find_among_b(gr,4)&&c()}function S(){return Dr.find_among_b(yr,4)}function W(){return n()&&Dr.find_among_b(zr,2)}function L(){return n()&&Dr.find_among_b(vr,4)}function x(){return n()&&Dr.find_among_b(hr,8)}function A(){return Dr.find_among_b(qr,2)}function E(){return n()&&Dr.find_among_b(Cr,32)&&c()}function j(){return Dr.find_among_b(Pr,8)&&c()}function T(){return n()&&Dr.find_among_b(Fr,4)&&c()}function Z(){return Dr.eq_s_b(3,"ken")&&c()}function B(){var r=Dr.limit-Dr.cursor;return!(T()||(Dr.cursor=Dr.limit-r,E()||(Dr.cursor=Dr.limit-r,j()||(Dr.cursor=Dr.limit-r,Z()))))}function D(){if(A()){var r=Dr.limit-Dr.cursor;if(S()||(Dr.cursor=Dr.limit-r,W()||(Dr.cursor=Dr.limit-r,C()||(Dr.cursor=Dr.limit-r,P()||(Dr.cursor=Dr.limit-r,F()||(Dr.cursor=Dr.limit-r))))),T())return!1}return!0}function G(){if(W()){Dr.bra=Dr.cursor,Dr.slice_del();var r=Dr.limit-Dr.cursor;return Dr.ket=Dr.cursor,x()||(Dr.cursor=Dr.limit-r,E()||(Dr.cursor=Dr.limit-r,j()||(Dr.cursor=Dr.limit-r,T()||(Dr.cursor=Dr.limit-r)))),nr=!1,!1}return!0}function H(){if(!L())return!0;var r=Dr.limit-Dr.cursor;return!E()&&(Dr.cursor=Dr.limit-r,!j())}function I(){var r,i=Dr.limit-Dr.cursor;return!(S()||(Dr.cursor=Dr.limit-i,F()||(Dr.cursor=Dr.limit-i,P()||(Dr.cursor=Dr.limit-i,C()))))||(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,T()||(Dr.cursor=Dr.limit-r),!1)}function J(){var r,i=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,nr=!0,B()&&(Dr.cursor=Dr.limit-i,D()&&(Dr.cursor=Dr.limit-i,G()&&(Dr.cursor=Dr.limit-i,H()&&(Dr.cursor=Dr.limit-i,I()))))){if(Dr.cursor=Dr.limit-i,!x())return;Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,r=Dr.limit-Dr.cursor,S()||(Dr.cursor=Dr.limit-r,W()||(Dr.cursor=Dr.limit-r,C()||(Dr.cursor=Dr.limit-r,P()||(Dr.cursor=Dr.limit-r,F()||(Dr.cursor=Dr.limit-r))))),T()||(Dr.cursor=Dr.limit-r)}Dr.bra=Dr.cursor,Dr.slice_del()}function K(){var r,i,e,n;if(Dr.ket=Dr.cursor,h()){if(r=Dr.limit-Dr.cursor,p())return Dr.bra=Dr.cursor,Dr.slice_del(),i=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,W()?(Dr.bra=Dr.cursor,Dr.slice_del(),K()):(Dr.cursor=Dr.limit-i,a()&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()))),!0;if(Dr.cursor=Dr.limit-r,w()){if(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,e=Dr.limit-Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else{if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,!a()&&(Dr.cursor=Dr.limit-e,!m()&&(Dr.cursor=Dr.limit-e,!K())))return!0;Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())}return!0}if(Dr.cursor=Dr.limit-r,g()){if(n=Dr.limit-Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else if(Dr.cursor=Dr.limit-n,m())Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K());else if(Dr.cursor=Dr.limit-n,!K())return!1;return!0}}return!1}function M(r){if(Dr.ket=Dr.cursor,!g()&&(Dr.cursor=Dr.limit-r,!k()))return!1;var i=Dr.limit-Dr.cursor;if(d())Dr.bra=Dr.cursor,Dr.slice_del();else if(Dr.cursor=Dr.limit-i,m())Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K());else if(Dr.cursor=Dr.limit-i,!K())return!1;return!0}function N(r){if(Dr.ket=Dr.cursor,!z()&&(Dr.cursor=Dr.limit-r,!b()))return!1;var i=Dr.limit-Dr.cursor;return!(!m()&&(Dr.cursor=Dr.limit-i,!d()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()),!0)}function O(){var r,i=Dr.limit-Dr.cursor;return Dr.ket=Dr.cursor,!(!w()&&(Dr.cursor=Dr.limit-i,!v()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,!(!W()||(Dr.bra=Dr.cursor,Dr.slice_del(),!K()))||(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!(a()||(Dr.cursor=Dr.limit-r,m()||(Dr.cursor=Dr.limit-r,K())))||(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()),!0)))}function Q(){var r,i,e=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,!p()&&(Dr.cursor=Dr.limit-e,!f()&&(Dr.cursor=Dr.limit-e,!_())))return!1;if(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,r=Dr.limit-Dr.cursor,a())Dr.bra=Dr.cursor,Dr.slice_del(),i=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,W()||(Dr.cursor=Dr.limit-i);else if(Dr.cursor=Dr.limit-r,!W())return!0;return Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,K(),!0}function R(){var r,i,e=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,W())return Dr.bra=Dr.cursor,Dr.slice_del(),void K();if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,q())if(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else{if(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!a()&&(Dr.cursor=Dr.limit-r,!m())){if(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!W())return;if(Dr.bra=Dr.cursor,Dr.slice_del(),!K())return}Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())}else if(Dr.cursor=Dr.limit-e,!M(e)&&(Dr.cursor=Dr.limit-e,!N(e))){if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,y())return Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,i=Dr.limit-Dr.cursor,void(a()?(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())):(Dr.cursor=Dr.limit-i,W()?(Dr.bra=Dr.cursor,Dr.slice_del(),K()):(Dr.cursor=Dr.limit-i,K())));if(Dr.cursor=Dr.limit-e,!O()){if(Dr.cursor=Dr.limit-e,d())return Dr.bra=Dr.cursor,void Dr.slice_del();Dr.cursor=Dr.limit-e,K()||(Dr.cursor=Dr.limit-e,Q()||(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,(a()||(Dr.cursor=Dr.limit-e,m()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()))))}}}function U(){var r;if(Dr.ket=Dr.cursor,r=Dr.find_among_b(Sr,4))switch(Dr.bra=Dr.cursor,r){case 1:Dr.slice_from("p");break;case 2:Dr.slice_from("ç");break;case 3:Dr.slice_from("t");break;case 4:Dr.slice_from("k")}}function V(){for(;;){var r=Dr.limit-Dr.cursor;if(Dr.in_grouping_b(Wr,97,305)){Dr.cursor=Dr.limit-r;break}if(Dr.cursor=Dr.limit-r,Dr.cursor<=Dr.limit_backward)return!1;Dr.cursor--}return!0}function X(r,i,e){if(Dr.cursor=Dr.limit-r,V()){var n=Dr.limit-Dr.cursor;if(!Dr.eq_s_b(1,i)&&(Dr.cursor=Dr.limit-n,!Dr.eq_s_b(1,e)))return!0;Dr.cursor=Dr.limit-r;var t=Dr.cursor;return Dr.insert(Dr.cursor,Dr.cursor,e),Dr.cursor=t,!1}return!0}function Y(){var r=Dr.limit-Dr.cursor;(Dr.eq_s_b(1,"d")||(Dr.cursor=Dr.limit-r,Dr.eq_s_b(1,"g")))&&X(r,"a","ı")&&X(r,"e","i")&&X(r,"o","u")&&X(r,"ö","ü")}function $(){for(var r,i=Dr.cursor,e=2;;){for(r=Dr.cursor;!Dr.in_grouping(Wr,97,305);){if(Dr.cursor>=Dr.limit)return Dr.cursor=r,!(e>0)&&(Dr.cursor=i,!0);Dr.cursor++}e--}}function rr(r,i,e){for(;!Dr.eq_s(i,e);){if(Dr.cursor>=Dr.limit)return!0;Dr.cursor++}return(tr=i)!=Dr.limit||(Dr.cursor=r,!1)}function ir(){var r=Dr.cursor;return!rr(r,2,"ad")||(Dr.cursor=r,!rr(r,5,"soyad"))}function er(){var r=Dr.cursor;return!ir()&&(Dr.limit_backward=r,Dr.cursor=Dr.limit,Y(),Dr.cursor=Dr.limit,U(),!0)}var nr,tr,ur=[new i("m",-1,-1),new i("n",-1,-1),new i("miz",-1,-1),new i("niz",-1,-1),new i("muz",-1,-1),new i("nuz",-1,-1),new i("müz",-1,-1),new i("nüz",-1,-1),new i("mız",-1,-1),new i("nız",-1,-1)],or=[new i("leri",-1,-1),new i("ları",-1,-1)],sr=[new i("ni",-1,-1),new i("nu",-1,-1),new i("nü",-1,-1),new i("nı",-1,-1)],cr=[new i("in",-1,-1),new i("un",-1,-1),new i("ün",-1,-1),new i("ın",-1,-1)],lr=[new i("a",-1,-1),new i("e",-1,-1)],ar=[new i("na",-1,-1),new i("ne",-1,-1)],mr=[new i("da",-1,-1),new i("ta",-1,-1),new i("de",-1,-1),new i("te",-1,-1)],dr=[new i("nda",-1,-1),new i("nde",-1,-1)],fr=[new i("dan",-1,-1),new i("tan",-1,-1),new i("den",-1,-1),new i("ten",-1,-1)],br=[new i("ndan",-1,-1),new i("nden",-1,-1)],wr=[new i("la",-1,-1),new i("le",-1,-1)],_r=[new i("ca",-1,-1),new i("ce",-1,-1)],kr=[new i("im",-1,-1),new i("um",-1,-1),new i("üm",-1,-1),new i("ım",-1,-1)],pr=[new i("sin",-1,-1),new i("sun",-1,-1),new i("sün",-1,-1),new i("sın",-1,-1)],gr=[new i("iz",-1,-1),new i("uz",-1,-1),new i("üz",-1,-1),new i("ız",-1,-1)],yr=[new i("siniz",-1,-1),new i("sunuz",-1,-1),new i("sünüz",-1,-1),new i("sınız",-1,-1)],zr=[new i("lar",-1,-1),new i("ler",-1,-1)],vr=[new i("niz",-1,-1),new i("nuz",-1,-1),new i("nüz",-1,-1),new i("nız",-1,-1)],hr=[new i("dir",-1,-1),new i("tir",-1,-1),new i("dur",-1,-1),new i("tur",-1,-1),new i("dür",-1,-1),new i("tür",-1,-1),new i("dır",-1,-1),new i("tır",-1,-1)],qr=[new i("casına",-1,-1),new i("cesine",-1,-1)],Cr=[new i("di",-1,-1),new i("ti",-1,-1),new i("dik",-1,-1),new i("tik",-1,-1),new i("duk",-1,-1),new i("tuk",-1,-1),new i("dük",-1,-1),new i("tük",-1,-1),new i("dık",-1,-1),new i("tık",-1,-1),new i("dim",-1,-1),new i("tim",-1,-1),new i("dum",-1,-1),new i("tum",-1,-1),new i("düm",-1,-1),new i("tüm",-1,-1),new i("dım",-1,-1),new i("tım",-1,-1),new i("din",-1,-1),new i("tin",-1,-1),new i("dun",-1,-1),new i("tun",-1,-1),new i("dün",-1,-1),new i("tün",-1,-1),new i("dın",-1,-1),new i("tın",-1,-1),new i("du",-1,-1),new i("tu",-1,-1),new i("dü",-1,-1),new i("tü",-1,-1),new i("dı",-1,-1),new i("tı",-1,-1)],Pr=[new i("sa",-1,-1),new i("se",-1,-1),new i("sak",-1,-1),new i("sek",-1,-1),new i("sam",-1,-1),new i("sem",-1,-1),new i("san",-1,-1),new i("sen",-1,-1)],Fr=[new i("miş",-1,-1),new i("muş",-1,-1),new i("müş",-1,-1),new i("mış",-1,-1)],Sr=[new i("b",-1,1),new i("c",-1,2),new i("d",-1,3),new i("ğ",-1,4)],Wr=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,8,0,0,0,0,0,0,1],Lr=[1,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,1],xr=[1,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],Ar=[17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130],Er=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],jr=[17],Tr=[65],Zr=[65],Br=[["a",xr,97,305],["e",Ar,101,252],["ı",Er,97,305],["i",jr,101,105],["o",Tr,111,117],["ö",Zr,246,252],["u",Tr,111,117]],Dr=new e;this.setCurrent=function(r){Dr.setCurrent(r)},this.getCurrent=function(){return Dr.getCurrent()},this.stem=function(){return!!($()&&(Dr.limit_backward=Dr.cursor,Dr.cursor=Dr.limit,J(),Dr.cursor=Dr.limit,nr&&(R(),Dr.cursor=Dr.limit_backward,er())))}};return function(r){return"function"==typeof r.update?r.update(function(r){return n.setCurrent(r),n.stem(),n.getCurrent()}):(n.setCurrent(r),n.stem(),n.getCurrent())}}(),r.Pipeline.registerFunction(r.tr.stemmer,"stemmer-tr"),r.tr.stopWordFilter=r.generateStopWordFilter("acaba altmış altı ama ancak arada aslında ayrıca bana bazı belki ben benden beni benim beri beş bile bin bir biri birkaç birkez birçok birşey birşeyi biz bizden bize bizi bizim bu buna bunda bundan bunlar bunları bunların bunu bunun burada böyle böylece da daha dahi de defa değil diye diğer doksan dokuz dolayı dolayısıyla dört edecek eden ederek edilecek ediliyor edilmesi ediyor elli en etmesi etti ettiği ettiğini eğer gibi göre halen hangi hatta hem henüz hep hepsi her herhangi herkesin hiç hiçbir iki ile ilgili ise itibaren itibariyle için işte kadar karşın katrilyon kendi kendilerine kendini kendisi kendisine kendisini kez ki kim kimden kime kimi kimse kırk milyar milyon mu mü mı nasıl ne neden nedenle nerde nerede nereye niye niçin o olan olarak oldu olduklarını olduğu olduğunu olmadı olmadığı olmak olması olmayan olmaz olsa olsun olup olur olursa oluyor on ona ondan onlar onlardan onları onların onu onun otuz oysa pek rağmen sadece sanki sekiz seksen sen senden seni senin siz sizden sizi sizin tarafından trilyon tüm var vardı ve veya ya yani yapacak yapmak yaptı yaptıkları yaptığı yaptığını yapılan yapılması yapıyor yedi yerine yetmiş yine yirmi yoksa yüz zaten çok çünkü öyle üzere üç şey şeyden şeyi şeyler şu şuna şunda şundan şunları şunu şöyle".split(" ")),r.Pipeline.registerFunction(r.tr.stopWordFilter,"stopWordFilter-tr")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.vi.min.js b/assets/javascripts/lunr/min/lunr.vi.min.js new file mode 100644 index 000000000..22aed28c4 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.vi.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.vi=function(){this.pipeline.reset(),this.pipeline.add(e.vi.stopWordFilter,e.vi.trimmer)},e.vi.wordCharacters="[A-Za-ẓ̀͐́͑̉̃̓ÂâÊêÔôĂ-ăĐ-đƠ-ơƯ-ư]",e.vi.trimmer=e.trimmerSupport.generateTrimmer(e.vi.wordCharacters),e.Pipeline.registerFunction(e.vi.trimmer,"trimmer-vi"),e.vi.stopWordFilter=e.generateStopWordFilter("là cái nhưng mà".split(" "))}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.zh.min.js b/assets/javascripts/lunr/min/lunr.zh.min.js new file mode 100644 index 000000000..fda66e9c5 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.zh.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("@node-rs/jieba")):r()(e.lunr)}(this,function(e){return function(r,t){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==r.version[0];r.zh=function(){this.pipeline.reset(),this.pipeline.add(r.zh.trimmer,r.zh.stopWordFilter,r.zh.stemmer),i?this.tokenizer=r.zh.tokenizer:(r.tokenizer&&(r.tokenizer=r.zh.tokenizer),this.tokenizerFn&&(this.tokenizerFn=r.zh.tokenizer))},r.zh.tokenizer=function(n){if(!arguments.length||null==n||void 0==n)return[];if(Array.isArray(n))return n.map(function(e){return i?new r.Token(e.toLowerCase()):e.toLowerCase()});t&&e.load(t);var o=n.toString().trim().toLowerCase(),s=[];e.cut(o,!0).forEach(function(e){s=s.concat(e.split(" "))}),s=s.filter(function(e){return!!e});var u=0;return s.map(function(e,t){if(i){var n=o.indexOf(e,u),s={};return s.position=[n,e.length],s.index=t,u=n,new r.Token(e,s)}return e})},r.zh.wordCharacters="\\w一-龥",r.zh.trimmer=r.trimmerSupport.generateTrimmer(r.zh.wordCharacters),r.Pipeline.registerFunction(r.zh.trimmer,"trimmer-zh"),r.zh.stemmer=function(){return function(e){return e}}(),r.Pipeline.registerFunction(r.zh.stemmer,"stemmer-zh"),r.zh.stopWordFilter=r.generateStopWordFilter("的 一 不 在 人 有 是 为 為 以 于 於 上 他 而 后 後 之 来 來 及 了 因 下 可 到 由 这 這 与 與 也 此 但 并 並 个 個 其 已 无 無 小 我 们 們 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 當 从 從 得 打 凡 儿 兒 尔 爾 该 該 各 给 給 跟 和 何 还 還 即 几 幾 既 看 据 據 距 靠 啦 另 么 麽 每 嘛 拿 哪 您 凭 憑 且 却 卻 让 讓 仍 啥 如 若 使 谁 誰 虽 雖 随 隨 同 所 她 哇 嗡 往 些 向 沿 哟 喲 用 咱 则 則 怎 曾 至 致 着 著 诸 諸 自".split(" ")),r.Pipeline.registerFunction(r.zh.stopWordFilter,"stopWordFilter-zh")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/tinyseg.js b/assets/javascripts/lunr/tinyseg.js new file mode 100644 index 000000000..167fa6dd6 --- /dev/null +++ b/assets/javascripts/lunr/tinyseg.js @@ -0,0 +1,206 @@ +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +;(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + + return function(lunr) { + // TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript + // (c) 2008 Taku Kudo + // TinySegmenter is freely distributable under the terms of a new BSD licence. + // For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt + + function TinySegmenter() { + var patterns = { + "[一二三四五六七八九十百千万億兆]":"M", + "[一-龠々〆ヵヶ]":"H", + "[ぁ-ん]":"I", + "[ァ-ヴーア-ン゙ー]":"K", + "[a-zA-Za-zA-Z]":"A", + "[0-90-9]":"N" + } + this.chartype_ = []; + for (var i in patterns) { + var regexp = new RegExp(i); + this.chartype_.push([regexp, patterns[i]]); + } + + this.BIAS__ = -332 + this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378}; + this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920}; + this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266}; + this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352}; + this.BP2__ = {"BO":60,"OO":-1762}; + this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965}; + this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146}; + this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699}; + this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973}; + this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682}; + this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"−−":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"11":-669}; + this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990}; + this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832}; + this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649}; + this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393}; + this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841}; + this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68}; + this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591}; + this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685}; + this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156}; + this.TW1__ = {"につい":-4681,"東京都":2026}; + this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216}; + this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287}; + this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865}; + this.UC1__ = {"A":484,"K":93,"M":645,"O":-505}; + this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646}; + this.UC3__ = {"A":-1370,"I":2311}; + this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646}; + this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831}; + this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387}; + this.UP1__ = {"O":-214}; + this.UP2__ = {"B":69,"O":935}; + this.UP3__ = {"B":189}; + this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422}; + this.UQ2__ = {"BH":216,"BI":113,"OK":1759}; + this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212}; + this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135}; + this.UW2__ = {",":-829,"、":-829,"〇":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568}; + this.UW3__ = {",":4889,"1":-800,"−":-1723,"、":4889,"々":-2311,"〇":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"1":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278}; + this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"〇":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637}; + this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"1":-514,"E2":-32768,"「":363,"イ":241,"ル":451,"ン":-343}; + this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"1":-270,"E1":306,"ル":-673,"ン":-496}; + + return this; + } + TinySegmenter.prototype.ctype_ = function(str) { + for (var i in this.chartype_) { + if (str.match(this.chartype_[i][0])) { + return this.chartype_[i][1]; + } + } + return "O"; + } + + TinySegmenter.prototype.ts_ = function(v) { + if (v) { return v; } + return 0; + } + + TinySegmenter.prototype.segment = function(input) { + if (input == null || input == undefined || input == "") { + return []; + } + var result = []; + var seg = ["B3","B2","B1"]; + var ctype = ["O","O","O"]; + var o = input.split(""); + for (i = 0; i < o.length; ++i) { + seg.push(o[i]); + ctype.push(this.ctype_(o[i])) + } + seg.push("E1"); + seg.push("E2"); + seg.push("E3"); + ctype.push("O"); + ctype.push("O"); + ctype.push("O"); + var word = seg[3]; + var p1 = "U"; + var p2 = "U"; + var p3 = "U"; + for (var i = 4; i < seg.length - 3; ++i) { + var score = this.BIAS__; + var w1 = seg[i-3]; + var w2 = seg[i-2]; + var w3 = seg[i-1]; + var w4 = seg[i]; + var w5 = seg[i+1]; + var w6 = seg[i+2]; + var c1 = ctype[i-3]; + var c2 = ctype[i-2]; + var c3 = ctype[i-1]; + var c4 = ctype[i]; + var c5 = ctype[i+1]; + var c6 = ctype[i+2]; + score += this.ts_(this.UP1__[p1]); + score += this.ts_(this.UP2__[p2]); + score += this.ts_(this.UP3__[p3]); + score += this.ts_(this.BP1__[p1 + p2]); + score += this.ts_(this.BP2__[p2 + p3]); + score += this.ts_(this.UW1__[w1]); + score += this.ts_(this.UW2__[w2]); + score += this.ts_(this.UW3__[w3]); + score += this.ts_(this.UW4__[w4]); + score += this.ts_(this.UW5__[w5]); + score += this.ts_(this.UW6__[w6]); + score += this.ts_(this.BW1__[w2 + w3]); + score += this.ts_(this.BW2__[w3 + w4]); + score += this.ts_(this.BW3__[w4 + w5]); + score += this.ts_(this.TW1__[w1 + w2 + w3]); + score += this.ts_(this.TW2__[w2 + w3 + w4]); + score += this.ts_(this.TW3__[w3 + w4 + w5]); + score += this.ts_(this.TW4__[w4 + w5 + w6]); + score += this.ts_(this.UC1__[c1]); + score += this.ts_(this.UC2__[c2]); + score += this.ts_(this.UC3__[c3]); + score += this.ts_(this.UC4__[c4]); + score += this.ts_(this.UC5__[c5]); + score += this.ts_(this.UC6__[c6]); + score += this.ts_(this.BC1__[c2 + c3]); + score += this.ts_(this.BC2__[c3 + c4]); + score += this.ts_(this.BC3__[c4 + c5]); + score += this.ts_(this.TC1__[c1 + c2 + c3]); + score += this.ts_(this.TC2__[c2 + c3 + c4]); + score += this.ts_(this.TC3__[c3 + c4 + c5]); + score += this.ts_(this.TC4__[c4 + c5 + c6]); + // score += this.ts_(this.TC5__[c4 + c5 + c6]); + score += this.ts_(this.UQ1__[p1 + c1]); + score += this.ts_(this.UQ2__[p2 + c2]); + score += this.ts_(this.UQ3__[p3 + c3]); + score += this.ts_(this.BQ1__[p2 + c2 + c3]); + score += this.ts_(this.BQ2__[p2 + c3 + c4]); + score += this.ts_(this.BQ3__[p3 + c2 + c3]); + score += this.ts_(this.BQ4__[p3 + c3 + c4]); + score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]); + score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]); + score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]); + score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]); + var p = "O"; + if (score > 0) { + result.push(word); + word = ""; + p = "B"; + } + p1 = p2; + p2 = p3; + p3 = p; + word += seg[i]; + } + result.push(word); + + return result; + } + + lunr.TinySegmenter = TinySegmenter; + }; + +})); \ No newline at end of file diff --git a/assets/javascripts/lunr/wordcut.js b/assets/javascripts/lunr/wordcut.js new file mode 100644 index 000000000..0d898c9ed --- /dev/null +++ b/assets/javascripts/lunr/wordcut.js @@ -0,0 +1,6708 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}(g.lunr || (g.lunr = {})).wordcut = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 1; + }) + this.addWords(words, false) + } + if(finalize){ + this.finalizeDict(); + } + }, + + dictSeek: function (l, r, ch, strOffset, pos) { + var ans = null; + while (l <= r) { + var m = Math.floor((l + r) / 2), + dict_item = this.dict[m], + len = dict_item.length; + if (len <= strOffset) { + l = m + 1; + } else { + var ch_ = dict_item[strOffset]; + if (ch_ < ch) { + l = m + 1; + } else if (ch_ > ch) { + r = m - 1; + } else { + ans = m; + if (pos == LEFT) { + r = m - 1; + } else { + l = m + 1; + } + } + } + } + return ans; + }, + + isFinal: function (acceptor) { + return this.dict[acceptor.l].length == acceptor.strOffset; + }, + + createAcceptor: function () { + return { + l: 0, + r: this.dict.length - 1, + strOffset: 0, + isFinal: false, + dict: this, + transit: function (ch) { + return this.dict.transit(this, ch); + }, + isError: false, + tag: "DICT", + w: 1, + type: "DICT" + }; + }, + + transit: function (acceptor, ch) { + var l = this.dictSeek(acceptor.l, + acceptor.r, + ch, + acceptor.strOffset, + LEFT); + if (l !== null) { + var r = this.dictSeek(l, + acceptor.r, + ch, + acceptor.strOffset, + RIGHT); + acceptor.l = l; + acceptor.r = r; + acceptor.strOffset++; + acceptor.isFinal = this.isFinal(acceptor); + } else { + acceptor.isError = true; + } + return acceptor; + }, + + sortuniq: function(a){ + return a.sort().filter(function(item, pos, arr){ + return !pos || item != arr[pos - 1]; + }) + }, + + flatten: function(a){ + //[[1,2],[3]] -> [1,2,3] + return [].concat.apply([], a); + } +}; +module.exports = WordcutDict; + +}).call(this,"/dist/tmp") +},{"glob":16,"path":22}],3:[function(require,module,exports){ +var WordRule = { + createAcceptor: function(tag) { + if (tag["WORD_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + var lch = ch.toLowerCase(); + if (lch >= "a" && lch <= "z") { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "WORD_RULE", + type: "WORD_RULE", + w: 1}; + } +}; + +var NumberRule = { + createAcceptor: function(tag) { + if (tag["NUMBER_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (ch >= "0" && ch <= "9") { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "NUMBER_RULE", + type: "NUMBER_RULE", + w: 1}; + } +}; + +var SpaceRule = { + tag: "SPACE_RULE", + createAcceptor: function(tag) { + + if (tag["SPACE_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (ch == " " || ch == "\t" || ch == "\r" || ch == "\n" || + ch == "\u00A0" || ch=="\u2003"//nbsp and emsp + ) { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: SpaceRule.tag, + w: 1, + type: "SPACE_RULE"}; + } +} + +var SingleSymbolRule = { + tag: "SINSYM", + createAcceptor: function(tag) { + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (this.strOffset == 0 && ch.match(/^[\@\(\)\/\,\-\."`]$/)) { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "SINSYM", + w: 1, + type: "SINSYM"}; + } +} + + +var LatinRules = [WordRule, SpaceRule, SingleSymbolRule, NumberRule]; + +module.exports = LatinRules; + +},{}],4:[function(require,module,exports){ +var _ = require("underscore") + , WordcutCore = require("./wordcut_core"); +var PathInfoBuilder = { + + /* + buildByPartAcceptors: function(path, acceptors, i) { + var + var genInfos = partAcceptors.reduce(function(genInfos, acceptor) { + + }, []); + + return genInfos; + } + */ + + buildByAcceptors: function(path, finalAcceptors, i) { + var self = this; + var infos = finalAcceptors.map(function(acceptor) { + var p = i - acceptor.strOffset + 1 + , _info = path[p]; + + var info = {p: p, + mw: _info.mw + (acceptor.mw === undefined ? 0 : acceptor.mw), + w: acceptor.w + _info.w, + unk: (acceptor.unk ? acceptor.unk : 0) + _info.unk, + type: acceptor.type}; + + if (acceptor.type == "PART") { + for(var j = p + 1; j <= i; j++) { + path[j].merge = p; + } + info.merge = p; + } + + return info; + }); + return infos.filter(function(info) { return info; }); + }, + + fallback: function(path, leftBoundary, text, i) { + var _info = path[leftBoundary]; + if (text[i].match(/[\u0E48-\u0E4E]/)) { + if (leftBoundary != 0) + leftBoundary = path[leftBoundary].p; + return {p: leftBoundary, + mw: 0, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; +/* } else if(leftBoundary > 0 && path[leftBoundary].type !== "UNK") { + leftBoundary = path[leftBoundary].p; + return {p: leftBoundary, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; */ + } else { + return {p: leftBoundary, + mw: _info.mw, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; + } + }, + + build: function(path, finalAcceptors, i, leftBoundary, text) { + var basicPathInfos = this.buildByAcceptors(path, finalAcceptors, i); + if (basicPathInfos.length > 0) { + return basicPathInfos; + } else { + return [this.fallback(path, leftBoundary, text, i)]; + } + } +}; + +module.exports = function() { + return _.clone(PathInfoBuilder); +} + +},{"./wordcut_core":8,"underscore":25}],5:[function(require,module,exports){ +var _ = require("underscore"); + + +var PathSelector = { + selectPath: function(paths) { + var path = paths.reduce(function(selectedPath, path) { + if (selectedPath == null) { + return path; + } else { + if (path.unk < selectedPath.unk) + return path; + if (path.unk == selectedPath.unk) { + if (path.mw < selectedPath.mw) + return path + if (path.mw == selectedPath.mw) { + if (path.w < selectedPath.w) + return path; + } + } + return selectedPath; + } + }, null); + return path; + }, + + createPath: function() { + return [{p:null, w:0, unk:0, type: "INIT", mw:0}]; + } +}; + +module.exports = function() { + return _.clone(PathSelector); +}; + +},{"underscore":25}],6:[function(require,module,exports){ +function isMatch(pat, offset, ch) { + if (pat.length <= offset) + return false; + var _ch = pat[offset]; + return _ch == ch || + (_ch.match(/[กข]/) && ch.match(/[ก-ฮ]/)) || + (_ch.match(/[มบ]/) && ch.match(/[ก-ฮ]/)) || + (_ch.match(/\u0E49/) && ch.match(/[\u0E48-\u0E4B]/)); +} + +var Rule0 = { + pat: "เหก็ม", + createAcceptor: function(tag) { + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (isMatch(Rule0.pat, this.strOffset,ch)) { + this.isFinal = (this.strOffset + 1 == Rule0.pat.length); + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "THAI_RULE", + type: "THAI_RULE", + w: 1}; + } +}; + +var PartRule = { + createAcceptor: function(tag) { + return {strOffset: 0, + patterns: [ + "แก", "เก", "ก้", "กก์", "กา", "กี", "กิ", "กืก" + ], + isFinal: false, + transit: function(ch) { + var offset = this.strOffset; + this.patterns = this.patterns.filter(function(pat) { + return isMatch(pat, offset, ch); + }); + + if (this.patterns.length > 0) { + var len = 1 + offset; + this.isFinal = this.patterns.some(function(pat) { + return pat.length == len; + }); + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "PART", + type: "PART", + unk: 1, + w: 1}; + } +}; + +var ThaiRules = [Rule0, PartRule]; + +module.exports = ThaiRules; + +},{}],7:[function(require,module,exports){ +var sys = require("sys") + , WordcutDict = require("./dict") + , WordcutCore = require("./wordcut_core") + , PathInfoBuilder = require("./path_info_builder") + , PathSelector = require("./path_selector") + , Acceptors = require("./acceptors") + , latinRules = require("./latin_rules") + , thaiRules = require("./thai_rules") + , _ = require("underscore"); + + +var Wordcut = Object.create(WordcutCore); +Wordcut.defaultPathInfoBuilder = PathInfoBuilder; +Wordcut.defaultPathSelector = PathSelector; +Wordcut.defaultAcceptors = Acceptors; +Wordcut.defaultLatinRules = latinRules; +Wordcut.defaultThaiRules = thaiRules; +Wordcut.defaultDict = WordcutDict; + + +Wordcut.initNoDict = function(dict_path) { + var self = this; + self.pathInfoBuilder = new self.defaultPathInfoBuilder; + self.pathSelector = new self.defaultPathSelector; + self.acceptors = new self.defaultAcceptors; + self.defaultLatinRules.forEach(function(rule) { + self.acceptors.creators.push(rule); + }); + self.defaultThaiRules.forEach(function(rule) { + self.acceptors.creators.push(rule); + }); +}; + +Wordcut.init = function(dict_path, withDefault, additionalWords) { + withDefault = withDefault || false; + this.initNoDict(); + var dict = _.clone(this.defaultDict); + dict.init(dict_path, withDefault, additionalWords); + this.acceptors.creators.push(dict); +}; + +module.exports = Wordcut; + +},{"./acceptors":1,"./dict":2,"./latin_rules":3,"./path_info_builder":4,"./path_selector":5,"./thai_rules":6,"./wordcut_core":8,"sys":28,"underscore":25}],8:[function(require,module,exports){ +var WordcutCore = { + + buildPath: function(text) { + var self = this + , path = self.pathSelector.createPath() + , leftBoundary = 0; + self.acceptors.reset(); + for (var i = 0; i < text.length; i++) { + var ch = text[i]; + self.acceptors.transit(ch); + + var possiblePathInfos = self + .pathInfoBuilder + .build(path, + self.acceptors.getFinalAcceptors(), + i, + leftBoundary, + text); + var selectedPath = self.pathSelector.selectPath(possiblePathInfos) + + path.push(selectedPath); + if (selectedPath.type !== "UNK") { + leftBoundary = i; + } + } + return path; + }, + + pathToRanges: function(path) { + var e = path.length - 1 + , ranges = []; + + while (e > 0) { + var info = path[e] + , s = info.p; + + if (info.merge !== undefined && ranges.length > 0) { + var r = ranges[ranges.length - 1]; + r.s = info.merge; + s = r.s; + } else { + ranges.push({s:s, e:e}); + } + e = s; + } + return ranges.reverse(); + }, + + rangesToText: function(text, ranges, delimiter) { + return ranges.map(function(r) { + return text.substring(r.s, r.e); + }).join(delimiter); + }, + + cut: function(text, delimiter) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + return this + .rangesToText(text, ranges, + (delimiter === undefined ? "|" : delimiter)); + }, + + cutIntoRanges: function(text, noText) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + + if (!noText) { + ranges.forEach(function(r) { + r.text = text.substring(r.s, r.e); + }); + } + return ranges; + }, + + cutIntoArray: function(text) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + + return ranges.map(function(r) { + return text.substring(r.s, r.e) + }); + } +}; + +module.exports = WordcutCore; + +},{}],9:[function(require,module,exports){ +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit 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 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. + +// when used in node, this will actually load the util module we depend on +// versus loading the builtin util module as happens otherwise +// this is a bug in node module loading as far as I am concerned +var util = require('util/'); + +var pSlice = Array.prototype.slice; +var hasOwn = Object.prototype.hasOwnProperty; + +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } + else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = stackStartFunction.name; + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function replacer(key, value) { + if (util.isUndefined(value)) { + return '' + value; + } + if (util.isNumber(value) && !isFinite(value)) { + return value.toString(); + } + if (util.isFunction(value) || util.isRegExp(value)) { + return value.toString(); + } + return value; +} + +function truncate(s, n) { + if (util.isString(s)) { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} + +function getMessage(self) { + return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + + self.operator + ' ' + + truncate(JSON.stringify(self.expected, replacer), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +function _deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + + } else if (util.isBuffer(actual) && util.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } + + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (!util.isObject(actual) && !util.isObject(expected)) { + return actual == expected; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b) { + if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) + return false; + // an identical 'prototype' property. + if (a.prototype !== b.prototype) return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) { + return a === b; + } + var aIsArgs = isArguments(a), + bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + var ka = objectKeys(a), + kb = objectKeys(b), + key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key])) return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } else if (actual instanceof expected) { + return true; + } else if (expected.call({}, actual) === true) { + return true; + } + + return false; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (util.isString(expected)) { + message = expected; + expected = null; + } + + try { + block(); + } catch (e) { + actual = e; + } + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + if (!shouldThrow && expectedException(actual, expected)) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; + +assert.ifError = function(err) { if (err) {throw err;}}; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +},{"util/":28}],10:[function(require,module,exports){ +'use strict'; +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} + +},{}],11:[function(require,module,exports){ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + + +},{"balanced-match":10,"concat-map":13}],12:[function(require,module,exports){ + +},{}],13:[function(require,module,exports){ +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +},{}],14:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],15:[function(require,module,exports){ +(function (process){ +exports.alphasort = alphasort +exports.alphasorti = alphasorti +exports.setopts = setopts +exports.ownProp = ownProp +exports.makeAbs = makeAbs +exports.finish = finish +exports.mark = mark +exports.isIgnored = isIgnored +exports.childrenIgnored = childrenIgnored + +function ownProp (obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field) +} + +var path = require("path") +var minimatch = require("minimatch") +var isAbsolute = require("path-is-absolute") +var Minimatch = minimatch.Minimatch + +function alphasorti (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()) +} + +function alphasort (a, b) { + return a.localeCompare(b) +} + +function setupIgnores (self, options) { + self.ignore = options.ignore || [] + + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore] + + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap) + } +} + +function ignoreMap (pattern) { + var gmatcher = null + if (pattern.slice(-3) === '/**') { + var gpattern = pattern.replace(/(\/\*\*)+$/, '') + gmatcher = new Minimatch(gpattern) + } + + return { + matcher: new Minimatch(pattern), + gmatcher: gmatcher + } +} + +function setopts (self, pattern, options) { + if (!options) + options = {} + + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern + } + + self.silent = !!options.silent + self.pattern = pattern + self.strict = options.strict !== false + self.realpath = !!options.realpath + self.realpathCache = options.realpathCache || Object.create(null) + self.follow = !!options.follow + self.dot = !!options.dot + self.mark = !!options.mark + self.nodir = !!options.nodir + if (self.nodir) + self.mark = true + self.sync = !!options.sync + self.nounique = !!options.nounique + self.nonull = !!options.nonull + self.nosort = !!options.nosort + self.nocase = !!options.nocase + self.stat = !!options.stat + self.noprocess = !!options.noprocess + + self.maxLength = options.maxLength || Infinity + self.cache = options.cache || Object.create(null) + self.statCache = options.statCache || Object.create(null) + self.symlinks = options.symlinks || Object.create(null) + + setupIgnores(self, options) + + self.changedCwd = false + var cwd = process.cwd() + if (!ownProp(options, "cwd")) + self.cwd = cwd + else { + self.cwd = options.cwd + self.changedCwd = path.resolve(options.cwd) !== cwd + } + + self.root = options.root || path.resolve(self.cwd, "/") + self.root = path.resolve(self.root) + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/") + + self.nomount = !!options.nomount + + // disable comments and negation unless the user explicitly + // passes in false as the option. + options.nonegate = options.nonegate === false ? false : true + options.nocomment = options.nocomment === false ? false : true + deprecationWarning(options) + + self.minimatch = new Minimatch(pattern, options) + self.options = self.minimatch.options +} + +// TODO(isaacs): remove entirely in v6 +// exported to reset in tests +exports.deprecationWarned +function deprecationWarning(options) { + if (!options.nonegate || !options.nocomment) { + if (process.noDeprecation !== true && !exports.deprecationWarned) { + var msg = 'glob WARNING: comments and negation will be disabled in v6' + if (process.throwDeprecation) + throw new Error(msg) + else if (process.traceDeprecation) + console.trace(msg) + else + console.error(msg) + + exports.deprecationWarned = true + } + } +} + +function finish (self) { + var nou = self.nounique + var all = nou ? [] : Object.create(null) + + for (var i = 0, l = self.matches.length; i < l; i ++) { + var matches = self.matches[i] + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + // do like the shell, and spit out the literal glob + var literal = self.minimatch.globSet[i] + if (nou) + all.push(literal) + else + all[literal] = true + } + } else { + // had matches + var m = Object.keys(matches) + if (nou) + all.push.apply(all, m) + else + m.forEach(function (m) { + all[m] = true + }) + } + } + + if (!nou) + all = Object.keys(all) + + if (!self.nosort) + all = all.sort(self.nocase ? alphasorti : alphasort) + + // at *some* point we statted all of these + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]) + } + if (self.nodir) { + all = all.filter(function (e) { + return !(/\/$/.test(e)) + }) + } + } + + if (self.ignore.length) + all = all.filter(function(m) { + return !isIgnored(self, m) + }) + + self.found = all +} + +function mark (self, p) { + var abs = makeAbs(self, p) + var c = self.cache[abs] + var m = p + if (c) { + var isDir = c === 'DIR' || Array.isArray(c) + var slash = p.slice(-1) === '/' + + if (isDir && !slash) + m += '/' + else if (!isDir && slash) + m = m.slice(0, -1) + + if (m !== p) { + var mabs = makeAbs(self, m) + self.statCache[mabs] = self.statCache[abs] + self.cache[mabs] = self.cache[abs] + } + } + + return m +} + +// lotta situps... +function makeAbs (self, f) { + var abs = f + if (f.charAt(0) === '/') { + abs = path.join(self.root, f) + } else if (isAbsolute(f) || f === '') { + abs = f + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f) + } else { + abs = path.resolve(f) + } + return abs +} + + +// Return true, if pattern ends with globstar '**', for the accompanying parent directory. +// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents +function isIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +function childrenIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +}).call(this,require('_process')) +},{"_process":24,"minimatch":20,"path":22,"path-is-absolute":23}],16:[function(require,module,exports){ +(function (process){ +// Approach: +// +// 1. Get the minimatch set +// 2. For each pattern in the set, PROCESS(pattern, false) +// 3. Store matches per-set, then uniq them +// +// PROCESS(pattern, inGlobStar) +// Get the first [n] items from pattern that are all strings +// Join these together. This is PREFIX. +// If there is no more remaining, then stat(PREFIX) and +// add to matches if it succeeds. END. +// +// If inGlobStar and PREFIX is symlink and points to dir +// set ENTRIES = [] +// else readdir(PREFIX) as ENTRIES +// If fail, END +// +// with ENTRIES +// If pattern[n] is GLOBSTAR +// // handle the case where the globstar match is empty +// // by pruning it out, and testing the resulting pattern +// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) +// // handle other cases. +// for ENTRY in ENTRIES (not dotfiles) +// // attach globstar + tail onto the entry +// // Mark that this entry is a globstar match +// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) +// +// else // not globstar +// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) +// Test ENTRY against pattern[n] +// If fails, continue +// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) +// +// Caveat: +// Cache all stats and readdirs results to minimize syscall. Since all +// we ever care about is existence and directory-ness, we can just keep +// `true` for files, and [children,...] for directories, or `false` for +// things that don't exist. + +module.exports = glob + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var inherits = require('inherits') +var EE = require('events').EventEmitter +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var globSync = require('./sync.js') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var inflight = require('inflight') +var util = require('util') +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored + +var once = require('once') + +function glob (pattern, options, cb) { + if (typeof options === 'function') cb = options, options = {} + if (!options) options = {} + + if (options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return globSync(pattern, options) + } + + return new Glob(pattern, options, cb) +} + +glob.sync = globSync +var GlobSync = glob.GlobSync = globSync.GlobSync + +// old api surface +glob.glob = glob + +glob.hasMagic = function (pattern, options_) { + var options = util._extend({}, options_) + options.noprocess = true + + var g = new Glob(pattern, options) + var set = g.minimatch.set + if (set.length > 1) + return true + + for (var j = 0; j < set[0].length; j++) { + if (typeof set[0][j] !== 'string') + return true + } + + return false +} + +glob.Glob = Glob +inherits(Glob, EE) +function Glob (pattern, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + + if (options && options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return new GlobSync(pattern, options) + } + + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb) + + setopts(this, pattern, options) + this._didRealPath = false + + // process each pattern in the minimatch set + var n = this.minimatch.set.length + + // The matches are stored as {: true,...} so that + // duplicates are automagically pruned. + // Later, we do an Object.keys() on these. + // Keep them as a list so we can fill in when nonull is set. + this.matches = new Array(n) + + if (typeof cb === 'function') { + cb = once(cb) + this.on('error', cb) + this.on('end', function (matches) { + cb(null, matches) + }) + } + + var self = this + var n = this.minimatch.set.length + this._processing = 0 + this.matches = new Array(n) + + this._emitQueue = [] + this._processQueue = [] + this.paused = false + + if (this.noprocess) + return this + + if (n === 0) + return done() + + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false, done) + } + + function done () { + --self._processing + if (self._processing <= 0) + self._finish() + } +} + +Glob.prototype._finish = function () { + assert(this instanceof Glob) + if (this.aborted) + return + + if (this.realpath && !this._didRealpath) + return this._realpath() + + common.finish(this) + this.emit('end', this.found) +} + +Glob.prototype._realpath = function () { + if (this._didRealpath) + return + + this._didRealpath = true + + var n = this.matches.length + if (n === 0) + return this._finish() + + var self = this + for (var i = 0; i < this.matches.length; i++) + this._realpathSet(i, next) + + function next () { + if (--n === 0) + self._finish() + } +} + +Glob.prototype._realpathSet = function (index, cb) { + var matchset = this.matches[index] + if (!matchset) + return cb() + + var found = Object.keys(matchset) + var self = this + var n = found.length + + if (n === 0) + return cb() + + var set = this.matches[index] = Object.create(null) + found.forEach(function (p, i) { + // If there's a problem with the stat, then it means that + // one or more of the links in the realpath couldn't be + // resolved. just return the abs value in that case. + p = self._makeAbs(p) + fs.realpath(p, self.realpathCache, function (er, real) { + if (!er) + set[real] = true + else if (er.syscall === 'stat') + set[p] = true + else + self.emit('error', er) // srsly wtf right here + + if (--n === 0) { + self.matches[index] = set + cb() + } + }) + }) +} + +Glob.prototype._mark = function (p) { + return common.mark(this, p) +} + +Glob.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +Glob.prototype.abort = function () { + this.aborted = true + this.emit('abort') +} + +Glob.prototype.pause = function () { + if (!this.paused) { + this.paused = true + this.emit('pause') + } +} + +Glob.prototype.resume = function () { + if (this.paused) { + this.emit('resume') + this.paused = false + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0) + this._emitQueue.length = 0 + for (var i = 0; i < eq.length; i ++) { + var e = eq[i] + this._emitMatch(e[0], e[1]) + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0) + this._processQueue.length = 0 + for (var i = 0; i < pq.length; i ++) { + var p = pq[i] + this._processing-- + this._process(p[0], p[1], p[2], p[3]) + } + } + } +} + +Glob.prototype._process = function (pattern, index, inGlobStar, cb) { + assert(this instanceof Glob) + assert(typeof cb === 'function') + + if (this.aborted) + return + + this._processing++ + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]) + return + } + + //console.error('PROCESS %d', this._processing, pattern) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // see if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index, cb) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip _processing + if (childrenIgnored(this, read)) + return cb() + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) +} + +Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + +Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return cb() + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return cb() + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return cb() + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + this._process([e].concat(remain), index, inGlobStar, cb) + } + cb() +} + +Glob.prototype._emitMatch = function (index, e) { + if (this.aborted) + return + + if (this.matches[index][e]) + return + + if (isIgnored(this, e)) + return + + if (this.paused) { + this._emitQueue.push([index, e]) + return + } + + var abs = this._makeAbs(e) + + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return + } + + if (this.mark) + e = this._mark(e) + + this.matches[index][e] = true + + var st = this.statCache[abs] + if (st) + this.emit('stat', e, st) + + this.emit('match', e) +} + +Glob.prototype._readdirInGlobStar = function (abs, cb) { + if (this.aborted) + return + + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false, cb) + + var lstatkey = 'lstat\0' + abs + var self = this + var lstatcb = inflight(lstatkey, lstatcb_) + + if (lstatcb) + fs.lstat(abs, lstatcb) + + function lstatcb_ (er, lstat) { + if (er) + return cb() + + var isSym = lstat.isSymbolicLink() + self.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) { + self.cache[abs] = 'FILE' + cb() + } else + self._readdir(abs, false, cb) + } +} + +Glob.prototype._readdir = function (abs, inGlobStar, cb) { + if (this.aborted) + return + + cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) + if (!cb) + return + + //console.error('RD %j %j', +inGlobStar, abs) + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return cb() + + if (Array.isArray(c)) + return cb(null, c) + } + + var self = this + fs.readdir(abs, readdirCb(this, abs, cb)) +} + +function readdirCb (self, abs, cb) { + return function (er, entries) { + if (er) + self._readdirError(abs, er, cb) + else + self._readdirEntries(abs, entries, cb) + } +} + +Glob.prototype._readdirEntries = function (abs, entries, cb) { + if (this.aborted) + return + + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + return cb(null, entries) +} + +Glob.prototype._readdirError = function (f, er, cb) { + if (this.aborted) + return + + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[this._makeAbs(f)] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) { + this.emit('error', er) + // If the error is handled, then we abort + // if not, we threw out of here + this.abort() + } + if (!this.silent) + console.error('glob error', er) + break + } + + return cb() +} + +Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + + +Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + //console.error('pgs2', prefix, remain[0], entries) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return cb() + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false, cb) + + var isSym = this.symlinks[abs] + var len = entries.length + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return cb() + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true, cb) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true, cb) + } + + cb() +} + +Glob.prototype._processSimple = function (prefix, index, cb) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var self = this + this._stat(prefix, function (er, exists) { + self._processSimple2(prefix, index, er, exists, cb) + }) +} +Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { + + //console.error('ps2', prefix, exists) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return cb() + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this._emitMatch(index, prefix) + cb() +} + +// Returns either 'DIR', 'FILE', or false +Glob.prototype._stat = function (f, cb) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return cb() + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return cb(null, c) + + if (needDir && c === 'FILE') + return cb() + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (stat !== undefined) { + if (stat === false) + return cb(null, stat) + else { + var type = stat.isDirectory() ? 'DIR' : 'FILE' + if (needDir && type === 'FILE') + return cb() + else + return cb(null, type, stat) + } + } + + var self = this + var statcb = inflight('stat\0' + abs, lstatcb_) + if (statcb) + fs.lstat(abs, statcb) + + function lstatcb_ (er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + // If it's a symlink, then treat it as the target, unless + // the target does not exist, then treat it as a file. + return fs.stat(abs, function (er, stat) { + if (er) + self._stat2(f, abs, null, lstat, cb) + else + self._stat2(f, abs, er, stat, cb) + }) + } else { + self._stat2(f, abs, er, lstat, cb) + } + } +} + +Glob.prototype._stat2 = function (f, abs, er, stat, cb) { + if (er) { + this.statCache[abs] = false + return cb() + } + + var needDir = f.slice(-1) === '/' + this.statCache[abs] = stat + + if (abs.slice(-1) === '/' && !stat.isDirectory()) + return cb(null, false, stat) + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c !== 'DIR') + return cb() + + return cb(null, c, stat) +} + +}).call(this,require('_process')) +},{"./common.js":15,"./sync.js":17,"_process":24,"assert":9,"events":14,"fs":12,"inflight":18,"inherits":19,"minimatch":20,"once":21,"path":22,"path-is-absolute":23,"util":28}],17:[function(require,module,exports){ +(function (process){ +module.exports = globSync +globSync.GlobSync = GlobSync + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var Glob = require('./glob.js').Glob +var util = require('util') +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var childrenIgnored = common.childrenIgnored + +function globSync (pattern, options) { + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + return new GlobSync(pattern, options).found +} + +function GlobSync (pattern, options) { + if (!pattern) + throw new Error('must provide pattern') + + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options) + + setopts(this, pattern, options) + + if (this.noprocess) + return this + + var n = this.minimatch.set.length + this.matches = new Array(n) + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false) + } + this._finish() +} + +GlobSync.prototype._finish = function () { + assert(this instanceof GlobSync) + if (this.realpath) { + var self = this + this.matches.forEach(function (matchset, index) { + var set = self.matches[index] = Object.create(null) + for (var p in matchset) { + try { + p = self._makeAbs(p) + var real = fs.realpathSync(p, self.realpathCache) + set[real] = true + } catch (er) { + if (er.syscall === 'stat') + set[self._makeAbs(p)] = true + else + throw er + } + } + }) + } + common.finish(this) +} + + +GlobSync.prototype._process = function (pattern, index, inGlobStar) { + assert(this instanceof GlobSync) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // See if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip processing + if (childrenIgnored(this, read)) + return + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar) +} + + +GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar) + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix.slice(-1) !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this.matches[index][e] = true + } + // This was the last one, and no stats were needed + return + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) + newPattern = [prefix, e] + else + newPattern = [e] + this._process(newPattern.concat(remain), index, inGlobStar) + } +} + + +GlobSync.prototype._emitMatch = function (index, e) { + var abs = this._makeAbs(e) + if (this.mark) + e = this._mark(e) + + if (this.matches[index][e]) + return + + if (this.nodir) { + var c = this.cache[this._makeAbs(e)] + if (c === 'DIR' || Array.isArray(c)) + return + } + + this.matches[index][e] = true + if (this.stat) + this._stat(e) +} + + +GlobSync.prototype._readdirInGlobStar = function (abs) { + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false) + + var entries + var lstat + var stat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + // lstat failed, doesn't exist + return null + } + + var isSym = lstat.isSymbolicLink() + this.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) + this.cache[abs] = 'FILE' + else + entries = this._readdir(abs, false) + + return entries +} + +GlobSync.prototype._readdir = function (abs, inGlobStar) { + var entries + + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return null + + if (Array.isArray(c)) + return c + } + + try { + return this._readdirEntries(abs, fs.readdirSync(abs)) + } catch (er) { + this._readdirError(abs, er) + return null + } +} + +GlobSync.prototype._readdirEntries = function (abs, entries) { + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + + // mark and cache dir-ness + return entries +} + +GlobSync.prototype._readdirError = function (f, er) { + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[this._makeAbs(f)] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) + throw er + if (!this.silent) + console.error('glob error', er) + break + } +} + +GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { + + var entries = this._readdir(abs, inGlobStar) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false) + + var len = entries.length + var isSym = this.symlinks[abs] + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true) + } +} + +GlobSync.prototype._processSimple = function (prefix, index) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var exists = this._stat(prefix) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this.matches[index][prefix] = true +} + +// Returns either 'DIR', 'FILE', or false +GlobSync.prototype._stat = function (f) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return false + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return c + + if (needDir && c === 'FILE') + return false + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (!stat) { + var lstat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + return false + } + + if (lstat.isSymbolicLink()) { + try { + stat = fs.statSync(abs) + } catch (er) { + stat = lstat + } + } else { + stat = lstat + } + } + + this.statCache[abs] = stat + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c !== 'DIR') + return false + + return c +} + +GlobSync.prototype._mark = function (p) { + return common.mark(this, p) +} + +GlobSync.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +}).call(this,require('_process')) +},{"./common.js":15,"./glob.js":16,"_process":24,"assert":9,"fs":12,"minimatch":20,"path":22,"path-is-absolute":23,"util":28}],18:[function(require,module,exports){ +(function (process){ +var wrappy = require('wrappy') +var reqs = Object.create(null) +var once = require('once') + +module.exports = wrappy(inflight) + +function inflight (key, cb) { + if (reqs[key]) { + reqs[key].push(cb) + return null + } else { + reqs[key] = [cb] + return makeres(key) + } +} + +function makeres (key) { + return once(function RES () { + var cbs = reqs[key] + var len = cbs.length + var args = slice(arguments) + + // XXX It's somewhat ambiguous whether a new callback added in this + // pass should be queued for later execution if something in the + // list of callbacks throws, or if it should just be discarded. + // However, it's such an edge case that it hardly matters, and either + // choice is likely as surprising as the other. + // As it happens, we do go ahead and schedule it for later execution. + try { + for (var i = 0; i < len; i++) { + cbs[i].apply(null, args) + } + } finally { + if (cbs.length > len) { + // added more in the interim. + // de-zalgo, just in case, but don't call again. + cbs.splice(0, len) + process.nextTick(function () { + RES.apply(null, args) + }) + } else { + delete reqs[key] + } + } + }) +} + +function slice (args) { + var length = args.length + var array = [] + + for (var i = 0; i < length; i++) array[i] = args[i] + return array +} + +}).call(this,require('_process')) +},{"_process":24,"once":21,"wrappy":29}],19:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],20:[function(require,module,exports){ +module.exports = minimatch +minimatch.Minimatch = Minimatch + +var path = { sep: '/' } +try { + path = require('path') +} catch (er) {} + +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} +var expand = require('brace-expansion') + +var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} + +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' + +// * => any number of characters +var star = qmark + '*?' + +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' + +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' + +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + a = a || {} + b = b || {} + var t = {} + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return minimatch + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return Minimatch + return minimatch.defaults(def).Minimatch +} + +function minimatch (p, pattern, options) { + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } + + // "" only matches "" + if (pattern.trim() === '') return p === '' + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } + + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } + + if (!options) options = {} + pattern = pattern.trim() + + // windows support: need to use /, not \ + if (path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.debug = function () {} + +Minimatch.prototype.make = make +function make () { + // don't do it more than once. + if (this._made) return + + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = console.error + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 + + if (options.nonegate) return + + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} + } + } + + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern + + if (typeof pattern === 'undefined') { + throw new TypeError('undefined pattern') + } + + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + if (pattern.length > 1024 * 64) { + throw new TypeError('pattern is too long') + } + + var options = this.options + + // shortcuts + if (!options.noglobstar && pattern === '**') return GLOBSTAR + if (pattern === '') return '' + + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue + } + + switch (c) { + case '/': + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + + case '\\': + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case '(': + if (inClass) { + re += '(' + continue + } + + if (!stateChar) { + re += '\\(' + continue + } + + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } + + clearStateChar() + hasMagic = true + var pl = patternListStack.pop() + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close + if (pl.type === '!') { + negativeLists.push(pl) + } + pl.reEnd = re.length + continue + + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } + + clearStateChar() + re += '|' + continue + + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += '\\' + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + if (inClass) { + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } + + re += c + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) + + this.debug('tail=%j\n %s', tail, tail, pl, re) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '.': + case '[': + case '(': addPatternStart = true + } + + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] + + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) + + nlLast += nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } + + if (addPatternStart) { + re = patternStart + re + } + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? 'i' : '' + try { + var regExp = new RegExp('^' + re + '$', flags) + } catch (er) { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') + } + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) { + this.regexp = false + return this.regexp + } + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' + + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' + + try { + this.regexp = new RegExp(re, flags) + } catch (ex) { + this.regexp = false + } + return this.regexp +} + +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = match +function match (f, partial) { + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' + + if (f === '/' && partial) return true + + var options = this.options + + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, 'set', set) + + // Find the basename of the path by looking for the last non-empty segment + var filename + var i + for (i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) + + this.debug('matchOne', file.length, pattern.length) + + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') + return emptyFileEnd + } + + // should be unreachable. + throw new Error('wtf?') +} + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') +} + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} + +},{"brace-expansion":11,"path":22}],21:[function(require,module,exports){ +var wrappy = require('wrappy') +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} + +},{"wrappy":29}],22:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +// resolves . and .. elements in a path array with directory names there +// must be no slashes, empty elements, or device names (c:\) in the array +// (so also no leading and trailing slashes - it does not distinguish +// relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; +var splitPath = function(filename) { + return splitPathRe.exec(filename).slice(1); +}; + +// path.resolve([from ...], to) +// posix version +exports.resolve = function() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +}; + +// path.normalize(path) +// posix version +exports.normalize = function(path) { + var isAbsolute = exports.isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; + + // Normalize the path + path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + + return (isAbsolute ? '/' : '') + path; +}; + +// posix version +exports.isAbsolute = function(path) { + return path.charAt(0) === '/'; +}; + +// posix version +exports.join = function() { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + return p; + }).join('/')); +}; + + +// path.relative(from, to) +// posix version +exports.relative = function(from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +}; + +exports.sep = '/'; +exports.delimiter = ':'; + +exports.dirname = function(path) { + var result = splitPath(path), + root = result[0], + dir = result[1]; + + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + + return root + dir; +}; + + +exports.basename = function(path, ext) { + var f = splitPath(path)[2]; + // TODO: make this comparison case-insensitive on windows? + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +}; + + +exports.extname = function(path) { + return splitPath(path)[3]; +}; + +function filter (xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + return res; +} + +// String.prototype.substr - negative index don't work in IE8 +var substr = 'ab'.substr(-1) === 'b' + ? function (str, start, len) { return str.substr(start, len) } + : function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); + } +; + +}).call(this,require('_process')) +},{"_process":24}],23:[function(require,module,exports){ +(function (process){ +'use strict'; + +function posix(path) { + return path.charAt(0) === '/'; +} + +function win32(path) { + // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = Boolean(device && device.charAt(1) !== ':'); + + // UNC paths are always absolute + return Boolean(result[2] || isUnc); +} + +module.exports = process.platform === 'win32' ? win32 : posix; +module.exports.posix = posix; +module.exports.win32 = win32; + +}).call(this,require('_process')) +},{"_process":24}],24:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],25:[function(require,module,exports){ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `exports` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var + push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind, + nativeCreate = Object.create; + + // Naked function reference for surrogate-prototype-swapping. + var Ctor = function(){}; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.8.3'; + + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + var optimizeCb = function(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + case 2: return function(value, other) { + return func.call(context, value, other); + }; + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + }; + + // A mostly-internal function to generate callbacks that can be applied + // to each element in a collection, returning the desired result — either + // identity, an arbitrary callback, a property matcher, or a property accessor. + var cb = function(value, context, argCount) { + if (value == null) return _.identity; + if (_.isFunction(value)) return optimizeCb(value, context, argCount); + if (_.isObject(value)) return _.matcher(value); + return _.property(value); + }; + _.iteratee = function(value, context) { + return cb(value, context, Infinity); + }; + + // An internal function for creating assigner functions. + var createAssigner = function(keysFunc, undefinedOnly) { + return function(obj) { + var length = arguments.length; + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; + }; + + // An internal function for creating a new object that inherits from another. + var baseCreate = function(prototype) { + if (!_.isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + }; + + var property = function(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + }; + + // Helper for collection methods to determine whether a collection + // should be iterated as an array or as an object + // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + var getLength = property('length'); + var isArrayLike = function(collection) { + var length = getLength(collection); + return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; + }; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + _.each = _.forEach = function(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var keys = _.keys(obj); + for (i = 0, length = keys.length; i < length; i++) { + iteratee(obj[keys[i]], keys[i], obj); + } + } + return obj; + }; + + // Return the results of applying the iteratee to each element. + _.map = _.collect = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Create a reducing function iterating left or right. + function createReduce(dir) { + // Optimized iterator function as using arguments.length + // in the main function will deoptimize the, see #1991. + function iterator(obj, iteratee, memo, keys, index, length) { + for (; index >= 0 && index < length; index += dir) { + var currentKey = keys ? keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + } + + return function(obj, iteratee, memo, context) { + iteratee = optimizeCb(iteratee, context, 4); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + index = dir > 0 ? 0 : length - 1; + // Determine the initial value if none is provided. + if (arguments.length < 3) { + memo = obj[keys ? keys[index] : index]; + index += dir; + } + return iterator(obj, iteratee, memo, keys, index, length); + }; + } + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + _.reduce = _.foldl = _.inject = createReduce(1); + + // The right-associative version of reduce, also known as `foldr`. + _.reduceRight = _.foldr = createReduce(-1); + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var key; + if (isArrayLike(obj)) { + key = _.findIndex(obj, predicate, context); + } else { + key = _.findKey(obj, predicate, context); + } + if (key !== void 0 && key !== -1) return obj[key]; + }; + + // Return all the elements that pass a truth test. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + _.each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, _.negate(cb(predicate)), context); + }; + + // Determine whether all of the elements match a truth test. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; + }; + + // Determine if at least one element in the object matches a truth test. + // Aliased as `any`. + _.some = _.any = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; + }; + + // Determine if the array or object contains a given item (using `===`). + // Aliased as `includes` and `include`. + _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return _.indexOf(obj, item, fromIndex) >= 0; + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + var func = isFunc ? method : value[method]; + return func == null ? func : func.apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matcher(attrs)); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matcher(attrs)); + }; + + // Return the maximum element (or element-based computation). + _.max = function(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Shuffle a collection, using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + _.shuffle = function(obj) { + var set = isArrayLike(obj) ? obj : _.values(obj); + var length = set.length; + var shuffled = Array(length); + for (var index = 0, rand; index < length; index++) { + rand = _.random(0, index); + if (rand !== index) shuffled[index] = shuffled[rand]; + shuffled[rand] = set[index]; + } + return shuffled; + }; + + // Sample **n** random values from a collection. + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + return _.shuffle(obj).slice(0, Math.max(0, n)); + }; + + // Sort the object's values by a criterion produced by an iteratee. + _.sortBy = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value: value, + index: index, + criteria: iteratee(value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(behavior) { + return function(obj, iteratee, context) { + var result = {}; + iteratee = cb(iteratee, context); + _.each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, value, key) { + if (_.has(result, key)) result[key].push(value); else result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, value, key) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, value, key) { + if (_.has(result, key)) result[key]++; else result[key] = 1; + }); + + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (isArrayLike(obj)) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : _.keys(obj).length; + }; + + // Split a collection into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = function(obj, predicate, context) { + predicate = cb(predicate, context); + var pass = [], fail = []; + _.each(obj, function(value, key, obj) { + (predicate(value, key, obj) ? pass : fail).push(value); + }); + return [pass, fail]; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[0]; + return _.initial(array, array.length - n); + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. + _.initial = function(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[array.length - 1]; + return _.rest(array, Math.max(0, array.length - n)); + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, strict, startIndex) { + var output = [], idx = 0; + for (var i = startIndex || 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { + //flatten current level of array or arguments object + if (!shallow) value = flatten(value, shallow, strict); + var j = 0, len = value.length; + output.length += len; + while (j < len) { + output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; + }; + + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, false); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iteratee, context) { + if (!_.isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!_.contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!_.contains(result, value)) { + result.push(value); + } + } + return result; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(flatten(arguments, true, true)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (_.contains(result, item)) continue; + for (var j = 1; j < argsLength; j++) { + if (!_.contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = flatten(arguments, true, true, 1); + return _.filter(array, function(value){ + return !_.contains(rest, value); + }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + return _.unzip(arguments); + }; + + // Complement of _.zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices + _.unzip = function(array) { + var length = array && _.max(array, getLength).length || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = _.pluck(array, index); + } + return result; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // Generator function to create the findIndex and findLastIndex functions + function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + } + + // Returns the first index on an array-like that passes a predicate test + _.findIndex = createPredicateIndexFinder(1); + _.findLastIndex = createPredicateIndexFinder(-1); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + }; + + // Generator function to create the indexOf and lastIndexOf functions + function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), _.isNaN); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + } + + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); + _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + step = step || 1; + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Determines whether to execute a function as a constructor + // or a normal function with the provided arguments + var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (_.isObject(result)) return result; + return self; + }; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); + var args = slice.call(arguments, 2); + var bound = function() { + return executeBound(func, bound, context, this, args.concat(slice.call(arguments))); + }; + return bound; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder, allowing any combination of arguments to be pre-filled. + _.partial = function(func) { + var boundArgs = slice.call(arguments, 1); + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = function(obj) { + var i, length = arguments.length, key; + if (length <= 1) throw new Error('bindAll must be passed function names'); + for (i = 1; i < length; i++) { + key = arguments[i]; + obj[key] = _.bind(obj[key], obj); + } + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!_.has(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ + return func.apply(null, args); + }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = _.partial(_.delay, _, 1); + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + if (!options) options = {}; + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + return function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + + var later = function() { + var last = _.now() - timestamp; + + if (last < wait && last >= 0) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + if (!timeout) context = args = null; + } + } + }; + + return function() { + context = this; + args = arguments; + timestamp = _.now(); + var callNow = immediate && !timeout; + if (!timeout) timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; + + // Returns a negated version of the passed-in predicate. + _.negate = function(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + }; + + // Returns a function that will only be executed on and after the Nth call. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Returns a function that will only be executed up to (but not including) the Nth call. + _.before = function(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = _.partial(_.before, 2); + + // Object Functions + // ---------------- + + // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + + function collectNonEnumProps(obj, keys) { + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { + keys.push(prop); + } + } + } + + // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve all the property names of an object. + _.allKeys = function(obj) { + if (!_.isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; + + // Returns the results of applying the iteratee to each element of the object + // In contrast to _.map it returns an object + _.mapObject = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = _.keys(obj), + length = keys.length, + results = {}, + currentKey; + for (var index = 0; index < length; index++) { + currentKey = keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; + } + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = createAssigner(_.allKeys); + + // Assigns a given object with all the own properties in the passed-in object(s) + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + _.extendOwn = _.assign = createAssigner(_.keys); + + // Returns the first key on an object that passes a predicate test + _.findKey = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = _.keys(obj), key; + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(object, oiteratee, context) { + var result = {}, obj = object, iteratee, keys; + if (obj == null) return result; + if (_.isFunction(oiteratee)) { + keys = _.allKeys(obj); + iteratee = optimizeCb(oiteratee, context); + } else { + keys = flatten(arguments, false, false, 1); + iteratee = function(value, key, obj) { return key in obj; }; + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj, iteratee, context) { + if (_.isFunction(iteratee)) { + iteratee = _.negate(iteratee); + } else { + var keys = _.map(flatten(arguments, false, false, 1), String); + iteratee = function(value, key) { + return !_.contains(keys, key); + }; + } + return _.pick(obj, iteratee, context); + }; + + // Fill in a given object with default properties. + _.defaults = createAssigner(_.allKeys, true); + + // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. + _.create = function(prototype, props) { + var result = baseCreate(prototype); + if (props) _.extendOwn(result, props); + return result; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Returns whether an object has a given set of `key:value` pairs. + _.isMatch = function(object, attrs) { + var keys = _.keys(attrs), length = keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + }; + + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + switch (className) { + // Strings, numbers, regular expressions, dates, and booleans are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + } + + var areArrays = className === '[object Array]'; + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && + _.isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var keys = _.keys(a), key; + length = keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (_.keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = keys[length]; + if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; + return _.keys(obj).length === 0; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) === '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError. + _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) === '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return _.has(obj, 'callee'); + }; + } + + // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, + // IE 11 (#1621), and in Safari 8 (#1929). + if (typeof /./ != 'function' && typeof Int8Array != 'object') { + _.isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj !== +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iteratees. + _.identity = function(value) { + return value; + }; + + // Predicate-generating functions. Often useful outside of Underscore. + _.constant = function(value) { + return function() { + return value; + }; + }; + + _.noop = function(){}; + + _.property = property; + + // Generates a function for a given object that returns a given property. + _.propertyOf = function(obj) { + return obj == null ? function(){} : function(key) { + return obj[key]; + }; + }; + + // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + _.matcher = _.matches = function(attrs) { + attrs = _.extendOwn({}, attrs); + return function(obj) { + return _.isMatch(obj, attrs); + }; + }; + + // Run a function **n** times. + _.times = function(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { + return new Date().getTime(); + }; + + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var unescapeMap = _.invert(escapeMap); + + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped + var source = '(?:' + _.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + _.escape = createEscaper(escapeMap); + _.unescape = createEscaper(unescapeMap); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, property, fallback) { + var value = object == null ? void 0 : object[property]; + if (value === void 0) { + value = fallback; + } + return _.isFunction(value) ? value.call(object) : value; + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\u2028|\u2029/g; + + var escapeChar = function(match) { + return '\\' + escapes[match]; + }; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + _.template = function(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escaper, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + + // Adobe VMs need the match returned to produce the correct offest. + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + try { + var render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled source as a convenience for precompilation. + var argument = settings.variable || 'obj'; + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function. Start chaining a wrapped Underscore object. + _.chain = function(obj) { + var instance = _(obj); + instance._chain = true; + return instance; + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(instance, obj) { + return instance._chain ? _(obj).chain() : obj; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + _.each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result(this, func.apply(_, args)); + }; + }); + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; + return result(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + _.each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result(this, method.apply(this._wrapped, arguments)); + }; + }); + + // Extracts the result from a wrapped and chained object. + _.prototype.value = function() { + return this._wrapped; + }; + + // Provide unwrapping proxy for some methods used in engine operations + // such as arithmetic and JSON stringification. + _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; + + _.prototype.toString = function() { + return '' + this._wrapped; + }; + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define === 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } +}.call(this)); + +},{}],26:[function(require,module,exports){ +arguments[4][19][0].apply(exports,arguments) +},{"dup":19}],27:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],28:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// 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. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":27,"_process":24,"inherits":26}],29:[function(require,module,exports){ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} + +},{}]},{},[7])(7) +}); \ No newline at end of file diff --git a/assets/javascripts/workers/search.1e90e0fb.min.js b/assets/javascripts/workers/search.1e90e0fb.min.js new file mode 100644 index 000000000..ff43aeddd --- /dev/null +++ b/assets/javascripts/workers/search.1e90e0fb.min.js @@ -0,0 +1,2 @@ +"use strict";(()=>{var xe=Object.create;var G=Object.defineProperty,ve=Object.defineProperties,Se=Object.getOwnPropertyDescriptor,Te=Object.getOwnPropertyDescriptors,Qe=Object.getOwnPropertyNames,Y=Object.getOwnPropertySymbols,Ee=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty,be=Object.prototype.propertyIsEnumerable;var Z=Math.pow,J=(t,e,r)=>e in t?G(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,_=(t,e)=>{for(var r in e||(e={}))X.call(e,r)&&J(t,r,e[r]);if(Y)for(var r of Y(e))be.call(e,r)&&J(t,r,e[r]);return t},B=(t,e)=>ve(t,Te(e));var Le=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var we=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Qe(e))!X.call(t,i)&&i!==r&&G(t,i,{get:()=>e[i],enumerable:!(n=Se(e,i))||n.enumerable});return t};var Pe=(t,e,r)=>(r=t!=null?xe(Ee(t)):{},we(e||!t||!t.__esModule?G(r,"default",{value:t,enumerable:!0}):r,t));var W=(t,e,r)=>new Promise((n,i)=>{var s=u=>{try{a(r.next(u))}catch(c){i(c)}},o=u=>{try{a(r.throw(u))}catch(c){i(c)}},a=u=>u.done?n(u.value):Promise.resolve(u.value).then(s,o);a((r=r.apply(t,e)).next())});var te=Le((K,ee)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i0){var f=t.utils.clone(r)||{};f.position=[a,c],f.index=s.length,s.push(new t.Token(n.slice(a,o),f))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n1&&(oe&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ou?f+=2:a==u&&(r+=n[c+1]*i[f+1],c+=2,f+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}if(s.str.length==0&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var c=s.node.edges["*"];else{var c=new t.TokenSet;s.node.edges["*"]=c}s.str.length==1&&(c.final=!0),i.push({node:c,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var f=s.str.charAt(0),g=s.str.charAt(1),l;g in s.node.edges?l=s.node.edges[g]:(l=new t.TokenSet,s.node.edges[g]=l),s.str.length==1&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:f+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof K=="object"?ee.exports=r():e.lunr=r()}(this,function(){return t})})()});var de=Pe(te());function re(t,e=document){let r=ke(t,e);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${t}" to be present`);return r}function ke(t,e=document){return e.querySelector(t)||void 0}Object.entries||(Object.entries=function(t){let e=[];for(let r of Object.keys(t))e.push([r,t[r]]);return e});Object.values||(Object.values=function(t){let e=[];for(let r of Object.keys(t))e.push(t[r]);return e});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(t,e){typeof t=="object"?(this.scrollLeft=t.left,this.scrollTop=t.top):(this.scrollLeft=t,this.scrollTop=e)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...t){let e=this.parentNode;if(e){t.length===0&&e.removeChild(this);for(let r=t.length-1;r>=0;r--){let n=t[r];typeof n=="string"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?e.insertBefore(this.previousSibling,n):e.replaceChild(n,this)}}}));function ne(t){let e=new Map;for(let r of t){let[n]=r.location.split("#"),i=e.get(n);typeof i=="undefined"?e.set(n,r):(e.set(r.location,r),r.parent=i)}return e}function H(t,e,r){var s;e=new RegExp(e,"g");let n,i=0;do{n=e.exec(t);let o=(s=n==null?void 0:n.index)!=null?s:t.length;if(in?e(r,1,n,n=i):t.charAt(i)===">"&&(t.charAt(n+1)==="/"?--s===0&&e(r++,2,n,i+1):t.charAt(i-1)!=="/"&&s++===0&&e(r,0,n,i+1),n=i+1);i>n&&e(r,1,n,i)}function se(t,e,r,n=!1){return q([t],e,r,n).pop()}function q(t,e,r,n=!1){let i=[0];for(let s=1;s>>2&1023,c=a[0]>>>12;i.push(+(u>c)+i[i.length-1])}return t.map((s,o)=>{let a=0,u=new Map;for(let f of r.sort((g,l)=>g-l)){let g=f&1048575,l=f>>>20;if(i[l]!==o)continue;let m=u.get(l);typeof m=="undefined"&&u.set(l,m=[]),m.push(g)}if(u.size===0)return s;let c=[];for(let[f,g]of u){let l=e[f],m=l[0]>>>12,x=l[l.length-1]>>>12,v=l[l.length-1]>>>2&1023;n&&m>a&&c.push(s.slice(a,m));let d=s.slice(m,x+v);for(let y of g.sort((b,E)=>E-b)){let b=(l[y]>>>12)-m,E=(l[y]>>>2&1023)+b;d=[d.slice(0,b),"",d.slice(b,E),"",d.slice(E)].join("")}if(a=x+v,c.push(d)===2)break}return n&&a{var f;switch(i[f=o+=s]||(i[f]=[]),a){case 0:case 2:i[o].push(u<<12|c-u<<2|a);break;case 1:let g=r[n].slice(u,c);H(g,lunr.tokenizer.separator,(l,m)=>{if(typeof lunr.segmenter!="undefined"){let x=g.slice(l,m);if(/^[MHIK]$/.test(lunr.segmenter.ctype_(x))){let v=lunr.segmenter.segment(x);for(let d=0,y=0;dr){return t.trim().split(/"([^"]+)"/g).map((r,n)=>n&1?r.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g," +"):r).join("").replace(/"|(?:^|\s+)[*+\-:^~]+(?=\s+|$)/g,"").split(/\s+/g).reduce((r,n)=>{let i=e(n);return[...r,...Array.isArray(i)?i:[i]]},[]).map(r=>/([~^]$)/.test(r)?`${r}1`:r).map(r=>/(^[+-]|[~^]\d+$)/.test(r)?r:`${r}*`).join(" ")}function ue(t){return ae(t,e=>{let r=[],n=new lunr.QueryLexer(e);n.run();for(let{type:i,str:s,start:o,end:a}of n.lexemes)switch(i){case"FIELD":["title","text","tags"].includes(s)||(e=[e.slice(0,a)," ",e.slice(a+1)].join(""));break;case"TERM":H(s,lunr.tokenizer.separator,(...u)=>{r.push([e.slice(0,o),s.slice(...u),e.slice(a)].join(""))})}return r})}function ce(t){let e=new lunr.Query(["title","text","tags"]);new lunr.QueryParser(t,e).parse();for(let n of e.clauses)n.usePipeline=!0,n.term.startsWith("*")&&(n.wildcard=lunr.Query.wildcard.LEADING,n.term=n.term.slice(1)),n.term.endsWith("*")&&(n.wildcard=lunr.Query.wildcard.TRAILING,n.term=n.term.slice(0,-1));return e.clauses}function le(t,e){var i;let r=new Set(t),n={};for(let s=0;s0;){let o=i[--s];for(let u=1;un[o]-u&&(r.add(t.slice(o,o+u)),i[s++]=o+u);let a=o+n[o];n[a]&&ar=>{if(typeof r[e]=="undefined")return;let n=[r.location,e].join(":");return t.set(n,lunr.tokenizer.table=[]),r[e]}}function Re(t,e){let[r,n]=[new Set(t),new Set(e)];return[...new Set([...r].filter(i=>!n.has(i)))]}var U=class{constructor({config:e,docs:r,options:n}){let i=Oe(this.table=new Map);this.map=ne(r),this.options=n,this.index=lunr(function(){this.metadataWhitelist=["position"],this.b(0),e.lang.length===1&&e.lang[0]!=="en"?this.use(lunr[e.lang[0]]):e.lang.length>1&&this.use(lunr.multiLanguage(...e.lang)),this.tokenizer=oe,lunr.tokenizer.separator=new RegExp(e.separator),lunr.segmenter="TinySegmenter"in lunr?new lunr.TinySegmenter:void 0;let s=Re(["trimmer","stopWordFilter","stemmer"],e.pipeline);for(let o of e.lang.map(a=>a==="en"?lunr:lunr[a]))for(let a of s)this.pipeline.remove(o[a]),this.searchPipeline.remove(o[a]);this.ref("location");for(let[o,a]of Object.entries(e.fields))this.field(o,B(_({},a),{extractor:i(o)}));for(let o of r)this.add(o,{boost:o.boost})})}search(e){if(e=e.replace(new RegExp("\\p{sc=Han}+","gu"),s=>[...he(s,this.index.invertedIndex)].join("* ")),e=ue(e),!e)return{items:[]};let r=ce(e).filter(s=>s.presence!==lunr.Query.presence.PROHIBITED),n=this.index.search(e).reduce((s,{ref:o,score:a,matchData:u})=>{let c=this.map.get(o);if(typeof c!="undefined"){c=_({},c),c.tags&&(c.tags=[...c.tags]);let f=le(r,Object.keys(u.metadata));for(let l of this.index.fields){if(typeof c[l]=="undefined")continue;let m=[];for(let d of Object.values(u.metadata))typeof d[l]!="undefined"&&m.push(...d[l].position);if(!m.length)continue;let x=this.table.get([c.location,l].join(":")),v=Array.isArray(c[l])?q:se;c[l]=v(c[l],x,m,l!=="text")}let g=+!c.parent+Object.values(f).filter(l=>l).length/Object.keys(f).length;s.push(B(_({},c),{score:a*(1+Z(g,2)),terms:f}))}return s},[]).sort((s,o)=>o.score-s.score).reduce((s,o)=>{let a=this.map.get(o.location);if(typeof a!="undefined"){let u=a.parent?a.parent.location:a.location;s.set(u,[...s.get(u)||[],o])}return s},new Map);for(let[s,o]of n)if(!o.find(a=>a.location===s)){let a=this.map.get(s);o.push(B(_({},a),{score:0,terms:{}}))}let i;if(this.options.suggest){let s=this.index.query(o=>{for(let a of r)o.term(a.term,{fields:["title"],presence:lunr.Query.presence.REQUIRED,wildcard:lunr.Query.wildcard.TRAILING})});i=s.length?Object.keys(s[0].matchData.metadata):[]}return _({items:[...n.values()]},typeof i!="undefined"&&{suggest:i})}};var fe;function Ie(t){return W(this,null,function*(){let e="../lunr";if(typeof parent!="undefined"&&"IFrameWorker"in parent){let n=re("script[src]"),[i]=n.src.split("/worker");e=e.replace("..",i)}let r=[];for(let n of t.lang){switch(n){case"ja":r.push(`${e}/tinyseg.js`);break;case"hi":case"th":r.push(`${e}/wordcut.js`);break}n!=="en"&&r.push(`${e}/min/lunr.${n}.min.js`)}t.lang.length>1&&r.push(`${e}/min/lunr.multi.min.js`),r.length&&(yield importScripts(`${e}/min/lunr.stemmer.support.min.js`,...r))})}function Fe(t){return W(this,null,function*(){switch(t.type){case 0:return yield Ie(t.data.config),fe=new U(t.data),{type:1};case 2:let e=t.data;try{return{type:3,data:fe.search(e)}}catch(r){return console.warn(`Invalid query: ${e} \u2013 see https://bit.ly/2s3ChXG`),console.warn(r),{type:3,data:{items:[]}}}default:throw new TypeError("Invalid message type")}})}self.lunr=de.default;addEventListener("message",t=>W(void 0,null,function*(){postMessage(yield Fe(t.data))}));})(); diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bd207c1e7b871efb7aa34282b0b35eff829994ab GIT binary patch literal 3624 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 NOpM5e5A@yR{{!Xx6o3E# literal 0 HcmV?d00001 diff --git a/assets/stylesheets/main.ca286e8c.min.css b/assets/stylesheets/main.ca286e8c.min.css new file mode 100644 index 000000000..d9564ab9d --- /dev/null +++ b/assets/stylesheets/main.ca286e8c.min.css @@ -0,0 +1 @@ +@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:#0000;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-scheme=default]{color-scheme:light}[data-md-color-scheme=default] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=default] img[src$="#only-dark"]{display:none}:root,[data-md-color-scheme=default]{--md-hue:225deg;--md-default-fg-color:#000000de;--md-default-fg-color--light:#0000008a;--md-default-fg-color--lighter:#00000052;--md-default-fg-color--lightest:#00000012;--md-default-bg-color:#fff;--md-default-bg-color--light:#ffffffb3;--md-default-bg-color--lighter:#ffffff4d;--md-default-bg-color--lightest:#ffffff1f;--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-bg-color--light:#f5f5f5b3;--md-code-bg-color--lighter:#f5f5f54d;--md-code-hl-color:#4287ff;--md-code-hl-color--light:#4287ff1a;--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-del-color:#f5503d26;--md-typeset-ins-color:#0bd57026;--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-mark-color:#ffff0080;--md-typeset-table-color:#0000001f;--md-typeset-table-color--light:rgba(0,0,0,.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-warning-fg-color:#000000de;--md-warning-bg-color:#ff9;--md-footer-fg-color:#fff;--md-footer-fg-color--light:#ffffffb3;--md-footer-fg-color--lighter:#ffffff73;--md-footer-bg-color:#000000de;--md-footer-bg-color--dark:#00000052;--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #0000001a,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0003,0 0 0.05rem #00000059}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}aside,body,input{font-feature-settings:"kern","liga";color:var(--md-typeset-color);font-family:var(--md-text-font-family)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset a code{color:var(--md-typeset-a-color)}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none;transition:background-color 125ms}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;transition:color 125ms,background-color 125ms;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{cursor:help;text-decoration:none}.md-typeset [data-preview],.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light)}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}[dir=ltr] .md-typeset ol li ol,[dir=ltr] .md-typeset ol li ul,[dir=ltr] .md-typeset ul li ol,[dir=ltr] .md-typeset ul li ul{margin-left:.625em}[dir=rtl] .md-typeset ol li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ul li ul{margin-right:.625em}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block;margin:0 auto}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) td>:first-child,.md-typeset table:not([class]) th>:first-child{margin-top:0}.md-typeset table:not([class]) td>:last-child,.md-typeset table:not([class]) th>:last-child{margin-bottom:0}.md-typeset table:not([class]) td:not([align]),.md-typeset table:not([class]) th:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) td:not([align]),[dir=rtl] .md-typeset table:not([class]) th:not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:var(--md-typeset-table-color--light);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.984375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-typeset .md-author{border-radius:100%;display:block;flex-shrink:0;height:1.6rem;overflow:hidden;position:relative;transition:color 125ms,transform 125ms;width:1.6rem}.md-typeset .md-author img{display:block}.md-typeset .md-author--more{background:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);font-size:.6rem;font-weight:700;line-height:1.6rem;text-align:center}.md-typeset .md-author--long{height:2.4rem;width:2.4rem}.md-typeset a.md-author{transform:scale(1)}.md-typeset a.md-author img{filter:grayscale(100%) opacity(75%);transition:filter 125ms}.md-typeset a.md-author:focus,.md-typeset a.md-author:hover{transform:scale(1.1);z-index:1}.md-typeset a.md-author:focus img,.md-typeset a.md-author:hover img{filter:grayscale(0)}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background-color:var(--md-warning-bg-color);color:var(--md-warning-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.no-js .md-banner__button{display:none}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.984375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:focus,.md-clipboard:hover{color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:focus code,.md-clipboard--inline:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}:root{--md-code-select-icon:url('data:image/svg+xml;charset=utf-8,');--md-code-copy-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-code__content{display:grid}.md-code__nav{background-color:var(--md-code-bg-color--lighter);border-radius:.1rem;display:flex;gap:.2rem;padding:.2rem;position:absolute;right:.25em;top:.25em;transition:background-color .25s;z-index:1}:hover>.md-code__nav{background-color:var(--md-code-bg-color--light)}.md-code__button{color:var(--md-default-fg-color--lightest);cursor:pointer;display:block;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;transition:color .25s;width:1.5em}:hover>*>.md-code__button{color:var(--md-default-fg-color--light)}.md-code__button.focus-visible,.md-code__button:hover{color:var(--md-accent-fg-color)}.md-code__button--active{color:var(--md-default-fg-color)!important}.md-code__button:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-code__button[data-md-type=select]:after{-webkit-mask-image:var(--md-code-select-icon);mask-image:var(--md-code-select-icon)}.md-code__button[data-md-type=copy]:after{-webkit-mask-image:var(--md-code-copy-icon);mask-image:var(--md-code-copy-icon)}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:#0000008a;height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.984375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{display:flex;flex-wrap:wrap;place-content:baseline center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{align-items:end;display:flex;flex-grow:0.01;margin-bottom:.4rem;margin-top:1rem;max-width:100%;outline-color:var(--md-accent-fg-color);overflow:hidden;transition:opacity .25s}.md-footer__link:focus,.md-footer__link:hover{opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.984375em){.md-footer__link--prev{flex-shrink:0}.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;margin-bottom:.7rem;max-width:calc(100% - 2.4rem);padding:0 1rem;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;opacity:.7}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{display:inline-flex;gap:.2rem;margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:focus,.md-typeset .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:focus,.md-typeset .md-input:hover{border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem #0000,0 .2rem .4rem #0000;color:var(--md-primary-bg-color);display:block;left:0;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.234375em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo img,.md-header__button.md-logo svg{fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-left:1rem;margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem;margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__option>input{bottom:0}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}.md-meta{color:var(--md-default-fg-color--light);font-size:.7rem;line-height:1.3}.md-meta__list{display:inline-flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.md-meta__item:not(:last-child):after{content:"·";margin-left:.2rem;margin-right:.2rem}.md-meta__link{color:var(--md-typeset-a-color)}.md-meta__link:focus,.md-meta__link:hover{color:var(--md-accent-fg-color)}.md-draft{background-color:#ff1744;border-radius:.125em;color:#fff;display:inline-block;font-weight:700;padding-left:.5714285714em;padding-right:.5714285714em}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{color:var(--md-default-fg-color--light);display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo img,.md-nav__title .md-nav__button.md-logo svg{fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__link{align-items:flex-start;display:flex;gap:.4rem;margin-top:.625em;scroll-snap-align:start;transition:color 125ms}.md-nav__link--passed,.md-nav__link--passed code{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active,.md-nav__item .md-nav__link--active code{color:var(--md-typeset-a-color)}.md-nav__link .md-ellipsis{position:relative}.md-nav__link .md-ellipsis code{word-break:normal}[dir=ltr] .md-nav__link .md-icon:last-child{margin-left:auto}[dir=rtl] .md-nav__link .md-icon:last-child{margin-right:auto}.md-nav__link .md-typeset{font-size:.7rem;line-height:1.3}.md-nav__link svg{fill:currentcolor;flex-shrink:0;height:1.3em}.md-nav__link[for]:focus,.md-nav__link[for]:hover,.md-nav__link[href]:focus,.md-nav__link[href]:hover{color:var(--md-accent-fg-color);cursor:pointer}.md-nav__link[for]:focus code,.md-nav__link[for]:hover code,.md-nav__link[href]:focus code,.md-nav__link[href]:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__container>.md-nav__link{margin-top:0}.md-nav__container>.md-nav__link:first-child{flex-grow:1;min-width:0}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.234375em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary .md-nav__item,.md-nav--primary .md-nav__title{font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest)}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:focus,.md-nav--primary .md-nav__item--active>.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}.md-nav--primary .md-nav__link svg{margin-top:.1em}.md-nav--primary .md-nav__link>.md-nav__link{padding:0}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.984375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav{margin-bottom:-.4rem}.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--secondary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--secondary .md-nav__list{padding-right:.6rem}.md-nav--secondary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--secondary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--secondary .md-nav__item>.md-nav__link{margin-left:.4rem}}@media screen and (min-width:76.25em){.md-nav{margin-bottom:-.4rem;transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--primary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--primary .md-nav__list{padding-right:.6rem}.md-nav--primary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--primary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--primary .md-nav__item>.md-nav__link{margin-left:.4rem}.md-nav__toggle~.md-nav{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .25s,visibility 0ms .25s;visibility:collapse}.md-nav__toggle~.md-nav>.md-nav__list{overflow:hidden}.md-nav__toggle.md-toggle--indeterminate~.md-nav,.md-nav__toggle:checked~.md-nav{grid-template-rows:1fr;opacity:1;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .15s .1s,visibility 0ms;visibility:visible}.md-nav__toggle.md-toggle--indeterminate~.md-nav{transition:none}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700}.md-nav__item--section>.md-nav__link[for]{color:var(--md-default-fg-color--light)}.md-nav__item--section>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav__item--section>.md-nav__link .md-icon,.md-nav__item--section>.md-nav__link>[for]{display:none}[dir=ltr] .md-nav__item--section>.md-nav{margin-left:-.6rem}[dir=rtl] .md-nav__item--section>.md-nav{margin-right:-.6rem}.md-nav__item--section>.md-nav{display:block;opacity:1;visibility:visible}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s;width:.9rem}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;border-radius:100%;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:transform .25s;vertical-align:-.1rem;width:100%}[dir=rtl] .md-nav__icon:after{transform:rotate(180deg)}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon:after,.md-nav__item--nested .md-toggle--indeterminate~.md-nav__link .md-nav__icon:after{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);margin-top:0;position:sticky;top:0;z-index:1}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active.md-nav__item--section{margin:0}[dir=ltr] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav{margin-left:-.6rem}[dir=rtl] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav{margin-right:-.6rem}.md-nav--lifted>.md-nav__list>.md-nav__item>[for]{color:var(--md-default-fg-color--light)}.md-nav--lifted .md-nav[data-md-level="1"]{grid-template-rows:1fr;opacity:1;visibility:visible}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested){padding:0 .6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested)>.md-nav__link{padding:0}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em;opacity:1;visibility:visible}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__list{overflow:visible;padding-bottom:0}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}.md-pagination{font-size:.8rem;font-weight:700;gap:.4rem}.md-pagination,.md-pagination>*{align-items:center;display:flex;justify-content:center}.md-pagination>*{border-radius:.2rem;height:1.8rem;min-width:1.8rem;text-align:center}.md-pagination__current{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light)}.md-pagination__link{transition:color 125ms,background-color 125ms}.md-pagination__link:focus,.md-pagination__link:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-pagination__link:focus svg,.md-pagination__link:hover svg{color:var(--md-accent-fg-color)}.md-pagination__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-pagination__link svg{fill:currentcolor;color:var(--md-default-fg-color--lighter);display:block;max-height:100%;width:1.2rem}:root{--md-path-icon:url('data:image/svg+xml;charset=utf-8,')}.md-path{font-size:.7rem;margin:0 .8rem;overflow:auto;padding-top:1.2rem}.md-path:not([hidden]){display:block}@media screen and (min-width:76.25em){.md-path{margin:0 1.2rem}}.md-path__list{align-items:center;display:flex;gap:.2rem;list-style:none;margin:0;padding:0}.md-path__item:not(:first-child){display:inline-flex;gap:.2rem;white-space:nowrap}.md-path__item:not(:first-child):before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline;height:.8rem;-webkit-mask-image:var(--md-path-icon);mask-image:var(--md-path-icon);width:.8rem}.md-path__link{align-items:center;color:var(--md-default-fg-color--light);display:flex}.md-path__link:focus,.md-path__link:hover{color:var(--md-accent-fg-color)}.md-post__back{border-bottom:.05rem solid var(--md-default-fg-color--lightest);margin-bottom:1.2rem;padding-bottom:1.2rem}@media screen and (max-width:76.234375em){.md-post__back{display:none}}[dir=rtl] .md-post__back svg{transform:scaleX(-1)}.md-post__authors{display:flex;flex-direction:column;gap:.6rem;margin:0 .6rem 1.2rem}.md-post .md-post__meta a{transition:color 125ms}.md-post .md-post__meta a:focus,.md-post .md-post__meta a:hover{color:var(--md-accent-fg-color)}.md-post__title{color:var(--md-default-fg-color--light);font-weight:700}.md-post--excerpt{margin-bottom:3.2rem}.md-post--excerpt .md-post__header{align-items:center;display:flex;gap:.6rem;min-height:1.6rem}.md-post--excerpt .md-post__authors{align-items:center;display:inline-flex;flex-direction:row;gap:.2rem;margin:0;min-height:2.4rem}[dir=ltr] .md-post--excerpt .md-post__meta .md-meta__list{margin-right:.4rem}[dir=rtl] .md-post--excerpt .md-post__meta .md-meta__list{margin-left:.4rem}.md-post--excerpt .md-post__content>:first-child{--md-scroll-margin:6rem;margin-top:0}.md-post>.md-nav--secondary{margin:1em 0}.md-profile{align-items:center;display:flex;font-size:.7rem;gap:.6rem;line-height:1.4;width:100%}.md-profile__description{flex-grow:1}.md-content--post{display:flex}@media screen and (max-width:76.234375em){.md-content--post{flex-flow:column-reverse}}.md-content--post>.md-content__inner{min-width:0}@media screen and (min-width:76.25em){[dir=ltr] .md-content--post>.md-content__inner{margin-left:1.2rem}[dir=rtl] .md-content--post>.md-content__inner{margin-right:1.2rem}}@media screen and (max-width:76.234375em){.md-sidebar.md-sidebar--post{padding:0;position:static;width:100%}.md-sidebar.md-sidebar--post .md-sidebar__scrollwrap{overflow:visible}.md-sidebar.md-sidebar--post .md-sidebar__inner{padding:0}.md-sidebar.md-sidebar--post .md-post__meta{margin-left:.6rem;margin-right:.6rem}.md-sidebar.md-sidebar--post .md-nav__item{border:none;display:inline}.md-sidebar.md-sidebar--post .md-nav__list{display:inline-flex;flex-wrap:wrap;gap:.6rem;padding-bottom:.6rem;padding-top:.6rem}.md-sidebar.md-sidebar--post .md-nav__link{padding:0}.md-sidebar.md-sidebar--post .md-nav{height:auto;margin-bottom:0;position:static}}:root{--md-progress-value:0;--md-progress-delay:400ms}.md-progress{background:var(--md-primary-bg-color);height:.075rem;opacity:min(clamp(0,var(--md-progress-value),1),clamp(0,100 - var(--md-progress-value),1));position:fixed;top:0;transform:scaleX(calc(var(--md-progress-value)*1%));transform-origin:left;transition:transform .5s cubic-bezier(.19,1,.22,1),opacity .25s var(--md-progress-delay);width:100%;z-index:4}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:#0000008a;cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.234375em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem #0000;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:#00000042;border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:#ffffff1f}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem #00000012;color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:#0000;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::placeholder{transition:color .25s}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.984375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:#0000}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>.md-icon{margin-left:.2rem}[dir=rtl] .md-search__options>.md-icon{margin-right:.2rem}.md-search__options>.md-icon{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>.md-icon:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.984375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:focus,.md-search-result__link:hover{background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more>summary{cursor:pointer;display:block;outline:none;position:sticky;scroll-snap-align:start;top:0;z-index:1}.md-search-result__more>summary::marker{display:none}.md-search-result__more>summary::-webkit-details-marker{display:none}.md-search-result__more>summary>div{color:var(--md-typeset-a-color);font-size:.64rem;padding:.75em .8rem;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more>summary>div{padding-left:2.2rem}[dir=rtl] .md-search-result__more>summary>div{padding-right:2.2rem}}.md-search-result__more>summary:focus>div,.md-search-result__more>summary:hover>div{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more[open]>summary{background-color:var(--md-default-bg-color)}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.984375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result .md-typeset{color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.6}.md-search-result .md-typeset h1{color:var(--md-default-fg-color);font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}.md-search-result .md-typeset h1 mark{text-decoration:none}.md-search-result .md-typeset h2{color:var(--md-default-fg-color);font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result .md-typeset h2 mark{text-decoration:none}.md-search-result__terms{color:var(--md-default-fg-color);display:block;font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color);text-decoration:underline}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:focus-within .md-select__inner,.md-select:hover .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid #0000;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid #0000;border-right:.2rem solid #0000;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:focus,.md-select__link:hover{color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.234375em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap:focus-within,.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.234375em){.md-overlay{background-color:#0000008a;height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-source-file{margin:1em 0}[dir=ltr] .md-source-file__fact{margin-right:.6rem}[dir=rtl] .md-source-file__fact{margin-left:.6rem}.md-source-file__fact{align-items:center;color:var(--md-default-fg-color--light);display:inline-flex;font-size:.68rem;gap:.3rem}.md-source-file__fact .md-icon{flex-shrink:0;margin-bottom:.05rem}[dir=ltr] .md-source-file__fact .md-author{float:left}[dir=rtl] .md-source-file__fact .md-author{float:right}.md-source-file__fact .md-author{margin-right:.2rem}.md-source-file__fact svg{width:.9rem}:root{--md-status:url('data:image/svg+xml;charset=utf-8,');--md-status--new:url('data:image/svg+xml;charset=utf-8,');--md-status--deprecated:url('data:image/svg+xml;charset=utf-8,');--md-status--encrypted:url('data:image/svg+xml;charset=utf-8,')}.md-status:after{background-color:var(--md-default-fg-color--light);content:"";display:inline-block;height:1.125em;-webkit-mask-image:var(--md-status);mask-image:var(--md-status);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-bottom;width:1.125em}.md-status:hover:after{background-color:currentcolor}.md-status--new:after{-webkit-mask-image:var(--md-status--new);mask-image:var(--md-status--new)}.md-status--deprecated:after{-webkit-mask-image:var(--md-status--deprecated);mask-image:var(--md-status--deprecated)}.md-status--encrypted:after{-webkit-mask-image:var(--md-status--encrypted);mask-image:var(--md-status--encrypted)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.234375em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;display:flex;list-style:none;margin:0;overflow:auto;padding:0;scrollbar-width:none;white-space:nowrap}.md-tabs__list::-webkit-scrollbar{display:none}.md-tabs__item{height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__item--active .md-tabs__link{color:inherit;opacity:1}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link:focus,.md-tabs__link:hover{color:inherit;opacity:1}[dir=ltr] .md-tabs__link svg{margin-right:.4rem}[dir=rtl] .md-tabs__link svg{margin-left:.4rem}.md-tabs__link svg{fill:currentcolor;height:1.3em}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-tags:not([hidden]){display:inline-flex;flex-wrap:wrap;gap:.5em;margin-bottom:.75em;margin-top:-.125em}.md-typeset .md-tag{align-items:center;background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-flex;font-size:.64rem;font-size:min(.8em,.64rem);font-weight:700;gap:.5em;letter-spacing:normal;line-height:1.6;padding:.3125em .78125em}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-shadow{opacity:.5}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon[href]:focus:before,.md-typeset .md-tag-icon[href]:hover:before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{transform:scale(.95)}75%{transform:scale(1)}to{transform:scale(.95)}}:root{--md-annotation-bg-icon:url('data:image/svg+xml;charset=utf-8,');--md-annotation-icon:url('data:image/svg+xml;charset=utf-8,')}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip--inline{font-weight:700;-webkit-user-select:none;user-select:none;width:auto}.md-tooltip--inline:not(.md-tooltip--active){transform:translateY(.2rem) scale(.9)}.md-tooltip--inline .md-tooltip__inner{font-size:.5rem;padding:.2rem .4rem}[hidden]+.md-tooltip--inline{display:none}.focus-visible>.md-tooltip,.md-tooltip:target{outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-weight:400;outline:none;vertical-align:text-bottom;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}code .md-annotation{font-family:var(--md-code-font-family);font-size:inherit}.md-annotation:not([hidden]){display:inline-block;line-height:1.25}.md-annotation__index{border-radius:.01px;cursor:pointer;display:inline-block;margin-left:.4ch;margin-right:.4ch;outline:none;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;vertical-align:text-top;z-index:0}.md-annotation .md-annotation__index{transition:z-index .25s}@media screen{.md-annotation__index{width:2.2ch}[data-md-visible]>.md-annotation__index{animation:pulse 2s infinite}.md-annotation__index:before{background:var(--md-default-bg-color);-webkit-mask-image:var(--md-annotation-bg-icon);mask-image:var(--md-annotation-bg-icon)}.md-annotation__index:after,.md-annotation__index:before{content:"";height:2.2ch;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:-.1ch;width:2.2ch;z-index:-1}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);-webkit-mask-image:var(--md-annotation-icon);mask-image:var(--md-annotation-icon);transform:scale(1.0001);transition:background-color .25s,transform .25s}.md-tooltip--active+.md-annotation__index:after{transform:rotate(45deg)}.md-tooltip--active+.md-annotation__index:after,:hover>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}}.md-tooltip--active+.md-annotation__index{animation-play-state:paused;transition-duration:0ms;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block}@media print{.md-annotation__index [data-md-annotation-id]{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);font-weight:700;padding:0 .6ch;white-space:nowrap}.md-annotation__index [data-md-annotation-id]:after{content:attr(data-md-annotation-id)}}.md-typeset .md-annotation-list{counter-reset:xxx;list-style:none}.md-typeset .md-annotation-list li{position:relative}[dir=ltr] .md-typeset .md-annotation-list li:before{left:-2.125em}[dir=rtl] .md-typeset .md-annotation-list li:before{right:-2.125em}.md-typeset .md-annotation-list li:before{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);content:counter(xxx);counter-increment:xxx;font-size:.8875em;font-weight:700;height:2ch;line-height:1.25;min-width:2ch;padding:0 .6ch;position:absolute;text-align:center;top:.25em}:root{--md-tooltip-width:20rem;--md-tooltip-tail:0.3rem}.md-tooltip2{-webkit-backface-visibility:hidden;backface-visibility:hidden;color:var(--md-default-fg-color);font-family:var(--md-text-font-family);opacity:0;pointer-events:none;position:absolute;top:calc(var(--md-tooltip-host-y) + var(--md-tooltip-y));transform:translateY(-.4rem);transform-origin:calc(var(--md-tooltip-host-x) + var(--md-tooltip-x)) 0;transition:transform 0ms .25s,opacity .25s,z-index .25s;width:100%;z-index:0}.md-tooltip2:before{border-left:var(--md-tooltip-tail) solid #0000;border-right:var(--md-tooltip-tail) solid #0000;content:"";display:block;left:clamp(1.5 * .8rem,var(--md-tooltip-host-x) + var(--md-tooltip-x) - var(--md-tooltip-tail),100vw - 2 * var(--md-tooltip-tail) - 1.5 * .8rem);position:absolute;z-index:1}.md-tooltip2--top:before{border-top:var(--md-tooltip-tail) solid var(--md-default-bg-color);bottom:calc(var(--md-tooltip-tail)*-1 + .025rem);filter:drop-shadow(0 1px 0 hsla(0,0%,0%,.05))}.md-tooltip2--bottom:before{border-bottom:var(--md-tooltip-tail) solid var(--md-default-bg-color);filter:drop-shadow(0 -1px 0 hsla(0,0%,0%,.05));top:calc(var(--md-tooltip-tail)*-1 + .025rem)}.md-tooltip2--active{opacity:1;transform:translateY(0);transition:transform .4s cubic-bezier(0,1,.5,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip2__inner{scrollbar-gutter:stable;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);left:clamp(.8rem,var(--md-tooltip-host-x) - .8rem,100vw - var(--md-tooltip-width) - .8rem);max-height:40vh;max-width:calc(100vw - 1.6rem);position:relative;scrollbar-width:thin}.md-tooltip2__inner::-webkit-scrollbar{height:.2rem;width:.2rem}.md-tooltip2__inner::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-tooltip2__inner::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}[role=dialog]>.md-tooltip2__inner{font-size:.64rem;overflow:auto;padding:0 .8rem;pointer-events:auto;width:var(--md-tooltip-width)}[role=dialog]>.md-tooltip2__inner:after,[role=dialog]>.md-tooltip2__inner:before{content:"";display:block;height:.8rem;position:sticky;width:100%;z-index:10}[role=dialog]>.md-tooltip2__inner:before{background:linear-gradient(var(--md-default-bg-color),#0000 75%);top:0}[role=dialog]>.md-tooltip2__inner:after{background:linear-gradient(#0000,var(--md-default-bg-color) 75%);bottom:0}[role=tooltip]>.md-tooltip2__inner{font-size:.5rem;font-weight:700;left:clamp(.8rem,var(--md-tooltip-host-x) + var(--md-tooltip-x) - var(--md-tooltip-width)/2,100vw - var(--md-tooltip-width) - .8rem);padding:.2rem .4rem;-webkit-user-select:none;user-select:none;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.md-tooltip2__inner.md-typeset>:first-child{margin-top:0}.md-tooltip2__inner.md-typeset>:last-child{margin-bottom:0}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);cursor:pointer;display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:focus,.md-top:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:focus-within .md-version__list,.md-version:hover .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (hover:none),(pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:focus,.md-version__link:hover{color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.075rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid;transition:box-shadow 125ms}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition:focus-within,.md-typeset details:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition .admonition,.md-typeset .admonition details,.md-typeset details .admonition,.md-typeset details details{margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:#448aff1a;border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset .admonition.note,.md-typeset details.note{border-color:#448aff}.md-typeset .admonition.note:focus-within,.md-typeset details.note:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .note>.admonition-title,.md-typeset .note>summary{background-color:#448aff1a}.md-typeset .note>.admonition-title:before,.md-typeset .note>summary:before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset .note>.admonition-title:after,.md-typeset .note>summary:after{color:#448aff}.md-typeset .admonition.abstract,.md-typeset details.abstract{border-color:#00b0ff}.md-typeset .admonition.abstract:focus-within,.md-typeset details.abstract:focus-within{box-shadow:0 0 0 .2rem #00b0ff1a}.md-typeset .abstract>.admonition-title,.md-typeset .abstract>summary{background-color:#00b0ff1a}.md-typeset .abstract>.admonition-title:before,.md-typeset .abstract>summary:before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset .abstract>.admonition-title:after,.md-typeset .abstract>summary:after{color:#00b0ff}.md-typeset .admonition.info,.md-typeset details.info{border-color:#00b8d4}.md-typeset .admonition.info:focus-within,.md-typeset details.info:focus-within{box-shadow:0 0 0 .2rem #00b8d41a}.md-typeset .info>.admonition-title,.md-typeset .info>summary{background-color:#00b8d41a}.md-typeset .info>.admonition-title:before,.md-typeset .info>summary:before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset .info>.admonition-title:after,.md-typeset .info>summary:after{color:#00b8d4}.md-typeset .admonition.tip,.md-typeset details.tip{border-color:#00bfa5}.md-typeset .admonition.tip:focus-within,.md-typeset details.tip:focus-within{box-shadow:0 0 0 .2rem #00bfa51a}.md-typeset .tip>.admonition-title,.md-typeset .tip>summary{background-color:#00bfa51a}.md-typeset .tip>.admonition-title:before,.md-typeset .tip>summary:before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset .tip>.admonition-title:after,.md-typeset .tip>summary:after{color:#00bfa5}.md-typeset .admonition.success,.md-typeset details.success{border-color:#00c853}.md-typeset .admonition.success:focus-within,.md-typeset details.success:focus-within{box-shadow:0 0 0 .2rem #00c8531a}.md-typeset .success>.admonition-title,.md-typeset .success>summary{background-color:#00c8531a}.md-typeset .success>.admonition-title:before,.md-typeset .success>summary:before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset .success>.admonition-title:after,.md-typeset .success>summary:after{color:#00c853}.md-typeset .admonition.question,.md-typeset details.question{border-color:#64dd17}.md-typeset .admonition.question:focus-within,.md-typeset details.question:focus-within{box-shadow:0 0 0 .2rem #64dd171a}.md-typeset .question>.admonition-title,.md-typeset .question>summary{background-color:#64dd171a}.md-typeset .question>.admonition-title:before,.md-typeset .question>summary:before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset .question>.admonition-title:after,.md-typeset .question>summary:after{color:#64dd17}.md-typeset .admonition.warning,.md-typeset details.warning{border-color:#ff9100}.md-typeset .admonition.warning:focus-within,.md-typeset details.warning:focus-within{box-shadow:0 0 0 .2rem #ff91001a}.md-typeset .warning>.admonition-title,.md-typeset .warning>summary{background-color:#ff91001a}.md-typeset .warning>.admonition-title:before,.md-typeset .warning>summary:before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset .warning>.admonition-title:after,.md-typeset .warning>summary:after{color:#ff9100}.md-typeset .admonition.failure,.md-typeset details.failure{border-color:#ff5252}.md-typeset .admonition.failure:focus-within,.md-typeset details.failure:focus-within{box-shadow:0 0 0 .2rem #ff52521a}.md-typeset .failure>.admonition-title,.md-typeset .failure>summary{background-color:#ff52521a}.md-typeset .failure>.admonition-title:before,.md-typeset .failure>summary:before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset .failure>.admonition-title:after,.md-typeset .failure>summary:after{color:#ff5252}.md-typeset .admonition.danger,.md-typeset details.danger{border-color:#ff1744}.md-typeset .admonition.danger:focus-within,.md-typeset details.danger:focus-within{box-shadow:0 0 0 .2rem #ff17441a}.md-typeset .danger>.admonition-title,.md-typeset .danger>summary{background-color:#ff17441a}.md-typeset .danger>.admonition-title:before,.md-typeset .danger>summary:before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset .danger>.admonition-title:after,.md-typeset .danger>summary:after{color:#ff1744}.md-typeset .admonition.bug,.md-typeset details.bug{border-color:#f50057}.md-typeset .admonition.bug:focus-within,.md-typeset details.bug:focus-within{box-shadow:0 0 0 .2rem #f500571a}.md-typeset .bug>.admonition-title,.md-typeset .bug>summary{background-color:#f500571a}.md-typeset .bug>.admonition-title:before,.md-typeset .bug>summary:before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset .bug>.admonition-title:after,.md-typeset .bug>summary:after{color:#f50057}.md-typeset .admonition.example,.md-typeset details.example{border-color:#7c4dff}.md-typeset .admonition.example:focus-within,.md-typeset details.example:focus-within{box-shadow:0 0 0 .2rem #7c4dff1a}.md-typeset .example>.admonition-title,.md-typeset .example>summary{background-color:#7c4dff1a}.md-typeset .example>.admonition-title:before,.md-typeset .example>summary:before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset .example>.admonition-title:after,.md-typeset .example>summary:after{color:#7c4dff}.md-typeset .admonition.quote,.md-typeset details.quote{border-color:#9e9e9e}.md-typeset .admonition.quote:focus-within,.md-typeset details.quote:focus-within{box-shadow:0 0 0 .2rem #9e9e9e1a}.md-typeset .quote>.admonition-title,.md-typeset .quote>summary{background-color:#9e9e9e1a}.md-typeset .quote>.admonition-title:before,.md-typeset .quote>summary:before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset .quote>.admonition-title:after,.md-typeset .quote>summary:after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:hover .footnote-backref,.md-typeset .footnote>ol>li:target .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :hover>.headerlink,.md-typeset :target>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset .headerlink:hover,.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset h1:target,.md-typeset h2:target,.md-typeset h3:target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.984375em){.md-typeset div.arithmatex{margin:0 -.8rem}.md-typeset div.arithmatex>*{width:-webkit-min-content;width:min-content}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset div.arithmatex mjx-assistive-mml{height:0}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset del.critic,.md-typeset ins.critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{-webkit-box-decoration-break:clone;box-decoration-break:clone;color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem;overflow:hidden}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset .emojione,.md-typeset .gemoji,.md-typeset .twemoji{--md-icon-size:1.125em;display:inline-flex;height:var(--md-icon-size);vertical-align:text-top}.md-typeset .emojione svg,.md-typeset .gemoji svg,.md-typeset .twemoji svg{fill:currentcolor;max-height:100%;width:var(--md-icon-size)}.md-typeset .lg,.md-typeset .xl,.md-typeset .xxl,.md-typeset .xxxl{vertical-align:text-bottom}.md-typeset .middle{vertical-align:middle}.md-typeset .lg{--md-icon-size:1.5em}.md-typeset .xl{--md-icon-size:2.25em}.md-typeset .xxl{--md-icon-size:3em}.md-typeset .xxxl{--md-icon-size:4em}.highlight .o,.highlight .ow{color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight .cpf,.highlight .l,.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .si,.highlight .ss{color:var(--md-code-hl-string-color)}.highlight .cp,.highlight .se,.highlight .sh,.highlight .sr,.highlight .sx{color:var(--md-code-hl-special-color)}.highlight .il,.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:var(--md-code-hl-number-color)}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:var(--md-code-hl-keyword-color)}.highlight .kc,.highlight .n{color:var(--md-code-hl-name-color)}.highlight .bp,.highlight .nb,.highlight .no{color:var(--md-code-hl-constant-color)}.highlight .nc,.highlight .ne,.highlight .nf,.highlight .nn{color:var(--md-code-hl-function-color)}.highlight .nd,.highlight .ni,.highlight .nl,.highlight .nt{color:var(--md-code-hl-keyword-color)}.highlight .c,.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cs,.highlight .sd{color:var(--md-code-hl-comment-color)}.highlight .na,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--md-code-hl-variable-color)}.highlight .ge,.highlight .gh,.highlight .go,.highlight .gp,.highlight .gr,.highlight .gs,.highlight .gt,.highlight .gu{color:var(--md-code-hl-generic-color)}.highlight .gd,.highlight .gi{border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color--light);box-shadow:2px 0 0 0 var(--md-code-hl-color) inset;display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:sticky;-webkit-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying]{display:block}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable tbody,.highlighttable td{display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .linenodiv span[class]{padding-right:.5882352941em}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.984375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:after,.md-typeset .keys kbd:before{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-set>input.focus-visible~.tabbed-labels:before{background-color:var(--md-accent-fg-color)}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-default-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,background-color .25s,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid #0000;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-default-fg-color)}.md-typeset .tabbed-labels>label>[href]:first-child{color:inherit}.md-typeset .tabbed-labels--linked>label{padding:0}.md-typeset .tabbed-labels--linked>label>a{display:block;padding:.78125em 1.25em .625em}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,#0000);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,#0000);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.984375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-default-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-default-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color);--md-mermaid-sequence-actor-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actor-fg-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-actor-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-actor-line-color:var(--md-default-fg-color--lighter);--md-mermaid-sequence-actorman-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actorman-line-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-box-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-box-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-label-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-label-fg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-loop-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-loop-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-loop-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-message-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-message-line-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-note-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-border-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-number-bg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-number-fg-color:var(--md-accent-bg-color)}.mermaid{line-height:normal;margin:1em 0}.md-typeset .grid{grid-gap:.4rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));margin:1em 0}.md-typeset .grid.cards>ol,.md-typeset .grid.cards>ul{display:contents}.md-typeset .grid.cards>ol>li,.md-typeset .grid.cards>ul>li,.md-typeset .grid>.card{border:.05rem solid var(--md-default-fg-color--lightest);border-radius:.1rem;display:block;margin:0;padding:.8rem;transition:border .25s,box-shadow .25s}.md-typeset .grid.cards>ol>li:focus-within,.md-typeset .grid.cards>ol>li:hover,.md-typeset .grid.cards>ul>li:focus-within,.md-typeset .grid.cards>ul>li:hover,.md-typeset .grid>.card:focus-within,.md-typeset .grid>.card:hover{border-color:#0000;box-shadow:var(--md-shadow-z2)}.md-typeset .grid.cards>ol>li>hr,.md-typeset .grid.cards>ul>li>hr,.md-typeset .grid>.card>hr{margin-bottom:1em;margin-top:1em}.md-typeset .grid.cards>ol>li>:first-child,.md-typeset .grid.cards>ul>li>:first-child,.md-typeset .grid>.card>:first-child{margin-top:0}.md-typeset .grid.cards>ol>li>:last-child,.md-typeset .grid.cards>ul>li>:last-child,.md-typeset .grid>.card>:last-child{margin-bottom:0}.md-typeset .grid>*,.md-typeset .grid>.admonition,.md-typeset .grid>.highlight>*,.md-typeset .grid>.highlighttable,.md-typeset .grid>.md-typeset details,.md-typeset .grid>details,.md-typeset .grid>pre{margin-bottom:0;margin-top:0}.md-typeset .grid>.highlight>pre:only-child,.md-typeset .grid>.highlight>pre>code,.md-typeset .grid>.highlighttable,.md-typeset .grid>.highlighttable>tbody,.md-typeset .grid>.highlighttable>tbody>tr,.md-typeset .grid>.highlighttable>tbody>tr>.code,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre>code{height:100%}.md-typeset .grid>.tabbed-set{margin-bottom:0;margin-top:0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}} \ No newline at end of file diff --git a/assets/stylesheets/palette.ab4e12ef.min.css b/assets/stylesheets/palette.ab4e12ef.min.css new file mode 100644 index 000000000..75aaf8425 --- /dev/null +++ b/assets/stylesheets/palette.ab4e12ef.min.css @@ -0,0 +1 @@ +@media screen{[data-md-color-scheme=slate]{--md-default-fg-color:hsla(var(--md-hue),15%,90%,0.82);--md-default-fg-color--light:hsla(var(--md-hue),15%,90%,0.56);--md-default-fg-color--lighter:hsla(var(--md-hue),15%,90%,0.32);--md-default-fg-color--lightest:hsla(var(--md-hue),15%,90%,0.12);--md-default-bg-color:hsla(var(--md-hue),15%,14%,1);--md-default-bg-color--light:hsla(var(--md-hue),15%,14%,0.54);--md-default-bg-color--lighter:hsla(var(--md-hue),15%,14%,0.26);--md-default-bg-color--lightest:hsla(var(--md-hue),15%,14%,0.07);--md-code-fg-color:hsla(var(--md-hue),18%,86%,0.82);--md-code-bg-color:hsla(var(--md-hue),15%,18%,1);--md-code-bg-color--light:hsla(var(--md-hue),15%,18%,0.9);--md-code-bg-color--lighter:hsla(var(--md-hue),15%,18%,0.54);--md-code-hl-color:#2977ff;--md-code-hl-color--light:#2977ff1a;--md-code-hl-number-color:#e6695b;--md-code-hl-special-color:#f06090;--md-code-hl-function-color:#c973d9;--md-code-hl-constant-color:#9383e2;--md-code-hl-keyword-color:#6791e0;--md-code-hl-string-color:#2fb170;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-kbd-color:hsla(var(--md-hue),15%,90%,0.12);--md-typeset-kbd-accent-color:hsla(var(--md-hue),15%,90%,0.2);--md-typeset-kbd-border-color:hsla(var(--md-hue),15%,14%,1);--md-typeset-mark-color:#4287ff4d;--md-typeset-table-color:hsla(var(--md-hue),15%,95%,0.12);--md-typeset-table-color--light:hsla(var(--md-hue),15%,95%,0.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-bg-color:hsla(var(--md-hue),15%,10%,0.87);--md-footer-bg-color--dark:hsla(var(--md-hue),15%,8%,1);--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #00000040,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0006,0 0 0.05rem #00000059;color-scheme:dark}[data-md-color-scheme=slate] img[src$="#gh-light-mode-only"],[data-md-color-scheme=slate] img[src$="#only-light"]{display:none}[data-md-color-scheme=slate][data-md-color-primary=pink]{--md-typeset-a-color:#ed5487}[data-md-color-scheme=slate][data-md-color-primary=purple]{--md-typeset-a-color:#c46fd3}[data-md-color-scheme=slate][data-md-color-primary=deep-purple]{--md-typeset-a-color:#a47bea}[data-md-color-scheme=slate][data-md-color-primary=indigo]{--md-typeset-a-color:#5488e8}[data-md-color-scheme=slate][data-md-color-primary=teal]{--md-typeset-a-color:#00ccb8}[data-md-color-scheme=slate][data-md-color-primary=green]{--md-typeset-a-color:#71c174}[data-md-color-scheme=slate][data-md-color-primary=deep-orange]{--md-typeset-a-color:#ff764d}[data-md-color-scheme=slate][data-md-color-primary=brown]{--md-typeset-a-color:#c1775c}[data-md-color-scheme=slate][data-md-color-primary=black],[data-md-color-scheme=slate][data-md-color-primary=blue-grey],[data-md-color-scheme=slate][data-md-color-primary=grey],[data-md-color-scheme=slate][data-md-color-primary=white]{--md-typeset-a-color:#5e8bde}[data-md-color-switching] *,[data-md-color-switching] :after,[data-md-color-switching] :before{transition-duration:0ms!important}}[data-md-color-accent=red]{--md-accent-fg-color:#ff1947;--md-accent-fg-color--transparent:#ff19471a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=pink]{--md-accent-fg-color:#f50056;--md-accent-fg-color--transparent:#f500561a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=purple]{--md-accent-fg-color:#df41fb;--md-accent-fg-color--transparent:#df41fb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=deep-purple]{--md-accent-fg-color:#7c4dff;--md-accent-fg-color--transparent:#7c4dff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=indigo]{--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=blue]{--md-accent-fg-color:#4287ff;--md-accent-fg-color--transparent:#4287ff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-blue]{--md-accent-fg-color:#0091eb;--md-accent-fg-color--transparent:#0091eb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=cyan]{--md-accent-fg-color:#00bad6;--md-accent-fg-color--transparent:#00bad61a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=teal]{--md-accent-fg-color:#00bda4;--md-accent-fg-color--transparent:#00bda41a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=green]{--md-accent-fg-color:#00c753;--md-accent-fg-color--transparent:#00c7531a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-green]{--md-accent-fg-color:#63de17;--md-accent-fg-color--transparent:#63de171a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=lime]{--md-accent-fg-color:#b0eb00;--md-accent-fg-color--transparent:#b0eb001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=yellow]{--md-accent-fg-color:#ffd500;--md-accent-fg-color--transparent:#ffd5001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=amber]{--md-accent-fg-color:#fa0;--md-accent-fg-color--transparent:#ffaa001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=orange]{--md-accent-fg-color:#ff9100;--md-accent-fg-color--transparent:#ff91001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=deep-orange]{--md-accent-fg-color:#ff6e42;--md-accent-fg-color--transparent:#ff6e421a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-primary=red]{--md-primary-fg-color:#ef5552;--md-primary-fg-color--light:#e57171;--md-primary-fg-color--dark:#e53734;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=pink]{--md-primary-fg-color:#e92063;--md-primary-fg-color--light:#ec417a;--md-primary-fg-color--dark:#c3185d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=purple]{--md-primary-fg-color:#ab47bd;--md-primary-fg-color--light:#bb69c9;--md-primary-fg-color--dark:#8c24a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=deep-purple]{--md-primary-fg-color:#7e56c2;--md-primary-fg-color--light:#9574cd;--md-primary-fg-color--dark:#673ab6;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=indigo]{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=blue]{--md-primary-fg-color:#2094f3;--md-primary-fg-color--light:#42a5f5;--md-primary-fg-color--dark:#1975d2;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-blue]{--md-primary-fg-color:#02a6f2;--md-primary-fg-color--light:#28b5f6;--md-primary-fg-color--dark:#0287cf;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=cyan]{--md-primary-fg-color:#00bdd6;--md-primary-fg-color--light:#25c5da;--md-primary-fg-color--dark:#0097a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=teal]{--md-primary-fg-color:#009485;--md-primary-fg-color--light:#26a699;--md-primary-fg-color--dark:#007a6c;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=green]{--md-primary-fg-color:#4cae4f;--md-primary-fg-color--light:#68bb6c;--md-primary-fg-color--dark:#398e3d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-green]{--md-primary-fg-color:#8bc34b;--md-primary-fg-color--light:#9ccc66;--md-primary-fg-color--dark:#689f38;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=lime]{--md-primary-fg-color:#cbdc38;--md-primary-fg-color--light:#d3e156;--md-primary-fg-color--dark:#b0b52c;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=yellow]{--md-primary-fg-color:#ffec3d;--md-primary-fg-color--light:#ffee57;--md-primary-fg-color--dark:#fbc02d;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=amber]{--md-primary-fg-color:#ffc105;--md-primary-fg-color--light:#ffc929;--md-primary-fg-color--dark:#ffa200;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=orange]{--md-primary-fg-color:#ffa724;--md-primary-fg-color--light:#ffa724;--md-primary-fg-color--dark:#fa8900;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=deep-orange]{--md-primary-fg-color:#ff6e42;--md-primary-fg-color--light:#ff8a66;--md-primary-fg-color--dark:#f4511f;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=brown]{--md-primary-fg-color:#795649;--md-primary-fg-color--light:#8d6e62;--md-primary-fg-color--dark:#5d4037;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=grey]{--md-primary-fg-color:#757575;--md-primary-fg-color--light:#9e9e9e;--md-primary-fg-color--dark:#616161;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=blue-grey]{--md-primary-fg-color:#546d78;--md-primary-fg-color--light:#607c8a;--md-primary-fg-color--dark:#455a63;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=light-green]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#72ad2e}[data-md-color-primary=lime]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#8b990a}[data-md-color-primary=yellow]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#b8a500}[data-md-color-primary=amber]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#d19d00}[data-md-color-primary=orange]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#e68a00}[data-md-color-primary=white]{--md-primary-fg-color:hsla(var(--md-hue),0%,100%,1);--md-primary-fg-color--light:hsla(var(--md-hue),0%,100%,0.7);--md-primary-fg-color--dark:hsla(var(--md-hue),0%,0%,0.07);--md-primary-bg-color:hsla(var(--md-hue),0%,0%,0.87);--md-primary-bg-color--light:hsla(var(--md-hue),0%,0%,0.54);--md-typeset-a-color:#4051b5}[data-md-color-primary=white] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=white] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:hsla(var(--md-hue),0%,100%,1)}@media screen and (min-width:60em){[data-md-color-primary=white] .md-search__form{background-color:hsla(var(--md-hue),0%,0%,.07)}[data-md-color-primary=white] .md-search__form:hover{background-color:hsla(var(--md-hue),0%,0%,.32)}[data-md-color-primary=white] .md-search__input+.md-search__icon{color:hsla(var(--md-hue),0%,0%,.87)}}@media screen and (min-width:76.25em){[data-md-color-primary=white] .md-tabs{border-bottom:.05rem solid #00000012}}[data-md-color-primary=black]{--md-primary-fg-color:hsla(var(--md-hue),15%,9%,1);--md-primary-fg-color--light:hsla(var(--md-hue),15%,9%,0.54);--md-primary-fg-color--dark:hsla(var(--md-hue),15%,9%,1);--md-primary-bg-color:hsla(var(--md-hue),15%,100%,1);--md-primary-bg-color--light:hsla(var(--md-hue),15%,100%,0.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=black] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=black] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:hsla(var(--md-hue),0%,100%,1)}[data-md-color-primary=black] .md-header{background-color:hsla(var(--md-hue),15%,9%,1)}@media screen and (max-width:59.984375em){[data-md-color-primary=black] .md-nav__source{background-color:hsla(var(--md-hue),15%,11%,.87)}}@media screen and (max-width:76.234375em){html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer]{background-color:hsla(var(--md-hue),15%,9%,1)}}@media screen and (min-width:76.25em){[data-md-color-primary=black] .md-tabs{background-color:hsla(var(--md-hue),15%,9%,1)}} \ No newline at end of file diff --git a/commands/index.html b/commands/index.html new file mode 100644 index 000000000..8d6edaaff --- /dev/null +++ b/commands/index.html @@ -0,0 +1,2909 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Commands - wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + + + + + +
+ +
+ + + + + + + + +

Commands

+ +

Codeception commands provided by the library

+

The library provides some custom commands that can be added to the project Codeception configuration file ( +either codeception.yml or codeception.dist.yml).

+

run and codeception:run

+

Enable the commands with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\RunOriginal"
+    - "lucatume\\WPBrowser\\Command\\RunAll"
+
+

WordPress extensive use of global variables, constants and side effectes makes it difficult to run multiple test suites +in the same process without running into conflicts due to leaking state and side effects. +For this reason the project replaces Codeception run command with one that will run each suite in a separate process. +You can invoke the original Codeception command using the codeception:run command. +Just like the original, the run command accepts all the arguments and options of the original Codeception +command.

+

Run all the suites, each one in a separate process:

+
vendor/bin/codecept run
+
+

Run only the Integration suite:

+
vendor/bin/codecept run Integration
+
+

Run a specific test file:

+
vendor/bin/codecept run Integration tests/Integration/MyTest.php
+
+

Run a specific test method:

+
vendor/bin/codecept run Integration tests/Integration/MyTest.php:testMyMethod
+
+

Read the Codeception documentation for more information about the run command.

+

dev:start

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\DevStart"
+
+

If not already running, start the services required to run the tests. +The started services are read from the Codeception configuration file (either codeception.yml +or codeception.dist.yml), from the extensions section, under the config key.

+

Given the following configuration:

+
extensions:
+  enabled:
+    - lucatume\WPBrowser\Extension\ChromeDriverController
+    - lucatume\WPBrowser\Extension\BuiltInServerController
+    - lucatume\WPBrowser\Extension\DockerComposeController
+  config:
+    "lucatume\\WPBrowser\\Extension\\ChromeDriverController":
+      port: '%CHROMEDRIVER_PORT%'
+    "lucatume\\WPBrowser\\Extension\\BuiltInServerController":
+      docroot: '%WORDPRESS_ROOT_DIR%'
+      workers: 5
+      port: '%BUILT_IN_SERVER_PORT%'
+    "lucatume\\WPBrowser\\Extension\\DockerComposeController":
+      compose-file: 'tests/docker-compose.yml'
+      env-file: 'tests/.env'
+
+

Running the command will start ChromeDriver, the built-in PHP server and Docker Compose.

+

dev:stop

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\DevStop"
+
+

If running, stop the services required to run the tests. +The stopped services are read from the Codeception configuration file (either codeception.yml +or codeception.dist.yml), from the extensions section, under the config key.

+

Given the following configuration:

+
extensions:
+  enabled:
+    - "lucatume\\WPBrowser\\Extension\\ChromeDriverController"
+    - "lucatume\\WPBrowser\\Extension\\BuiltInServerController"
+    - "lucatume\\WPBrowser\\Extension\\DockerComposeController"
+  config:
+    "lucatume\\WPBrowser\\Extension\\ChromeDriverController":
+      port: '%CHROMEDRIVER_PORT%'
+    "lucatume\\WPBrowser\\Extension\\BuiltInServerController":
+      docroot: '%WORDPRESS_ROOT_DIR%'
+      workers: 5
+      port: '%BUILT_IN_SERVER_PORT%'
+    "lucatume\\WPBrowser\\Extension\\DockerComposeController":
+      compose-file: 'tests/docker-compose.yml'
+      env-file: 'tests/.env'
+
+

Running the command will stop ChromeDriver, the built-in PHP server and Docker Compose.

+

dev:restart

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\DevRestart"
+
+

This command is just a shortcut to run dev:stop and dev:start in sequence.

+

dev:info

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\DevInfo"
+
+

Provides information about the local testing stack managed by +the DockerComposeController, BuiltInServerController +and ChromeDriverController extensions.

+

wp:db:import

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\DbImport"
+
+

You can use WP CLI to interact with your WordPress installation, but WP CLI does not support SQLite databases in +the context of the wp db import command. +This command fills that gap by providing a database dump file import command that will support MySQL and SQLite +databases.

+

wp:db:export

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\DbExport"
+
+

You can use WP CLI to interact with your WordPress installation, but WP CLI does not support SQLite databases in +the context of the wp db export command. +This command fills that gap by providing a database dump file export command that will support MySQL and SQLite +databases.

+

chromedriver:update

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\ChromedriverUpdate"
+
+

If you're using Chromedriver as a binary installed in the Composer vendor directory (vendor/bin by default), you can +use this command to update it. +This command will download the latest version of Chromedriver compatible with the Chrome version installed on your +machine in the Composer vendor directory.

+
+

Note: if the download fails, it might be a certificate issue.

+
+

generate:wpunit

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\GenerateWPUnit"
+
+

Generate a test case extending the lucatume\WPBrowser\TestCase\WPTestCase class. +The class incorporates the WordPress test case from the wordpress-develop repository and adds some utility +methods to make testing easier in the context of Codeception.

+

The lucatume\WPBrowser\TestCase\WPTestCase class is the one that should be used when writing tests for WordPress +code when using the WPLoader module.

+

Together with the WPLoader module, the WPTestCase class provides a number of functionalities to clean up the +database +after each test method and to reset the global state of WordPress.

+

Every test method runs in a transaction

+

Database queries running in the context of test methods of a test case extending the WPTestCase class will run in a +transaction that is rolled back after the test method is run. This means that any database change happening in the +context of a test method will not appear in the database while the test is running and after the test is run.

+

generate:wpajax

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\GenerateWPAjax"
+
+

Generate a test case extending the lucatume\WPBrowser\TestCase\WPAjaxTestCase class. This class is a version of the WPTestCase designed to test AJAX requests.

+

generate:wpcanonical

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\GenerateWPCanonical"
+
+

Generate a test case extending the lucatume\WPBrowser\TestCase\WPCanonicalTestCase class. This class is a version of the WPTestCase designed to test canonical redirects.

+

generate:wprestapi

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\GenerateWPRestApi"
+
+

Generate a test case extending the lucatume\WPBrowser\TestCase\WPRestApiTestCase class. This class is a version of the WPTestCase designed to test the handling of REST API requests.

+

generate:wprestcontroller

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\GenerateWPRestController"
+
+

Generate a test case extending the lucatume\WPBrowser\TestCase\WPRestControllerTestCase class. This class is a version of the WPTestCase designed to unit-test REST API controllers.

+

generate:wprestposttypecontroller

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\GenerateWPRestPostTypeController"
+
+

Generate a test case extending the lucatume\WPBrowser\TestCase\WPRestPostTypeControllerTestCase class. This class is a version of the WPTestCase designed to unit-test REST API controllers for post types.

+

generate:wpxml

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\GenerateWPXML"
+
+

Generate a test case extending the lucatume\WPBrowser\TestCase\WPXMLTestCase class. This class is a version of the WPTestCase designed to test the production of XML data.

+

generate:wpxmlrpc

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\GenerateWPXMLRPC"
+
+

Generate a test case extending the lucatume\WPBrowser\TestCase\WPXMLRPCTestCase class. This class is a version of the WPTestCase designed to test the XML-RPC API.

+

monkey:cache:path

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\MonkeyCachePath"
+
+

Get the path to the monkey-patching cache directory.

+

Use the --porcelain or -p option to get the path without any additional output.

+

monkey:cache:clear

+

Enable the command with:

+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\MonkeyCacheClear"
+
+

Clear the monkey-patching cache.

+

Use the --porcelain or -p option to suppress any confirmation output.

+ + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/custom-configuration/index.html b/custom-configuration/index.html new file mode 100644 index 000000000..43d908b61 --- /dev/null +++ b/custom-configuration/index.html @@ -0,0 +1,2654 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Custom configuration - wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + + + + + +
+ +
+ + + + + + + + +

Custom configuration

+ +

Custom testing configuration

+

Any non default configuration is considered a custom configuration.
+If your project requires a tailored set up, this is the configuration for you.

+

Using a custom configuration to run tests

+

If you decide to skip the default configuration, or are working +on a project that cannot use the default configuration +you will be able to set up wp-browser to suit your needs using a custom configuration.

+

Choose "no", to not use the default configuration, when running the vendor/bin/codecept init wpbrowser command.

+

The command will set up the file structure to be able to run integration and end-to-end tests and will +leverage Codeception dynamic configuration using parameters to control the testing stack using the tests/.env +file.

+

Walkthrough of the tests/.env file

+
    +
  • WORDPRESS_ROOT_DIR - the path to the root WordPress installation directory. This is the directory that contains + WordPress files, like wp-load.php. This path can be absolute or relative to the root project directory; + e.g. vendor/wordpress (relative) or /var/www/wordpress (absolute) will work.
  • +
  • WORDPRESS_URL - the URL of the WordPress installation. This is the URL that will be used by the browser to access + the WordPress + installation in the context of end-to-end tests; e.g. http://localhost:8080 or https://wordpress.local.
  • +
  • WORDPRESS_DOMAIN - the domain of the WordPress installation; this value should follow the WORDPRESS_URL value. + E.g. if WORDPRESS_URL is http://localhost:8080 the WORDPRESS_DOMAIN value should be localhost:8080; + if WORDPRESS_URL is https://wordpress.local the WORDPRESS_DOMAIN value should be wordpress.local.
  • +
  • WORDPRESS_DB_URL - the user, password, host, and name of the database used by the tests. If the database is a MySQL + database, the value should be in the form mysql://user:password@host:port/database_name. + If the database is a SQLite database, the value should be in the form sqlite://path/to/database/file.
  • +
  • WORDPRESS_TABLE_PREFIX - the database table prefix used by the WordPress installation, the one served + at WORDPRESS_URL. + This value is usually wp_ but can be different if the WordPress installation has been configured to use a different + prefix.
  • +
  • TEST_TABLE_PREFIX - the database table prefix used by the WPLoader module to + install WordPress and run the tests. This value is usually test_ and should be different from + the WORDPRESS_TABLE_PREFIX value.
  • +
  • WORDPRESS_ADMIN_USER - the username of the WordPress administrator user. E.g. admin.
  • +
  • WORDPRESS_ADMIN_PASSWORD - the password of the WordPress administrator user. E.g. secret!password.
  • +
  • CHROMEDRIVER_HOST - the host of the Chromedriver server. This value is usually localhost if you're running + Chromedriver on the same machine as the tests. If you're running your tests using a container stack, it will be the + name of the container running Chromedriver, e.g. chromedriver.
  • +
  • CHROMEDRIVER_PORT - the port of the Chromedriver server. This value is usually 9515 if you're running Chromedriver + on the same machine as the tests. If you're running your tests using a container stack, it will be the port exposed by + the container running Chromedriver, e.g. 4444. Note the default configuration will set + this value to a random port during set up to avoid conflicts with other services running on the same machine.
  • +
+

Handling custom file structures

+

If your site uses a customized file structure to manage WordPress, you will need to further +configure the WPLoader module to correctly look for the site content. +Read more about setting up WPLoader to correctly load plugins and themes from custom locations here.

+ + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/default-configuration/index.html b/default-configuration/index.html new file mode 100644 index 000000000..8e4d72c7e --- /dev/null +++ b/default-configuration/index.html @@ -0,0 +1,2760 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default configuration - wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + + + + + +
+ +
+ + + + + + + + +

Default configuration

+ +

Default testing configuration

+

The recommended configuration for most projects. +It allows you to get into WordPress integration and end-to-end testing quickly and easily.

+

Requirements

+

The default configuration will set up Codeception and wp-browser to use SQLite as the database engine, PHP built-in +server to serve the test site on localhost and your local version of Chrome, driven by Chromedriver, to run end-to-end +tests.

+

As such, the default configuration has the following requirements:

+
    +
  • the sqlite3 PHP extension; you can check if if's installed by running php -m | grep sqlite3 in your terminal
  • +
  • the pdo_sqlite PHP extension; you can check if if's installed by running php -m | grep pdo_sqlite in your terminal
  • +
  • PHP built-in server can work with only one thread, but it will be faster using multiple threads; multiple threads are + not supported on Windows, but they are supported on WSL.
  • +
  • the Chrome browser installed on your machine
  • +
+

Overview - plugin and theme project

+

If you're configuring wp-browser for a plugin or theme project, the default configuration will install WordPress in +the tests/_wordpress directory and configure the installation to run using SQLite as a database engine. +The SQLite Database Integration plugin) will be placed in the installation must-use plugins directory.

+

If your plugin or theme project requires additional plugins or theme to work, you can place them in +the tests/_worpdress/wp-content/plugins and tests/_wordpress/wp-content/themes directories respectively.

+

When adding, or removing, plugin and themes, remember to +update the WPLoader module configuration to load the correct plugins and themes in +your integration tests.

+

On the same note, update the database dump used by the WPDb module to reflect the +changes in the dump loaded in the end-to-end tests. +The easiest way to update the database fixture is to load the current database dump +using the wp:db:import command, manually setting up the site interacting with it and then +exporting the database dump using the wp:db:export command.

+

You can find out about the URL of the site served by the PHP built-in web server by +running the dev:info command.

+

Overview - site project

+

If you're configuring wp-browser for a site project, the default configuration will use a combination of PHP built-in +web server and the SQLite Database Integration plugin to run the tests and serve your site.

+

The router file used by the PHP built-in web server will force the site, when served on localhost, to use SQLite as +database engine leaving your existing local MySQL database untouched.

+

Your existing WordPress installation will be picked up as it is, with all the plugins and themes found in the contents +directory.

+

Existing plugins and themes are not added to WPLoader module configuration by +wp-browser, you have to do that manually.

+

Similarly, the database dump used by the WPDb module is, by default, an empty WordPress +installation where no plugins and themes are active. +You have to update the database dump used by the module to reflect the state of your site. +You can do that by loading the current database dump using the wp:db:import command, +manually setting up the site interacting with it and then +exporting the database dump using the wp:db:export command.

+

You can find out about the URL of the site served by the PHP built-in web server by +running the dev:info command.

+

When not to use the default configuration

+

The default configuration is the recommended one for most projects, but some projects might require you to use a custom +configuration to make the most out of wp-browser.

+

Database drop-in

+

The default configuration will use the SQLite Database Integration plugin to use SQLite as the database engine. +This requires placing a db.php drop-in file in the WordPress content directory.

+

If your project already requires a db.php drop-in file, you will have to use a custom configuration.

+

Multisite with sub-domains

+

While Chrome will handle sub-domains correctly, even on localhost, WordPress will not. +If you're testing a multisite installation with sub-domains, you will have to use a custom configuration.

+

Custom site structure

+

If your site uses a customized file structure to manage WordPress, you will need to configure wp-browser using a custom +configuration. +This is usually true for some site projects, and will most likely not be an issue for plugin and theme projects.

+

Using a custom configuration is not that difficult +though: read more about using a custom configuration here.

+ + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/extensions/index.html b/extensions/index.html new file mode 100644 index 000000000..cf8ab20fe --- /dev/null +++ b/extensions/index.html @@ -0,0 +1,2703 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Extensions - wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + + + + + +
+ +
+ + + + + + + + +

Extensions

+ +

Codeception Extensions provided by the library

+

The library provides some custom Codeception extensions that can be added to the project Codeception configuration file, +in the extensions section.

+

BuiltInServerController

+

This extension will start and stop the PHP built-in web server before and after the tests run.

+

The extension can be configured with the following parameters:

+
    +
  • required
      +
    • docroot - the document root to use for the PHP Built-in server; it can be either an absolute path or a path + relative to the Codeception root directory. Note the lowercase r in the parameter name.
    • +
    +
  • +
  • optional
      +
    • suites - an array of Codeception suites to run the server for; if not set the server will be started for all the + suites.
    • +
    • port - the port to use for the PHP Built-in server, if not set the server will use port 2389.
    • +
    • workers - the number of workers to use for the PHP Built-in server, if not set the server will use 5 workers. + This is the equivalent of the PHP_CLI_SERVER_WORKERS environment variable.
    • +
    +
  • +
+
+

Note: if you run PHP built-in server on Windows, the workers parameter will be ignored and the server will always +run with a single worker. This limit is not present in WSL.

+
+

Example configuration starting the server for all suites:

+
extensions:
+  enabled:
+    - "lucatume\\WPBrowser\\Extension\\BuiltInServerController"
+  config:
+    "lucatume\\WPBrowser\\Extension\\BuiltInServerController":
+      docroot: /var/www/html
+      workers: 5
+
+

The extension can access environment variables defined in the tests configuration file:

+
extensions:
+  enabled:
+    - "lucatume\\WPBrowser\\Extension\\BuiltInServerController"
+  config:
+    "lucatume\\WPBrowser\\Extension\\BuiltInServerController":
+      suites:
+        - EndToEnd
+        - WebApp
+      docroot: '%WORDPRESS_ROOT_DIR%'
+      port: '%BUILT_IN_SERVER_PORT%'
+      workers: '%BUILT_IN_SERVER_WORKERS%'
+
+

This is a service extension that will be started and stopped by the dev:start +and dev:stop commands.

+

ChromeDriverController

+

This extension will start and stop the ChromeDriver before and after the tests are run.

+

The extension can be configured with the following parameters:

+
    +
  • optional
      +
    • suites - an array of Codeception suites to run the server for; if not set the server will be started for all the + suites.
    • +
    • port - the port to use for the ChromeDriver, if not set the server will use port 9515.
    • +
    • binary - the path to the ChromeDriver binary, if not set the server will use the chromedriver binary in the + Composer bin directory.
    • +
    +
  • +
+

Example configuration starting the server for all suites:

+
extensions:
+  enabled:
+    - "lucatume\\WPBrowser\\Extension\\ChromeDriverController"
+  config:
+    "lucatume\\WPBrowser\\Extension\\ChromeDriverController":
+      port: 4444
+      binary: /usr/local/bin/chromedriver
+
+

The extension can access environment variables defined in the tests configuration file:

+
extensions:
+  enabled:
+    - "lucatume\\WPBrowser\\Extension\\ChromeDriverController"
+  config:
+    suites:
+      - EndToEnd
+      - WebApp
+    "lucatume\\WPBrowser\\Extension\\ChromeDriverController":
+      port: '%CHROMEDRIVER_PORT%'
+      binary: '%CHROMEDRIVER_BINARY%'
+
+

You can use the chromedriver:update command to download the latest version of +ChromeDriver +compatible with your Chrome browser version and place it in the Composer bin directory.

+

This is a service extension that will be started and stopped by the dev:start +and dev:stop commands.

+

DockerComposeController

+

This extension will start and stop a docker compose stack before and after the tests are run.

+

The extension can be configured with the following parameters:

+
    +
  • required
      +
    • compose-file - the path to the docker compose file to use; it can be either an absolute path or a path + relative to the Codeception root directory.
    • +
    +
  • +
  • optional
      +
    • env-file- the path to the environment file to use; it can be either an absolute path or a path.
    • +
    +
  • +
+

Example configuration starting the server for all suites:

+
extensions:
+  enabled:
+    - "lucatume\\WPBrowser\\Extension\\DockerComposeController"
+  config:
+    "lucatume\\WPBrowser\\Extension\\DockerComposeController":
+      compose-file: /var/www/html/docker-compose.yml
+      env-file: /var/www/html/.env
+
+

The extension can access environment variables defined in the tests configuration file:

+
extensions:
+  enabled:
+    - "lucatume\\WPBrowser\\Extension\\DockerComposeController"
+  config:
+    suites:
+      - EndToEnd
+      - WebApp
+    "lucatume\\WPBrowser\\Extension\\DockerComposeController":
+      compose-file: '%DOCKER_COMPOSE_FILE%'
+      env-file: '%DOCKER_COMPOSE_ENV_FILE%'
+
+

This is a service extension that will be started and stopped by the dev:start +and wp:dev-stop commands.

+

IsolationSupport

+

This extension provides support for the PHPUnit annotations @runInSeparateProcess and @runTestsInSeparateProcesses, and the PHPUnit attributes (PHPUnit 10+) #[RunInSeparateProcess] and #[RunTestsInSeparateProcesses].
+You can read more about these annotations and attributes in the PHPUnit documentation about test isolation.

+

Codeception does not natively support these annotations and attributes, this extension provides support for them.

+

You can enable the extension in the Codeception configuration file:

+
extensions:
+  enabled:
+    - "lucatume\\WPBrowser\\Extension\\IsolationSupport"
+
+

In your tests, you can use the annotations or attributes as you would in a PHPUnit test:

+
<?php
+
+use lucatume\WPBrowser\TestCase\WPTestCase;
+
+class IsolationExampleTest extends WPTestCase {
+    /**
+     * @runInSeparateProcess
+     */
+    public function test_in_admin_context() {
+        define('WP_ADMIN', true);
+
+        $this->assertTrue(is_admin());
+    }
+
+    #[RunTestsInSeparateProcesses]
+    public function test_in_admin_context_with_attribute() {
+        define('WP_ADMIN', true);
+
+        $this->assertTrue(is_admin());
+    }
+
+    public function test_constant_is_not_set() {
+        $this->assertFalse(defined('WP_ADMIN'));
+    }
+}
+
+#[RunTestsInSeparateProcesses]
+class RunAllTestsInSeparateProcesses extends WPTestCase {
+    public function test_one() {
+        definen('TEST_CONST', 'one');
+
+        $this->assertEquals('one', TEST_CONST);
+    }
+
+    public function test_two() {
+        definen('TEST_CONST', 'two');
+
+        $this->assertEquals('two', TEST_CONST);
+    }
+}
+
+
+

Previous versions of the test isolation support required the @backupGlobals disabled annotation to be used when running tests in isolation. This is no longer required.

+
+

Isolation support is based around monkey-patching the file at runtime. Look into the monkey:cache:clear and monkey:cache:path commands to manage the monkey-patching cache.

+ + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..a1358c83f --- /dev/null +++ b/index.html @@ -0,0 +1,2743 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+ +
+ + + +
+ +
+ + + + + + + + +

Getting started

+ +
+

This is the documentation for version 4 of the project, the current version. +Documentation for the previous version of the project, version 3, can be found here.

+
+

The wp-browser library provides a set of Codeception modules and middleware to enable the testing of WordPress sites, plugins and themes.

+

Requirements

+

Depending on the nature of your project, there are different requirements it will need to satisfy before getting started.

+

Site

+
    +
  • Ensure you're running the vendor/bin/codecept init wpbrowser command from the root directory of your WordPress site.
  • +
  • Ensure the directory contains the WordPress installation files. In a standard scenario you should have extracted WordPress files in this directory.
  • +
  • Ensure your installation is configured: it should contain a wp-config.php file.
  • +
+

Plugin

+
    +
  • Ensure you're running the vendor/bin/codecept init wpbrowser command from the root directory of your plugin; this should be the directory that contains the PHP file defining the plugin header.
  • +
+

Theme

+
    +
  • Ensure you're running the vendor/bin/codecept init wpbrowser command from the root directory of your theme; this should be the directory that contains the style.css file defining the theme header.
  • +
+

If you decide to use the quick installation, then your PHP version should have the sqlite3 extensions installed and activated. You can check this using the php -m command and verifying the sqlite3 extension is among the active extensions.

+

Installation

+

Add wp-browser to your project as a development dependency using Composer

+
cd my-wordrpess-project
+composer require --dev lucatume/wp-browser
+
+

Initialize wp-browser to quickly configured to suite your project and setup:

+
vendor/bin/codecept init wpbrowser
+
+

The command will set up your project to run integration and end-to-end tests using:

+
    +
  • SQLite as the database engine, leveraging the SQLite Database Integration plugin
  • +
  • PHP built-in web server to serve the WordPress site on localhost (e.g. http://localhost:8080)
  • +
  • Chromedriver to drive the local version of Chrome installed on your machine
  • +
+

If you're working on a plugin or theme project, the default configuration will add some extra steps:

+
    +
  • install the latest version of WordPress in the tests/_wordpress directory
  • +
  • create a tests/_plugins directory: any file or directory in this directory will be symlinked into the WordPress + installation in tests/_wordpress/wp-content/plugins
  • +
  • create a tests/_themes directory: any file or directory in this directory will be symlinked into the WordPress + installation in tests/_wordpress/wp-content/themes
  • +
+

For most projects this configuration will be enough to get started with testing.

+

You can run your tests immediately using the vendor/bin/codecept run command.

+

Read more about the commands provided by the library here.

+

Using a custom configuration

+

If you decide to skip the default configuration, you will be able to set up wp-browser to suit your needs and local +setup by editing the tests/.env file. +The inline documentation in the file will guide you through the configuration process.

+

Read more about using a custom configuration here.

+

Getting support for wp-browser configuration and usage

+

The best place to get support for wp-browser is the project documentation.
+Since this project builds on top of PHPUnit and Codeception, you can also refer to their documentation.

+

If you can't find the answer to your question here you can ask on +the "Issues" section of the wp-browser repository taking care to provide as much information as possible.

+

Finally, you can contact me directly to set up a call to discuss your +project needs and how wp-browser can help you.

+ + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/migration/index.html b/migration/index.html new file mode 100644 index 000000000..e59cb2ac3 --- /dev/null +++ b/migration/index.html @@ -0,0 +1,2781 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Migrating to newer versions - wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + + + + + +
+ +
+ + + + + + + + +

Migrating to newer versions

+ +

Depending on your project PHP compatibility, you have three options to choose from:

+ +

Version 3.5 and 4.0

+

Version 3.5 and 4.0 are the latest versions of wp-browser.
+Version 3.5 is a transpile of version 4 to be compatible with PHP 7.1 to 7.4 that contains, for all intents and +purposes, the same facilities and systems contained in version 4 of wp-browser adapter to work on lower PHP versions +and version 4 of Codeception.

+

Future development of wp-browser will happen on version 4 and will be transpiled to version 3.5 for +back-compatibility purposes.

+

Migrate from version 3 to 3.5

+
    +
  1. Update the required version of wp-browser in your composer.json file to 3.5: +
    {
    +  "require-dev": {
    +    "lucatume/wp-browser": "^3.5"
    +  }
    +}
    +
  2. +
  3. See the changes common to version 3.5 and 4.0
  4. +
+

Migrate from version 3 to 4

+
    +
  1. Update the required version of wp-browser in your composer.json file to 4.0: +
    {
    +  "require-dev": {
    +    "lucatume/wp-browser": "^4.0"
    +  }
    +}
    +
  2. +
  3. See the changes common to version 3.5 and 4.0
  4. +
+

Changes common to version 3.5 and 4.0

+
    +
  1. Update your main Codeception configuration file (e.g. codeception.yml) to enable the new commands:
  2. +
+
extensions:
+  commands:
+    - "lucatume\\WPBrowser\\Command\\RunOriginal"
+    - "lucatume\\WPBrowser\\Command\\RunAll"
+    - "lucatume\\WPBrowser\\Command\\DbExport"
+    - "lucatume\\WPBrowser\\Command\\DbImport"
+    - "lucatume\\WPBrowser\\Command\\MonkeyCachePath"
+    - "lucatume\\WPBrowser\\Command\\MonkeyCacheClear"
+
+
    +
  1. +

    If your test code is loading deprecated functions, arguments, classes, files, or hooks, you need to update your test + code to let the test case know using the setExpectedDeprecated method: +

    <?php
    +
    +use lucatume\WPBrowser\TestCase\WPTestCase;
    +
    +class MyTestUsingDeprecatedCode extends WPTestCase {
    +    public function test_deprecatd_function() {
    +           // add_filter( 'deprecated_function_trigger_error', '__return_false' );
    +        $this->setExpectedDeprecated( 'my_deprecated_function' );
    +        my_deprecated_function();
    +    }
    +
    +    public function test_deprecated_class(){
    +           // add_filter( 'deprecated_class_trigger_error', '__return_false' );
    +        $this->setExpectedDeprecated( 'MyDeprecatedClass' );
    +        new MyDeprecatedClass();
    +    }
    +
    +    public function test_deprecated_file(){
    +           // add_filter( 'deprecated_file_trigger_error', '__return_false' );
    +        $this->setExpectedDeprecated( '/path/to/my_deprecated_file.php' );
    +        require_once 'my_deprecated_file.php';
    +    }
    +
    +    public function test_deprecated_hook(){
    +           // add_filter( 'deprecated_hook_trigger_error', '__return_false' );
    +        $this->setExpectedDeprecated( 'my_deprecated_hook' );
    +        do_action( 'my_deprecated_hook' );
    +    }
    +}
    +
    + Previously, your code could just filter + the deprecated_function_trigger_error, deprecated_argument_trigger_error, deprecated_class_trigger_error, deprecated_file_trigger_error, and deprecated_hook_trigger_error, hooks to return false to tolerate the deprecation notices in tests.

    +
  2. +
  3. +

    If your test code is directly modifying properties like $expected_deprecated or $expected_doing_it_wrong directly, you need to update your test code to use the setExpectedDeprecated and setExpectedIncorrectUsage methods: +

    <?php
    +
    +use lucatume\WPBrowser\TestCase\WPTestCase;
    +class MyTestUsingDeprecatedCode extends WPTestCase {
    +    public function test_deprecated_function() {
    +        // $this->expected_deprecated[] = 'my_deprecated_function';
    +        $this->setExpectedDeprecated( 'my_deprecated_function' );
    +        my_deprecated_function();
    +    }
    +
    +    public function test_doing_it_wrong(){
    +        // $this->expected_doing_it_wrong[] = 'my_doing_it_wrong';
    +        $this->setExpectedIncorrectUsage( 'my_doing_it_wrong' );
    +        my_doing_it_wrong();
    +    }
    +}
    +

    +
  4. +
  5. +

    If your test code is knowingly triggering doing-it-wrong notices, you need to update your test code to let the test + case know using the setExpectedIncorrectUsage method: +

    <?php
    +
    +use lucatume\WPBrowser\TestCase\WPTestCase;
    +class MyTestUsingDoingItWrongTest extends WPTestCase {
    +    public function test_it_can_use_doing_it_wrong() {
    +        $this->setExpectedIncorrectUsage( 'my_doing_it_wrong' );
    +        my_doing_it_wrong();
    +    }
    +}
    +
    + Previously, your code could just filter the doing_it_wrong_trigger_error hook to return false to tolerate the + doing-it-wrong notices in tests.

    +
  6. +
  7. +

    Some assertion methods have, in more recent versions of the PHPUnit core suite, adopted stricter type checks when it comes to comparison. E.g., the assertEqualFields will now check the object to check the fields on is actually an object. Depending on how loose your use of assertions was before, you might have to update your work to make it pass the stricter checks: +

    <?php
    +
    +use lucatume\WPBrowser\TestCase\WPTestCase;
    +
    + class MyTestUsingAssertEqualFields extends WPTestCase {
    +      public function test_it_can_use_assert_equal_fields() {
    +         // Cast the array to an object explicitly.
    +         $this->assertEqualFields( (object) [ 'a' => 1 ], [ 'a' => 1 ] );
    +      }
    + }
    +

    +
  8. +
  9. +

    Other updates to the Core PHPUnit test case will report use of deprecated functions more promptly; if your code is using deprecated functions that might have escaped previous versions of wp-browser, you will need to update them.

    +
  10. +
  11. +

    If you're using the @runInSeparateProcess annotation for tests in your suite, you will need to enable the IsolationSupport extension in your suite configuration file:

    +
  12. +
+
actor: MySuiteTester
+bootstrap: _bootstrap.php
+extensions:
+enabled:
+   - "lucatume\\WPBrowser\\Extension\\IsolationSupport"
+modules: # The rest of the module configuration ...
+
+

Alternatively, you can enable the extension in the Codeception main configuration file (e.g. codeception.yml).

+

Read more about the extension in the Isolation Support extension documentation.

+
    +
  1. Global space cleanup between test is more thorough in more recent versions of the Core PHPUnit test suite. Due to this you might see failures in tests that were passing in previous versions due to a "leaking" global state. Examples of this might be nonces being set by previous tests and not being reset. Update your tests to explicitly set all the global stat variables you require for the test to run.
  2. +
+

Staying on version 3, lower than 3.5

+

Update your composer.json file to lock the required version of wp-browser to a version less than 3.5:

+
{
+  "require-dev": {
+    "lucatume/wp-browser": "<3.5"
+  }
+}
+
+ + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/modules/WPBrowser/index.html b/modules/WPBrowser/index.html new file mode 100644 index 000000000..9f9183869 --- /dev/null +++ b/modules/WPBrowser/index.html @@ -0,0 +1,5256 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WPBrowser - wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+ +
+ + + + + + + + +

WPBrowser

+ +

WPBrowser module

+

Browse and test the site HTML with a fast browser without Javascript support.

+

This module trades the WPWebDriver module Javascript support for speed and stability. It is a good +choice for testing sites that don't use Javascript or to make assertions that do not require Javascript support like:

+
    +
  • testing HTTP return codes
  • +
  • testing HTML structure
  • +
  • testing JSON and XML responses from APIs
  • +
+

This module is used together with the WPDb module and the WPFilesystem module to +control the site state, the database, and the site file structure.

+

This module is an extension of the Codeception PHPBrowser module, you can reference to the Codeception module +documentation for more information on the module configuration and usage.

+

This module should be with Cest and Cept test cases.

+

Configuration

+
    +
  • url - required; the start URL of your WordPress project.
  • +
  • adminUsername - required; the site administrator username to use in actions like loginAsAdmin.
  • +
  • adminPassword - required; the site administrator password to use in actions like loginAsAdmin.
  • +
  • adminPath - the path to the WordPress admin directory; defaults to /wp-admin.
  • +
+

More Guzzle request options are available like:

+

headers - default headers are set before each test.
+cookies - default cookies are set before each test.
+auth - default authentication to be set before each test.

+

... and more.

+

The following is an example of the module configuration to run tests on thehttp://localhost:8080 site:

+
modules:
+  enabled:
+    lucatume\WPBrowser\Module\WPBrowser:
+      url: 'http://localhost:8080'
+      adminUsername: 'admin'
+      adminPassword: 'password'
+      adminPath: '/wp-admin'
+      headers:
+        X_WPBROWSER_REQUEST: 1
+        X_TEST_REQUEST: 1
+        X_APM_REQUEST: 1
+
+

The following configuration uses dynamic configuration parameters to set the module configuration:

+
modules:
+  enabled:
+    lucatume\WPBrowser\Module\WPBrowser:
+      url: '%WORDPRESS_URL%'
+      adminUsername: '%WORDPRESS_ADMIN_USER%'
+      adminPassword: '%WORDPRESS_ADMIN_PASSWORD%'
+      adminPath: '/wp-admin'
+      headers:
+        X_WPBROWSER_REQUEST: 1
+        X_TEST_REQUEST: 1
+        X_APM_REQUEST: 1
+
+

Methods

+

The module provides the following methods:

+ + +

activatePlugin

+

Signature: activatePlugin(array|string $pluginSlug) : void

+

In the plugin administration screen activates a plugin clicking the "Activate" link.

+

The method will not handle authentication to the admin area.

+
<?php
+// Activate a plugin.
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->activatePlugin('hello-dolly');
+// Activate a list of plugins.
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->activatePlugin(['hello-dolly','another-plugin']);
+
+

activateTheme

+

Signature: activateTheme(string $slug) : void

+

Activates a theme.

+

The method will not handle authentication and navigation to the themes administration page.

+

amEditingPostWithId

+

Signature: amEditingPostWithId(int $id) : void

+

Go to the admin page to edit the post with the specified ID.

+

The method will not handle authentication the admin area.

+
<?php
+$I->loginAsAdmin();
+$postId = $I->havePostInDatabase();
+$I->amEditingPostWithId($postId);
+$I->fillField('post_title', 'Post title');
+
+

amEditingUserWithId

+

Signature: amEditingUserWithId(int $id) : void

+

Go to the admin page to edit the user with the specified ID.

+

The method will not handle authentication the admin area.

+
<?php
+$I->loginAsAdmin();
+$userId = $I->haveUserInDatabase('luca', 'editor');
+$I->amEditingUserWithId($userId);
+$I->fillField('email', 'new@example.net');
+
+

amHttpAuthenticated

+

Signature: amHttpAuthenticated($username, $password) : void

+

amOnAdminAjaxPage

+

Signature: amOnAdminAjaxPage([array|string|null $queryVars]) : void

+

Go to the admin-ajax.php page to start a synchronous, and blocking, GET AJAX request.

+

The method will not handle authentication, nonces or authorization.

+
<?php
+$I->amOnAdminAjaxPage(['action' => 'my-action', 'data' => ['id' => 23], 'nonce' => $nonce]);
+
+

amOnAdminPage

+

Signature: amOnAdminPage(string $page) : void

+

Go to a page in the admininstration area of the site.

+

This method will not handle authentication to the administration area.

+
<?php
+$I->loginAs('user', 'password');
+// Go to the plugins management screen.
+$I->amOnAdminPage('/plugins.php');
+
+

amOnCronPage

+

Signature: amOnCronPage([array|string|null $queryVars]) : void

+

Go to the cron page to start a synchronous, and blocking, GET request to the cron script.

+
<?php
+// Triggers the cron job with an optional query argument.
+$I->amOnCronPage('/?some-query-var=some-value');
+
+

amOnPage

+

Signature: amOnPage(string $page) : void

+

amOnPagesPage

+

Signature: amOnPagesPage() : void

+

Go the "Pages" administration screen.

+

The method will not handle authentication.

+
<?php
+$I->loginAsAdmin();
+$I->amOnPagesPage();
+$I->see('Add New');
+
+

amOnPluginsPage

+

Signature: amOnPluginsPage() : void

+

Go to the plugins administration screen.

+

The method will not handle authentication.

+
<?php
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->activatePlugin('hello-dolly');
+
+

amOnSubdomain

+

Signature: amOnSubdomain($subdomain) : void

+

amOnThemesPage

+

Signature: amOnThemesPage() : void

+

Moves to the themes administration page.

+

amOnUrl

+

Signature: amOnUrl($url) : void

+

attachFile

+

Signature: attachFile($field, string $filename) : void

+

checkOption

+

Signature: checkOption($option) : void

+

click

+

Signature: click($link, [$context]) : void

+

deactivatePlugin

+

Signature: deactivatePlugin(array|string $pluginSlug) : void

+

In the plugin administration screen deactivate a plugin clicking the "Deactivate" link.

+

The method will not handle authentication and navigation to the plugins administration page.

+
<?php
+// Deactivate one plugin.
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->deactivatePlugin('hello-dolly');
+// Deactivate a list of plugins.
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->deactivatePlugin(['hello-dolly', 'my-plugin']);
+
+

deleteHeader

+

Signature: deleteHeader(string $name) : void

+

Deletes the header with the passed name. Subsequent requests +will not have the deleted header in its request.

+

Example: +

<?php
+$I->haveHttpHeader('X-Requested-With', 'Codeception');
+$I->amOnPage('test-headers.php');
+// ...
+$I->deleteHeader('X-Requested-With');
+$I->amOnPage('some-other-page.php');
+

+

dontSee

+

Signature: dontSee(string $text, [$selector]) : void

+

dontSeeCheckboxIsChecked

+

Signature: dontSeeCheckboxIsChecked($checkbox) : void

+

dontSeeCookie

+

Signature: dontSeeCookie($cookie, [$params]) : void

+

dontSeeCurrentUrlEquals

+

Signature: dontSeeCurrentUrlEquals(string $uri) : void

+

dontSeeCurrentUrlMatches

+

Signature: dontSeeCurrentUrlMatches(string $uri) : void

+

dontSeeElement

+

Signature: dontSeeElement($selector, [array $attributes]) : void

+

dontSeeInCurrentUrl

+

Signature: dontSeeInCurrentUrl(string $uri) : void

+

dontSeeInField

+

Signature: dontSeeInField($field, $value) : void

+

dontSeeInFormFields

+

Signature: dontSeeInFormFields($formSelector, array $params) : void

+

dontSeeInSource

+

Signature: dontSeeInSource(string $raw) : void

+

dontSeeInTitle

+

Signature: dontSeeInTitle($title) : void

+ +

Signature: dontSeeLink(string $text, [string $url]) : void

+

dontSeeOptionIsSelected

+

Signature: dontSeeOptionIsSelected($selector, $optionText) : void

+

dontSeePluginInstalled

+

Signature: dontSeePluginInstalled(string $pluginSlug) : void

+

Assert a plugin is not installed in the plugins administration screen.

+

The method will not handle authentication and navigation to the plugin administration screen.

+
<?php
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->dontSeePluginInstalled('my-plugin');
+
+

dontSeeResponseCodeIs

+

Signature: dontSeeResponseCodeIs(int $code) : void

+

Checks that response code is equal to value provided.

+
<?php
+$I->dontSeeResponseCodeIs(200);
+
+// recommended \Codeception\Util\HttpCode
+$I->dontSeeResponseCodeIs(\Codeception\Util\HttpCode::OK);
+
+

executeInGuzzle

+

Signature: executeInGuzzle(Closure $function) : void

+

Low-level API method. +If Codeception commands are not enough, use Guzzle HTTP Client methods directly

+

Example:

+
<?php
+$I->executeInGuzzle(function (\GuzzleHttp\Client $client) {
+     $client->get('/get', ['query' => ['foo' => 'bar']]);
+});
+
+

It is not recommended to use this command on a regular basis. +If Codeception lacks important Guzzle Client methods, implement them and submit patches.

+

fillField

+

Signature: fillField($field, $value) : void

+

followRedirect

+

Signature: followRedirect() : void

+

Follow pending redirect if there is one.

+
<?php
+$I->followRedirect();
+
+

grabActiveTheme

+

Signature: grabActiveTheme() : ?string

+

Returns the slug of the currently active themes.

+

The method will not handle authentication and navigation to the themes administration page.

+

grabAttributeFrom

+

Signature: grabAttributeFrom($cssOrXpath, string $attribute) : mixed

+

grabAvailableThemes

+

Signature: grabAvailableThemes([string $classes]) : array

+

Returns the list of available themes.

+

The method will not handle authentication and navigation to the themes administration page.

+

grabCookie

+

Signature: grabCookie(string $cookie, [array $params]) : mixed

+

grabCookiesWithPattern

+

Signature: grabCookiesWithPattern(string $cookiePattern) : ?array

+

Returns all the cookies whose name matches a regex pattern.

+
<?php
+$I->loginAs('customer','password');
+$I->amOnPage('/shop');
+$cartCookies = $I->grabCookiesWithPattern("#^shop_cart\\.*#");
+
+

grabFromCurrentUrl

+

Signature: grabFromCurrentUrl([?string $uri]) : mixed

+

grabMultiple

+

Signature: grabMultiple($cssOrXpath, [?string $attribute]) : array

+

grabPageSource

+

Signature: grabPageSource() : string

+

Grabs current page source code.

+

grabTextFrom

+

Signature: grabTextFrom($cssOrXPathOrRegex) : mixed

+

grabValueFrom

+

Signature: grabValueFrom($field) : mixed

+

grabWordPressTestCookie

+

Signature: grabWordPressTestCookie([?string $name]) : ?Symfony\Component\BrowserKit\Cookie

+

Returns WordPress default test cookie object if present.

+
<?php
+// Grab the default WordPress test cookie.
+$wpTestCookie = $I->grabWordPressTestCookie();
+// Grab a customized version of the test cookie.
+$myTestCookie = $I->grabWordPressTestCookie('my_test_cookie');
+
+

haveHttpHeader

+

Signature: haveHttpHeader(string $name, string $value) : void

+

Sets the HTTP header to the passed value - which is used on +subsequent HTTP requests through PhpBrowser.

+

Example: +

<?php
+$I->haveHttpHeader('X-Requested-With', 'Codeception');
+$I->amOnPage('test-headers.php');
+

+

To use special chars in Header Key use HTML Character Entities: +Example: +Header with underscore - 'Client_Id' +should be represented as - 'Client_Id' or 'Client_Id'

+
<?php
+$I->haveHttpHeader('Client&#95;Id', 'Codeception');
+
+

haveServerParameter

+

Signature: haveServerParameter(string $name, string $value) : void

+

Sets SERVER parameter valid for all next requests.

+
<?php
+$I->haveServerParameter('name', 'value');
+
+

logOut

+

Signature: logOut([string|bool $redirectTo]) : void

+

Navigate to the default WordPress logout page and click the logout link.

+
<?php
+// Log out using the `wp-login.php` form and return to the current page.
+$I->logOut(true);
+// Log out using the `wp-login.php` form and remain there.
+$I->logOut(false);
+// Log out using the `wp-login.php` form and move to another page.
+$I->logOut('/some-other-page');
+
+

loginAs

+

Signature: loginAs(string $username, string $password) : void

+

Login as the specified user.

+

The method will not follow redirection, after the login, to any page.

+
<?php
+$I->loginAs('user', 'password');
+$I->amOnAdminPage('/');
+$I->see('Dashboard');
+
+

loginAsAdmin

+

Signature: loginAsAdmin() : void

+

Login as the administrator user using the credentials specified in the module configuration.

+

The method will not follow redirection, after the login, to any page.

+
<?php
+$I->loginAsAdmin();
+$I->amOnAdminPage('/');
+$I->see('Dashboard');
+
+

makeHtmlSnapshot

+

Signature: makeHtmlSnapshot([?string $name]) : void

+

moveBack

+

Signature: moveBack([int $numberOfSteps]) : void

+

Moves back in history.

+

resetCookie

+

Signature: resetCookie($cookie, [$params]) : void

+

see

+

Signature: see(string $text, [$selector]) : void

+

seeCheckboxIsChecked

+

Signature: seeCheckboxIsChecked($checkbox) : void

+

seeCookie

+

Signature: seeCookie($cookie, [$params]) : void

+

seeCurrentUrlEquals

+

Signature: seeCurrentUrlEquals(string $uri) : void

+

seeCurrentUrlMatches

+

Signature: seeCurrentUrlMatches(string $uri) : void

+

seeElement

+

Signature: seeElement($selector, [array $attributes]) : void

+

seeErrorMessage

+

Signature: seeErrorMessage([array|string $classes]) : void

+

In an administration screen look for an error admin notice.

+

The check is class-based to decouple from internationalization. +The method will not handle authentication and navigation the administration area.

+
<?php
+$I->loginAsAdmin()
+$I->amOnAdminPage('/');
+$I->seeErrorMessage('.my-plugin');
+
+

seeInCurrentUrl

+

Signature: seeInCurrentUrl(string $uri) : void

+

seeInField

+

Signature: seeInField($field, $value) : void

+

seeInFormFields

+

Signature: seeInFormFields($formSelector, array $params) : void

+

seeInSource

+

Signature: seeInSource(string $raw) : void

+

seeInTitle

+

Signature: seeInTitle($title) : void

+ +

Signature: seeLink(string $text, [?string $url]) : void

+

seeMessage

+

Signature: seeMessage([array|string $classes]) : void

+

In an administration screen look for an admin notice.

+

The check is class-based to decouple from internationalization. +The method will not handle authentication and navigation the administration area.

+
<?php
+$I->loginAsAdmin()
+$I->amOnAdminPage('/');
+$I->seeMessage('.missing-api-token.my-plugin');
+
+

seeNumberOfElements

+

Signature: seeNumberOfElements($selector, $expected) : void

+

seeOptionIsSelected

+

Signature: seeOptionIsSelected($selector, $optionText) : void

+

seePageNotFound

+

Signature: seePageNotFound() : void

+

Asserts that current page has 404 response status code.

+

seePluginActivated

+

Signature: seePluginActivated(string $pluginSlug) : void

+

Assert a plugin is activated in the plugin administration screen.

+

The method will not handle authentication and navigation to the plugin administration screen.

+
<?php
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->seePluginActivated('my-plugin');
+
+

seePluginDeactivated

+

Signature: seePluginDeactivated(string $pluginSlug) : void

+

Assert a plugin is not activated in the plugins administration screen.

+

The method will not handle authentication and navigation to the plugin administration screen.

+
<?php
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->seePluginDeactivated('my-plugin');
+
+

seePluginInstalled

+

Signature: seePluginInstalled(string $pluginSlug) : void

+

Assert a plugin is installed, no matter its activation status, in the plugin administration screen.

+

The method will not handle authentication and navigation to the plugin administration screen.

+
<?php
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->seePluginInstalled('my-plugin');
+
+

seeResponseCodeIs

+

Signature: seeResponseCodeIs(int $code) : void

+

Checks that response code is equal to value provided.

+
<?php
+$I->seeResponseCodeIs(200);
+
+// recommended \Codeception\Util\HttpCode
+$I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK);
+
+

seeResponseCodeIsBetween

+

Signature: seeResponseCodeIsBetween(int $from, int $to) : void

+

Checks that response code is between a certain range. Between actually means [from <= CODE <= to]

+

seeResponseCodeIsClientError

+

Signature: seeResponseCodeIsClientError() : void

+

Checks that the response code is 4xx

+

seeResponseCodeIsRedirection

+

Signature: seeResponseCodeIsRedirection() : void

+

Checks that the response code 3xx

+

seeResponseCodeIsServerError

+

Signature: seeResponseCodeIsServerError() : void

+

Checks that the response code is 5xx

+

seeResponseCodeIsSuccessful

+

Signature: seeResponseCodeIsSuccessful() : void

+

Checks that the response code 2xx

+

seeThemeActivated

+

Signature: seeThemeActivated(string $slug) : void

+

Verifies that a theme is active.

+

The method will not handle authentication and navigation to the themes administration page.

+

seeWpDiePage

+

Signature: seeWpDiePage() : void

+

Checks that the current page is one generated by the wp_die function.

+

The method will try to identify the page based on the default WordPress die page HTML attributes.

+
<?php
+$I->loginAs('user', 'password');
+$I->amOnAdminPage('/forbidden');
+$I->seeWpDiePage();
+
+

selectOption

+

Signature: selectOption($select, $option) : void

+

sendAjaxGetRequest

+

Signature: sendAjaxGetRequest(string $uri, [array $params]) : void

+

Sends an ajax GET request with the passed parameters. +See sendAjaxPostRequest()

+

sendAjaxPostRequest

+

Signature: sendAjaxPostRequest(string $uri, [array $params]) : void

+

Sends an ajax POST request with the passed parameters. +The appropriate HTTP header is added automatically: +X-Requested-With: XMLHttpRequest +Example: +

<?php
+$I->sendAjaxPostRequest('/add-task', ['task' => 'lorem ipsum']);
+
+Some frameworks (e.g. Symfony) create field names in the form of an "array": +<input type="text" name="form[task]"> +In this case you need to pass the fields like this: +
<?php
+$I->sendAjaxPostRequest('/add-task', ['form' => [
+    'task' => 'lorem ipsum',
+    'category' => 'miscellaneous',
+]]);
+

+

sendAjaxRequest

+

Signature: sendAjaxRequest(string $method, string $uri, [array $params]) : void

+

Sends an ajax request, using the passed HTTP method. +See sendAjaxPostRequest() +Example: +

<?php
+$I->sendAjaxRequest('PUT', '/posts/7', ['title' => 'new title']);
+

+

setCookie

+

Signature: setCookie($name, $val, [$params]) : void

+

setHeader

+

Signature: setHeader(string $name, string $value) : void

+

Alias to haveHttpHeader

+

setMaxRedirects

+

Signature: setMaxRedirects(int $maxRedirects) : void

+

Sets the maximum number of redirects that the Client can follow.

+
<?php
+$I->setMaxRedirects(2);
+
+

setServerParameters

+

Signature: setServerParameters(array $params) : void

+

Sets SERVER parameters valid for all next requests. +this will remove old ones.

+
<?php
+$I->setServerParameters([]);
+
+

startFollowingRedirects

+

Signature: startFollowingRedirects() : void

+

Enables automatic redirects to be followed by the client.

+
<?php
+$I->startFollowingRedirects();
+
+

stopFollowingRedirects

+

Signature: stopFollowingRedirects() : void

+

Prevents automatic redirects to be followed by the client.

+
<?php
+$I->stopFollowingRedirects();
+
+

submitForm

+

Signature: submitForm($selector, array $params, [?string $button]) : void

+

switchToIframe

+

Signature: switchToIframe(string $name) : void

+

Switch to iframe or frame on the page.

+

Example: +

<iframe name="another_frame" src="http://example.com">
+

+
<?php
+# switch to iframe
+$I->switchToIframe("another_frame");
+
+

uncheckOption

+

Signature: uncheckOption($option) : void

+ + +

Read more in Codeception documentation.

+ + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/modules/WPCLI/index.html b/modules/WPCLI/index.html new file mode 100644 index 000000000..bc233c6e5 --- /dev/null +++ b/modules/WPCLI/index.html @@ -0,0 +1,3039 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WPCLI - wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + + + + + +
+ +
+ + + + + + + + +

WPCLI

+ +

WPCLI module

+

Use WP-CLI to interact with the WordPress installation under test and issue commands.

+

This module is used in the context of end-to-end testing, together with, or as a replacement for +the WPDb module to manipulate the database and the WPFilesystem module to manipulate the +site file structure.

+

This module should be with Cest and Cept test cases.

+

Configuration

+
    +
  • path - required; the path to the WordPress installation under test. This can be a relative path to the + codeception root directory, or an absolute path to the WordPress installation directory. The WordPress installation + directory is the directory that contains the wp-load.php file.
  • +
  • url - the URL of the WordPress installation under test. Equivalent to the --url option of the wp command.
  • +
  • user - the user to use to run the wp command. Equivalent to the --user option of the wp command.
  • +
  • skip-plugins - a boolean value to indicate if the wp command should skip loading plugins. Equivalent to the + --skip-plugins option of the wp command.
  • +
  • skip-themes - a boolean value to indicate if the wp command should skip loading themes. Equivalent to the + --skip-themes option of the wp command.
  • +
  • skip-packages - a boolean value to indicate if the wp command should skip loading packages. Equivalent to the + --skip-packages option of the wp command.
  • +
  • require - a list of PHP files to require before running the wp command. Equivalent to the --require option of + the wp command.
  • +
  • exec - PHP code to execute before running the wp command. Equivalent to the --exec option of the wp command.
  • +
  • context - the context to use when running the wp command. Equivalent to the --context option of the wp + command.
  • +
  • color - a boolean value to indicate if the wp command should output in color. Equivalent to the --color option + of the wp command.
  • +
  • no-color - a boolean value to indicate if the wp command should not output in color. Equivalent to the + --no-color option of the wp command.
  • +
  • debug - a boolean value to indicate if the wp command should output debug information. Equivalent to the + --debug option of the wp command.
  • +
  • quiet - a boolean value to indicate if the wp command should suppress informational messages. Equivalent to the + --quiet option of the wp command.
  • +
  • throw - a boolean value to indicate if the wp command should throw an exception if the command fails.
  • +
  • timeout - the timeout to use when running the wp command. When the timeout is reached the command will be + terminated as a failure.
  • +
  • cache-dir - the directory to use to cache the files WPCLI might downloads. Equivalent to setting + the WP_CLI_CACHE_DIR + environment variable.
  • +
  • config-path - the path to the wp-cli.yml file to use. Equivalent to setting the WP_CLI_CONFIG_PATH + environment variable.
  • +
  • custom-shell - the shell to use to run the wp command. Equivalent to setting the WP_CLI_SHELL environment + variable.
  • +
  • packages-dir - the directory to use to store the packages downloaded by the wp package command. Equivalent to + setting the WP_CLI_PACKAGES_DIR environment variable.
  • +
+

The following is an example of the module configuration to run WPCLI commands on the /var/wordpress directory:

+
modules:
+  enabled:
+    lucatume\WPBrowser\Module\WPCLI:
+      path: /var/wordpress
+      throw: true
+
+

The following configuration uses dynamic configuration parameters to set the module configuration:

+
modules:
+  enabled:
+    lucatume\WPBrowser\Module\WPCLI:
+      path: '%WP_ROOT_DIR%'
+      throw: true
+
+

Methods

+

The module provides the following methods:

+ + +

changeWpcliPath

+

Signature: changeWpcliPath(string $path) : void

+

Changes the path to the WordPress installation that WPCLI should use.

+

This is the equivalent of the --path option.

+
<?php
+// Operate on the installation specified in the `path` config parameter.
+$I->cli(['core','version']);
+// Change to another installation and run a command there.
+$I->changeWpcliPath('var/wordpress-installation-two');
+$I->cli(['core','version']);
+
+

cli

+

Signature: cli([array|string $command], [?array $env], [mixed $input]) : int

+

Executes a wp-cli command targeting the test WordPress installation.

+
<?php
+// Activate a plugin via wp-cli in the test WordPress site.
+$I->cli(['plugin', 'activate', 'my-plugin']);
+// Change a user password.
+$I->cli(['user', 'update', 'luca', '--user_pass=newpassword']);
+
+

cliToArray

+

Signature: cliToArray(array $command, [?callable $splitCallback], [?array $env], [mixed $input]) : array

+

Returns the output of a wp-cli command as an array optionally allowing a callback to process the output.

+
<?php
+// Return a list of inactive themes, like ['twentyfourteen', 'twentyfifteen'].
+$inactiveThemes = $I->cliToArray(['theme', 'list', '--status=inactive', '--field=name']);
+// Get the list of installed plugins and only keep the ones starting with "foo".
+$fooPlugins = $I->cliToArray(['plugin', 'list', '--field=name'], function($output){
+     return array_filter(explode(PHP_EOL, $output), function($name){
+             return strpos(trim($name), 'foo') === 0;
+     });
+});
+
+

cliToString

+

Signature: cliToString(array $command, [?array $env], [mixed $input]) : string

+

Returns the output of a wp-cli command as a string.

+
<?php
+// Return the current site administrator email, using string command format.
+$adminEmail = $I->cliToString('option get admin_email');
+// Get the list of active plugins in JSON format, two ways.
+$activePlugins = $I->cliToString(['plugin', 'list','--status=active', '--format=json']);
+$activePlugins = $I->cliToString(['option', 'get', 'active_plugins' ,'--format=json']);
+
+

dontSeeInShellOutput

+

Signature: dontSeeInShellOutput(string $text) : void

+

Checks that output from last command doesn't contain text.

+
<?php
+// Return the current site administrator email, using string command format.
+$I->cli('plugin list --status=active');
+$I->dontSeeInShellOutput('my-inactive/plugin.php');
+
+

dontSeeShellOutputMatches

+

Signature: dontSeeShellOutputMatches(string $regex) : void

+

Checks that output from the last command doesn't match a given regular expression.

+
<?php
+// Return the current site administrator email, using string command format.
+$I->cli('option get siteurl');
+$I->dontSeeShellOutputMatches('/^http/');
+
+

grabLastCliProcess

+

Signature: grabLastCliProcess() : lucatume\WPBrowser\WordPress\CliProcess

+

grabLastShellErrorOutput

+

Signature: grabLastShellErrorOutput() : string

+

Returns the shell error output of the last command.

+

grabLastShellOutput

+

Signature: grabLastShellOutput() : string

+

Returns the shell output of the last command.

+

seeInShellOutput

+

Signature: seeInShellOutput(string $text) : void

+

Checks that output from last command contains text.

+
<?php
+// Return the current site administrator email, using string command format.
+$I->cli('option get admin_email');
+$I->seeInShellOutput('admin@example.org');
+
+

seeResultCodeIs

+

Signature: seeResultCodeIs(int $code) : void

+

Checks the result code from the last command.

+
<?php
+// Return the current site administrator email, using string command format.
+$I->cli('option get admin_email');
+$I->seeResultCodeIs(0);
+
+

seeResultCodeIsNot

+

Signature: seeResultCodeIsNot(int $code) : void

+

Checks the result code from the last command.

+
<?php
+// Return the current site administrator email, using string command format.
+$I->cli('invalid command');
+$I->seeResultCodeIsNot(0);
+
+

seeShellOutputMatches

+

Signature: seeShellOutputMatches(string $regex) : void

+

Checks that output from the last command matches a given regular expression.

+
<?php
+// Return the current site administrator email, using string command format.
+$I->cli('option get admin_email');
+$I->seeShellOutputMatches('/^\S+@\S+$/');
+
+ + +

Explore the WP-CLI documentation for more information on the available commands.

+ + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/modules/WPDb/index.html b/modules/WPDb/index.html new file mode 100644 index 000000000..1a7033928 --- /dev/null +++ b/modules/WPDb/index.html @@ -0,0 +1,7402 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WPDb - wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+ +
+ + + + + + + + +

WPDb

+ +

WPDb module

+

This module allows to manipulate the database of the WordPress installation under test directly, without using the +WordPress API.

+

The module is used together with the WPBrowser module, WPWebDriver +and WPFilesystem modules to control the site state, the database, and the site file structure.

+

Note about interaction with the WPLoader module: both this module and the WPLoader one can be used to +control the state of the database before tests and set up fixtures: use either this or WPLoader, do not use both. +This module should be used in end-to-end testing, the WPLoader module should be used in integration +testing. +If you're using this module to load a database dump before integration tests, +use the WPLoader module dump configuration parameter instead.

+

This module should be with Cest and Cept test cases.

+

Configuration

+

This module extends the Codeception Db module adding some configuration options and functions that are specific to +WordPress.

+
    +
  • dbUrl - required; the URL to use to connect to the database. The URL must be in the form + mysql://user:password@host:port/database if you're using a MySQL database for your tests, or in the form + sqlite://path/to/database/file if you're using a SQLite database for your tests ( + like the default configuration does)
  • +
  • dsn - required; the DSN to use to connect to the database; required if not using the dbUrl parameter.
  • +
  • user - required; the user to use to connect to the database; required if not using the dbUrl parameter.
  • +
  • password - required; the password to use to connect to the database; required if not using the dbUrl + parameter.
  • +
  • url - required;the URL of the WordPress installation under test. E.g. http://localhost:8080 + or https://wordpress.test.
  • +
  • tablePrefix - the table prefix to use when interacting with the database; defaults to wp_.
  • +
  • dump - the path to a database dump file, or a set of database files, to load before running tests. The path can be + relative to the project root directory, e.g. tests/_data/dump.sql, or absolute.
  • +
  • populate - a boolean value to indicate if the database should be populated importing the dump file(s) at the start + of the suite.
  • +
  • cleanup - a boolean value to indicate if the database should be populated importing the dump file(s) before each + test.
  • +
  • reconnect - a boolean value to indicate if the database connection should be re-established before each test.
  • +
  • populator - a command to use to populate the database instead of using + PHP; read more on the Codeception documentation.
  • +
  • urlReplacement - a boolean value to indicate if the database dump file(s) should be searched for the siteurl + and home options and replaced with the url parameter value. This is required since WordPress hard-codes URLs in + the database, the original URL is inferred, if the originalUrl parameter is not provided.
  • +
  • originalUrl - if provided together with the urlReplacement parameter, the module will not try to infer the + original URL from the database dump file(s) but use the provided value instead.
  • +
  • waitlock - the number of seconds to wait for a database lock to be released before failing the test. Defaults to + 10 meaning that the test will fail if the database lock is not released after 10 seconds.
  • +
  • createIfNotExists - a boolean value to indicate if the database should be created if it does not exist. Defaults to + false.
  • +
+

The following is an example of the module configuration to run tests on thehttp://localhost:8080 site:

+
modules:
+  enabled:
+    - lucatume\WPBrowser\Module\WPDb:
+        dbUrl: 'mysql://root:password@localhost:3306/wordpress'
+        url: 'http://localhost:8080'
+        tablePrefix: 'wp_'
+        dump: 'tests/_data/dump.sql'
+        populate: true
+        cleanup: true
+        reconnect: false
+        urlReplacement: true
+        originalUrl: http://wordpress.test
+        waitlock: 10
+        createIfNotExists: true
+
+

The following configuration uses dynamic configuration parameters to set the module configuration:

+
modules:
+  enabled:
+    - lucatume\WPBrowser\Module\WPDb:
+        dbUrl: '%DB_URL%'
+        url: '%WORDPRESS_URL%'
+        tablePrefix: '%WORDPRESS_TABLE_PREFIX%'
+        dump: '%DB_DUMP%'
+        populate: true
+        cleanup: true
+        reconnect: false
+        urlReplacement: true
+        originalUrl: '%WORDPRESS_ORIGINAL_URL%'
+        waitlock: 10
+        createIfNotExists: true
+
+

The following configuration uses a SQLite database:

+
modules:
+  enabled:
+    - lucatume\WPBrowser\Module\WPDb:
+        dbUrl: 'sqlite://tests/database.sqlite'
+        url: 'http://localhost:8080'
+        tablePrefix: 'wp_'
+        dump: 'tests/_data/dump.sql'
+        populate: true
+        cleanup: true
+        reconnect: false
+        urlReplacement: true
+        originalUrl: http://wordpress.test
+        waitlock: 10
+        createIfNotExists: true
+
+

Methods

+ + +

amConnectedToDatabase

+

Signature: amConnectedToDatabase(string $databaseKey) : void

+

Make sure you are connected to the right database.

+
<?php
+$I->seeNumRecords(2, 'users');   //executed on default database
+$I->amConnectedToDatabase('db_books');
+$I->seeNumRecords(30, 'books');  //executed on db_books database
+//All the next queries will be on db_books
+
+

countRowsInDatabase

+

Signature: countRowsInDatabase(string $table, [array $criteria]) : int

+

Returns the number of table rows matching a criteria.

+
<?php
+$I->haveManyPostsInDatabase(3, ['post_status' => 'draft' ]);
+$I->haveManyPostsInDatabase(3, ['post_status' => 'private' ]);
+// Make sure there are now the expected number of draft posts.
+$postsTable = $I->grabPostsTableName();
+$draftsCount = $I->countRowsInDatabase($postsTable, ['post_status' => 'draft']);
+
+

dontHaveAttachmentFilesInDatabase

+

Signature: dontHaveAttachmentFilesInDatabase(array|int $attachmentIds) : void

+

Removes all the files attached with an attachment post, it will not remove the database entries. +Requires the WPFilesystem module to be loaded in the suite.

+
<?php
+$posts = $I->grabPostsTableName();
+$attachmentIds = $I->grabColumnFromDatabase($posts, 'ID', ['post_type' => 'attachment']);
+// This will only remove the files, not the database entries.
+$I->dontHaveAttachmentFilesInDatabase($attachmentIds);
+
+

dontHaveAttachmentInDatabase

+

Signature: dontHaveAttachmentInDatabase(array $criteria, [bool $purgeMeta], [bool $removeFiles]) : void

+

Removes an attachment from the posts table.

+
$postmeta = $I->grabpostmetatablename();
+$thumbnailId = $I->grabFromDatabase($postmeta, 'meta_value', [
+     'post_id' => $id,
+     'meta_key'=>'thumbnail_id'
+]);
+// Remove only the database entry (including postmeta) but not the files.
+$I->dontHaveAttachmentInDatabase($thumbnailId);
+// Remove the database entry (including postmeta) and the files.
+$I->dontHaveAttachmentInDatabase($thumbnailId, true, true);
+
+

dontHaveBlogInDatabase

+

Signature: dontHaveBlogInDatabase(array $criteria, [bool $removeTables], [bool $removeUploads]) : void

+

Removes one ore more blogs from the database.

+
<?php
+// Remove the blog, all its tables and files.
+$I->dontHaveBlogInDatabase(['path' => 'test/one']);
+// Remove the blog entry, not the tables though.
+$I->dontHaveBlogInDatabase(['blog_id' => $blogId]);
+// Remove multiple blogs.
+$I->dontHaveBlogInDatabase(['domain' => 'test']);
+
+

dontHaveCommentInDatabase

+

Signature: dontHaveCommentInDatabase(array $criteria, [bool $purgeMeta]) : void

+

Removes an entry from the comments table.

+
<?php
+$I->dontHaveCommentInDatabase(['comment_post_ID' => 23, 'comment_url' => 'http://example.copm']);
+
+

dontHaveCommentMetaInDatabase

+

Signature: dontHaveCommentMetaInDatabase(array $criteria) : void

+

Removes a post comment meta from the database

+
<?php
+// Remove all meta for the comment with an ID of 23.
+$I->dontHaveCommentMetaInDatabase(['comment_id' => 23]);
+// Remove the `count` comment meta for the comment with an ID of 23.
+$I->dontHaveCommentMetaInDatabase(['comment_id' => 23, 'meta_key' => 'count']);
+
+

dontHaveInDatabase

+

Signature: dontHaveInDatabase(string $table, array $criteria) : void

+

Deletes a database entry.

+
<?php
+$I->dontHaveInDatabase('custom_table', ['book_ID' => 23, 'book_genre' => 'fiction']);
+
+

dontHaveLinkInDatabase

+

Signature: dontHaveLinkInDatabase(array $criteria) : void

+

Removes a link from the database.

+
<?php
+$I->dontHaveLinkInDatabase(['link_url' => 'http://example.com']);
+
+

dontHaveOptionInDatabase

+

Signature: dontHaveOptionInDatabase(string $key, [mixed $value]) : void

+

Removes an entry from the options table.

+
<?php
+// Remove the `foo` option.
+$I->dontHaveOptionInDatabase('foo');
+// Remove the 'bar' option only if it has the `baz` value.
+$I->dontHaveOptionInDatabase('bar', 'baz');
+
+

dontHavePostInDatabase

+

Signature: dontHavePostInDatabase(array $criteria, [bool $purgeMeta]) : void

+

Removes an entry from the posts table.

+
<?php
+$posts = $I->haveManyPostsInDatabase(3, ['post_title' => 'Test {{n}}']);
+$I->dontHavePostInDatabase(['post_title' => 'Test 2']);
+
+

dontHavePostMetaInDatabase

+

Signature: dontHavePostMetaInDatabase(array $criteria) : void

+

Removes an entry from the postmeta table.

+
<?php
+$postId = $I->havePostInDatabase(['meta_input' => ['rating' => 23]]);
+$I->dontHavePostMetaInDatabase(['post_id' => $postId, 'meta_key' => 'rating']);
+
+

dontHavePostThumbnailInDatabase

+

Signature: dontHavePostThumbnailInDatabase(int $postId) : void

+

Remove the thumbnail (featured image) from a post, if any.

+

Please note: the method will NOT remove the attachment post, post meta and file.

+
<?php
+$attachmentId = $I->haveAttachmentInDatabase(codecept_data_dir('some-image.png'));
+$postId = $I->havePostInDatabase();
+// Attach the thumbnail to the post.
+$I->havePostThumbnailInDatabase($postId, $attachmentId);
+// Remove the thumbnail from the post.
+$I->dontHavePostThumbnailInDatabase($postId);
+
+

dontHaveSiteOptionInDatabase

+

Signature: dontHaveSiteOptionInDatabase(string $key, [mixed $value]) : void

+

Removes a site option from the database.

+
<?php
+// Remove the `foo_count` option.
+$I->dontHaveSiteOptionInDatabase('foo_count');
+// Remove the `foo_count` option only if its value is `23`.
+$I->dontHaveSiteOptionInDatabase('foo_count', 23);
+
+

dontHaveSiteTransientInDatabase

+

Signature: dontHaveSiteTransientInDatabase(string $key) : void

+

Removes a site transient from the database.

+
<?php
+$I->dontHaveSiteTransientInDatabase(['my_plugin_site_buffer']);
+
+

dontHaveTableInDatabase

+

Signature: dontHaveTableInDatabase(string $fullTableName) : void

+

Removes a table from the database. +The case where a table does not exist is handled without raising an error.

+
<?php
+$ordersTable = $I->grabPrefixedTableNameFor('orders');
+$I->dontHaveTableInDatabase($ordersTable);
+
+

dontHaveTermInDatabase

+

Signature: dontHaveTermInDatabase(array $criteria, [bool $purgeMeta]) : void

+

Removes a term from the database.

+
<?php
+$I->dontHaveTermInDatabase(['name' => 'romance']);
+$I->dontHaveTermInDatabase(['slug' => 'genre--romance']);
+
+

dontHaveTermMetaInDatabase

+

Signature: dontHaveTermMetaInDatabase(array $criteria) : void

+

Removes a term meta from the database.

+
<?php
+// Remove the "karma" key.
+$I->dontHaveTermMetaInDatabase(['term_id' => $termId, 'meta_key' => 'karma']);
+// Remove all meta for the term.
+$I->dontHaveTermMetaInDatabase(['term_id' => $termId]);
+
+

dontHaveTermRelationshipInDatabase

+

Signature: dontHaveTermRelationshipInDatabase(array $criteria) : void

+

Removes an entry from the term_relationships table.

+
<?php
+// Remove the relation between a post and a category.
+$I->dontHaveTermRelationshipInDatabase(['object_id' => $postId, 'term_taxonomy_id' => $ttaxId]);
+// Remove all terms for a post.
+$I->dontHaveTermMetaInDatabase(['object_id' => $postId]);
+
+

dontHaveTermTaxonomyInDatabase

+

Signature: dontHaveTermTaxonomyInDatabase(array $criteria) : void

+

Removes an entry from the term_taxonomy table.

+
<?php
+// Remove a specific term from the genre taxonomy.
+$I->dontHaveTermTaxonomyInDatabase(['term_id' => $postId, 'taxonomy' => 'genre']);
+// Remove all terms for a taxonomy.
+$I->dontHaveTermTaxonomyInDatabase(['taxonomy' => 'genre']);
+
+

dontHaveTransientInDatabase

+

Signature: dontHaveTransientInDatabase(string $transient) : void

+

Removes a transient from the database.

+
<?php
+// Removes the `tweets` transient from the database, if set.
+$I->dontHaveTransientInDatabase('tweets');
+
+

dontHaveUserInDatabase

+

Signature: dontHaveUserInDatabase(string|int $userIdOrLogin, [bool $purgeMeta]) : void

+

Removes a user from the database.

+
<?php
+$bob = $I->haveUserInDatabase('bob');
+$alice = $I->haveUserInDatabase('alice');
+// Remove Bob's user and meta.
+$I->dontHaveUserInDatabase('bob');
+// Remove Alice's user but not meta.
+$I->dontHaveUserInDatabase($alice);
+
+

dontHaveUserInDatabaseWithEmail

+

Signature: dontHaveUserInDatabaseWithEmail(string $userEmail, [bool $purgeMeta]) : array

+

Removes a user(s) from the database using the user email address.

+
<?php
+$luca = $I->haveUserInDatabase('luca', 'editor', ['user_email' => 'luca@example.org']);
+$I->dontHaveUserInDatabaseWithEmail('luca@exampl.org');
+
+

dontHaveUserMetaInDatabase

+

Signature: dontHaveUserMetaInDatabase(array $criteria) : void

+

Removes an entry from the usermeta table.

+
<?php
+// Remove the `karma` user meta for a user.
+$I->dontHaveUserMetaInDatabase(['user_id' => 23, 'meta_key' => 'karma']);
+// Remove all the user meta for a user.
+$I->dontHaveUserMetaInDatabase(['user_id' => 23]);
+
+

dontSeeAttachmentInDatabase

+

Signature: dontSeeAttachmentInDatabase(array $criteria) : void

+

Checks that an attachment is not in the database.

+
<?php
+$url = 'https://example.org/images/foo.png';
+$I->dontSeeAttachmentInDatabase(['guid' => $url]);
+
+

dontSeeBlogInDatabase

+

Signature: dontSeeBlogInDatabase(array $criteria) : void

+

Checks that a row is not present in the blogs table.

+
<?php
+$I->haveManyBlogsInDatabase(2, ['path' => 'test-{{n}}'], false)
+$I->dontSeeBlogInDatabase(['path' => '/test-3/'])
+
+

dontSeeCommentInDatabase

+

Signature: dontSeeCommentInDatabase(array $criteria) : void

+

Checks that a comment is not in the database.

+

Will look up the "comments" table.

+
<?php
+// Checks for one comment.
+$I->dontSeeCommentInDatabase(['comment_ID' => 23]);
+// Checks for comments from a user.
+$I->dontSeeCommentInDatabase(['user_id' => 89]);
+
+

dontSeeCommentMetaInDatabase

+

Signature: dontSeeCommentMetaInDatabase(array $criteria) : void

+

Checks that a comment meta value is not in the database.

+

Will look up the "commentmeta" table.

+
<?php
+// Delete a comment `karma` meta.
+$I->dontSeeCommentMetaInDatabase(['comment_id' => 23, 'meta_key' => 'karma']);
+// Delete all meta for a comment.
+$I->dontSeeCommentMetaInDatabase(['comment_id' => 23]);
+
+

dontSeeInDatabase

+

Signature: dontSeeInDatabase(string $table, [array $criteria]) : void

+

dontSeeLinkInDatabase

+

Signature: dontSeeLinkInDatabase(array $criteria) : void

+

Checks that a link is not in the links database table.

+
<?php
+$I->dontSeeLinkInDatabase(['link_url' => 'http://example.com']);
+$I->dontSeeLinkInDatabase(['link_url' => 'http://example.com', 'link_name' => 'example']);
+
+

dontSeeOptionInDatabase

+

Signature: dontSeeOptionInDatabase(array|string $criteriaOrName, [mixed $value]) : void

+

Checks that an option is not in the database for the current blog.

+

If the value is an object or an array then the serialized option will be checked.

+
<?php
+$I->dontHaveOptionInDatabase('posts_per_page');
+$I->dontSeeOptionInDatabase('posts_per_page');
+$I->dontSeeOptionInDatabase('posts_per_page', 23);
+$I->dontSeeOptionInDatabase(['option_name' => 'posts_per_page']);
+$I->dontSeeOptionInDatabase(['option_name' => 'posts_per_page', 'option_value' => 23]);
+
+

dontSeePageInDatabase

+

Signature: dontSeePageInDatabase(array $criteria) : void

+

Checks that a page is not in the database.

+
<?php
+// Assert a page with an ID does not exist.
+$I->dontSeePageInDatabase(['ID' => 23]);
+// Assert a page with a slug and ID.
+$I->dontSeePageInDatabase(['post_name' => 'test', 'ID' => 23]);
+
+

dontSeePostInDatabase

+

Signature: dontSeePostInDatabase(array $criteria) : void

+

Checks that a post is not in the database.

+
<?php
+// Asserts a post with title 'Test' is not in the database.
+$I->dontSeePostInDatabase(['post_title' => 'Test']);
+// Asserts a post with title 'Test' and content 'Test content' is not in the database.
+$I->dontSeePostInDatabase(['post_title' => 'Test', 'post_content' => 'Test content']);
+
+

dontSeePostMetaInDatabase

+

Signature: dontSeePostMetaInDatabase(array $criteria) : void

+

Checks that a post meta value does not exist.

+

If the meta value is an object or an array then the check will be made on its serialized version.

+
<?php
+$postId = $I->havePostInDatabase(['meta_input' => ['foo' => 'bar']]);
+$I->dontSeePostMetaInDatabase(['post_id' => $postId, 'meta_key' => 'woot']);
+
+

dontSeePostWithTermInDatabase

+

Signature: dontSeePostWithTermInDatabase(int $post_id, int $term_taxonomy_id, [?int $term_order], [?string $taxonomy]) : void

+

Checks that a post to term relation does not exist in the database.

+

The method will check the "term_relationships" table.

+
<?php
+$fiction = $I->haveTermInDatabase('fiction', 'genre');
+$nonFiction = $I->haveTermInDatabase('non-fiction', 'genre');
+$postId = $I->havePostInDatabase(['tax_input' => ['genre' => ['fiction']]]);
+$I->dontSeePostWithTermInDatabase($postId, $nonFiction['term_taxonomy_id], );
+
+

dontSeeSiteOptionInDatabase

+

Signature: dontSeeSiteOptionInDatabase(array|string $criteriaOrName, [mixed $value]) : void

+

Checks that a site option is not in the database.

+
<?php
+// Check that the option is not set in the database.
+$I->dontSeeSiteOptionInDatabase('foo_count');
+// Check that the option is not set with a specific value.
+$I->dontSeeSiteOptionInDatabase('foo_count', 23);
+$I->dontSeeSiteOptionInDatabase(['option_name => 'foo_count', 'option_value' => 23]);
+
+

dontSeeSiteTransientInDatabase

+

Signature: dontSeeSiteTransientInDatabase(string $transient, [mixed $value]) : void

+

Checks that a site transient is not in the database.

+
<?php
+$I->dontSeeSiteTransientInDatabase('foo');
+$I->dontSeeSiteTransientInDatabase('foo', 23);
+
+

dontSeeTableInDatabase

+

Signature: dontSeeTableInDatabase(string $table) : void

+

Checks that a table is not in the database.

+
<?php
+$options = $I->grabPrefixedTableNameFor('options');
+$I->dontHaveTableInDatabase($options)
+$I->dontSeeTableInDatabase($options);
+
+

dontSeeTermInDatabase

+

Signature: dontSeeTermInDatabase(array $criteria) : void

+

Makes sure a term is not in the database.

+

Looks up both the terms table and the term_taxonomy tables.

+
<?php
+// Asserts a 'fiction' term is not in the database.
+$I->dontSeeTermInDatabase(['name' => 'fiction']);
+// Asserts a 'fiction' term with slug 'genre--fiction' is not in the database.
+$I->dontSeeTermInDatabase(['name' => 'fiction', 'slug' => 'genre--fiction']);
+
+

dontSeeTermMetaInDatabase

+

Signature: dontSeeTermMetaInDatabase(array $criteria) : void

+

Checks that a term meta is not in the database.

+
<?php
+list($termId, $termTaxonomyId) = $I->haveTermInDatabase('fiction', 'genre');
+$I->haveTermMetaInDatabase($termId, 'rating', 4);
+$I->dontSeeTermMetaInDatabase(['term_id' => $termId,'meta_key' => 'average_review']);
+
+

dontSeeTermTaxonomyInDatabase

+

Signature: dontSeeTermTaxonomyInDatabase(array $criteria) : void

+

Checks that a term taxonomy is not in the database.

+
<?php
+list($termId, $termTaxonomyId) = $I->haveTermInDatabase('fiction', 'genre');
+$I->dontSeeTermTaxonomyInDatabase(['term_id' => $termId, 'taxonomy' => 'country']);
+
+

dontSeeTransientInDatabase

+

Signature: dontSeeTransientInDatabase(string $transient, [mixed $value]) : void

+

Checks that a transient is not in the database.

+
<?php
+$I->dontSeeTransientInDatabase('foo');
+$I->dontSeeTransientInDatabase('foo', 23);
+
+

dontSeeUserInDatabase

+

Signature: dontSeeUserInDatabase(array $criteria) : void

+

Checks that a user is not in the database.

+
<?php
+// Asserts a user does not exist in the database.
+$I->dontSeeUserInDatabase(['user_login' => 'luca']);
+// Asserts a user with email and login is not in the database.
+$I->dontSeeUserInDatabase(['user_login' => 'luca', 'user_email' => 'luca@theaveragedev.com']);
+
+

dontSeeUserMetaInDatabase

+

Signature: dontSeeUserMetaInDatabase(array $criteria) : void

+

Check that a user meta value is not in the database.

+
<?php
+// Asserts a user does not have a 'karma' meta assigned.
+$I->dontSeeUserMetaInDatabase(['user_id' => 23, 'meta_key' => 'karma']);
+// Asserts no user has any 'karma' meta assigned.
+$I->dontSeeUserMetaInDatabase(['meta_key' => 'karma']);
+
+

getSiteDomain

+

Signature: getSiteDomain() : string

+

Returns the site domain inferred from the url set in the config.

+
<?php
+$domain = $I->getSiteDomain();
+// We should be redirected to the HTTPS version when visiting the HTTP version.
+$I->amOnPage('http://' . $domain);
+$I->seeCurrentUrlEquals('https://' . $domain);
+
+

getUsersTableName

+

Signature: getUsersTableName() : string

+

Returns the prefixed users table name.

+
<?php
+// Given a `wp_` table prefix returns `wp_users`.
+$usersTable = $I->getUsersTableName();
+// Given a `wp_` table prefix returns `wp_users`.
+$I->useBlog(23);
+$usersTable = $I->getUsersTableName();
+
+

grabAllFromDatabase

+

Signature: grabAllFromDatabase(string $table, string $column, array $criteria) : array

+

Returns all entries matching a criteria from the database.

+
<?php
+$books = $I->grabPrefixedTableNameFor('books');
+$I->grabAllFromDatabase($books, 'title', ['genre' => 'fiction']);
+
+

grabAttachmentAttachedFile

+

Signature: grabAttachmentAttachedFile(int $attachmentPostId) : string

+

Returns the path, as stored in the database, of an attachment _wp_attached_file meta. +The attached file is, usually, an attachment origal file.

+
<?php
+$file = $I->grabAttachmentAttachedFile($attachmentId);
+$fileInfo = new SplFileInfo($file);
+$I->assertEquals('jpg', $fileInfo->getExtension());
+
+

grabAttachmentMetadata

+

Signature: grabAttachmentMetadata(int $attachmentPostId) : array

+

Returns the metadata array for an attachment post. +This is the value of the _wp_attachment_metadata meta.

+
<?php
+$metadata = $I->grabAttachmentMetadata($attachmentId);
+$I->assertEquals(['thumbnail', 'medium', 'medium_large'], array_keys($metadata['sizes']);
+
+

grabBlogDomain

+

Signature: grabBlogDomain(int $blogId) : string

+

Returns a blog domain given its ID.

+
<?php
+$blogIds = $I->haveManyBlogsInDatabase(3);
+$domains = array_map(function($blogId){
+     return $I->grabBlogDomain($blogId);
+}, $blogIds);
+
+

grabBlogPath

+

Signature: grabBlogPath(int $blogId) : string

+

Grabs a blog domain from the blogs table.

+
<?php
+$blogId = $I->haveBlogInDatabase('test');
+$path = $I->grabBlogDomain($blogId);
+$I->amOnSubdomain($path);
+$I->amOnPage('/');
+
+

grabBlogTableName

+

Signature: grabBlogTableName(int $blogId, string $table) : string

+

Returns the full name of a table for a blog from a multisite installation database.

+
<?php
+$blogOptionTable = $I->grabBlogTableName($blogId, 'option');
+
+

grabBlogTableNames

+

Signature: grabBlogTableNames(int $blogId) : array

+

Returns a list of tables for a blog ID.

+
<?php
+     $blogId = $I->haveBlogInDatabase('test');
+     $tables = $I->grabBlogTableNames($blogId);
+     $options = array_filter($tables, function($tableName){
+     return str_pos($tableName, 'options') !== false;
+});
+
+

grabBlogTablePrefix

+

Signature: grabBlogTablePrefix(int $blogId) : string

+

Returns the table prefix for a blog.

+
<?php
+$blogId = $I->haveBlogInDatabase('test');
+$blogTablePrefix = $I->getBlogTablePrefix($blogId);
+$blogOrders = $I->blogTablePrefix . 'orders';
+
+

grabBlogUrl

+

Signature: grabBlogUrl([int $blogId]) : string

+

Gets the blog URL from the Blog ID.

+

grabBlogVersionsTableName

+

Signature: grabBlogVersionsTableName() : string

+

Gets the prefixed blog_versions table name.

+
<?php
+// Assuming a `wp_` table prefix it will return `wp_blog_versions`.
+$blogVersionsTable = $I->grabBlogVersionsTableName();
+$I->useBlog(23);
+// Assuming a `wp_` table prefix it will return `wp_blog_versions`.
+$blogVersionsTable = $I->grabBlogVersionsTableName();
+
+

grabBlogsTableName

+

Signature: grabBlogsTableName() : string

+

Gets the prefixed blogs table name.

+
<?php
+// Assuming a `wp_` table prefix it will return `wp_blogs`.
+$blogVersionsTable = $I->grabBlogsTableName();
+$I->useBlog(23);
+// Assuming a `wp_` table prefix it will return `wp_blogs`.
+$blogVersionsTable = $I->grabBlogsTableName();
+
+

grabColumnFromDatabase

+

Signature: grabColumnFromDatabase(string $table, string $column, [array $criteria]) : array

+

Fetches all values from the column in database. +Provide table name, desired column and criteria.

+
<?php
+$mails = $I->grabColumnFromDatabase('users', 'email', array('name' => 'RebOOter'));
+
+

grabCommentmetaTableName

+

Signature: grabCommentmetaTableName() : string

+

Returns the prefixed comment meta table name.

+
<?php
+// Get all the values of 'karma' for all comments.
+$commentMeta = $I->grabCommentmetaTableName();
+$I->grabAllFromDatabase($commentMeta, 'meta_value', ['meta_key' => 'karma']);
+
+

grabCommentsTableName

+

Signature: grabCommentsTableName() : string

+

Gets the comments table name.

+
<?php
+// Will be `wp_comments`.
+$comments = $I->grabCommentsTableName();
+// Will be `wp_23_comments`.
+$I->useBlog(23);
+$comments = $I->grabCommentsTableName();
+
+

grabEntriesFromDatabase

+

Signature: grabEntriesFromDatabase(string $table, [array $criteria]) : array

+

Fetches a set of entries from a database. +Provide table name and criteria.

+

<?php
+$mail = $I->grabEntriesFromDatabase('users', array('name' => 'Davert'));
+
+Comparison expressions can be used as well:

+
<?php
+$post = $I->grabEntriesFromDatabase('posts', ['num_comments >=' => 100]);
+$user = $I->grabEntriesFromDatabase('users', ['email like' => 'miles%']);
+
+

Supported operators: <, >, >=, <=, !=, like.

+

grabEntryFromDatabase

+

Signature: grabEntryFromDatabase(string $table, [array $criteria]) : array

+

Fetches a whole entry from a database. +Make the test fail if the entry is not found. +Provide table name, desired column and criteria.

+

<?php
+$mail = $I->grabEntryFromDatabase('users', array('name' => 'Davert'));
+
+Comparison expressions can be used as well:

+
<?php
+$post = $I->grabEntryFromDatabase('posts', ['num_comments >=' => 100]);
+$user = $I->grabEntryFromDatabase('users', ['email like' => 'miles%']);
+
+

Supported operators: <, >, >=, <=, !=, like.

+

grabFromDatabase

+

Signature: grabFromDatabase(string $table, string $column, [array $criteria]) : void

+

Fetches a single column value from a database. +Provide table name, desired column and criteria.

+

<?php
+$mail = $I->grabFromDatabase('users', 'email', array('name' => 'Davert'));
+
+Comparison expressions can be used as well:

+
<?php
+$postNum = $I->grabFromDatabase('posts', 'num_comments', ['num_comments >=' => 100]);
+$mail = $I->grabFromDatabase('users', 'email', ['email like' => 'miles%']);
+
+

Supported operators: <, >, >=, <=, !=, like.

+

grabLatestEntryByFromDatabase

+

Signature: grabLatestEntryByFromDatabase(string $tableName, [string $idColumn]) : int

+

Returns the id value of the last table entry.

+
<?php
+$I->haveManyPostsInDatabase();
+$postsTable = $I->grabPostsTableName();
+$last = $I->grabLatestEntryByFromDatabase($postsTable, 'ID');
+
+

grabLinksTableName

+

Signature: grabLinksTableName() : string

+

Returns the prefixed links table name.

+
<?php
+// Given a `wp_` table prefix returns `wp_links`.
+$linksTable = $I->grabLinksTableName();
+// Given a `wp_` table prefix returns `wp_23_links`.
+$I->useBlog(23);
+$linksTable = $I->grabLinksTableName();
+
+

grabNumRecords

+

Signature: grabNumRecords(string $table, [array $criteria]) : int

+

Returns the number of rows in a database

+

grabOptionFromDatabase

+

Signature: grabOptionFromDatabase(string $option_name) : mixed

+

Gets an option value from the database.

+
<?php
+$count = $I->grabOptionFromDatabase('foo_count');
+
+

grabPostFieldFromDatabase

+

Signature: grabPostFieldFromDatabase(int $postId, string $field) : mixed

+

Returns the value of a post field for a post, from the posts table.

+
<?php
+$title = $I->grabPostFieldFromDatabase(1, 'post_title');
+$type = $I->grabPostFieldFromDatabase(1, 'post_type');
+
+

grabPostMetaFromDatabase

+

Signature: grabPostMetaFromDatabase(int $postId, string $metaKey, [bool $single]) : mixed

+

Gets the value of one or more post meta values from the database.

+
<?php
+$thumbnail_id = $I->grabPostMetaFromDatabase($postId, '_thumbnail_id', true);
+
+

grabPostmetaTableName

+

Signature: grabPostmetaTableName() : string

+

Returns the prefixed post meta table name.

+
<?php
+// Returns 'wp_postmeta'.
+$I->grabPostmetaTableName();
+// Returns 'wp_23_postmeta'.
+$I->useBlog(23);
+$I->grabPostmetaTableName();
+
+

grabPostsTableName

+

Signature: grabPostsTableName() : string

+

Gets the posts prefixed table name.

+
<?php
+// Given a `wp_` table prefix returns `wp_posts`.
+$postsTable = $I->grabPostsTableName();
+// Given a `wp_` table prefix returns `wp_23_posts`.
+$I->useBlog(23);
+$postsTable = $I->grabPostsTableName();
+
+

grabPrefixedTableNameFor

+

Signature: grabPrefixedTableNameFor([string $tableName]) : string

+

Returns a prefixed table name for the current blog.

+

If the table is not one to be prefixed (e.g. users) then the proper table name will be returned.

+
<?php
+// Will return wp_users.
+$usersTable = $I->grabPrefixedTableNameFor('users');
+// Will return wp_options.
+$optionsTable = $I->grabPrefixedTableNameFor('options');
+// Use a different blog and get its options table.
+$I->useBlog(2);
+$blogOptionsTable = $I->grabPrefixedTableNameFor('options');
+
+

grabRegistrationLogTableName

+

Signature: grabRegistrationLogTableName() : string

+

Gets the prefixed registration_log table name.

+
<?php
+// Assuming a `wp_` table prefix it will return `wp_registration_log`.
+$blogVersionsTable = $I->grabRegistrationLogTableName();
+$I->useBlog(23);
+// Assuming a `wp_` table prefix it will return `wp_registration_log`.
+$blogVersionsTable = $I->grabRegistrationLogTableName();
+
+

grabSignupsTableName

+

Signature: grabSignupsTableName() : string

+

Gets the prefixed signups table name.

+
<?php
+// Assuming a `wp_` table prefix it will return `wp_signups`.
+$blogVersionsTable = $I->grabSignupsTableName();
+$I->useBlog(23);
+// Assuming a `wp_` table prefix it will return `wp_signups`.
+$blogVersionsTable = $I->grabSignupsTableName();
+
+

grabSiteMetaFromDatabase

+

Signature: grabSiteMetaFromDatabase(int $blogId, string $key, bool $single) : mixed

+

Returns a single or all meta values for a site meta key.

+
<?php
+$I->haveSiteMetaInDatabase(1, 'foo', 'bar');
+$value = $I->grabSiteMetaFromDatabase(1, 'foo', true);
+$values = $I->grabSiteMetaFromDatabase(1, 'foo', false);
+
+

grabSiteMetaTableName

+

Signature: grabSiteMetaTableName() : string

+

Gets the prefixed sitemeta table name.

+
<?php
+// Assuming a `wp_` table prefix it will return `wp_sitemeta`.
+$blogVersionsTable = $I->grabSiteMetaTableName();
+$I->useBlog(23);
+// Assuming a `wp_` table prefix it will return `wp_sitemeta`.
+$blogVersionsTable = $I->grabSiteMetaTableName();
+
+

grabSiteOptionFromDatabase

+

Signature: grabSiteOptionFromDatabase(string $key) : mixed

+

Gets a site option from the database.

+
<?php
+$fooCountOptionId = $I->haveSiteOptionInDatabase('foo_count','23');
+
+

grabSiteTableName

+

Signature: grabSiteTableName() : string

+

Gets the prefixed site table name.

+
<?php
+// Assuming a `wp_` table prefix it will return `wp_site`.
+$blogVersionsTable = $I->grabSiteTableName();
+$I->useBlog(23);
+// Assuming a `wp_` table prefix it will return `wp_site`.
+$blogVersionsTable = $I->grabSiteTableName();
+
+

grabSiteTransientFromDatabase

+

Signature: grabSiteTransientFromDatabase(string $key) : mixed

+

Gets a site transient from the database.

+
<?php
+$I->grabSiteTransientFromDatabase('total_comments');
+$I->grabSiteTransientFromDatabase('api_data');
+
+

grabSiteUrl

+

Signature: grabSiteUrl([?string $path]) : string

+

Returns the current site URL as specified in the module configuration.

+
<?php
+$shopPath = $I->grabSiteUrl('/shop');
+
+

grabTablePrefix

+

Signature: grabTablePrefix() : string

+

Returns the table prefix, namespaced for secondary blogs if selected.

+
<?php
+// Assuming a table prefix of `wp_` it will return `wp_`;
+$tablePrefix = $I->grabTablePrefix();
+$I->useBlog(23);
+// Assuming a table prefix of `wp_` it will return `wp_23_`;
+$tablePrefix = $I->grabTablePrefix();
+
+

grabTermIdFromDatabase

+

Signature: grabTermIdFromDatabase(array $criteria) : int|false

+

Gets a term ID from the database. +Looks up the prefixed terms table, e.g. wp_terms.

+
<?php
+// Return the 'fiction' term 'term_id'.
+$termId = $I->grabTermIdFromDatabase(['name' => 'fiction']);
+// Get a term ID by more stringent criteria.
+$termId = $I->grabTermIdFromDatabase(['name' => 'fiction', 'slug' => 'genre--fiction']);
+// Return the 'term_id' of the first term for a group.
+$termId = $I->grabTermIdFromDatabase(['term_group' => 23]);
+
+

grabTermMetaTableName

+

Signature: grabTermMetaTableName() : string

+

Gets the terms meta table prefixed name.

+
<?php
+// Returns 'wp_termmeta'.
+$I->grabTermMetaTableName();
+// Returns 'wp_23_termmeta'.
+$I->useBlog(23);
+$I->grabTermMetaTableName();
+
+

grabTermRelationshipsTableName

+

Signature: grabTermRelationshipsTableName() : string

+

Gets the prefixed term relationships table name, e.g. wp_term_relationships.

+
<?php
+$I->grabTermRelationshipsTableName();
+
+

grabTermTaxonomyIdFromDatabase

+

Signature: grabTermTaxonomyIdFromDatabase(array $criteria) : int|false

+

Gets a term_taxonomy_id from the database.

+

Looks up the prefixed terms_relationships table, e.g. wp_term_relationships.

+
<?php
+// Get the `term_taxonomy_id` for a term and a taxonomy.
+$I->grabTermTaxonomyIdFromDatabase(['term_id' => $fictionId, 'taxonomy' => 'genre']);
+// Get the `term_taxonomy_id` for the first term with a count of 23.
+$I->grabTermTaxonomyIdFromDatabase(['count' => 23]);
+
+

grabTermTaxonomyTableName

+

Signature: grabTermTaxonomyTableName() : string

+

Gets the prefixed term and taxonomy table name, e.g. wp_term_taxonomy.

+
<?php
+// Returns 'wp_term_taxonomy'.
+$I->grabTermTaxonomyTableName();
+// Returns 'wp_23_term_taxonomy'.
+$I->useBlog(23);
+$I->grabTermTaxonomyTableName();
+
+

grabTermsTableName

+

Signature: grabTermsTableName() : string

+

Gets the prefixed terms table name, e.g. wp_terms.

+
<?php
+// Returns 'wp_terms'.
+$I->grabTermsTableName();
+// Returns 'wp_23_terms'.
+$I->useBlog(23);
+$I->grabTermsTableName();
+
+

grabTransientFromDatabase

+

Signature: grabTransientFromDatabase(string $transient) : mixed

+

Fetches the value of a transient from the database.

+
<?php
+$I->haveTransientInDatabase('foo', 23);
+$transientValue = $I->grabTransientFromDatabase('foo');
+$I->assertEquals(23, $transientValue);
+
+

grabUserIdFromDatabase

+

Signature: grabUserIdFromDatabase(string $userLogin) : int|false

+

Gets the a user ID from the database using the user login.

+
<?php
+$userId = $I->grabUserIdFromDatabase('luca');
+
+

grabUserMetaFromDatabase

+

Signature: grabUserMetaFromDatabase(int $userId, string $meta_key, [bool $single]) : mixed

+

Gets a user meta from the database.

+
<?php
+// Returns a user 'karma' value.
+$I->grabUserMetaFromDatabase($userId, 'karma');
+// Returns an array, the unserialized version of the value stored in the database.
+$I->grabUserMetaFromDatabase($userId, 'api_data');
+
+

grabUsermetaTableName

+

Signature: grabUsermetaTableName() : string

+

Returns the prefixed users meta table name.

+
<?php
+// Given a `wp_` table prefix returns `wp_usermeta`.
+$usermetaTable = $I->grabUsermetaTableName();
+// Given a `wp_` table prefix returns `wp_usermeta`.
+$I->useBlog(23);
+$usermetaTable = $I->grabUsermetaTableName();
+
+

grabUsersTableName

+

Signature: grabUsersTableName() : string

+

Returns the prefixed users table name.

+
<?php
+// Given a `wp_` table prefix returns `wp_users`.
+$usersTable = $I->grabUsersTableName();
+// Given a `wp_` table prefix returns `wp_users`.
+$I->useBlog(23);
+$usersTable = $I->grabUsersTableName();
+
+

haveAttachmentInDatabase

+

Signature: haveAttachmentInDatabase(string $file, [string|int $date], [array $overrides], [?array $imageSizes]) : int

+

Creates the database entries representing an attachment and moves the attachment file to the right location.

+
<?php
+$file = codecept_data_dir('images/test.png');
+$attachmentId = $I->haveAttachmentInDatabase($file);
+$image = codecept_data_dir('images/test-2.png');
+$lastWeekAttachment = $I->haveAttachmentInDatabase($image, '-1 week');
+
+

Requires the WPFilesystem module.

+

haveBlogInDatabase

+

Signature: haveBlogInDatabase(string $domainOrPath, [array $overrides], [bool $subdomain]) : int

+

Inserts a blog in the blogs table.

+
<?php
+// Create the `test` subdomain blog.
+$blogId = $I->haveBlogInDatabase('test', ['administrator' => $userId]);
+// Create the `/test` subfolder blog.
+$blogId = $I->haveBlogInDatabase('test', ['administrator' => $userId], false);
+
+

haveCommentInDatabase

+

Signature: haveCommentInDatabase(int $comment_post_ID, [array $data]) : int

+

Inserts a comment in the database.

+
<?php
+$I->haveCommentInDatabase($postId, ['comment_content' => 'Test Comment', 'comment_karma' => 23]);
+
+

haveCommentMetaInDatabase

+

Signature: haveCommentMetaInDatabase(int $comment_id, string $meta_key, mixed $meta_value) : int

+

Inserts a comment meta field in the database. +Array and object meta values will be serialized.

+
<?php
+$I->haveCommentMetaInDatabase($commentId, 'api_ID', 23);
+// The value will be serialized.
+$apiData = ['ID' => 23, 'user' => 89, 'origin' => 'twitter'];
+$I->haveCommentMetaInDatabase($commentId, 'api_data', $apiData);
+
+

haveInDatabase

+

Signature: haveInDatabase(string $table, array $data) : int

+

Inserts an SQL record into a database. This record will be erased after the test, +unless you've configured "skip_cleanup_if_failed", and the test fails.

+
<?php
+$I->haveInDatabase('users', array('name' => 'miles', 'email' => 'miles@davis.com'));
+
+

haveLinkInDatabase

+

Signature: haveLinkInDatabase([array $overrides]) : int

+

Inserts a link in the database.

+
<?php
+$linkId = $I->haveLinkInDatabase(['link_url' => 'http://example.org']);
+
+

haveManyBlogsInDatabase

+

Signature: haveManyBlogsInDatabase(int $count, [array $overrides], [bool $subdomain]) : array

+

Inserts many blogs in the database.

+
<?php
+     $blogIds = $I->haveManyBlogsInDatabase(3, ['domain' =>'test-{{n}}']);
+     foreach($blogIds as $blogId){
+     $I->useBlog($blogId);
+     $I->haveManuPostsInDatabase(3);
+}
+
+

haveManyCommentsInDatabase

+

Signature: haveManyCommentsInDatabase(int $count, int $comment_post_ID, [array $overrides]) : array

+

Inserts many comments in the database.

+
<?php
+// Insert 3 random comments for a post.
+$I->haveManyCommentsInDatabase(3, $postId);
+// Insert 3 random comments for a post.
+$I->haveManyCommentsInDatabase(3, $postId, ['comment_content' => 'Comment {{n}}']);
+
+

haveManyLinksInDatabase

+

Signature: haveManyLinksInDatabase(int $count, [array $overrides]) : array

+

Inserts many links in the database links table.

+
<?php
+// Insert 3 randomly generated links in the database.
+$linkIds = $I->haveManyLinksInDatabase(3);
+// Inserts links in the database replacing the `n` placeholder.
+$linkIds = $I->haveManyLinksInDatabase(3, ['link_url' => 'http://example.org/test-{{n}}']);
+
+

haveManyPostsInDatabase

+

Signature: haveManyPostsInDatabase(int $count, [array $overrides]) : array

+

Inserts many posts in the database returning their IDs.

+
<?php
+// Insert 3 random posts.
+$I->haveManyPostsInDatabase(3);
+// Insert 3 posts with generated titles.
+$I->haveManyPostsInDatabase(3, ['post_title' => 'Test post {{n}}']);
+
+

haveManyTermsInDatabase

+

Signature: haveManyTermsInDatabase(int $count, string $name, string $taxonomy, [array $overrides]) : array

+

Inserts many terms in the database.

+
<?php
+$terms = $I->haveManyTermsInDatabase(3, 'genre-{{n}}', 'genre');
+$termIds = array_column($terms, 0);
+$termTaxonomyIds = array_column($terms, 1);
+
+

haveManyUsersInDatabase

+

Signature: haveManyUsersInDatabase(int $count, string $user_login, [string $role], [array $overrides]) : array

+

Inserts many users in the database.

+
<?php
+$subscribers = $I->haveManyUsersInDatabase(5, 'user-{{n}}');
+$editors = $I->haveManyUsersInDatabase(
+     5,
+     'user-{{n}}',
+     'editor',
+     ['user_email' => 'user-{{n}}@example.org']
+);
+
+

haveMenuInDatabase

+

Signature: haveMenuInDatabase(string $slug, string $location, [array $overrides]) : array

+

Creates and adds a menu to a theme location in the database.

+
<?php
+list($termId, $termTaxId) = $I->haveMenuInDatabase('test', 'sidebar');
+
+

haveMenuItemInDatabase

+

Signature: haveMenuItemInDatabase(string $menuSlug, string $title, [?int $menuOrder], [array $meta]) : int

+

Adds a menu element to a menu for the current theme.

+
<?php
+$I->haveMenuInDatabase('test', 'sidebar');
+$I->haveMenuItemInDatabase('test', 'Test one', 0);
+$I->haveMenuItemInDatabase('test', 'Test two', 1);
+
+

haveOptionInDatabase

+

Signature: haveOptionInDatabase(string $option_name, mixed $option_value, [string $autoload]) : int

+

Inserts an option in the database.

+
<?php
+$I->haveOptionInDatabase('posts_per_page', 23);
+$I->haveOptionInDatabase('my_plugin_options', ['key_one' => 'value_one', 'key_two' => 89]);
+
+

If the option value is an object or an array then the value will be serialized.

+

havePageInDatabase

+

Signature: havePageInDatabase([array $overrides]) : int

+

Inserts a page in the database.

+
<?php
+// Creates a test page in the database with random values.
+$randomPageId = $I->havePageInDatabase();
+// Creates a test page in the database defining its title.
+$testPageId = $I->havePageInDatabase(['post_title' => 'Test page']);
+
+

havePostInDatabase

+

Signature: havePostInDatabase([array $data]) : int

+

Inserts a post in the database.

+
<?php
+// Insert a post with random values in the database.
+$randomPostId = $I->havePostInDatabase();
+// Insert a post with specific values in the database.
+$I->havePostInDatabase([
+'post_type' => 'book',
+'post_title' => 'Alice in Wonderland',
+'meta_input' => [
+'readers_count' => 23
+],
+'tax_input' => [
+['genre' => 'fiction']
+]
+]);
+
+

havePostThumbnailInDatabase

+

Signature: havePostThumbnailInDatabase(int $postId, int $thumbnailId) : int

+

Assigns the specified attachment ID as thumbnail (featured image) to a post.

+
<?php
+$attachmentId = $I->haveAttachmentInDatabase(codecept_data_dir('some-image.png'));
+$postId = $I->havePostInDatabase();
+$I->havePostThumbnailInDatabase($postId, $attachmentId);
+
+

havePostmetaInDatabase

+

Signature: havePostmetaInDatabase(int $postId, string $meta_key, mixed $meta_value) : int

+

Adds one or more meta key and value couples in the database for a post.

+
<?php
+// Set the post-meta for a post.
+$I->havePostmetaInDatabase($postId, 'karma', 23);
+// Set an array post-meta for a post, it will be serialized in the db.
+$I->havePostmetaInDatabase($postId, 'data', ['one', 'two']);
+// Use a loop to insert one meta per row.
+foreach( ['one', 'two'] as $value){
+     $I->havePostmetaInDatabase($postId, 'data', $value);
+}
+
+

haveSiteMetaInDatabase

+

Signature: haveSiteMetaInDatabase(int $blogId, string $string, mixed $value) : int

+

Adds a meta key and value for a site in the database.

+
<?php
+$I->haveSiteMetaInDatabase(1, 'foo', 'bar');
+$insertedId = $I->haveSiteMetaInDatabase(2, 'foo', ['bar' => 'baz']);
+
+

haveSiteOptionInDatabase

+

Signature: haveSiteOptionInDatabase(string $key, mixed $value) : int

+

Inserts a site option in the database.

+

If the value is an array or an object then the value will be serialized.

+
<?php
+$fooCountOptionId = $I->haveSiteOptionInDatabase('foo_count','23');
+
+

haveSiteTransientInDatabase

+

Signature: haveSiteTransientInDatabase(string $key, mixed $value) : int

+

Inserts a site transient in the database. +If the value is an array or an object then the value will be serialized.

+
<?php
+$I->haveSiteTransientInDatabase('total_comments_count', 23);
+// This value will be serialized.
+$I->haveSiteTransientInDatabase('api_data', ['user' => 'luca', 'token' => '11ae3ijns-j83']);
+
+

haveTermInDatabase

+

Signature: haveTermInDatabase(string $name, string $taxonomy, [array $overrides]) : array

+

Inserts a term in the database.

+
<?php
+// Insert a random 'genre' term in the database.
+$I->haveTermInDatabase('non-fiction', 'genre');
+// Insert a term in the database with term meta.
+$I->haveTermInDatabase('fiction', 'genre', [
+     'slug' => 'genre--fiction',
+     'meta' => [
+        'readers_count' => 23
+     ]
+]);
+
+

haveTermMetaInDatabase

+

Signature: haveTermMetaInDatabase(int $term_id, string $meta_key, mixed $meta_value) : int

+

Inserts a term meta row in the database. +Objects and array meta values will be serialized.

+
<?php
+$I->haveTermMetaInDatabase($fictionId, 'readers_count', 23);
+// Insert some meta that will be serialized.
+$I->haveTermMetaInDatabase($fictionId, 'flags', [3, 4, 89]);
+// Use a loop to insert one meta per row.
+foreach([3, 4, 89] as $value) {
+     $I->haveTermMetaInDatabase($fictionId, 'flag', $value);
+}
+
+

haveTermRelationshipInDatabase

+

Signature: haveTermRelationshipInDatabase(int $object_id, int $term_taxonomy_id, [int $term_order]) : void

+

Creates a term relationship in the database.

+

No check about the consistency of the insertion is made. E.g. a post could be assigned a term from +a taxonomy that's not registered for that post type.

+
<?php
+// Assign the `fiction` term to a book.
+$I->haveTermRelationshipInDatabase($bookId, $fictionId);
+
+

haveTransientInDatabase

+

Signature: haveTransientInDatabase(string $transient, mixed $value) : int

+

Inserts a transient in the database.

+

If the value is an array or an object then the value will be serialized. +Since the transients are set in the context of tests it's not possible to +set an expiration directly.

+
<?php
+// Store an array in the `tweets` transient.
+$I->haveTransientInDatabase('tweets', $tweets);
+
+

haveUserCapabilitiesInDatabase

+

Signature: haveUserCapabilitiesInDatabase(int $userId, array|string $role) : array

+

Sets a user capabilities in the database.

+
<?php
+// Assign one user a role in a blog.
+$blogId = $I->haveBlogInDatabase('test');
+$editor = $I->haveUserInDatabase('luca', 'editor');
+$capsIds = $I->haveUserCapabilitiesInDatabase($editor, [$blogId => 'editor']);
+
+// Assign a user two roles in blog 1.
+$capsIds = $I->haveUserCapabilitiesInDatabase($userId, ['editor', 'subscriber']);
+
+// Assign one user different roles in different blogs.
+$capsIds = $I->haveUserCapabilitiesInDatabase($userId, [$blogId1 => 'editor', $blogId2 => 'author']);
+
+// Assign a user a role and an additional capability in blog 1.
+$I->haveUserCapabilitiesInDatabase($userId, ['editor' => true, 'edit_themes' => true]);
+
+// Assign a user a mix of roles and capabilities in different blogs.
+$capsIds = $I->haveUserCapabilitiesInDatabase(
+     $userId,
+     [
+         $blogId1 => ['editor' => true, 'edit_themes' => true],
+         $blogId2 => ['administrator' => true, 'edit_themes' => false]
+     ]
+);
+
+

haveUserInDatabase

+

Signature: haveUserInDatabase(string $user_login, [array|string $role], [array $overrides]) : int

+

Inserts a user and its meta in the database.

+
<?php
+// Create an editor user in blog 1 w/ specific email.
+$userId = $I->haveUserInDatabase('luca', 'editor', ['user_email' => 'luca@example.org']);
+
+// Create a subscriber user in blog 1.
+$subscriberId = $I->haveUserInDatabase('subscriber');
+
+// Create a user editor in blog 1, author in blog 2, administrator in blog 3.
+$userWithMeta = $I->haveUserInDatabase('luca',
+     [
+         1 => 'editor',
+         2 => 'author',
+         3 => 'administrator'
+     ], [
+         'user_email' => 'luca@example.org'
+         'meta' => ['a meta_key' => 'a_meta_value']
+     ]
+);
+
+// Create editor in blog 1 w/ `edit_themes` cap, author in blog 2, admin in blog 3 w/o `manage_options` cap.
+$userWithMeta = $I->haveUserInDatabase('luca',
+     [
+         1 => ['editor', 'edit_themes'],
+         2 => 'author',
+         3 => ['administrator' => true, 'manage_options' => false]
+     ]
+);
+
+// Create a user w/o role.
+$userId = $I->haveUserInDatabase('luca', '');
+
+

haveUserLevelsInDatabase

+

Signature: haveUserLevelsInDatabase(int $userId, array|string $role) : array

+

Sets the user access level meta in the database for a user.

+
<?php
+$userId = $I->haveUserInDatabase('luca', 'editor');
+$moreThanAnEditorLessThanAnAdmin = 8;
+$I->haveUserLevelsInDatabase($userId, $moreThanAnEditorLessThanAnAdmin);
+
+

haveUserMetaInDatabase

+

Signature: haveUserMetaInDatabase(int $userId, string $meta_key, mixed $meta_value) : array

+

Sets a user meta in the database.

+
<?php
+$userId = $I->haveUserInDatabase('luca', 'editor');
+$I->haveUserMetaInDatabase($userId, 'karma', 23);
+
+

importSql

+

Signature: importSql(array $sql) : void

+

Loads a set SQL code lines in the current database.

+
<?php
+// Import a SQL string.
+$I->importSql([$sqlString]);
+// Import a set of SQL strings.
+$I->importSql($sqlStrings);
+// Import a prepared set of SQL strings.
+$preparedSqlStrings = array_map(function($line){
+    return str_replace('{{date}}', date('Y-m-d H:i:s'), $line);
+}, $sqlTemplate);
+$I->importSql($preparedSqlStrings);
+
+

importSqlDumpFile

+

Signature: importSqlDumpFile([?string $dumpFile]) : void

+

Import the SQL dump file if populate is enabled.

+
<?php
+// Import a dump file passing the absolute path.
+$I->importSqlDumpFile(codecept_data_dir('dumps/start.sql'));
+
+

Specifying a dump file that file will be imported.

+

performInDatabase

+

Signature: performInDatabase($databaseKey, $actions) : void

+

Can be used with a callback if you don't want to change the current database in your test.

+

<?php
+$I->seeNumRecords(2, 'users');   //executed on default database
+$I->performInDatabase('db_books', function($I) {
+    $I->seeNumRecords(30, 'books');  //executed on db_books database
+});
+$I->seeNumRecords(2, 'users');  //executed on default database
+
+List of actions can be pragmatically built using Codeception\Util\ActionSequence:

+

<?php
+$I->performInDatabase('db_books', ActionSequence::build()
+    ->seeNumRecords(30, 'books')
+);
+
+Alternatively an array can be used:

+
<?php
+$I->performInDatabase('db_books', ['seeNumRecords' => [30, 'books']]);
+
+

Choose the syntax you like the most and use it,

+

Actions executed from array or ActionSequence will print debug output for actions, and adds an action name to +exception on failure.

+

seeAttachmentInDatabase

+

Signature: seeAttachmentInDatabase(array $criteria) : void

+

Checks for an attachment in the database.

+
<?php
+$url = 'https://example.org/images/foo.png';
+$I->seeAttachmentInDatabase(['guid' => $url]);
+
+

seeBlogInDatabase

+

Signature: seeBlogInDatabase(array $criteria) : void

+

Checks for a blog in the blogs table.

+
<?php
+// Search for a blog by `blog_id`.
+$I->seeBlogInDatabase(['blog_id' => 23]);
+// Search for all blogs on a path.
+$I->seeBlogInDatabase(['path' => '/sub-path/']);
+
+

seeCommentInDatabase

+

Signature: seeCommentInDatabase(array $criteria) : void

+

Checks for a comment in the database.

+

Will look up the "comments" table.

+
<?php
+$I->seeCommentInDatabase(['comment_ID' => 23]);
+
+

seeCommentMetaInDatabase

+

Signature: seeCommentMetaInDatabase(array $criteria) : void

+

Checks that a comment meta value is in the database. +Will look up the "commentmeta" table.

+
<?php
+// Assert a specified meta for a comment exists.
+$I->seeCommentMetaInDatabase(['comment_ID' => $commentId, 'meta_key' => 'karma', 'meta_value' => 23]);
+// Assert the comment has at least one meta set.
+$I->seeCommentMetaInDatabase(['comment_ID' => $commentId]);
+
+

seeInDatabase

+

Signature: seeInDatabase(string $table, [array $criteria]) : void

+

seeLinkInDatabase

+

Signature: seeLinkInDatabase(array $criteria) : void

+

Checks for a link in the links table of the database.

+
<?php
+// Asserts a link exists by name.
+$I->seeLinkInDatabase(['link_name' => 'my-link']);
+// Asserts at least one link exists for the user.
+$I->seeLinkInDatabase(['link_owner' => $userId]);
+
+

seeNumRecords

+

Signature: seeNumRecords(int $expectedNumber, string $table, [array $criteria]) : void

+

Asserts that the given number of records were found in the database.

+
<?php
+$I->seeNumRecords(1, 'users', ['name' => 'davert'])
+
+

seeOptionInDatabase

+

Signature: seeOptionInDatabase(array|string $criteriaOrName, [mixed $value]) : void

+

Checks if an option is in the database for the current blog, either by criteria or by name and value.

+

If checking for an array or an object then the serialized version will be checked for.

+
<?php
+// Checks an option is in the database.
+$I->seeOptionInDatabase('tables_version');
+// Checks an option is in the database and has a specific value.
+$I->seeOptionInDatabase('tables_version', '1.0');
+$I->seeOptionInDatabase(['option_name' => 'tables_version', 'option_value' => 1.0']);
+
+

seePageInDatabase

+

Signature: seePageInDatabase(array $criteria) : void

+

Checks for a page in the database.

+
<?php
+// Asserts a page with an exists in the database.
+$I->seePageInDatabase(['ID' => 23]);
+// Asserts a page with a slug and ID exists in the database.
+$I->seePageInDatabase(['post_title' => 'Test Page', 'ID' => 23]);
+
+

seePostInDatabase

+

Signature: seePostInDatabase(array $criteria) : void

+

Checks for a post in the database.

+
<?php
+// Assert a post exists in the database.
+$I->seePostInDatabase(['ID' => 23]);
+// Assert a post with a slug and ID exists in the database.
+$I->seePostInDatabase(['post_content' => 'test content', 'ID' => 23]);
+
+

seePostMetaInDatabase

+

Signature: seePostMetaInDatabase(array $criteria) : void

+

Checks for a post meta value in the database for the current blog.

+

If the meta_value is an object or an array then the check will be made for serialized values.

+
<?php
+$postId = $I->havePostInDatabase(['meta_input' => ['foo' => 'bar']];
+$I->seePostMetaInDatabase(['post_id' => '$postId', 'meta_key' => 'foo']);
+
+

seePostWithTermInDatabase

+

Signature: seePostWithTermInDatabase(int $post_id, int $term_taxonomy_id, [?int $term_order], [?string $taxonomy]) : void

+

Checks that a post to term relation exists in the database.

+

The method will check the "term_relationships" table.

+
<?php
+$fiction = $I->haveTermInDatabase('fiction', 'genre');
+$postId = $I->havePostInDatabase(['tax_input' => ['genre' => ['fiction']]]);
+$I->seePostWithTermInDatabase($postId, $fiction['term_taxonomy_id']);
+
+

seeSiteOptionInDatabase

+

Signature: seeSiteOptionInDatabase(array|string $criteriaOrName, [mixed $value]) : void

+

Checks that a site option is in the database.

+
<?php
+// Check that the option is set in the database.
+$I->seeSiteOptionInDatabase('foo_count');
+// Check that the option is set and has a specific value.
+$I->seeSiteOptionInDatabase('foo_count', 23);
+
+

seeSiteSiteTransientInDatabase

+

Signature: seeSiteSiteTransientInDatabase(string $key, [mixed $value]) : void

+

Checks that a site option is in the database.

+
<?php
+// Check a transient exists.
+$I->seeSiteSiteTransientInDatabase('total_counts');
+// Check a transient exists and has a specific value.
+$I->seeSiteSiteTransientInDatabase('total_counts', 23);
+
+

seeSiteTransientInDatabase

+

Signature: seeSiteTransientInDatabase(string $transient, [mixed $value]) : void

+

Checks that a site transient is in the database.

+
<?php
+$I->haveSiteTransientInDatabase('foo', 23);
+$I->seeSiteTransientInDatabase('foo');
+$I->seeSiteTransientInDatabase('foo', 23);
+
+

seeTableInDatabase

+

Signature: seeTableInDatabase(string $table) : void

+

Checks that a table is in the database.

+
<?php
+$options = $I->grabPrefixedTableNameFor('options');
+$I->seeTableInDatabase($options);
+
+

seeTermInDatabase

+

Signature: seeTermInDatabase(array $criteria) : void

+

Checks for a term in the database. +Looks up the terms and term_taxonomy prefixed tables.

+
<?php
+$I->seeTermInDatabase(['slug' => 'genre--fiction']);
+$I->seeTermInDatabase(['name' => 'Fiction', 'slug' => 'genre--fiction']);
+
+

seeTermMetaInDatabase

+

Signature: seeTermMetaInDatabase(array $criteria) : void

+

Checks for a term meta in the database.

+
<?php
+list($termId, $termTaxonomyId) = $I->haveTermInDatabase('fiction', 'genre');
+$I->haveTermMetaInDatabase($termId, 'rating', 4);
+$I->seeTermMetaInDatabase(['term_id' => $termId,'meta_key' => 'rating', 'meta_value' => 4]);
+
+

seeTermRelationshipInDatabase

+

Signature: seeTermRelationshipInDatabase(array $criteria) : void

+

Checks for a term relationship in the database.

+
<?php
+$postId = $I->havePostInDatabase(['tax_input' => ['category' => 'one']]);
+$I->seeTermRelationshipInDatabase(['object_id' => $postId, 'term_taxonomy_id' => $oneTermTaxId]);
+
+

seeTermTaxonomyInDatabase

+

Signature: seeTermTaxonomyInDatabase(array $criteria) : void

+

Checks for a taxonomy taxonomy in the database.

+
<?php
+list($termId, $termTaxonomyId) = $I->haveTermInDatabase('fiction', 'genre');
+$I->seeTermTaxonomyInDatabase(['term_id' => $termId, 'taxonomy' => 'genre']);
+
+

seeTransientInDatabase

+

Signature: seeTransientInDatabase(string $name, [mixed $value]) : void

+

Checks that a transient is in the database.

+
<?php
+$I->haveTransientInDatabase('foo', 23);
+$I->seeTransientInDatabase('foo');
+$I->seeTransientInDatabase('foo', 23);
+
+

seeUserInDatabase

+

Signature: seeUserInDatabase(array $criteria) : void

+

Checks that a user is in the database.

+

The method will check the "users" table.

+
<?php
+$I->seeUserInDatabase([
+    "user_email" => "test@example.org",
+    "user_login" => "login name"
+])
+
+

seeUserMetaInDatabase

+

Signature: seeUserMetaInDatabase(array $criteria) : void

+

Checks for a user meta value in the database.

+
<?php
+$I->seeUserMetaInDatabase(['user_id' => 23, 'meta_key' => 'karma']);
+
+

updateInDatabase

+

Signature: updateInDatabase(string $table, array $data, [array $criteria]) : void

+

Update an SQL record into a database.

+
<?php
+$I->updateInDatabase('users', array('isAdmin' => true), array('email' => 'miles@davis.com'));
+
+

useBlog

+

Signature: useBlog([int $blogId]) : void

+

Sets the blog to be used.

+

This has nothing to do with WordPress switch_to_blog function, this code will affect the table prefixes used.

+

useMainBlog

+

Signature: useMainBlog() : void

+

Sets the current blog to the main one (blog_id 1).

+
<?php
+// Switch to the blog with ID 23.
+$I->useBlog(23);
+// Switch back to the main blog.
+$I->useMainBlog();
+
+

useTheme

+

Signature: useTheme(string $stylesheet, [?string $template], [?string $themeName]) : void

+

Sets the current theme options.

+
<?php
+$I->useTheme('twentyseventeen');
+$I->useTheme('child-of-twentyseventeen', 'twentyseventeen');
+$I->useTheme('acme', 'acme', 'Acme Theme');
+
+ + +

Read more in Codeception documentation for the Db module.

+ + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/modules/WPFilesystem/index.html b/modules/WPFilesystem/index.html new file mode 100644 index 000000000..97a787a98 --- /dev/null +++ b/modules/WPFilesystem/index.html @@ -0,0 +1,4353 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WPFilesystem - wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+ +
+ + + + + + + + +

WPFilesystem

+ +

WPFilesystem module

+

Interact and make assertions on the WordPress file structure.

+

This module is used together with the WPDb module to manage the state of the WordPress installation in the +context of end-to-end tests.

+

This module extends the Filesystem module from Codeception, you can reference to the Codeception documentation to +find out more about the module configuration and usage.

+

This module should be with Cest and Cept test cases.

+

Configuration

+

wpRootFolder - required; the path to the WordPress installation root folder. This can be a relative path to the +codeception root directory, or an absolute path to the WordPress installation directory. The WordPress installation +directory is the directory that contains the wp-load.php file. +themes - the path, relative to the path specified in the wpRootFolder parameter, to the themes directory. By +default, +it's /wp-content/themes. +plugins - the path, relative to the path specified in the wpRootFolder parameter, to the plugins directory. By +default, it's /wp-content/plugins. +mu-plugins - the path, relative to the path specified in the wpRootFolder parameter, to the must-use plugins. By +default, it's /wp-content/mu-plugins. directory. +uploads - the path, relative to the path specified in the wpRootFolder parameter, to the uploads directory. By +default, it's /wp-content/uploads.

+

The following is an example of the module configuration to run tests on the /var/wordpress site:

+
modules:
+  enabled:
+    lucatume\WPBrowser\Module\WPFilesystem:
+      wpRootFolder: /var/wordpress
+      themes: wp-content/themes
+      plugins: wp-content/plugins
+      mu-plugins: wp-content/mu-plugins
+      uploads: wp-content/uploads
+
+

The following configuration uses dynamic configuration parameters to set the module configuration:

+
modules:
+  enabled:
+    lucatume\WPBrowser\Module\WPFilesystem:
+      wpRootFolder: '%WP_ROOT_FOLDER%'
+
+

Methods

+

The module provides the following methods:

+ + +

amInMuPluginPath

+

Signature: amInMuPluginPath(string $path) : void

+

Sets the current working folder to a folder in a mu-plugin.

+
$I->amInMuPluginPath('mu-plugin');
+
+

amInPath

+

Signature: amInPath(string $path) : void

+

Enters a directory In local filesystem. +Project root directory is used by default

+

amInPluginPath

+

Signature: amInPluginPath(string $path) : void

+

Sets the current working folder to a folder in a plugin.

+
$I->amInPluginPath('my-plugin');
+
+

amInThemePath

+

Signature: amInThemePath(string $path) : void

+

Sets the current working folder to a folder in a theme.

+
$I->amInThemePath('my-theme');
+
+

amInUploadsPath

+

Signature: amInUploadsPath([?string $path]) : void

+

Enters, changing directory, to the uploads folder in the local filesystem.

+
<?php
+$I->amInUploadsPath('/logs');
+$I->seeFileFound('shop.log');
+
+

assertDirectoryExists

+

Signature: assertDirectoryExists(string $directory, [string $message]) : void

+

cleanDir

+

Signature: cleanDir(string $dirname) : void

+

Erases directory contents

+
<?php
+$I->cleanDir('logs');
+
+

cleanMuPluginDir

+

Signature: cleanMuPluginDir(string $dir) : void

+

Cleans, emptying it, a folder in a mu-plugin folder.

+
$I->cleanMuPluginDir('mu-plugin1/foo');
+
+

cleanPluginDir

+

Signature: cleanPluginDir(string $dir) : void

+

Cleans, emptying it, a folder in a plugin folder.

+
$I->cleanPluginDir('my-plugin/foo');
+
+

cleanThemeDir

+

Signature: cleanThemeDir(string $dir) : void

+

Clears, emptying it, a folder in a theme folder.

+
$I->cleanThemeDir('my-theme/foo');
+
+

cleanUploadsDir

+

Signature: cleanUploadsDir([?string $dir], [DateTime|string|int|null $date]) : void

+

Clears a folder in the uploads folder.

+

The date argument can be a string compatible with strtotime or a Unix +timestamp that will be used to build the Y/m uploads subfolder path.

+
$I->cleanUploadsDir('some/folder');
+$I->cleanUploadsDir('some/folder', 'today');
+
+

copyDir

+

Signature: copyDir(string $src, string $dst) : void

+

Copies directory with all contents

+
<?php
+$I->copyDir('vendor','old_vendor');
+
+

copyDirToMuPlugin

+

Signature: copyDirToMuPlugin(string $src, string $pluginDst) : void

+

Copies a folder to a folder in a mu-plugin.

+
$I->copyDirToMuPlugin(codecept_data_dir('foo'), 'mu-plugin/foo');
+
+

copyDirToPlugin

+

Signature: copyDirToPlugin(string $src, string $pluginDst) : void

+

Copies a folder to a folder in a plugin.

+
// Copy the 'foo' folder to the 'foo' folder in the plugin.
+$I->copyDirToPlugin(codecept_data_dir('foo'), 'my-plugin/foo');
+
+

copyDirToTheme

+

Signature: copyDirToTheme(string $src, string $themeDst) : void

+

Copies a folder in a theme folder.

+
$I->copyDirToTheme(codecept_data_dir('foo'), 'my-theme');
+
+

copyDirToUploads

+

Signature: copyDirToUploads(string $src, string $dst, [DateTime|string|int|null $date]) : void

+

Copies a folder to the uploads folder.

+

The date argument can be a string compatible with strtotime or a Unix +timestamp that will be used to build the Y/m uploads subfolder path.

+
$I->copyDirToUploads(codecept_data_dir('foo'), 'uploadsFoo');
+$I->copyDirToUploads(codecept_data_dir('foo'), 'uploadsFoo', 'today');
+
+

deleteDir

+

Signature: deleteDir(string $dirname) : void

+

Deletes directory with all subdirectories

+
<?php
+$I->deleteDir('vendor');
+
+

deleteFile

+

Signature: deleteFile(string $filename) : void

+

Deletes a file

+
<?php
+$I->deleteFile('composer.lock');
+
+

deleteMuPluginFile

+

Signature: deleteMuPluginFile(string $file) : void

+

Deletes a file in a mu-plugin folder.

+
$I->deleteMuPluginFile('mu-plugin1/some-file.txt');
+
+

deletePluginFile

+

Signature: deletePluginFile(string $file) : void

+

Deletes a file in a plugin folder.

+
$I->deletePluginFile('my-plugin/some-file.txt');
+
+

deleteThemeFile

+

Signature: deleteThemeFile(string $file) : void

+

Deletes a file in a theme folder.

+
$I->deleteThemeFile('my-theme/some-file.txt');
+
+

deleteThisFile

+

Signature: deleteThisFile() : void

+

Deletes a file

+

deleteUploadedDir

+

Signature: deleteUploadedDir(string $dir, [DateTime|string|int|null $date]) : void

+

Deletes a dir in the uploads folder.

+

The date argument can be a string compatible with strtotime or a Unix +timestamp that will be used to build the Y/m uploads subfolder path.

+
$I->deleteUploadedDir('folder');
+$I->deleteUploadedDir('folder', 'today');
+
+

deleteUploadedFile

+

Signature: deleteUploadedFile(string $file, [string|int|null $date]) : void

+

Deletes a file in the uploads folder.

+

The date argument can be a string compatible with strtotime or a Unix +timestamp that will be used to build the Y/m uploads subfolder path.

+
$I->deleteUploadedFile('some-file.txt');
+$I->deleteUploadedFile('some-file.txt', 'today');
+
+

dontSeeFileFound

+

Signature: dontSeeFileFound(string $filename, [string $path]) : void

+

Checks if file does not exist in path

+

dontSeeInMuPluginFile

+

Signature: dontSeeInMuPluginFile(string $file, string $contents) : void

+

Checks that a file in a mu-plugin folder does not contain a string.

+
$I->dontSeeInMuPluginFile('mu-plugin1/some-file.txt', 'foo');
+
+

dontSeeInPluginFile

+

Signature: dontSeeInPluginFile(string $file, string $contents) : void

+

Checks that a file in a plugin folder does not contain a string.

+
$I->dontSeeInPluginFile('my-plugin/some-file.txt', 'foo');
+
+

dontSeeInThemeFile

+

Signature: dontSeeInThemeFile(string $file, string $contents) : void

+

Checks that a file in a theme folder does not contain a string.

+
$I->dontSeeInThemeFile('my-theme/some-file.txt', 'foo');
+
+

dontSeeInThisFile

+

Signature: dontSeeInThisFile(string $text) : void

+

Checks If opened file doesn't contain text in it

+
<?php
+$I->openFile('composer.json');
+$I->dontSeeInThisFile('codeception/codeception');
+
+

dontSeeInUploadedFile

+

Signature: dontSeeInUploadedFile(string $file, string $contents, [string|int|null $date]) : void

+

Checks that a file in the uploads folder does contain a string.

+

The date argument can be a string compatible with strtotime or a Unix +timestamp that will be used to build the Y/m uploads subfolder path.

+
<?php
+$I->dontSeeInUploadedFile('some-file.txt', 'foo');
+$I->dontSeeInUploadedFile('some-file.txt','foo', 'today');
+
+

dontSeeMuPluginFileFound

+

Signature: dontSeeMuPluginFileFound(string $file) : void

+

Checks that a file is not found in a mu-plugin folder.

+
$I->dontSeeMuPluginFileFound('mu-plugin1/some-file.txt');
+
+

dontSeePluginFileFound

+

Signature: dontSeePluginFileFound(string $file) : void

+

Checks that a file is not found in a plugin folder.

+
$I->dontSeePluginFileFound('my-plugin/some-file.txt');
+
+

dontSeeThemeFileFound

+

Signature: dontSeeThemeFileFound(string $file) : void

+

Checks that a file is not found in a theme folder.

+
$I->dontSeeThemeFileFound('my-theme/some-file.txt');
+
+

dontSeeUploadedFileFound

+

Signature: dontSeeUploadedFileFound(string $file, [string|int|null $date]) : void

+

Checks thata a file does not exist in the uploads folder.

+

The date argument can be a string compatible with strtotime or a Unix +timestamp that will be used to build the Y/m uploads subfolder path.

+
$I->dontSeeUploadedFileFound('some-file.txt');
+$I->dontSeeUploadedFileFound('some-file.txt','today');
+
+

getBlogUploadsPath

+

Signature: getBlogUploadsPath(int $blogId, [string $file], [DateTimeImmutable|DateTime|string|null $date]) : string

+

Returns the absolute path to a blog uploads folder or file.

+
<?php
+$blogId = $I->haveBlogInDatabase('test');
+$testTodayUploads = $I->getBlogUploadsPath($blogId);
+$testLastMonthLogs = $I->getBlogUploadsPath($blogId, '/logs', '-1 month');
+
+

getUploadsPath

+

Signature: getUploadsPath([string $file], [mixed $date]) : string

+

Returns the path to the specified uploads file of folder.

+

Not providing a value for $file and $date will return the uploads folder path.

+
<?php
+$todaysPath = $I->getUploadsPath();
+$lastWeek = $I->getUploadsPath('', '-1 week');
+
+

getWpRootFolder

+

Signature: getWpRootFolder() : string

+

Returns the absolute path to WordPress root folder without trailing slash.

+
<?php
+$rootFolder = $I->getWpRootFolder();
+$I->assertFileExists($rootFolder . 'wp-load.php');
+
+

haveMuPlugin

+

Signature: haveMuPlugin(string $filename, string $code) : void

+

Creates a mu-plugin file, including plugin header, in the mu-plugins folder.

+

The code can not contain the opening '<?php' tag.

+
$code = 'echo "Hello world!"';
+$I->haveMuPlugin('foo-mu-plugin.php', $code);
+// Load the code from a file.
+$code = file_get_contents(codecept_data_dir('code/mu-plugin.php'));
+$I->haveMuPlugin('foo-mu-plugin.php', $code);
+
+

havePlugin

+

Signature: havePlugin(string $path, string $code) : void

+

Creates a plugin file, including plugin header, in the plugins folder.

+

The plugin is just created and not activated; the code can not contain the opening '<?php' tag.

+
$code = 'echo "Hello world!"';
+$I->havePlugin('foo/plugin.php', $code);
+// Load the code from a file.
+$code = file_get_contents(codecept_data_dir('code/plugin.php'));
+$I->havePlugin('foo/plugin.php', $code);
+
+

haveTheme

+

Signature: haveTheme(string $folder, string $indexFileCode, [string $functionsFileCode]) : void

+

Creates a theme file structure, including theme style file and index, in the themes folder.

+

The theme is just created and not activated; the code can not contain the opening '<?php' tag.

+
$code = 'sayHi();';
+$functionsCode  = 'function sayHi(){echo "Hello world";};';
+$I->haveTheme('foo', $indexCode, $functionsCode);
+// Load the code from a file.
+$indexCode = file_get_contents(codecept_data_dir('code/index.php'));
+$functionsCode = file_get_contents(codecept_data_dir('code/functions.php'));
+$I->haveTheme('foo', $indexCode, $functionsCode);
+
+

makeUploadsDir

+

Signature: makeUploadsDir(string $path) : string

+

Creates an empty folder in the WordPress installation uploads folder.

+
<?php
+$logsDir = $I->makeUploadsDir('logs/acme');
+
+

openFile

+

Signature: openFile(string $filename) : void

+

Opens a file and stores it's content.

+

Usage:

+
<?php
+$I->openFile('composer.json');
+$I->seeInThisFile('codeception/codeception');
+
+

openUploadedFile

+

Signature: openUploadedFile(string $filename, [DateTime|string|int|null $date]) : void

+

Opens a file in the the uploads folder.

+

The date argument can be a string compatible with strtotime or a Unix +timestamp that will be used to build the Y/m uploads subfolder path.

+
$I->openUploadedFile('some-file.txt');
+$I->openUploadedFile('some-file.txt', 'time');
+
+

seeFileContentsEqual

+

Signature: seeFileContentsEqual(string $text) : void

+

Checks the strict matching of file contents. +Unlike seeInThisFile will fail if file has something more than expected lines. +Better to use with HEREDOC strings. +Matching is done after removing "\r" chars from file content.

+
<?php
+$I->openFile('process.pid');
+$I->seeFileContentsEqual('3192');
+
+

seeFileFound

+

Signature: seeFileFound(string $filename, [string $path]) : void

+

Checks if file exists in path. +Opens a file when it's exists

+
<?php
+$I->seeFileFound('UserModel.php','app/models');
+
+

seeInMuPluginFile

+

Signature: seeInMuPluginFile(string $file, string $contents) : void

+

Checks that a file in a mu-plugin folder contains a string.

+
$I->seeInMuPluginFile('mu-plugin1/some-file.txt', 'foo');
+
+

seeInPluginFile

+

Signature: seeInPluginFile(string $file, string $contents) : void

+

Checks that a file in a plugin folder contains a string.

+
$I->seeInPluginFile('my-plugin/some-file.txt', 'foo');
+
+

seeInThemeFile

+

Signature: seeInThemeFile(string $file, string $contents) : void

+

Checks that a file in a theme folder contains a string.

+
<?php
+$I->seeInThemeFile('my-theme/some-file.txt', 'foo');
+?>
+
+

seeInThisFile

+

Signature: seeInThisFile(string $text) : void

+

Checks If opened file has text in it.

+

Usage:

+
<?php
+$I->openFile('composer.json');
+$I->seeInThisFile('codeception/codeception');
+
+

seeInUploadedFile

+

Signature: seeInUploadedFile(string $file, string $contents, [string|int|null $date]) : void

+

Checks that a file in the uploads folder contains a string.

+

The date argument can be a string compatible with strtotime or a Unix +timestamp that will be used to build the Y/m uploads subfolder path.

+
<?php
+$I->seeInUploadedFile('some-file.txt', 'foo');
+$I->seeInUploadedFile('some-file.txt','foo', 'today');
+
+

seeMuPluginFileFound

+

Signature: seeMuPluginFileFound(string $file) : void

+

Checks that a file is found in a mu-plugin folder.

+
$I->seeMuPluginFileFound('mu-plugin1/some-file.txt');
+
+

seeNumberNewLines

+

Signature: seeNumberNewLines(int $number) : void

+

Checks If opened file has the number of new lines.

+

Usage:

+
<?php
+$I->openFile('composer.json');
+$I->seeNumberNewLines(5);
+
+

seePluginFileFound

+

Signature: seePluginFileFound(string $file) : void

+

Checks that a file is found in a plugin folder.

+
$I->seePluginFileFound('my-plugin/some-file.txt');
+
+

seeThemeFileFound

+

Signature: seeThemeFileFound(string $file) : void

+

Checks that a file is found in a theme folder.

+
$I->seeThemeFileFound('my-theme/some-file.txt');
+
+

seeThisFileMatches

+

Signature: seeThisFileMatches(string $regex) : void

+

Checks that contents of currently opened file matches $regex

+

seeUploadedFileFound

+

Signature: seeUploadedFileFound(string $filename, [string|int|null $date]) : void

+

Checks if file exists in the uploads folder.

+

The date argument can be a string compatible with strtotime or a Unix +timestamp that will be used to build the Y/m uploads subfolder path.

+
<?php
+$I->seeUploadedFileFound('some-file.txt');
+$I->seeUploadedFileFound('some-file.txt','today');
+?>
+
+

writeToFile

+

Signature: writeToFile(string $filename, string $contents) : void

+

Saves contents to file

+

writeToMuPluginFile

+

Signature: writeToMuPluginFile(string $file, string $data) : void

+

Writes a file in a mu-plugin folder.

+
$I->writeToMuPluginFile('mu-plugin1/some-file.txt', 'foo');
+
+

writeToPluginFile

+

Signature: writeToPluginFile(string $file, string $data) : void

+

Writes a file in a plugin folder.

+
$I->writeToPluginFile('my-plugin/some-file.txt', 'foo');
+
+

writeToThemeFile

+

Signature: writeToThemeFile(string $file, string $data) : void

+

Writes a string to a file in a theme folder.

+
$I->writeToThemeFile('my-theme/some-file.txt', 'foo');
+
+

writeToUploadedFile

+

Signature: writeToUploadedFile(string $filename, string $data, [DateTime|string|int|null $date]) : string

+

Writes a string to a file in the the uploads folder.

+

The date argument can be a string compatible with strtotime or a Unix +timestamp that will be used to build the Y/m uploads subfolder path.

+
$I->writeToUploadedFile('some-file.txt', 'foo bar');
+$I->writeToUploadedFile('some-file.txt', 'foo bar', 'today');
+
+ + +

Read more in Codeception documentation.

+ + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/modules/WPLoader/index.html b/modules/WPLoader/index.html new file mode 100644 index 000000000..e9493bc27 --- /dev/null +++ b/modules/WPLoader/index.html @@ -0,0 +1,3098 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WPLoader - wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + + + + + +
+ +
+ + + + + + + + +

WPLoader

+ +

WPLoader module

+

A module to load WordPress and make its code available in tests.

+

Depending on the value of the loadOnly configuration parameter, the module will behave differently:

+
    +
  • loadOnly: false - The module will load WordPress like the Core PHPUnit suite does to run integration tests in a + controlled environment. Use the module in this mode with test cases generated + using the generate:wpunit command.
  • +
  • loadOnly: true - The module will load WordPress to make it available in the context of tests. Use the module in this + mode in Cest, Cept and Codeception unit test cases.
  • +
+

Configuration with loadOnly: false

+

The module will load WordPress like the Core PHPUnit suite does to run integration tests in a controlled +environment.
+Together with the test case generated by the generate:wpunit command the module +will:

+
    +
  • take care of running any test method in a database transaction rolled back after each test
  • +
  • manage and clean up the global environment and context between tests
  • +
+

When used in this mode, the module supports the following configuration parameters:

+
    +
  • loadOnly - false to load WordPress and run tests in a controlled environment.
  • +
  • wpRootFolder - required; the path to the WordPress installation root folder. This can be a relative path to the + codeception root directory, or an absolute path to the WordPress installation directory. The WordPress installation + directory is the directory that contains the wp-load.php file.
  • +
  • dbUrl - required; the URL to the database to use to run tests. The URL must be in the form + mysql://username:password@host:port/database to use a MySQL database, or in the form sqlite://path/to/database to + use a SQLite database. Alternatively, you can use the dbName, dbUser, dbPassword, dbHost configuration + parameters to specify the database connection details.
  • +
  • dump - the path to a database dump, or a set of database dumps, to load before running tests. The dump will be + loaded only once, after the tests run.
  • +
  • tablePrefix - the database table prefix to use when loading WordPress, defaults to wp_.
  • +
  • multisite - a boolean value to indicate if WordPress should be loaded and initialized in multisite mode.
  • +
  • dbCharset - the database charset to use when loading WordPress.
  • +
  • dbCollate - the database collate to use when loading WordPress.
  • +
  • domain - the domain to use when loading WordPress. Equivalent to defining the WP_TESTS_DOMAIN constant.
  • +
  • adminEmail - the administrator email to use when loading WordPress. Equivalent to defining the WP_TESTS_EMAIL + constant.
  • +
  • title - the site title to use when loading WordPress. Equivalent to defining the WP_TESTS_TITLE constant.
  • +
  • phpBinary - the path to the PHP binary to use to run tests. Defaults to the WP_PHP_BINARY constant.
  • +
  • language - the language to use when loading WordPress. Equivalent to defining the WPLANG constant.
  • +
  • configFile - a configuration file, or a set of configuration files, to load before the tests to further customize + and control the WordPress testing environment.
  • +
  • pluginsFolder - the path to the plugins folder to use when loading WordPress. Equivalent to defining the + WP_PLUGIN_DIR constant.
  • +
  • plugins - a list of plugins to activate and load in the WordPress installation. Each plugin must be specified in a + format like hello.php or my-plugin/my-plugin.php format.
  • +
  • silentlyActivatePlugins - a list of plugins to activate silently, without firing their activation hooks. Depending on the plugin, a silent activation might cause the plugin to not work correctly. The list must be in the same format as the plugins parameter and plugin should be activated silently only if they are not working correctly during normal activation and are known to work correctly when activated silently.
  • +
  • bootstrapActions - a list of actions or callables to call after WordPress is loaded and before the tests run.
  • +
  • theme - the theme to activate and load in the WordPress installation. The theme must be specified in slug format + like + twentytwentythree.
  • +
  • AUTH_KEY - the AUTH_KEY constant value to use when loading WordPress. If the wpRootFolder path points at a + configured installation, containing the wp-config.php file, then the value of the constant in the configuration file + will be used, else it will be randomly generated.
  • +
  • SECURE_AUTH_KEY - the SECURE_AUTH_KEY constant value to use when loading WordPress. If the wpRootFolder path + points at a configured installation, containing the wp-config.php file, then the value of the constant in the + configuration file will be used, else it will be randomly generated.
  • +
  • LOGGED_IN_KEY - the LOGGED_IN_KEY constant value to use when loading WordPress. If the wpRootFolder path points + at a configured installation, containing the wp-config.php file, then the value of the constant in the configuration + file will be used, else it will be randomly generated.
  • +
  • NONCE_KEY - the NONCE_KEY constant value to use when loading WordPress. If the wpRootFolder path points at a + configured installation, containing the wp-config.php file, then the value of the constant in the configuration file + will be used, else it will be randomly generated.
  • +
  • AUTH_SALT - the AUTH_SALT constant value to use when loading WordPress. If the wpRootFolder path points at a + configured installation, containing the wp-config.php file, then the value of the constant in the configuration file + will be used, else it will be randomly generated.
  • +
  • SECURE_AUTH_SALT - the SECURE_AUTH_SALT constant value to use when loading WordPress. If the wpRootFolder path + points at a configured installation, containing the wp-config.php file, then the value of the constant in the + configuration file will be used, else it will be randomly generated.
  • +
  • LOGGED_IN_SALT - the LOGGED_IN_SALT constant value to use when loading WordPress. If the wpRootFolder path + points at a configured installation, containing the wp-config.php file, then the value of the constant in the + configuration file will be used, else it will be randomly generated.
  • +
  • NONCE_SALT - the NONCE_SALT constant value to use when loading WordPress. If the wpRootFolder path points at a + configured installation, containing the wp-config.php file, then the value of the constant in the configuration file + will be used, else it will be randomly generated.
  • +
  • AUTOMATIC_UPDATER_DISABLED - the AUTOMATIC_UPDATER_DISABLED constant value to use when loading WordPress. If + the wpRootFolder path points at a configured installation, containing the wp-config.php file, then the value of + the constant in the configuration file will be used, else it will be randomly generated.
  • +
  • WP_HTTP_BLOCK_EXTERNAL - the WP_HTTP_BLOCK_EXTERNAL constant value to use when loading WordPress. If + the wpRootFolder path points at a configured installation, containing the wp-config.php file, then the value of + the constant in the configuration file will be used, else it will be randomly generated.
  • +
  • backupGlobals - a boolean value to indicate if the global environment should be backed up before each test. Defaults to true. The globals' backup involves serialization of the global state, plugins or themes that define classes developed to prevent serialization of the global state will cause the tests to fail. Set this parameter to false to disable the global environment backup, or use a more refined approach setting the backupGlobalsExcludeList parameter below. Note that a test case that is explicitly setting the backupGlobals property will override this configuration parameter.
  • +
  • backupGlobalsExcludeList - a list of global variables to exclude from the global environment backup. The list must be in the form of array, and it will be merged to the list of globals excluded by default.
  • +
  • backupStaticAttributes - a boolean value to indicate if static attributes of classes should be backed up before each test. Defaults to true. The static attributes' backup involves serialization of the global state, plugins or themes that define classes developed to prevent serialization of the global state will cause the tests to fail. Set this parameter to false to disable the static attributes backup, or use a more refined approanch setting the backupStaticAttributesExcludeList parameter below. Note that a test case that is explicitly setting the backupStaticAttributes property will override this configuration parameter.
  • +
  • backupStaticAttributesExcludeList - a list of classes to exclude from the static attributes backup. The list must be in the form of map from class names to the array of method names to exclude from the backup. See an example below.
  • +
  • skipInstall - a boolean value to indicate if the WordPress installation should be skipped between runs, when already installed. Defaults to false. During boot, the WPLoader module will re-install WordPress and activate, on top of the fresh installation, any plugin and theme specified in the plugins and theme configuration parameters: this can be a time-consuming operation. Set this parameter to true to run the WordPress installation once and just load it on the following runs. To force the installation to run again, rerun the suite using the WPLoader module using the --debug flag or delete the _wploader-state.sql file in the suite directory. This configuration parameter is ignored when the loadOnly parameter is set to true.
  • +
+

This is an example of an integration suite configured to use the module:

+
actor: IntegrationTester
+bootstrap: _bootstrap.php
+modules:
+  enabled:
+    - \Helper\Integration
+    - lucatume\WPBrowser\Module\WPLoader:
+        wpRootFolder: /var/wordpress
+        dbUrl: mysql://root:root@mysql:3306/wordpress
+        tablePrefix: test_
+        domain: wordpress.test
+        adminEmail: admin@wordpress.test
+        title: 'Integration Tests'
+        plugins:
+          - hello.php
+          - woocommerce/woocommerce.php
+          - my-plugin/my-plugin.php
+        theme: twentytwentythree
+
+

The following configuration uses dynamic configuration parameters to set the module configuration:

+
actor: IntegrationTester
+bootstrap: _bootstrap.php
+modules:
+  enabled:
+    - \Helper\Integration
+    - lucatume\WPBrowser\Module\WPLoader:
+        wpRootFolder: '%WP_ROOT_FOLDER%'
+        dbUrl: '%WP_DB_URL%'
+        tablePrefix: '%WP_TABLE_PREFIX%'
+        domain: '%WP_DOMAIN%'
+        adminEmail: '%WP_ADMIN_EMAIL%'
+        title: '%WP_TITLE%'
+        plugins:
+          - hello.php
+          - woocommerce/woocommerce.php
+          - my-plugin/my-plugin.php
+        theme: twentytwentythree
+
+

The following example configuration uses a SQLite database and loads a database fixture before the tests run:

+
actor: IntegrationTester
+bootstrap: _bootstrap.php
+modules:
+  enabled:
+    - \Helper\Integration
+    - lucatume\WPBrowser\Module\WPLoader:
+        wpRootFolder: /var/wordpress
+        dbUrl: sqlite:///var/wordpress/wp-tests.sqlite
+        dump:
+          - tests/_data/products.sql
+          - tests/_data/users.sql
+          - tests/_data/orders.sql
+        tablePrefix: test_
+        domain: wordpress.test
+        adminEmail: admin@wordpress.test
+        title: 'Integration Tests'
+        plugins:
+          - hello.php
+          - woocommerce/woocommerce.php
+          - my-plugin/my-plugin.php
+        theme: twentytwentythree
+
+

The follow example configuration prevents the backup of globals and static attributes in all the tests of the suite that are not explicitly overriding the backupGlobals and backupStaticAttributes properties:

+
actor: IntegrationTester
+bootstrap: _bootstrap.php
+modules:
+  enabled:
+    - \Helper\Integration
+    - lucatume\WPBrowser\Module\WPLoader:
+        wpRootFolder: /var/wordpress
+        dbUrl: sqlite:///var/wordpress/wp-tests.sqlite
+        dump:
+          - tests/_data/products.sql
+          - tests/_data/users.sql
+          - tests/_data/orders.sql
+        tablePrefix: test_
+        domain: wordpress.test
+        adminEmail: admin@wordpress.test
+        title: 'Integration Tests'
+        plugins:
+          - hello.php
+          - woocommerce/woocommerce.php
+          - my-plugin/my-plugin.php
+        theme: twentytwentythree
+        backupGlobals: false
+        backupStaticAttributes: false 
+
+

The following configuration prevents the backup of some globals and static attributes:

+
actor: IntegrationTester
+bootstrap: _bootstrap.php
+modules:
+  enabled:
+    - \Helper\Integration
+    - lucatume\WPBrowser\Module\WPLoader:
+        wpRootFolder: /var/wordpress
+        dbUrl: sqlite:///var/wordpress/wp-tests.sqlite
+        dump:
+          - tests/_data/products.sql
+          - tests/_data/users.sql
+          - tests/_data/orders.sql
+        tablePrefix: test_
+        domain: wordpress.test
+        adminEmail: admin@wordpress.test
+        title: 'Integration Tests'
+        plugins:
+          - hello.php
+          - woocommerce/woocommerce.php
+          - my-plugin/my-plugin.php
+        theme: twentytwentythree
+        backupGlobalsExcludeList:
+          - my_plugin_will_explode_on_wakeup
+          - another_problematic_global
+        backupStaticAttributesExcludeList:
+          - MyPlugin\MyClass:
+              - instance
+              - anotherStaticAttributeThatWillExplodeOnWakeup
+          - AnotherPlugin\AnotherClass:
+                - instance
+                - yetAnotherStaticAttributeThatWillExplodeOnWakeup
+
+

Handling a custom site structure

+

If you're working on a site project using a custom file structure, e.g. Bedrock, you should +use a custom configuration and, together with that, configure the WPLoader module to +load WordPress, plugins and themes code from the correct locations. +Take care to point the wpRootFolder parameter to the directory containing the wp-load.php file, +the /var/my-site/web/wp one in the following example, and the module will read the project configuration file to load +the WordPress code from the correct location.

+

Here's an example of how the module should be configured to run integration tests on a Bedrock installation:

+
actor: IntegrationTester
+bootstrap: _bootstrap.php
+modules:
+  enabled:
+    - \Helper\Integration
+    - lucatume\WPBrowser\Module\WPLoader:
+        wpRootFolder: /var/my-site/web/wp
+        dbUrl: mysql://root:root@mysql:3306/wordpress
+        tablePrefix: test_
+        domain: my-project.test
+        adminEmail: admin@my-project.test
+        title: 'Integration Tests'
+        plugins:
+          - hello.php
+          - woocommerce/woocommerce.php
+          - my-plugin/my-plugin.php
+        theme: twentytwentythree
+
+

In general, pointing the wpRootFolder parameter to the directory containing the wp-load.php file should take care of +loading WordPress code from the correct location. +Should that not be the case, use the configFile parameter to point the module to the project test configuration file: +a PHP file defining the constants and environment variables to use to load WordPress, plugins and themes correctly.

+

Configuration with loadOnly: true

+

The module will load WordPress from the location specified by the wpRootFodler parameter, relying +on the WPDb module to manage the database state.

+

When used in this mode, the module supports the following configuration parameters:

+
    +
  • loadOnly - true to load WordPress and make it available in the context of tests.
  • +
  • wpRootFolder - required; the path to the WordPress installation root folder. This can be a relative path to the + codeception root directory, or an absolute path to the WordPress installation directory. The WordPress installation + directory is the directory that contains the wp-load.php file.
  • +
  • dbUrl - required; the URL to the database to use to run tests. The URL must be in the form + mysql://username:password@host:port/database to use a MySQL database, or in the form sqlite://path/to/database to + use a SQLite database. Alternatively, you can use the dbName, dbUser, dbPassword, dbHost configuration + parameters to specify the database connection details.
  • +
  • domain - the domain to use when loading WordPress. Equivalent to defining the WP_TESTS_DOMAIN constant.
  • +
+

The following is an example of the module configuration to run end-to-end tests on the site served +at http://localhost:8080 URL and served from the /var/wordpress directory:

+
actor: EndToEndTester
+bootstrap: _bootstrap.php
+modules:
+  enabled:
+    - \Helper\Integration
+    - lucatume\WPBrowser\Module\WPWebDriver:
+        url: 'http://localhost:8080'
+        adminUsername: 'admin'
+        adminPassword: 'password'
+        adminPath: '/wp-admin'
+        browser: chrome
+        host: 'localhost'
+        port: '4444'
+        path: '/'
+        window_size: false
+        capabilities:
+          "goog:chromeOptions":
+            args:
+              - "--headless"
+              - "--disable-gpu"
+              - "--disable-dev-shm-usage"
+              - "--proxy-server='direct://'"
+              - "--proxy-bypass-list=*"
+              - "--no-sandbox"
+    - lucatume\WPBrowser\Module\WPDb:
+        dbUrl: 'mysql://root:password@localhost:3306/wordpress'
+        url: 'http://localhost:8080'
+        tablePrefix: 'wp_'
+        dump: 'tests/_data/dump.sql'
+        populate: true
+        cleanup: true
+        reconnect: false
+        urlReplacement: true
+        originalUrl: http://wordpress.test
+        waitlock: 10
+        createIfNotExists: true
+    - lucatume\WPBrowser\Module\WPLoader:
+        loadOnly: true
+        wpRootFolder: /var/wordpress
+        dbUrl: 'mysql://root:password@localhost:3306/wordpress'
+        domain: wordpress.test
+
+

Methods

+

The module provides the following methods:

+ + +

factory

+

Signature: factory() : lucatume\WPBrowser\Module\WPLoader\FactoryStore

+

Accessor method to get the object storing the factories for things. +This method gives access to the same factories provided by the +Core test suite.

+

getContentFolder

+

Signature: getContentFolder([string $path]) : string

+

Returns the absolute path to the WordPress content directory.

+

getInstallation

+

Signature: getInstallation() : lucatume\WPBrowser\WordPress\Installation

+

getPluginsFolder

+

Signature: getPluginsFolder([string $path]) : string

+

Returns the absolute path to the plugins directory.

+

The value will first look at the WP_PLUGIN_DIR constant, then the pluginsFolder configuration parameter +and will, finally, look in the default path from the WordPress root directory.

+

getThemesFolder

+

Signature: getThemesFolder([string $path]) : string

+

Returns the absolute path to the themes directory.

+

getWpRootFolder

+

Signature: getWpRootFolder([?string $path]) : string

+

Returns the absolute path to the WordPress root folder or a path within it..

+ + + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/modules/WPQueries/index.html b/modules/WPQueries/index.html new file mode 100644 index 000000000..7aec31852 --- /dev/null +++ b/modules/WPQueries/index.html @@ -0,0 +1,3674 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WPQueries - wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+ +
+ + + + + + + + +

WPQueries

+ +

WPQueries module

+

This module provides assertions for WordPress queries.

+

This module can be used in any test context where the global $wpdb variable is defined, this usually means in any +suite where the WPLoader module is used.

+

Configuration

+

The method does not require configuration.

+

Methods

+

The module provides the following methods:

+ + +

assertCountQueries

+

Signature: assertCountQueries(int $n, [string $message]) : void

+

Asserts that n queries have been made.

+
<?php
+$posts = $this->factory()->post->create_many(3);
+$cachedUsers = $this->factory()->user->create_many(2);
+$nonCachedUsers = $this->factory()->user->create_many(2);
+foreach($cachedUsers as $userId){
+     wp_cache_set('page-posts-for-user-' . $userId, $posts, 'acme');
+}
+// Run the same query as different users
+foreach(array_merge($cachedUsers, $nonCachedUsers) as $userId){
+     $pagePosts = $plugin->getPagePostsForUser($userId);
+}
+$I->assertCountQueries(2, 'A query should be made for each user missing cached posts.')
+
+

assertNotQueries

+

Signature: assertNotQueries([string $message]) : void

+

Asserts that no queries were made.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+$posts = $this->factory()->post->create_many(3);
+wp_cache_set('page-posts', $posts, 'acme');
+$pagePosts = $plugin->getPagePosts();
+$I->assertNotQueries('Queries should not be made if the cache is set.')
+
+

assertNotQueriesByAction

+

Signature: assertNotQueriesByAction(string $action, [string $message]) : void

+

Asserts that no queries were made as a consequence of the specified action.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+add_action( 'edit_post', function($postId){
+        $count = get_option('acme_title_updates_count');
+        update_option('acme_title_updates_count', ++$count);
+} );
+wp_delete_post($bookId);
+$this->assertNotQueriesByAction('edit_post');
+
+

assertNotQueriesByFilter

+

Signature: assertNotQueriesByFilter(string $filter, [string $message]) : void

+

Asserts that no queries were made as a consequence of the specified filter.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+add_filter('the_title', function($title, $postId){
+     $post = get_post($postId);
+     if($post->post_type !== 'book'){
+         return $title;
+     }
+     $new = get_option('acme_new_prefix');
+     return "{$new} - " . $title;
+});
+$title = apply_filters('the_title', get_post($notABookId)->post_title, $notABookId);
+$this->assertNotQueriesByFilter('the_title');
+
+

assertNotQueriesByFunction

+

Signature: assertNotQueriesByFunction(string $function, [string $message]) : void

+

Asserts that no queries were made by the specified function.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+$this->assertEmpty(Acme\get_orphaned_posts());
+Acme\delete_orphaned_posts();
+$this->assertNotQueriesByFunction('Acme\delete_orphaned_posts');
+
+

assertNotQueriesByMethod

+

Signature: assertNotQueriesByMethod(string $class, string $method, [string $message]) : void

+

Asserts that no queries have been made by the specified class method.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+$options = new Acme\Options();
+$options->update('adsSource', 'not-a-real-url.org');
+$I->assertNotQueriesByMethod('Acme\Options', 'update');
+
+

assertNotQueriesByStatement

+

Signature: assertNotQueriesByStatement(string $statement, [string $message]) : void

+

Asserts that no queries have been made by the specified class method.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+$bookRepository = new Acme\BookRepository();
+$repository->where('ID', 23)->set('title', 'Peter Pan', $deferred = true);
+$this->assertNotQueriesByStatement('INSERT', 'Deferred write should happen on __destruct');
+
+

assertNotQueriesByStatementAndAction

+

Signature: assertNotQueriesByStatementAndAction(string $statement, string $action, [string $message]) : void

+

Asserts that no queries were made as a consequence of the specified action containing the SQL query.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+add_action( 'edit_post', function($postId){
+        $count = get_option('acme_title_updates_count');
+        update_option('acme_title_updates_count', ++$count);
+} );
+wp_delete_post($bookId);
+$this->assertNotQueriesByStatementAndAction('DELETE', 'delete_post');
+
+

assertNotQueriesByStatementAndFilter

+

Signature: assertNotQueriesByStatementAndFilter(string $statement, string $filter, [string $message]) : void

+

Asserts that no queries were made as a consequence of the specified filter containing the specified SQL query.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+add_filter('the_title', function($title, $postId){
+     $post = get_post($postId);
+     if($post->post_type !== 'book'){
+         return $title;
+     }
+     $new = get_option('acme_new_prefix');
+     return "{$new} - " . $title;
+});
+$title = apply_filters('the_title', get_post($notABookId)->post_title, $notABookId);
+$this->assertNotQueriesByStatementAndFilter('SELECT', 'the_title');
+
+

assertNotQueriesByStatementAndFunction

+

Signature: assertNotQueriesByStatementAndFunction(string $statement, string $function, [string $message]) : void

+

Asserts that no queries were made by the specified function starting with the specified SQL statement.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+wp_insert_post(['ID' => $bookId, 'post_title' => 'The Call of the Wild']);
+$this->assertNotQueriesByStatementAndFunction('INSERT', 'wp_insert_post');
+$this->assertQueriesByStatementAndFunction('UPDATE', 'wp_insert_post');
+
+

assertNotQueriesByStatementAndMethod

+

Signature: assertNotQueriesByStatementAndMethod(string $statement, string $class, string $method, [string $message]) : void

+

Asserts that no queries were made by the specified class method starting with the specified SQL statement.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+Acme\BookRepository::new(['title' => 'Alice in Wonderland'])->commit();
+$this->assertQueriesByStatementAndMethod('INSERT', Acme\BookRepository::class, 'commit');
+
+

assertQueries

+

Signature: assertQueries([string $message]) : void

+

Asserts that at least one query was made during the test.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+wp_cache_delete('page-posts', 'acme');
+$pagePosts = $plugin->getPagePosts();
+$I->assertQueries('Queries should be made to set the cache.')
+
+

assertQueriesByAction

+

Signature: assertQueriesByAction(string $action, [string $message]) : void

+

Asserts that at least one query was made as a consequence of the specified action.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+add_action( 'edit_post', function($postId){
+        $count = get_option('acme_title_updates_count');
+        update_option('acme_title_updates_count', ++$count);
+} );
+wp_update_post(['ID' => $bookId, 'post_title' => 'New Title']);
+$this->assertQueriesByAction('edit_post');
+
+

assertQueriesByFilter

+

Signature: assertQueriesByFilter(string $filter, [string $message]) : void

+

Asserts that at least one query was made as a consequence of the specified filter.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+add_filter('the_title', function($title, $postId){
+     $post = get_post($postId);
+     if($post->post_type !== 'book'){
+         return $title;
+     }
+     $new = get_option('acme_new_prefix');
+     return "{$new} - " . $title;
+});
+$title = apply_filters('the_title', get_post($bookId)->post_title, $bookId);
+$this->assertQueriesByFilter('the_title');
+
+

assertQueriesByFunction

+

Signature: assertQueriesByFunction(string $function, [string $message]) : void

+

Asserts that queries were made by the specified function.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+acme_clean_queue();
+$this->assertQueriesByFunction('acme_clean_queue');
+
+

assertQueriesByMethod

+

Signature: assertQueriesByMethod(string $class, string $method, [string $message]) : void

+

Asserts that at least one query has been made by the specified class method.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+$options = new Acme\Options();
+$options->update('showAds', false);
+$I->assertQueriesByMethod('Acme\Options', 'update');
+
+

assertQueriesByStatement

+

Signature: assertQueriesByStatement(string $statement, [string $message]) : void

+

Asserts that at least a query starting with the specified statement was made.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+wp_cache_flush();
+cached_get_posts($args);
+$I->assertQueriesByStatement('SELECT');
+
+

assertQueriesByStatementAndAction

+

Signature: assertQueriesByStatementAndAction(string $statement, string $action, [string $message]) : void

+

Asserts that at least one query was made as a consequence of the specified action containing the SQL query.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+add_action( 'edit_post', function($postId){
+        $count = get_option('acme_title_updates_count');
+        update_option('acme_title_updates_count', ++$count);
+} );
+wp_update_post(['ID' => $bookId, 'post_title' => 'New']);
+$this->assertQueriesByStatementAndAction('UPDATE', 'edit_post');
+
+

assertQueriesByStatementAndFilter

+

Signature: assertQueriesByStatementAndFilter(string $statement, string $filter, [string $message]) : void

+

Asserts that at least one query was made as a consequence of the specified filter containing the SQL query.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+add_filter('the_title', function($title, $postId){
+     $post = get_post($postId);
+     if($post->post_type !== 'book'){
+         return $title;
+     }
+     $new = get_option('acme_new_prefix');
+     return "{$new} - " . $title;
+});
+$title = apply_filters('the_title', get_post($bookId)->post_title, $bookId);
+$this->assertQueriesByStatementAndFilter('SELECT', 'the_title');
+
+

assertQueriesByStatementAndFunction

+

Signature: assertQueriesByStatementAndFunction(string $statement, string $function, [string $message]) : void

+

Asserts that queries were made by the specified function starting with the specified SQL statement.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+wp_insert_post(['post_type' => 'book', 'post_title' => 'Alice in Wonderland']);
+$this->assertQueriesByStatementAndFunction('INSERT', 'wp_insert_post');
+
+

assertQueriesByStatementAndMethod

+

Signature: assertQueriesByStatementAndMethod(string $statement, string $class, string $method, [string $message]) : void

+

Asserts that queries were made by the specified class method starting with the specified SQL statement.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+Acme\BookRepository::new(['title' => 'Alice in Wonderland'])->commit();
+$this->assertQueriesByStatementAndMethod('UPDATE', Acme\BookRepository::class, 'commit');
+
+

assertQueriesCountByAction

+

Signature: assertQueriesCountByAction(int $n, string $action, [string $message]) : void

+

Asserts that n queries were made as a consequence of the specified action.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+add_action( 'edit_post', function($postId){
+        $count = get_option('acme_title_updates_count');
+        update_option('acme_title_updates_count', ++$count);
+} );
+wp_update_post(['ID' => $bookOneId, 'post_title' => 'One']);
+wp_update_post(['ID' => $bookTwoId, 'post_title' => 'Two']);
+wp_update_post(['ID' => $bookThreeId, 'post_title' => 'Three']);
+$this->assertQueriesCountByAction(3, 'edit_post');
+
+

assertQueriesCountByFilter

+

Signature: assertQueriesCountByFilter(int $n, string $filter, [string $message]) : void

+

Asserts that n queries were made as a consequence of the specified filter.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+add_filter('the_title', function($title, $postId){
+     $post = get_post($postId);
+     if($post->post_type !== 'book'){
+         return $title;
+     }
+     $new = get_option('acme_new_prefix');
+     return "{$new} - " . $title;
+});
+$title = apply_filters('the_title', get_post($bookOneId)->post_title, $bookOneId);
+$title = apply_filters('the_title', get_post($notABookId)->post_title, $notABookId);
+$title = apply_filters('the_title', get_post($bookTwoId)->post_title, $bookTwoId);
+$this->assertQueriesCountByFilter(2, 'the_title');
+
+

assertQueriesCountByFunction

+

Signature: assertQueriesCountByFunction(int $n, string $function, [string $message]) : void

+

Asserts that n queries were made by the specified function.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+$this->assertCount(3, Acme\get_orphaned_posts());
+Acme\delete_orphaned_posts();
+$this->assertQueriesCountByFunction(3, 'Acme\delete_orphaned_posts');
+
+

assertQueriesCountByMethod

+

Signature: assertQueriesCountByMethod(int $n, string $class, string $method, [string $message]) : void

+

Asserts that n queries have been made by the specified class method.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+$bookRepository = new Acme\BookRepository();
+$repository->where('ID', 23)->commit('title', 'Peter Pan');
+$repository->where('ID', 89)->commit('title', 'Moby-dick');
+$repository->where('ID', 2389)->commit('title', 'The call of the wild');
+$this->assertQueriesCountByMethod(3, 'Acme\BookRepository', 'commit');
+
+

assertQueriesCountByStatement

+

Signature: assertQueriesCountByStatement(int $n, string $statement, [string $message]) : void

+

Asserts that n queries starting with the specified statement were made.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+$bookRepository = new Acme\BookRepository();
+$repository->where('ID', 23)->set('title', 'Peter Pan', $deferred = true);
+$repository->where('ID', 89)->set('title', 'Moby-dick', $deferred = true);
+$repository->where('ID', 2389)->set('title', 'The call of the wild', $deferred = false);
+$this->assertQueriesCountByStatement(1, 'INSERT', 'Deferred write should happen on __destruct');
+
+

assertQueriesCountByStatementAndAction

+

Signature: assertQueriesCountByStatementAndAction(int $n, string $statement, string $action, [string $message]) : void

+

Asserts that n queries were made as a consequence of the specified action containing the specified SQL statement.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+add_action( 'edit_post', function($postId){
+        $count = get_option('acme_title_updates_count');
+        update_option('acme_title_updates_count', ++$count);
+} );
+wp_delete_post($bookOneId);
+wp_delete_post($bookTwoId);
+wp_update_post(['ID' => $bookThreeId, 'post_title' => 'New']);
+$this->assertQueriesCountByStatementAndAction(2, 'DELETE', 'delete_post');
+$this->assertQueriesCountByStatementAndAction(1, 'INSERT', 'edit_post');
+
+

assertQueriesCountByStatementAndFilter

+

Signature: assertQueriesCountByStatementAndFilter(int $n, string $statement, string $filter, [string $message]) : void

+

Asserts that n queries were made as a consequence of the specified filter containing the specified SQL statement.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+add_filter('the_title', function($title, $postId){
+     $post = get_post($postId);
+     if($post->post_type !== 'book'){
+         return $title;
+     }
+     $new = get_option('acme_new_prefix');
+     return "{$new} - " . $title;
+});
+// Warm up the cache.
+$title = apply_filters('the_title', get_post($bookOneId)->post_title, $bookOneId);
+// Cache is warmed up now.
+$title = apply_filters('the_title', get_post($bookTwoId)->post_title, $bookTwoId);
+$title = apply_filters('the_title', get_post($bookThreeId)->post_title, $bookThreeId);
+$this->assertQueriesCountByStatementAndFilter(1, 'SELECT', 'the_title');
+
+

assertQueriesCountByStatementAndFunction

+

Signature: assertQueriesCountByStatementAndFunction(int $n, string $statement, string $function, [string $message]) : void

+

Asserts that n queries were made by the specified function starting with the specified SQL statement.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+wp_insert_post(['post_type' => 'book', 'post_title' => 'The Call of the Wild']);
+wp_insert_post(['post_type' => 'book', 'post_title' => 'Alice in Wonderland']);
+wp_insert_post(['post_type' => 'book', 'post_title' => 'The Chocolate Factory']);
+$this->assertQueriesCountByStatementAndFunction(3, 'INSERT', 'wp_insert_post');
+
+

assertQueriesCountByStatementAndMethod

+

Signature: assertQueriesCountByStatementAndMethod(int $n, string $statement, string $class, string $method, [string $message]) : void

+

Asserts that n queries were made by the specified class method starting with the specified SQL statement.

+

Queries generated by setUp, tearDown and factory methods are excluded by default.

+
<?php
+Acme\BookRepository::new(['title' => 'Alice in Wonderland'])->commit();
+Acme\BookRepository::new(['title' => 'Moby-Dick'])->commit();
+Acme\BookRepository::new(['title' => 'The Call of the Wild'])->commit();
+$this->assertQueriesCountByStatementAndMethod(3, 'INSERT', Acme\BookRepository::class, 'commit');
+
+

countQueries

+

Signature: countQueries([?wpdb $wpdb]) : int

+

Returns the current number of queries. +Set-up and tear-down queries performed by the test case are filtered out.

+
<?php
+// In a WPTestCase, using the global $wpdb object.
+$queriesCount = $this->queries()->countQueries();
+// In a WPTestCase, using a custom $wpdb object.
+$queriesCount = $this->queries()->countQueries($customWdbb);
+
+

getQueries

+

Signature: getQueries([?wpdb $wpdb]) : array

+

Returns the queries currently performed by the global database object or the specified one. +Set-up and tear-down queries performed by the test case are filtered out.

+
<?php
+// In a WPTestCase, using the global $wpdb object.
+$queries = $this->queries()->getQueries();
+// In a WPTestCase, using a custom $wpdb object.
+$queries = $this->queries()->getQueries($customWdbb);
+
+ + + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/modules/WPWebDriver/index.html b/modules/WPWebDriver/index.html new file mode 100644 index 000000000..67953cf1f --- /dev/null +++ b/modules/WPWebDriver/index.html @@ -0,0 +1,6313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WPWebDriver - wp-browser docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+ +
+ + + + + + + + +

WPWebDriver

+ +

WPWebDriver module

+

This module drives a browser using a solution like Selenium or Chromedriver to simulate user interactions with +the WordPress project.

+

The module has full Javascript support, differently from the WPBrowser module, and can be used to test +sites that use Javascript to render the page or to make assertions that require Javascript support.

+

The method extends the Codeception WebDriver module and is used in the context of Cest and Cept test +cases.

+

Configuration

+
    +
  • browser - the browser to use; e.g. 'chrome'
  • +
  • host - the host to use; e.g. 'localhost'. This is the host of the Selenium server or the Chromedriver server.
  • +
  • port - the port to use; e.g. '4444'. This is the port of the Selenium server or the Chromedriver server.
  • +
  • path - the path to use; e.g. '/wd/hub' or '/'. Use '/' for Chrome.
  • +
  • url - required; the start URL of your WordPress project.
  • +
  • adminUsername - required; the site administrator username to use in actions like loginAsAdmin.
  • +
  • adminPassword - required; the site administrator password to use in actions like loginAsAdmin.
  • +
  • adminPath - the path to the WordPress admin directory; defaults to /wp-admin.
  • +
+

More configuration options, and their explanation, are available in the Codeception WebDriver module documentation.

+

The following is an example of the module configuration to run tests on thehttp://localhost:8080 site:

+
modules:
+  enabled:
+    lucatume\WPBrowser\Module\WPBrowser:
+      url: 'http://localhost:8080'
+      adminUsername: 'admin'
+      adminPassword: 'password'
+      adminPath: '/wp-admin'
+      browser: chrome
+      host: 'localhost'
+      port: '4444'
+      path: '/'
+      window_size: false
+      capabilities:
+        "goog:chromeOptions":
+          args:
+            - "--headless"
+            - "--disable-gpu"
+            - "--disable-dev-shm-usage"
+            - "--proxy-server='direct://'"
+            - "--proxy-bypass-list=*"
+            - "--no-sandbox"
+
+

The following configuration uses dynamic configuration parameters to set the module configuration:

+
modules:
+  enabled:
+    lucatume\WPBrowser\Module\WPBrowser:
+      url: 'http://localhost:8080'
+      adminUsername: 'admin'
+      adminPassword: 'password'
+      adminPath: '/wp-admin'
+      browser: chrome
+      host: '%CHROME_HOST%'
+      port: '%CHROME_PORT%'
+      path: '/'
+      window_size: `1920,1080`
+      capabilities:
+        "goog:chromeOptions":
+          args:
+            - "--headless"
+            - "--disable-gpu"
+            - "--disable-dev-shm-usage"
+            - "--proxy-server='direct://'"
+            - "--proxy-bypass-list=*"
+            - "--no-sandbox"
+
+

Furthermore, the above configuration will not run Chrome in headless mode: the browser window will be visible.

+

Methods

+

The module provides the following methods:

+ + +

acceptPopup

+

Signature: acceptPopup() : void

+

Accepts the active JavaScript native popup window, as created by window.alert|window.confirm|window.prompt. +Don't confuse popups with modal windows, +as created by various libraries.

+

activatePlugin

+

Signature: activatePlugin(array|string $pluginSlug) : void

+

In the plugin administration screen activates one or more plugins clicking the "Activate" link.

+

The method will not handle authentication and navigation to the plugins administration page.

+
<?php
+// Activate a plugin.
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->activatePlugin('hello-dolly');
+// Activate a list of plugins.
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->activatePlugin(['hello-dolly','another-plugin']);
+
+

activateTheme

+

Signature: activateTheme(string $slug) : void

+

Activates a theme.

+

The method will not handle authentication and navigation to the themes administration page.

+

amEditingPostWithId

+

Signature: amEditingPostWithId(int $id) : void

+

Go to the admin page to edit the post with the specified ID.

+

The method will not handle authentication the admin area.

+
<?php
+$I->loginAsAdmin();
+$postId = $I->havePostInDatabase();
+$I->amEditingPostWithId($postId);
+$I->fillField('post_title', 'Post title');
+
+

amEditingUserWithId

+

Signature: amEditingUserWithId(int $id) : void

+

Go to the admin page to edit the user with the specified ID.

+

The method will not handle authentication the admin area.

+
<?php
+$I->loginAsAdmin();
+$userId = $I->haveUserInDatabase('luca', 'editor');
+$I->amEditingUserWithId($userId);
+$I->fillField('email', 'new@example.net');
+
+

amOnAdminAjaxPage

+

Signature: amOnAdminAjaxPage([array|string|null $queryVars]) : void

+

Go to the admin-ajax.php page to start a synchronous, and blocking, GET AJAX request.

+

The method will not handle authentication, nonces or authorization.

+
<?php
+$I->amOnAdminAjaxPage(['action' => 'my-action', 'data' => ['id' => 23], 'nonce' => $nonce]);
+
+

amOnAdminPage

+

Signature: amOnAdminPage(string $page) : void

+

Go to a page in the admininstration area of the site.

+

This method will not handle authentication to the administration area.

+
<?php
+$I->loginAs('user', 'password');
+// Go to the plugins management screen.
+$I->amOnAdminPage('/plugins.php');
+
+

amOnCronPage

+

Signature: amOnCronPage([array|string|null $queryVars]) : void

+

Go to the cron page to start a synchronous, and blocking, GET request to the cron script.

+
<?php
+// Triggers the cron job with an optional query argument.
+$I->amOnCronPage('/?some-query-var=some-value');
+
+

amOnPage

+

Signature: amOnPage($page) : void

+

amOnPagesPage

+

Signature: amOnPagesPage() : void

+

Go the "Pages" administration screen.

+

The method will not handle authentication.

+
<?php
+$I->loginAsAdmin();
+$I->amOnPagesPage();
+$I->see('Add New');
+
+

amOnPluginsPage

+

Signature: amOnPluginsPage() : void

+

Go to the plugins administration screen.

+

The method will not handle authentication.

+
<?php
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->activatePlugin('hello-dolly');
+
+

amOnSubdomain

+

Signature: amOnSubdomain(string $subdomain) : void

+

amOnThemesPage

+

Signature: amOnThemesPage() : void

+

Moves to the themes administration page.

+

amOnUrl

+

Signature: amOnUrl($url) : void

+

appendField

+

Signature: appendField($field, string $value) : void

+

Append the given text to the given element. +Can also add a selection to a select box.

+
<?php
+$I->appendField('#mySelectbox', 'SelectValue');
+$I->appendField('#myTextField', 'appended');
+
+

attachFile

+

Signature: attachFile($field, string $filename) : void

+

cancelPopup

+

Signature: cancelPopup() : void

+

Dismisses the active JavaScript popup, as created by window.alert, window.confirm, or window.prompt.

+

checkOption

+

Signature: checkOption($option) : void

+

clearField

+

Signature: clearField($field) : void

+

Clears given field which isn't empty.

+
<?php
+$I->clearField('#username');
+
+

click

+

Signature: click($link, [$context]) : void

+

clickWithLeftButton

+

Signature: clickWithLeftButton([$cssOrXPath], [?int $offsetX], [?int $offsetY]) : void

+

Performs click with the left mouse button on an element. +If the first parameter null then the offset is relative to the actual mouse position. +If the second and third parameters are given, +then the mouse is moved to an offset of the element's top-left corner. +Otherwise, the mouse is moved to the center of the element.

+
<?php
+$I->clickWithLeftButton(['css' => '.checkout']);
+$I->clickWithLeftButton(null, 20, 50);
+$I->clickWithLeftButton(['css' => '.checkout'], 20, 50);
+
+

clickWithRightButton

+

Signature: clickWithRightButton([$cssOrXPath], [?int $offsetX], [?int $offsetY]) : void

+

Performs contextual click with the right mouse button on an element. +If the first parameter null then the offset is relative to the actual mouse position. +If the second and third parameters are given, +then the mouse is moved to an offset of the element's top-left corner. +Otherwise, the mouse is moved to the center of the element.

+
<?php
+$I->clickWithRightButton(['css' => '.checkout']);
+$I->clickWithRightButton(null, 20, 50);
+$I->clickWithRightButton(['css' => '.checkout'], 20, 50);
+
+

closeTab

+

Signature: closeTab() : void

+

Closes current browser tab and switches to previous active tab.

+
<?php
+$I->closeTab();
+
+

deactivatePlugin

+

Signature: deactivatePlugin(array|string $pluginSlug) : void

+

In the plugin administration screen deactivate a plugin clicking the "Deactivate" link.

+

The method will not handle authentication and navigation to the plugins administration page.

+
<?php
+// Deactivate one plugin.
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->deactivatePlugin('hello-dolly');
+// Deactivate a list of plugins.
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->deactivatePlugin(['hello-dolly', 'my-plugin']);
+
+

debugWebDriverLogs

+

Signature: debugWebDriverLogs([?Codeception\TestInterface $test]) : void

+

Print out latest Selenium Logs in debug mode

+

deleteSessionSnapshot

+

Signature: deleteSessionSnapshot($name) : void

+

dontSee

+

Signature: dontSee($text, [$selector]) : void

+

dontSeeCheckboxIsChecked

+

Signature: dontSeeCheckboxIsChecked($checkbox) : void

+

dontSeeCookie

+

Signature: dontSeeCookie($cookie, [array $params], [bool $showDebug]) : void

+

dontSeeCurrentUrlEquals

+

Signature: dontSeeCurrentUrlEquals(string $uri) : void

+

dontSeeCurrentUrlMatches

+

Signature: dontSeeCurrentUrlMatches(string $uri) : void

+

dontSeeElement

+

Signature: dontSeeElement($selector, [array $attributes]) : void

+

dontSeeElementInDOM

+

Signature: dontSeeElementInDOM($selector, [array $attributes]) : void

+

Opposite of seeElementInDOM.

+

dontSeeInCurrentUrl

+

Signature: dontSeeInCurrentUrl(string $uri) : void

+

dontSeeInField

+

Signature: dontSeeInField($field, $value) : void

+

dontSeeInFormFields

+

Signature: dontSeeInFormFields($formSelector, array $params) : void

+

dontSeeInPageSource

+

Signature: dontSeeInPageSource(string $text) : void

+

Checks that the page source doesn't contain the given string.

+

dontSeeInPopup

+

Signature: dontSeeInPopup(string $text) : void

+

Checks that the active JavaScript popup, +as created by window.alert|window.confirm|window.prompt, does NOT contain the given string.

+

dontSeeInSource

+

Signature: dontSeeInSource($raw) : void

+

dontSeeInTitle

+

Signature: dontSeeInTitle($title) : void

+ +

Signature: dontSeeLink(string $text, [string $url]) : void

+

dontSeeOptionIsSelected

+

Signature: dontSeeOptionIsSelected($selector, $optionText) : void

+

dontSeePluginInstalled

+

Signature: dontSeePluginInstalled(string $pluginSlug) : void

+

Assert a plugin is not installed in the plugins administration screen.

+

The method will not handle authentication and navigation to the plugin administration screen.

+
<?php
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->dontSeePluginInstalled('my-plugin');
+
+

doubleClick

+

Signature: doubleClick($cssOrXPath) : void

+

Performs a double click on an element matched by CSS or XPath.

+

dragAndDrop

+

Signature: dragAndDrop($source, $target) : void

+

Performs a simple mouse drag-and-drop operation.

+
<?php
+$I->dragAndDrop('#drag', '#drop');
+
+

executeAsyncJS

+

Signature: executeAsyncJS(string $script, [array $arguments]) : void

+

Executes asynchronous JavaScript. +A callback should be executed by JavaScript to exit from a script. +Callback is passed as a last element in arguments array. +Additional arguments can be passed as array in second parameter.

+
// wait for 1200 milliseconds my running `setTimeout`
+* $I->executeAsyncJS('setTimeout(arguments[0], 1200)');
+
+$seconds = 1200; // or seconds are passed as argument
+$I->executeAsyncJS('setTimeout(arguments[1], arguments[0])', [$seconds]);
+
+

executeInSelenium

+

Signature: executeInSelenium(Closure $function) : void

+

Low-level API method. +If Codeception commands are not enough, this allows you to use Selenium WebDriver methods directly:

+
$I->executeInSelenium(function(\Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) {
+  $webdriver->get('https://google.com');
+});
+
+

This runs in the context of the +RemoteWebDriver class. +Try not to use this command on a regular basis. +If Codeception lacks a feature you need, please implement it and submit a patch.

+

executeJS

+

Signature: executeJS(string $script, [array $arguments]) : void

+

Executes custom JavaScript.

+

This example uses jQuery to get a value and assigns that value to a PHP variable:

+
<?php
+$myVar = $I->executeJS('return $("#myField").val()');
+
+// additional arguments can be passed as array
+// Example shows `Hello World` alert:
+$I->executeJS("window.alert(arguments[0])", ['Hello world']);
+
+

fillField

+

Signature: fillField($field, $value) : void

+

grabActiveTheme

+

Signature: grabActiveTheme() : ?string

+

Returns the slug of the currently active themes.

+

The method will not handle authentication and navigation to the themes administration page.

+

grabAttributeFrom

+

Signature: grabAttributeFrom($cssOrXpath, $attribute) : ?string

+

grabAvailableThemes

+

Signature: grabAvailableThemes([string $classes]) : array

+

Returns the list of available themes.

+

The method will not handle authentication and navigation to the themes administration page.

+

grabCookie

+

Signature: grabCookie($cookie, [array $params]) : mixed

+

grabCookiesWithPattern

+

Signature: grabCookiesWithPattern(string $cookiePattern) : ?array

+

Returns all the cookies whose name matches a regex pattern.

+
<?php
+$I->loginAs('customer','password');
+$I->amOnPage('/shop');
+$cartCookies = $I->grabCookiesWithPattern("#^shop_cart\\.*#");
+
+

grabFromCurrentUrl

+

Signature: grabFromCurrentUrl([$uri]) : mixed

+

grabFullUrl

+

Signature: grabFullUrl() : string

+

Grabs the current page full URL including the query vars.

+
<?php
+$today = date('Y-m-d');
+$I->amOnPage('/concerts?date=' . $today);
+$I->assertRegExp('#\\/concerts$#', $I->grabFullUrl());
+
+

grabMultiple

+

Signature: grabMultiple($cssOrXpath, [$attribute]) : array

+

grabPageSource

+

Signature: grabPageSource() : string

+

Grabs current page source code.

+

grabTextFrom

+

Signature: grabTextFrom($cssOrXPathOrRegex) : mixed

+

grabValueFrom

+

Signature: grabValueFrom($field) : ?string

+

grabWordPressTestCookie

+

Signature: grabWordPressTestCookie([?string $name]) : ?Symfony\Component\BrowserKit\Cookie

+

Returns WordPress default test cookie object if present.

+
<?php
+// Grab the default WordPress test cookie.
+$wpTestCookie = $I->grabWordPressTestCookie();
+// Grab a customized version of the test cookie.
+$myTestCookie = $I->grabWordPressTestCookie('my_test_cookie');
+
+

loadSessionSnapshot

+

Signature: loadSessionSnapshot($name, [bool $showDebug]) : bool

+

logOut

+

Signature: logOut([string|bool $redirectTo]) : void

+

Navigate to the default WordPress logout page and click the logout link.

+
<?php
+// Log out using the `wp-login.php` form and return to the current page.
+$I->logOut(true);
+// Log out using the `wp-login.php` form and remain there.
+$I->logOut(false);
+// Log out using the `wp-login.php` form and move to another page.
+$I->logOut('/some-other-page');
+
+

loginAs

+

Signature: loginAs(string $username, string $password, [int $timeout], [int $maxAttempts]) : void

+

Login as the specified user.

+

The method will not follow redirection, after the login, to any page. +Depending on the driven browser the login might be "too fast" and the server might have not +replied with valid cookies yet; in that case the method will re-attempt the login to obtain +the cookies.

+
<?php
+$I->loginAs('user', 'password');
+$I->amOnAdminPage('/');
+$I->see('Dashboard');
+
+

loginAsAdmin

+

Signature: loginAsAdmin([int $timeout], [int $maxAttempts]) : void

+

Login as the administrator user using the credentials specified in the module configuration.

+

The method will not follow redirection, after the login, to any page.

+
<?php
+$I->loginAsAdmin();
+$I->amOnAdminPage('/');
+$I->see('Dashboard');
+
+

makeElementScreenshot

+

Signature: makeElementScreenshot($selector, [?string $name]) : void

+

Takes a screenshot of an element of the current window and saves it to tests/_output/debug.

+
<?php
+$I->amOnPage('/user/edit');
+$I->makeElementScreenshot('#dialog', 'edit_page');
+// saved to: tests/_output/debug/edit_page.png
+$I->makeElementScreenshot('#dialog');
+// saved to: tests/_output/debug/2017-05-26_14-24-11_4b3403665fea6.png
+
+

makeHtmlSnapshot

+

Signature: makeHtmlSnapshot([?string $name]) : void

+

makeScreenshot

+

Signature: makeScreenshot([?string $name]) : void

+

Takes a screenshot of the current window and saves it to tests/_output/debug.

+
<?php
+$I->amOnPage('/user/edit');
+$I->makeScreenshot('edit_page');
+// saved to: tests/_output/debug/edit_page.png
+$I->makeScreenshot();
+// saved to: tests/_output/debug/2017-05-26_14-24-11_4b3403665fea6.png
+
+

maximizeWindow

+

Signature: maximizeWindow() : void

+

Maximizes the current window.

+

moveBack

+

Signature: moveBack() : void

+

Moves back in history.

+

moveForward

+

Signature: moveForward() : void

+

Moves forward in history.

+

moveMouseOver

+

Signature: moveMouseOver([$cssOrXPath], [?int $offsetX], [?int $offsetY]) : void

+

Move mouse over the first element matched by the given locator. +If the first parameter null then the page is used. +If the second and third parameters are given, +then the mouse is moved to an offset of the element's top-left corner. +Otherwise, the mouse is moved to the center of the element.

+
<?php
+$I->moveMouseOver(['css' => '.checkout']);
+$I->moveMouseOver(null, 20, 50);
+$I->moveMouseOver(['css' => '.checkout'], 20, 50);
+
+

openNewTab

+

Signature: openNewTab() : void

+

Opens a new browser tab and switches to it.

+

<?php
+$I->openNewTab();
+
+The tab is opened with JavaScript's window.open(), which means: +* Some ad-blockers might restrict it. +* The sessionStorage is copied to the new tab (contrary to a tab that was manually opened by the user)

+

performOn

+

Signature: performOn($element, $actions, [int $timeout]) : void

+

Waits for element and runs a sequence of actions inside its context. +Actions can be defined with array, callback, or Codeception\Util\ActionSequence instance.

+

Actions as array are recommended for simple to combine "waitForElement" with assertions; +waitForElement($el) and see('text', $el) can be simplified to:

+
<?php
+$I->performOn($el, ['see' => 'text']);
+
+

List of actions can be pragmatically build using Codeception\Util\ActionSequence:

+
<?php
+$I->performOn('.model', ActionSequence::build()
+    ->see('Warning')
+    ->see('Are you sure you want to delete this?')
+    ->click('Yes')
+);
+
+

Actions executed from array or ActionSequence will print debug output for actions, and adds an action name to +exception on failure.

+

Whenever you need to define more actions a callback can be used. A WebDriver module is passed for argument:

+
<?php
+$I->performOn('.rememberMe', function (WebDriver $I) {
+     $I->see('Remember me next time');
+     $I->seeElement('#LoginForm_rememberMe');
+     $I->dontSee('Login');
+});
+
+

In 3rd argument you can set number a seconds to wait for element to appear

+

pressKey

+

Signature: pressKey($element, [...$chars]) : void

+

Presses the given key on the given element. +To specify a character and modifier (e.g. Ctrl, Alt, Shift, Meta), pass an array for $char with +the modifier as the first element and the character as the second. +For special keys, use the constants from Facebook\WebDriver\WebDriverKeys.

+
<?php
+// <input id="page" value="old" />
+$I->pressKey('#page','a'); // => olda
+$I->pressKey('#page',array('ctrl','a'),'new'); //=> new
+$I->pressKey('#page',array('shift','111'),'1','x'); //=> old!!!1x
+$I->pressKey('descendant-or-self::*[@id='page']','u'); //=> oldu
+$I->pressKey('#name', array('ctrl', 'a'), \Facebook\WebDriver\WebDriverKeys::DELETE); //=>''
+
+

reloadPage

+

Signature: reloadPage() : void

+

Reloads the current page.

+

resetCookie

+

Signature: resetCookie($cookie, [array $params], [bool $showDebug]) : void

+

resizeWindow

+

Signature: resizeWindow(int $width, int $height) : void

+

Resize the current window.

+
<?php
+$I->resizeWindow(800, 600);
+
+

saveSessionSnapshot

+

Signature: saveSessionSnapshot($name) : void

+

scrollTo

+

Signature: scrollTo($selector, [?int $offsetX], [?int $offsetY]) : void

+

Move to the middle of the given element matched by the given locator. +Extra shift, calculated from the top-left corner of the element, +can be set by passing $offsetX and $offsetY parameters.

+
<?php
+$I->scrollTo(['css' => '.checkout'], 20, 50);
+
+

see

+

Signature: see($text, [$selector]) : void

+

seeCheckboxIsChecked

+

Signature: seeCheckboxIsChecked($checkbox) : void

+

seeCookie

+

Signature: seeCookie($cookie, [array $params], [bool $showDebug]) : void

+

seeCurrentUrlEquals

+

Signature: seeCurrentUrlEquals(string $uri) : void

+

seeCurrentUrlMatches

+

Signature: seeCurrentUrlMatches(string $uri) : void

+

seeElement

+

Signature: seeElement($selector, [array $attributes]) : void

+

seeElementInDOM

+

Signature: seeElementInDOM($selector, [array $attributes]) : void

+

Checks that the given element exists on the page, even it is invisible.

+
<?php
+$I->seeElementInDOM('//form/input[type=hidden]');
+
+

seeErrorMessage

+

Signature: seeErrorMessage([array|string $classes]) : void

+

In an administration screen look for an error admin notice.

+

The check is class-based to decouple from internationalization. +The method will not handle authentication and navigation the administration area.

+
<?php
+$I->loginAsAdmin()
+$I->amOnAdminPage('/');
+$I->seeErrorMessage('.my-plugin');
+
+

seeInCurrentUrl

+

Signature: seeInCurrentUrl(string $uri) : void

+

seeInField

+

Signature: seeInField($field, $value) : void

+

seeInFormFields

+

Signature: seeInFormFields($formSelector, array $params) : void

+

seeInPageSource

+

Signature: seeInPageSource(string $text) : void

+

Checks that the page source contains the given string.

+
<?php
+$I->seeInPageSource('<link rel="apple-touch-icon"');
+
+

seeInPopup

+

Signature: seeInPopup(string $text) : void

+

Checks that the active JavaScript popup, +as created by window.alert|window.confirm|window.prompt, contains the given string.

+

seeInSource

+

Signature: seeInSource($raw) : void

+

seeInTitle

+

Signature: seeInTitle($title) : void

+ +

Signature: seeLink(string $text, [?string $url]) : void

+

seeMessage

+

Signature: seeMessage([array|string $classes]) : void

+

In an administration screen look for an admin notice.

+

The check is class-based to decouple from internationalization. +The method will not handle authentication and navigation the administration area.

+
<?php
+$I->loginAsAdmin()
+$I->amOnAdminPage('/');
+$I->seeMessage('.missing-api-token.my-plugin');
+
+

seeNumberOfElements

+

Signature: seeNumberOfElements($selector, $expected) : void

+

seeNumberOfElementsInDOM

+

Signature: seeNumberOfElementsInDOM($selector, $expected) : void

+

seeNumberOfTabs

+

Signature: seeNumberOfTabs(int $number) : void

+

Checks current number of opened tabs

+
<?php
+$I->seeNumberOfTabs(2);
+
+

seeOptionIsSelected

+

Signature: seeOptionIsSelected($selector, $optionText) : void

+

seePluginActivated

+

Signature: seePluginActivated(string $pluginSlug) : void

+

Assert a plugin is activated in the plugin administration screen.

+

The method will not handle authentication and navigation to the plugin administration screen.

+
<?php
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->seePluginActivated('my-plugin');
+
+

seePluginDeactivated

+

Signature: seePluginDeactivated(string $pluginSlug) : void

+

Assert a plugin is not activated in the plugins administration screen.

+

The method will not handle authentication and navigation to the plugin administration screen.

+
<?php
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->seePluginDeactivated('my-plugin');
+
+

seePluginInstalled

+

Signature: seePluginInstalled(string $pluginSlug) : void

+

Assert a plugin is installed, no matter its activation status, in the plugin administration screen.

+

The method will not handle authentication and navigation to the plugin administration screen.

+
<?php
+$I->loginAsAdmin();
+$I->amOnPluginsPage();
+$I->seePluginInstalled('my-plugin');
+
+

seeThemeActivated

+

Signature: seeThemeActivated(string $slug) : void

+

Verifies that a theme is active.

+

The method will not handle authentication and navigation to the themes administration page.

+

seeWpDiePage

+

Signature: seeWpDiePage() : void

+

Checks that the current page is one generated by the wp_die function.

+

The method will try to identify the page based on the default WordPress die page HTML attributes.

+
<?php
+$I->loginAs('user', 'password');
+$I->amOnAdminPage('/forbidden');
+$I->seeWpDiePage();
+
+

selectOption

+

Signature: selectOption($select, $option) : void

+

setCookie

+

Signature: setCookie($name, $value, [array $params], [$showDebug]) : void

+

submitForm

+

Signature: submitForm($selector, array $params, [$button]) : void

+

Submits the given form on the page, optionally with the given form +values. Give the form fields values as an array. Note that hidden fields +can't be accessed.

+

Skipped fields will be filled by their values from the page. +You don't need to click the 'Submit' button afterwards. +This command itself triggers the request to form's action.

+

You can optionally specify what button's value to include +in the request with the last parameter as an alternative to +explicitly setting its value in the second parameter, as +button values are not otherwise included in the request.

+

Examples:

+
<?php
+$I->submitForm('#login', [
+    'login' => 'davert',
+    'password' => '123456'
+]);
+// or
+$I->submitForm('#login', [
+    'login' => 'davert',
+    'password' => '123456'
+], 'submitButtonName');
+
+

For example, given this sample "Sign Up" form:

+
<form action="/sign_up">
+    Login:
+    <input type="text" name="user[login]" /><br/>
+    Password:
+    <input type="password" name="user[password]" /><br/>
+    Do you agree to our terms?
+    <input type="checkbox" name="user[agree]" /><br/>
+    Select pricing plan:
+    <select name="plan">
+        <option value="1">Free</option>
+        <option value="2" selected="selected">Paid</option>
+    </select>
+    <input type="submit" name="submitButton" value="Submit" />
+</form>
+
+

You could write the following to submit it:

+

<?php
+$I->submitForm(
+    '#userForm',
+    [
+        'user[login]' => 'Davert',
+        'user[password]' => '123456',
+        'user[agree]' => true
+    ],
+    'submitButton'
+);
+
+Note that "2" will be the submitted value for the "plan" field, as it is +the selected option.

+

Also note that this differs from PhpBrowser, in that +'user' => [ 'login' => 'Davert' ] is not supported at the moment. +Named array keys must be included in the name as above.

+

Pair this with seeInFormFields for quick testing magic.

+
<?php
+$form = [
+     'field1' => 'value',
+     'field2' => 'another value',
+     'checkbox1' => true,
+     // ...
+];
+$I->submitForm('//form[@id=my-form]', $form, 'submitButton');
+// $I->amOnPage('/path/to/form-page') may be needed
+$I->seeInFormFields('//form[@id=my-form]', $form);
+
+

Parameter values must be set to arrays for multiple input fields +of the same name, or multi-select combo boxes. For checkboxes, +either the string value can be used, or boolean values which will +be replaced by the checkbox's value in the DOM.

+
<?php
+$I->submitForm('#my-form', [
+     'field1' => 'value',
+     'checkbox' => [
+         'value of first checkbox',
+         'value of second checkbox',
+     ],
+     'otherCheckboxes' => [
+         true,
+         false,
+         false,
+     ],
+     'multiselect' => [
+         'first option value',
+         'second option value',
+     ]
+]);
+
+

Mixing string and boolean values for a checkbox's value is not supported +and may produce unexpected results.

+

Field names ending in "[]" must be passed without the trailing square +bracket characters, and must contain an array for its value. This allows +submitting multiple values with the same name, consider:

+
<?php
+$I->submitForm('#my-form', [
+    'field[]' => 'value',
+    'field[]' => 'another value', // 'field[]' is already a defined key
+]);
+
+

The solution is to pass an array value:

+
<?php
+// this way both values are submitted
+$I->submitForm('#my-form', [
+    'field' => [
+        'value',
+        'another value',
+    ]
+]);
+
+

The $button parameter can be either a string, an array or an instance +of Facebook\WebDriver\WebDriverBy. When it is a string, the +button will be found by its "name" attribute. If $button is an +array then it will be treated as a strict selector and a WebDriverBy +will be used verbatim.

+

For example, given the following HTML:

+
<input type="submit" name="submitButton" value="Submit" />
+
+

$button could be any one of the following: + - 'submitButton' + - ['name' => 'submitButton'] + - WebDriverBy::name('submitButton')

+

switchToFrame

+

Signature: switchToFrame([?string $locator]) : void

+

Switch to another frame on the page.

+

Example: +

<frame name="another_frame" id="fr1" src="https://example.com">
+

+
<?php
+# switch to frame by name
+$I->switchToFrame("another_frame");
+# switch to frame by CSS or XPath
+$I->switchToFrame("#fr1");
+# switch to parent page
+$I->switchToFrame();
+
+

switchToIFrame

+

Signature: switchToIFrame([?string $locator]) : void

+

Switch to another iframe on the page.

+

Example: +

<iframe name="another_frame" id="fr1" src="https://example.com">
+

+
<?php
+# switch to iframe by name
+$I->switchToIFrame("another_frame");
+# switch to iframe by CSS or XPath
+$I->switchToIFrame("#fr1");
+# switch to parent page
+$I->switchToIFrame();
+
+

switchToNextTab

+

Signature: switchToNextTab([int $offset]) : void

+

Switches to next browser tab. +An offset can be specified.

+
<?php
+// switch to next tab
+$I->switchToNextTab();
+// switch to 2nd next tab
+$I->switchToNextTab(2);
+
+

switchToPreviousTab

+

Signature: switchToPreviousTab([int $offset]) : void

+

Switches to previous browser tab. +An offset can be specified.

+
<?php
+// switch to previous tab
+$I->switchToPreviousTab();
+// switch to 2nd previous tab
+$I->switchToPreviousTab(2);
+
+

switchToWindow

+

Signature: switchToWindow([?string $name]) : void

+

Switch to another window identified by name.

+

The window can only be identified by name. If the $name parameter is blank, the parent window will be used.

+

Example: +

<input type="button" value="Open window" onclick="window.open('https://example.com', 'another_window')">
+

+
<?php
+$I->click("Open window");
+# switch to another window
+$I->switchToWindow("another_window");
+# switch to parent window
+$I->switchToWindow();
+
+

If the window has no name, match it by switching to next active tab using switchToNextTab method.

+

Or use native Selenium functions to get access to all opened windows:

+
<?php
+$I->executeInSelenium(function (\Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) {
+     $handles=$webdriver->getWindowHandles();
+     $last_window = end($handles);
+     $webdriver->switchTo()->window($last_window);
+});
+
+

type

+

Signature: type(string $text, [int $delay]) : void

+

Type in characters on active element. +With a second parameter you can specify delay between key presses.

+
<?php
+// activate input element
+$I->click('#input');
+
+// type text in active element
+$I->type('Hello world');
+
+// type text with a 1sec delay between chars
+$I->type('Hello World', 1);
+
+

This might be useful when you an input reacts to typing and you need to slow it down to emulate human behavior. +For instance, this is how Credit Card fields can be filled in.

+

typeInPopup

+

Signature: typeInPopup(string $keys) : void

+

Enters text into a native JavaScript prompt popup, as created by window.prompt.

+

uncheckOption

+

Signature: uncheckOption($option) : void

+

unselectOption

+

Signature: unselectOption($select, $option) : void

+

Unselect an option in the given select box.

+

wait

+

Signature: wait($timeout) : void

+

Wait for $timeout seconds.

+

waitForElement

+

Signature: waitForElement($element, [int $timeout]) : void

+

Waits up to $timeout seconds for an element to appear on the page. +If the element doesn't appear, a timeout exception is thrown.

+
<?php
+$I->waitForElement('#agree_button', 30); // secs
+$I->click('#agree_button');
+
+

waitForElementChange

+

Signature: waitForElementChange($element, Closure $callback, [int $timeout]) : void

+

Waits up to $timeout seconds for the given element to change. +Element "change" is determined by a callback function which is called repeatedly +until the return value evaluates to true.

+
<?php
+use \Facebook\WebDriver\WebDriverElement
+$I->waitForElementChange('#menu', function(WebDriverElement $el) {
+    return $el->isDisplayed();
+}, 100);
+
+

waitForElementClickable

+

Signature: waitForElementClickable($element, [int $timeout]) : void

+

Waits up to $timeout seconds for the given element to be clickable. +If element doesn't become clickable, a timeout exception is thrown.

+
<?php
+$I->waitForElementClickable('#agree_button', 30); // secs
+$I->click('#agree_button');
+
+

waitForElementNotVisible

+

Signature: waitForElementNotVisible($element, [int $timeout]) : void

+

Waits up to $timeout seconds for the given element to become invisible. +If element stays visible, a timeout exception is thrown.

+
<?php
+$I->waitForElementNotVisible('#agree_button', 30); // secs
+
+

waitForElementVisible

+

Signature: waitForElementVisible($element, [int $timeout]) : void

+

Waits up to $timeout seconds for the given element to be visible on the page. +If element doesn't appear, a timeout exception is thrown.

+
<?php
+$I->waitForElementVisible('#agree_button', 30); // secs
+$I->click('#agree_button');
+
+

waitForJS

+

Signature: waitForJS(string $script, [int $timeout]) : void

+

Executes JavaScript and waits up to $timeout seconds for it to return true.

+

In this example we will wait up to 60 seconds for all jQuery AJAX requests to finish.

+
<?php
+$I->waitForJS("return $.active == 0;", 60);
+
+

waitForJqueryAjax

+

Signature: waitForJqueryAjax([int $time]) : void

+

Waits for any jQuery triggered AJAX request to be resolved.

+
<?php
+$I->amOnPage('/triggering-ajax-requests');
+$I->waitForJqueryAjax();
+$I->see('From AJAX');
+
+

waitForText

+

Signature: waitForText(string $text, [int $timeout], [$selector]) : void

+

Waits up to $timeout seconds for the given string to appear on the page.

+

Can also be passed a selector to search in, be as specific as possible when using selectors. +waitForText() will only watch the first instance of the matching selector / text provided. +If the given text doesn't appear, a timeout exception is thrown.

+
<?php
+$I->waitForText('foo', 30); // secs
+$I->waitForText('foo', 30, '.title'); // secs
+
+ + +

Read more in Codeception documentation.

+ + + + + + + + + + + + + +
+
+ + + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 000000000..cc6b16a10 --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"],"fields":{"title":{"boost":1000.0},"text":{"boost":1.0},"tags":{"boost":1000000.0}}},"docs":[{"location":"","title":"Getting started","text":"

This is the documentation for version 4 of the project, the current version. Documentation for the previous version of the project, version 3, can be found here.

The wp-browser library provides a set of Codeception modules and middleware to enable the testing of WordPress sites, plugins and themes.

"},{"location":"#requirements","title":"Requirements","text":"

Depending on the nature of your project, there are different requirements it will need to satisfy before getting started.

"},{"location":"#site","title":"Site","text":"
  • Ensure you're running the vendor/bin/codecept init wpbrowser command from the root directory of your WordPress site.
  • Ensure the directory contains the WordPress installation files. In a standard scenario you should have extracted WordPress files in this directory.
  • Ensure your installation is configured: it should contain a wp-config.php file.
"},{"location":"#plugin","title":"Plugin","text":"
  • Ensure you're running the vendor/bin/codecept init wpbrowser command from the root directory of your plugin; this should be the directory that contains the PHP file defining the plugin header.
"},{"location":"#theme","title":"Theme","text":"
  • Ensure you're running the vendor/bin/codecept init wpbrowser command from the root directory of your theme; this should be the directory that contains the style.css file defining the theme header.

If you decide to use the quick installation, then your PHP version should have the sqlite3 extensions installed and activated. You can check this using the php -m command and verifying the sqlite3 extension is among the active extensions.

"},{"location":"#installation","title":"Installation","text":"

Add wp-browser to your project as a development dependency using Composer

cd my-wordrpess-project\ncomposer require --dev lucatume/wp-browser\n

Initialize wp-browser to quickly configured to suite your project and setup:

vendor/bin/codecept init wpbrowser\n

The command will set up your project to run integration and end-to-end tests using:

  • SQLite as the database engine, leveraging the SQLite Database Integration plugin
  • PHP built-in web server to serve the WordPress site on localhost (e.g. http://localhost:8080)
  • Chromedriver to drive the local version of Chrome installed on your machine

If you're working on a plugin or theme project, the default configuration will add some extra steps:

  • install the latest version of WordPress in the tests/_wordpress directory
  • create a tests/_plugins directory: any file or directory in this directory will be symlinked into the WordPress installation in tests/_wordpress/wp-content/plugins
  • create a tests/_themes directory: any file or directory in this directory will be symlinked into the WordPress installation in tests/_wordpress/wp-content/themes

For most projects this configuration will be enough to get started with testing.

You can run your tests immediately using the vendor/bin/codecept run command.

Read more about the commands provided by the library here.

"},{"location":"#using-a-custom-configuration","title":"Using a custom configuration","text":"

If you decide to skip the default configuration, you will be able to set up wp-browser to suit your needs and local setup by editing the tests/.env file. The inline documentation in the file will guide you through the configuration process.

Read more about using a custom configuration here.

"},{"location":"#getting-support-for-wp-browser-configuration-and-usage","title":"Getting support for wp-browser configuration and usage","text":"

The best place to get support for wp-browser is the project documentation. Since this project builds on top of PHPUnit and Codeception, you can also refer to their documentation.

If you can't find the answer to your question here you can ask on the \"Issues\" section of the wp-browser repository taking care to provide as much information as possible.

Finally, you can contact me directly to set up a call to discuss your project needs and how wp-browser can help you.

"},{"location":"commands/","title":"Commands","text":""},{"location":"commands/#codeception-commands-provided-by-the-library","title":"Codeception commands provided by the library","text":"

The library provides some custom commands that can be added to the project Codeception configuration file ( either codeception.yml or codeception.dist.yml).

"},{"location":"commands/#run-and-codeceptionrun","title":"run and codeception:run","text":"

Enable the commands with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\RunOriginal\"\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\RunAll\"\n

WordPress extensive use of global variables, constants and side effectes makes it difficult to run multiple test suites in the same process without running into conflicts due to leaking state and side effects. For this reason the project replaces Codeception run command with one that will run each suite in a separate process. You can invoke the original Codeception command using the codeception:run command. Just like the original, the run command accepts all the arguments and options of the original Codeception command.

Run all the suites, each one in a separate process:

vendor/bin/codecept run\n

Run only the Integration suite:

vendor/bin/codecept run Integration\n

Run a specific test file:

vendor/bin/codecept run Integration tests/Integration/MyTest.php\n

Run a specific test method:

vendor/bin/codecept run Integration tests/Integration/MyTest.php:testMyMethod\n

Read the Codeception documentation for more information about the run command.

"},{"location":"commands/#devstart","title":"dev:start","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\DevStart\"\n

If not already running, start the services required to run the tests. The started services are read from the Codeception configuration file (either codeception.yml or codeception.dist.yml), from the extensions section, under the config key.

Given the following configuration:

extensions:\n  enabled:\n    - lucatume\\WPBrowser\\Extension\\ChromeDriverController\n    - lucatume\\WPBrowser\\Extension\\BuiltInServerController\n    - lucatume\\WPBrowser\\Extension\\DockerComposeController\n  config:\n    \"lucatume\\\\WPBrowser\\\\Extension\\\\ChromeDriverController\":\n      port: '%CHROMEDRIVER_PORT%'\n    \"lucatume\\\\WPBrowser\\\\Extension\\\\BuiltInServerController\":\n      docroot: '%WORDPRESS_ROOT_DIR%'\n      workers: 5\n      port: '%BUILT_IN_SERVER_PORT%'\n    \"lucatume\\\\WPBrowser\\\\Extension\\\\DockerComposeController\":\n      compose-file: 'tests/docker-compose.yml'\n      env-file: 'tests/.env'\n

Running the command will start ChromeDriver, the built-in PHP server and Docker Compose.

"},{"location":"commands/#devstop","title":"dev:stop","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\DevStop\"\n

If running, stop the services required to run the tests. The stopped services are read from the Codeception configuration file (either codeception.yml or codeception.dist.yml), from the extensions section, under the config key.

Given the following configuration:

extensions:\n  enabled:\n    - \"lucatume\\\\WPBrowser\\\\Extension\\\\ChromeDriverController\"\n    - \"lucatume\\\\WPBrowser\\\\Extension\\\\BuiltInServerController\"\n    - \"lucatume\\\\WPBrowser\\\\Extension\\\\DockerComposeController\"\n  config:\n    \"lucatume\\\\WPBrowser\\\\Extension\\\\ChromeDriverController\":\n      port: '%CHROMEDRIVER_PORT%'\n    \"lucatume\\\\WPBrowser\\\\Extension\\\\BuiltInServerController\":\n      docroot: '%WORDPRESS_ROOT_DIR%'\n      workers: 5\n      port: '%BUILT_IN_SERVER_PORT%'\n    \"lucatume\\\\WPBrowser\\\\Extension\\\\DockerComposeController\":\n      compose-file: 'tests/docker-compose.yml'\n      env-file: 'tests/.env'\n

Running the command will stop ChromeDriver, the built-in PHP server and Docker Compose.

"},{"location":"commands/#devrestart","title":"dev:restart","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\DevRestart\"\n

This command is just a shortcut to run dev:stop and dev:start in sequence.

"},{"location":"commands/#devinfo","title":"dev:info","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\DevInfo\"\n

Provides information about the local testing stack managed by the DockerComposeController, BuiltInServerController and ChromeDriverController extensions.

"},{"location":"commands/#wpdbimport","title":"wp:db:import","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\DbImport\"\n

You can use WP CLI to interact with your WordPress installation, but WP CLI does not support SQLite databases in the context of the wp db import command. This command fills that gap by providing a database dump file import command that will support MySQL and SQLite databases.

"},{"location":"commands/#wpdbexport","title":"wp:db:export","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\DbExport\"\n

You can use WP CLI to interact with your WordPress installation, but WP CLI does not support SQLite databases in the context of the wp db export command. This command fills that gap by providing a database dump file export command that will support MySQL and SQLite databases.

"},{"location":"commands/#chromedriverupdate","title":"chromedriver:update","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\ChromedriverUpdate\"\n

If you're using Chromedriver as a binary installed in the Composer vendor directory (vendor/bin by default), you can use this command to update it. This command will download the latest version of Chromedriver compatible with the Chrome version installed on your machine in the Composer vendor directory.

Note: if the download fails, it might be a certificate issue.

"},{"location":"commands/#generatewpunit","title":"generate:wpunit","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\GenerateWPUnit\"\n

Generate a test case extending the lucatume\\WPBrowser\\TestCase\\WPTestCase class. The class incorporates the WordPress test case from the wordpress-develop repository and adds some utility methods to make testing easier in the context of Codeception.

The lucatume\\WPBrowser\\TestCase\\WPTestCase class is the one that should be used when writing tests for WordPress code when using the WPLoader module.

Together with the WPLoader module, the WPTestCase class provides a number of functionalities to clean up the database after each test method and to reset the global state of WordPress.

"},{"location":"commands/#every-test-method-runs-in-a-transaction","title":"Every test method runs in a transaction","text":"

Database queries running in the context of test methods of a test case extending the WPTestCase class will run in a transaction that is rolled back after the test method is run. This means that any database change happening in the context of a test method will not appear in the database while the test is running and after the test is run.

"},{"location":"commands/#generatewpajax","title":"generate:wpajax","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\GenerateWPAjax\"\n

Generate a test case extending the lucatume\\WPBrowser\\TestCase\\WPAjaxTestCase class. This class is a version of the WPTestCase designed to test AJAX requests.

"},{"location":"commands/#generatewpcanonical","title":"generate:wpcanonical","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\GenerateWPCanonical\"\n

Generate a test case extending the lucatume\\WPBrowser\\TestCase\\WPCanonicalTestCase class. This class is a version of the WPTestCase designed to test canonical redirects.

"},{"location":"commands/#generatewprestapi","title":"generate:wprestapi","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\GenerateWPRestApi\"\n

Generate a test case extending the lucatume\\WPBrowser\\TestCase\\WPRestApiTestCase class. This class is a version of the WPTestCase designed to test the handling of REST API requests.

"},{"location":"commands/#generatewprestcontroller","title":"generate:wprestcontroller","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\GenerateWPRestController\"\n

Generate a test case extending the lucatume\\WPBrowser\\TestCase\\WPRestControllerTestCase class. This class is a version of the WPTestCase designed to unit-test REST API controllers.

"},{"location":"commands/#generatewprestposttypecontroller","title":"generate:wprestposttypecontroller","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\GenerateWPRestPostTypeController\"\n

Generate a test case extending the lucatume\\WPBrowser\\TestCase\\WPRestPostTypeControllerTestCase class. This class is a version of the WPTestCase designed to unit-test REST API controllers for post types.

"},{"location":"commands/#generatewpxml","title":"generate:wpxml","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\GenerateWPXML\"\n

Generate a test case extending the lucatume\\WPBrowser\\TestCase\\WPXMLTestCase class. This class is a version of the WPTestCase designed to test the production of XML data.

"},{"location":"commands/#generatewpxmlrpc","title":"generate:wpxmlrpc","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\GenerateWPXMLRPC\"\n

Generate a test case extending the lucatume\\WPBrowser\\TestCase\\WPXMLRPCTestCase class. This class is a version of the WPTestCase designed to test the XML-RPC API.

"},{"location":"commands/#monkeycachepath","title":"monkey:cache:path","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\MonkeyCachePath\"\n

Get the path to the monkey-patching cache directory.

Use the --porcelain or -p option to get the path without any additional output.

"},{"location":"commands/#monkeycacheclear","title":"monkey:cache:clear","text":"

Enable the command with:

extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\MonkeyCacheClear\"\n

Clear the monkey-patching cache.

Use the --porcelain or -p option to suppress any confirmation output.

"},{"location":"custom-configuration/","title":"Custom configuration","text":""},{"location":"custom-configuration/#custom-testing-configuration","title":"Custom testing configuration","text":"

Any non default configuration is considered a custom configuration. If your project requires a tailored set up, this is the configuration for you.

"},{"location":"custom-configuration/#using-a-custom-configuration-to-run-tests","title":"Using a custom configuration to run tests","text":"

If you decide to skip the default configuration, or are working on a project that cannot use the default configuration you will be able to set up wp-browser to suit your needs using a custom configuration.

Choose \"no\", to not use the default configuration, when running the vendor/bin/codecept init wpbrowser command.

The command will set up the file structure to be able to run integration and end-to-end tests and will leverage Codeception dynamic configuration using parameters to control the testing stack using the tests/.env file.

"},{"location":"custom-configuration/#walkthrough-of-the-testsenv-file","title":"Walkthrough of the tests/.env file","text":"
  • WORDPRESS_ROOT_DIR - the path to the root WordPress installation directory. This is the directory that contains WordPress files, like wp-load.php. This path can be absolute or relative to the root project directory; e.g. vendor/wordpress (relative) or /var/www/wordpress (absolute) will work.
  • WORDPRESS_URL - the URL of the WordPress installation. This is the URL that will be used by the browser to access the WordPress installation in the context of end-to-end tests; e.g. http://localhost:8080 or https://wordpress.local.
  • WORDPRESS_DOMAIN - the domain of the WordPress installation; this value should follow the WORDPRESS_URL value. E.g. if WORDPRESS_URL is http://localhost:8080 the WORDPRESS_DOMAIN value should be localhost:8080; if WORDPRESS_URL is https://wordpress.local the WORDPRESS_DOMAIN value should be wordpress.local.
  • WORDPRESS_DB_URL - the user, password, host, and name of the database used by the tests. If the database is a MySQL database, the value should be in the form mysql://user:password@host:port/database_name. If the database is a SQLite database, the value should be in the form sqlite://path/to/database/file.
  • WORDPRESS_TABLE_PREFIX - the database table prefix used by the WordPress installation, the one served at WORDPRESS_URL. This value is usually wp_ but can be different if the WordPress installation has been configured to use a different prefix.
  • TEST_TABLE_PREFIX - the database table prefix used by the WPLoader module to install WordPress and run the tests. This value is usually test_ and should be different from the WORDPRESS_TABLE_PREFIX value.
  • WORDPRESS_ADMIN_USER - the username of the WordPress administrator user. E.g. admin.
  • WORDPRESS_ADMIN_PASSWORD - the password of the WordPress administrator user. E.g. secret!password.
  • CHROMEDRIVER_HOST - the host of the Chromedriver server. This value is usually localhost if you're running Chromedriver on the same machine as the tests. If you're running your tests using a container stack, it will be the name of the container running Chromedriver, e.g. chromedriver.
  • CHROMEDRIVER_PORT - the port of the Chromedriver server. This value is usually 9515 if you're running Chromedriver on the same machine as the tests. If you're running your tests using a container stack, it will be the port exposed by the container running Chromedriver, e.g. 4444. Note the default configuration will set this value to a random port during set up to avoid conflicts with other services running on the same machine.
"},{"location":"custom-configuration/#handling-custom-file-structures","title":"Handling custom file structures","text":"

If your site uses a customized file structure to manage WordPress, you will need to further configure the WPLoader module to correctly look for the site content. Read more about setting up WPLoader to correctly load plugins and themes from custom locations here.

"},{"location":"default-configuration/","title":"Default configuration","text":""},{"location":"default-configuration/#default-testing-configuration","title":"Default testing configuration","text":"

The recommended configuration for most projects. It allows you to get into WordPress integration and end-to-end testing quickly and easily.

"},{"location":"default-configuration/#requirements","title":"Requirements","text":"

The default configuration will set up Codeception and wp-browser to use SQLite as the database engine, PHP built-in server to serve the test site on localhost and your local version of Chrome, driven by Chromedriver, to run end-to-end tests.

As such, the default configuration has the following requirements:

  • the sqlite3 PHP extension; you can check if if's installed by running php -m | grep sqlite3 in your terminal
  • the pdo_sqlite PHP extension; you can check if if's installed by running php -m | grep pdo_sqlite in your terminal
  • PHP built-in server can work with only one thread, but it will be faster using multiple threads; multiple threads are not supported on Windows, but they are supported on WSL.
  • the Chrome browser installed on your machine
"},{"location":"default-configuration/#overview-plugin-and-theme-project","title":"Overview - plugin and theme project","text":"

If you're configuring wp-browser for a plugin or theme project, the default configuration will install WordPress in the tests/_wordpress directory and configure the installation to run using SQLite as a database engine. The SQLite Database Integration plugin) will be placed in the installation must-use plugins directory.

If your plugin or theme project requires additional plugins or theme to work, you can place them in the tests/_worpdress/wp-content/plugins and tests/_wordpress/wp-content/themes directories respectively.

When adding, or removing, plugin and themes, remember to update the WPLoader module configuration to load the correct plugins and themes in your integration tests.

On the same note, update the database dump used by the WPDb module to reflect the changes in the dump loaded in the end-to-end tests. The easiest way to update the database fixture is to load the current database dump using the wp:db:import command, manually setting up the site interacting with it and then exporting the database dump using the wp:db:export command.

You can find out about the URL of the site served by the PHP built-in web server by running the dev:info command.

"},{"location":"default-configuration/#overview-site-project","title":"Overview - site project","text":"

If you're configuring wp-browser for a site project, the default configuration will use a combination of PHP built-in web server and the SQLite Database Integration plugin to run the tests and serve your site.

The router file used by the PHP built-in web server will force the site, when served on localhost, to use SQLite as database engine leaving your existing local MySQL database untouched.

Your existing WordPress installation will be picked up as it is, with all the plugins and themes found in the contents directory.

Existing plugins and themes are not added to WPLoader module configuration by wp-browser, you have to do that manually.

Similarly, the database dump used by the WPDb module is, by default, an empty WordPress installation where no plugins and themes are active. You have to update the database dump used by the module to reflect the state of your site. You can do that by loading the current database dump using the wp:db:import command, manually setting up the site interacting with it and then exporting the database dump using the wp:db:export command.

You can find out about the URL of the site served by the PHP built-in web server by running the dev:info command.

"},{"location":"default-configuration/#when-not-to-use-the-default-configuration","title":"When not to use the default configuration","text":"

The default configuration is the recommended one for most projects, but some projects might require you to use a custom configuration to make the most out of wp-browser.

"},{"location":"default-configuration/#database-drop-in","title":"Database drop-in","text":"

The default configuration will use the SQLite Database Integration plugin to use SQLite as the database engine. This requires placing a db.php drop-in file in the WordPress content directory.

If your project already requires a db.php drop-in file, you will have to use a custom configuration.

"},{"location":"default-configuration/#multisite-with-sub-domains","title":"Multisite with sub-domains","text":"

While Chrome will handle sub-domains correctly, even on localhost, WordPress will not. If you're testing a multisite installation with sub-domains, you will have to use a custom configuration.

"},{"location":"default-configuration/#custom-site-structure","title":"Custom site structure","text":"

If your site uses a customized file structure to manage WordPress, you will need to configure wp-browser using a custom configuration. This is usually true for some site projects, and will most likely not be an issue for plugin and theme projects.

Using a custom configuration is not that difficult though: read more about using a custom configuration here.

"},{"location":"extensions/","title":"Extensions","text":""},{"location":"extensions/#codeception-extensions-provided-by-the-library","title":"Codeception Extensions provided by the library","text":"

The library provides some custom Codeception extensions that can be added to the project Codeception configuration file, in the extensions section.

"},{"location":"extensions/#builtinservercontroller","title":"BuiltInServerController","text":"

This extension will start and stop the PHP built-in web server before and after the tests run.

The extension can be configured with the following parameters:

  • required
    • docroot - the document root to use for the PHP Built-in server; it can be either an absolute path or a path relative to the Codeception root directory. Note the lowercase r in the parameter name.
  • optional
    • suites - an array of Codeception suites to run the server for; if not set the server will be started for all the suites.
    • port - the port to use for the PHP Built-in server, if not set the server will use port 2389.
    • workers - the number of workers to use for the PHP Built-in server, if not set the server will use 5 workers. This is the equivalent of the PHP_CLI_SERVER_WORKERS environment variable.

Note: if you run PHP built-in server on Windows, the workers parameter will be ignored and the server will always run with a single worker. This limit is not present in WSL.

Example configuration starting the server for all suites:

extensions:\n  enabled:\n    - \"lucatume\\\\WPBrowser\\\\Extension\\\\BuiltInServerController\"\n  config:\n    \"lucatume\\\\WPBrowser\\\\Extension\\\\BuiltInServerController\":\n      docroot: /var/www/html\n      workers: 5\n

The extension can access environment variables defined in the tests configuration file:

extensions:\n  enabled:\n    - \"lucatume\\\\WPBrowser\\\\Extension\\\\BuiltInServerController\"\n  config:\n    \"lucatume\\\\WPBrowser\\\\Extension\\\\BuiltInServerController\":\n      suites:\n        - EndToEnd\n        - WebApp\n      docroot: '%WORDPRESS_ROOT_DIR%'\n      port: '%BUILT_IN_SERVER_PORT%'\n      workers: '%BUILT_IN_SERVER_WORKERS%'\n

This is a service extension that will be started and stopped by the dev:start and dev:stop commands.

"},{"location":"extensions/#chromedrivercontroller","title":"ChromeDriverController","text":"

This extension will start and stop the ChromeDriver before and after the tests are run.

The extension can be configured with the following parameters:

  • optional
    • suites - an array of Codeception suites to run the server for; if not set the server will be started for all the suites.
    • port - the port to use for the ChromeDriver, if not set the server will use port 9515.
    • binary - the path to the ChromeDriver binary, if not set the server will use the chromedriver binary in the Composer bin directory.

Example configuration starting the server for all suites:

extensions:\n  enabled:\n    - \"lucatume\\\\WPBrowser\\\\Extension\\\\ChromeDriverController\"\n  config:\n    \"lucatume\\\\WPBrowser\\\\Extension\\\\ChromeDriverController\":\n      port: 4444\n      binary: /usr/local/bin/chromedriver\n

The extension can access environment variables defined in the tests configuration file:

extensions:\n  enabled:\n    - \"lucatume\\\\WPBrowser\\\\Extension\\\\ChromeDriverController\"\n  config:\n    suites:\n      - EndToEnd\n      - WebApp\n    \"lucatume\\\\WPBrowser\\\\Extension\\\\ChromeDriverController\":\n      port: '%CHROMEDRIVER_PORT%'\n      binary: '%CHROMEDRIVER_BINARY%'\n

You can use the chromedriver:update command to download the latest version of ChromeDriver compatible with your Chrome browser version and place it in the Composer bin directory.

This is a service extension that will be started and stopped by the dev:start and dev:stop commands.

"},{"location":"extensions/#dockercomposecontroller","title":"DockerComposeController","text":"

This extension will start and stop a docker compose stack before and after the tests are run.

The extension can be configured with the following parameters:

  • required
    • compose-file - the path to the docker compose file to use; it can be either an absolute path or a path relative to the Codeception root directory.
  • optional
    • env-file- the path to the environment file to use; it can be either an absolute path or a path.

Example configuration starting the server for all suites:

extensions:\n  enabled:\n    - \"lucatume\\\\WPBrowser\\\\Extension\\\\DockerComposeController\"\n  config:\n    \"lucatume\\\\WPBrowser\\\\Extension\\\\DockerComposeController\":\n      compose-file: /var/www/html/docker-compose.yml\n      env-file: /var/www/html/.env\n

The extension can access environment variables defined in the tests configuration file:

extensions:\n  enabled:\n    - \"lucatume\\\\WPBrowser\\\\Extension\\\\DockerComposeController\"\n  config:\n    suites:\n      - EndToEnd\n      - WebApp\n    \"lucatume\\\\WPBrowser\\\\Extension\\\\DockerComposeController\":\n      compose-file: '%DOCKER_COMPOSE_FILE%'\n      env-file: '%DOCKER_COMPOSE_ENV_FILE%'\n

This is a service extension that will be started and stopped by the dev:start and wp:dev-stop commands.

"},{"location":"extensions/#isolationsupport","title":"IsolationSupport","text":"

This extension provides support for the PHPUnit annotations @runInSeparateProcess and @runTestsInSeparateProcesses, and the PHPUnit attributes (PHPUnit 10+) #[RunInSeparateProcess] and #[RunTestsInSeparateProcesses]. You can read more about these annotations and attributes in the PHPUnit documentation about test isolation.

Codeception does not natively support these annotations and attributes, this extension provides support for them.

You can enable the extension in the Codeception configuration file:

extensions:\n  enabled:\n    - \"lucatume\\\\WPBrowser\\\\Extension\\\\IsolationSupport\"\n

In your tests, you can use the annotations or attributes as you would in a PHPUnit test:

<?php\n\nuse lucatume\\WPBrowser\\TestCase\\WPTestCase;\n\nclass IsolationExampleTest extends WPTestCase {\n    /**\n     * @runInSeparateProcess\n     */\n    public function test_in_admin_context() {\n        define('WP_ADMIN', true);\n\n        $this->assertTrue(is_admin());\n    }\n\n    #[RunTestsInSeparateProcesses]\n    public function test_in_admin_context_with_attribute() {\n        define('WP_ADMIN', true);\n\n        $this->assertTrue(is_admin());\n    }\n\n    public function test_constant_is_not_set() {\n        $this->assertFalse(defined('WP_ADMIN'));\n    }\n}\n\n#[RunTestsInSeparateProcesses]\nclass RunAllTestsInSeparateProcesses extends WPTestCase {\n    public function test_one() {\n        definen('TEST_CONST', 'one');\n\n        $this->assertEquals('one', TEST_CONST);\n    }\n\n    public function test_two() {\n        definen('TEST_CONST', 'two');\n\n        $this->assertEquals('two', TEST_CONST);\n    }\n}\n

Previous versions of the test isolation support required the @backupGlobals disabled annotation to be used when running tests in isolation. This is no longer required.

Isolation support is based around monkey-patching the file at runtime. Look into the monkey:cache:clear and monkey:cache:path commands to manage the monkey-patching cache.

"},{"location":"migration/","title":"Migrating to newer versions","text":"

Depending on your project PHP compatibility, you have three options to choose from:

  • Your project supports PHP 7.1 to 7.4: migrate to wp-browser version 3.5
  • Your project supports PHP 8.0 or above: migrate to wp-browser version 4.0
  • You cannot, or do not want, to migrate from version 3 of wp-browser to a new version: see how you can lock your reuirements to avoid the upgrade
"},{"location":"migration/#version-35-and-40","title":"Version 3.5 and 4.0","text":"

Version 3.5 and 4.0 are the latest versions of wp-browser. Version 3.5 is a transpile of version 4 to be compatible with PHP 7.1 to 7.4 that contains, for all intents and purposes, the same facilities and systems contained in version 4 of wp-browser adapter to work on lower PHP versions and version 4 of Codeception.

Future development of wp-browser will happen on version 4 and will be transpiled to version 3.5 for back-compatibility purposes.

"},{"location":"migration/#migrate-from-version-3-to-35","title":"Migrate from version 3 to 3.5","text":"
  1. Update the required version of wp-browser in your composer.json file to 3.5:
    {\n  \"require-dev\": {\n    \"lucatume/wp-browser\": \"^3.5\"\n  }\n}\n
  2. See the changes common to version 3.5 and 4.0
"},{"location":"migration/#migrate-from-version-3-to-4","title":"Migrate from version 3 to 4","text":"
  1. Update the required version of wp-browser in your composer.json file to 4.0:
    {\n  \"require-dev\": {\n    \"lucatume/wp-browser\": \"^4.0\"\n  }\n}\n
  2. See the changes common to version 3.5 and 4.0
"},{"location":"migration/#changes-common-to-version-35-and-40","title":"Changes common to version 3.5 and 4.0","text":"
  1. Update your main Codeception configuration file (e.g. codeception.yml) to enable the new commands:
extensions:\n  commands:\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\RunOriginal\"\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\RunAll\"\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\DbExport\"\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\DbImport\"\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\MonkeyCachePath\"\n    - \"lucatume\\\\WPBrowser\\\\Command\\\\MonkeyCacheClear\"\n
  1. If your test code is loading deprecated functions, arguments, classes, files, or hooks, you need to update your test code to let the test case know using the setExpectedDeprecated method:

    <?php\n\nuse lucatume\\WPBrowser\\TestCase\\WPTestCase;\n\nclass MyTestUsingDeprecatedCode extends WPTestCase {\n    public function test_deprecatd_function() {\n           // add_filter( 'deprecated_function_trigger_error', '__return_false' );\n        $this->setExpectedDeprecated( 'my_deprecated_function' );\n        my_deprecated_function();\n    }\n\n    public function test_deprecated_class(){\n           // add_filter( 'deprecated_class_trigger_error', '__return_false' );\n        $this->setExpectedDeprecated( 'MyDeprecatedClass' );\n        new MyDeprecatedClass();\n    }\n\n    public function test_deprecated_file(){\n           // add_filter( 'deprecated_file_trigger_error', '__return_false' );\n        $this->setExpectedDeprecated( '/path/to/my_deprecated_file.php' );\n        require_once 'my_deprecated_file.php';\n    }\n\n    public function test_deprecated_hook(){\n           // add_filter( 'deprecated_hook_trigger_error', '__return_false' );\n        $this->setExpectedDeprecated( 'my_deprecated_hook' );\n        do_action( 'my_deprecated_hook' );\n    }\n}\n
    Previously, your code could just filter the deprecated_function_trigger_error, deprecated_argument_trigger_error, deprecated_class_trigger_error, deprecated_file_trigger_error, and deprecated_hook_trigger_error, hooks to return false to tolerate the deprecation notices in tests.

  2. If your test code is directly modifying properties like $expected_deprecated or $expected_doing_it_wrong directly, you need to update your test code to use the setExpectedDeprecated and setExpectedIncorrectUsage methods:

    <?php\n\nuse lucatume\\WPBrowser\\TestCase\\WPTestCase;\nclass MyTestUsingDeprecatedCode extends WPTestCase {\n    public function test_deprecated_function() {\n        // $this->expected_deprecated[] = 'my_deprecated_function';\n        $this->setExpectedDeprecated( 'my_deprecated_function' );\n        my_deprecated_function();\n    }\n\n    public function test_doing_it_wrong(){\n        // $this->expected_doing_it_wrong[] = 'my_doing_it_wrong';\n        $this->setExpectedIncorrectUsage( 'my_doing_it_wrong' );\n        my_doing_it_wrong();\n    }\n}\n

  3. If your test code is knowingly triggering doing-it-wrong notices, you need to update your test code to let the test case know using the setExpectedIncorrectUsage method:

    <?php\n\nuse lucatume\\WPBrowser\\TestCase\\WPTestCase;\nclass MyTestUsingDoingItWrongTest extends WPTestCase {\n    public function test_it_can_use_doing_it_wrong() {\n        $this->setExpectedIncorrectUsage( 'my_doing_it_wrong' );\n        my_doing_it_wrong();\n    }\n}\n
    Previously, your code could just filter the doing_it_wrong_trigger_error hook to return false to tolerate the doing-it-wrong notices in tests.

  4. Some assertion methods have, in more recent versions of the PHPUnit core suite, adopted stricter type checks when it comes to comparison. E.g., the assertEqualFields will now check the object to check the fields on is actually an object. Depending on how loose your use of assertions was before, you might have to update your work to make it pass the stricter checks:

    <?php\n\nuse lucatume\\WPBrowser\\TestCase\\WPTestCase;\n\n class MyTestUsingAssertEqualFields extends WPTestCase {\n      public function test_it_can_use_assert_equal_fields() {\n         // Cast the array to an object explicitly.\n         $this->assertEqualFields( (object) [ 'a' => 1 ], [ 'a' => 1 ] );\n      }\n }\n

  5. Other updates to the Core PHPUnit test case will report use of deprecated functions more promptly; if your code is using deprecated functions that might have escaped previous versions of wp-browser, you will need to update them.

  6. If you're using the @runInSeparateProcess annotation for tests in your suite, you will need to enable the IsolationSupport extension in your suite configuration file:

actor: MySuiteTester\nbootstrap: _bootstrap.php\nextensions:\nenabled:\n   - \"lucatume\\\\WPBrowser\\\\Extension\\\\IsolationSupport\"\nmodules: # The rest of the module configuration ...\n

Alternatively, you can enable the extension in the Codeception main configuration file (e.g. codeception.yml).

Read more about the extension in the Isolation Support extension documentation.

  1. Global space cleanup between test is more thorough in more recent versions of the Core PHPUnit test suite. Due to this you might see failures in tests that were passing in previous versions due to a \"leaking\" global state. Examples of this might be nonces being set by previous tests and not being reset. Update your tests to explicitly set all the global stat variables you require for the test to run.
"},{"location":"migration/#staying-on-version-3-lower-than-35","title":"Staying on version 3, lower than 3.5","text":"

Update your composer.json file to lock the required version of wp-browser to a version less than 3.5:

{\n  \"require-dev\": {\n    \"lucatume/wp-browser\": \"<3.5\"\n  }\n}\n
"},{"location":"troubleshooting/","title":"Troubleshooting","text":""},{"location":"troubleshooting/#troubleshooting-common-issues","title":"Troubleshooting common issues","text":""},{"location":"troubleshooting/#downloads-fail-in-windows","title":"Downloads fail in Windows","text":"

If you're using code or commands, e.g. the chromedriver:update one, that download files and those keep failing with a message like the following:

File ... download failed: SSL certificate problem: unable to get local issuer certificate\n

It's likely the issue originates from PHP not having access to the system certificate store.

You can fix this by downloading the certificates file and setting the curl.cainfo and openssl.cafile PHP configuration options to point to it:

curl.cainfo = \"C:\\path\\to\\cacert.pem\"\nopenssl.cafile = \"C:\\path\\to\\cacert.pem\"\n
"},{"location":"modules/WPBrowser/","title":"WPBrowser","text":""},{"location":"modules/WPBrowser/#wpbrowser-module","title":"WPBrowser module","text":"

Browse and test the site HTML with a fast browser without Javascript support.

This module trades the WPWebDriver module Javascript support for speed and stability. It is a good choice for testing sites that don't use Javascript or to make assertions that do not require Javascript support like:

  • testing HTTP return codes
  • testing HTML structure
  • testing JSON and XML responses from APIs

This module is used together with the WPDb module and the WPFilesystem module to control the site state, the database, and the site file structure.

This module is an extension of the Codeception PHPBrowser module, you can reference to the Codeception module documentation for more information on the module configuration and usage.

This module should be with Cest and Cept test cases.

"},{"location":"modules/WPBrowser/#configuration","title":"Configuration","text":"
  • url - required; the start URL of your WordPress project.
  • adminUsername - required; the site administrator username to use in actions like loginAsAdmin.
  • adminPassword - required; the site administrator password to use in actions like loginAsAdmin.
  • adminPath - the path to the WordPress admin directory; defaults to /wp-admin.

More Guzzle request options are available like:

headers - default headers are set before each test. cookies - default cookies are set before each test. auth - default authentication to be set before each test.

... and more.

The following is an example of the module configuration to run tests on thehttp://localhost:8080 site:

modules:\n  enabled:\n    lucatume\\WPBrowser\\Module\\WPBrowser:\n      url: 'http://localhost:8080'\n      adminUsername: 'admin'\n      adminPassword: 'password'\n      adminPath: '/wp-admin'\n      headers:\n        X_WPBROWSER_REQUEST: 1\n        X_TEST_REQUEST: 1\n        X_APM_REQUEST: 1\n

The following configuration uses dynamic configuration parameters to set the module configuration:

modules:\n  enabled:\n    lucatume\\WPBrowser\\Module\\WPBrowser:\n      url: '%WORDPRESS_URL%'\n      adminUsername: '%WORDPRESS_ADMIN_USER%'\n      adminPassword: '%WORDPRESS_ADMIN_PASSWORD%'\n      adminPath: '/wp-admin'\n      headers:\n        X_WPBROWSER_REQUEST: 1\n        X_TEST_REQUEST: 1\n        X_APM_REQUEST: 1\n
"},{"location":"modules/WPBrowser/#methods","title":"Methods","text":"

The module provides the following methods:

"},{"location":"modules/WPBrowser/#activateplugin","title":"activatePlugin","text":"

Signature: activatePlugin(array|string $pluginSlug) : void

In the plugin administration screen activates a plugin clicking the \"Activate\" link.

The method will not handle authentication to the admin area.

<?php\n// Activate a plugin.\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->activatePlugin('hello-dolly');\n// Activate a list of plugins.\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->activatePlugin(['hello-dolly','another-plugin']);\n
"},{"location":"modules/WPBrowser/#activatetheme","title":"activateTheme","text":"

Signature: activateTheme(string $slug) : void

Activates a theme.

The method will not handle authentication and navigation to the themes administration page.

"},{"location":"modules/WPBrowser/#ameditingpostwithid","title":"amEditingPostWithId","text":"

Signature: amEditingPostWithId(int $id) : void

Go to the admin page to edit the post with the specified ID.

The method will not handle authentication the admin area.

<?php\n$I->loginAsAdmin();\n$postId = $I->havePostInDatabase();\n$I->amEditingPostWithId($postId);\n$I->fillField('post_title', 'Post title');\n
"},{"location":"modules/WPBrowser/#ameditinguserwithid","title":"amEditingUserWithId","text":"

Signature: amEditingUserWithId(int $id) : void

Go to the admin page to edit the user with the specified ID.

The method will not handle authentication the admin area.

<?php\n$I->loginAsAdmin();\n$userId = $I->haveUserInDatabase('luca', 'editor');\n$I->amEditingUserWithId($userId);\n$I->fillField('email', 'new@example.net');\n
"},{"location":"modules/WPBrowser/#amhttpauthenticated","title":"amHttpAuthenticated","text":"

Signature: amHttpAuthenticated($username, $password) : void

"},{"location":"modules/WPBrowser/#amonadminajaxpage","title":"amOnAdminAjaxPage","text":"

Signature: amOnAdminAjaxPage([array|string|null $queryVars]) : void

Go to the admin-ajax.php page to start a synchronous, and blocking, GET AJAX request.

The method will not handle authentication, nonces or authorization.

<?php\n$I->amOnAdminAjaxPage(['action' => 'my-action', 'data' => ['id' => 23], 'nonce' => $nonce]);\n
"},{"location":"modules/WPBrowser/#amonadminpage","title":"amOnAdminPage","text":"

Signature: amOnAdminPage(string $page) : void

Go to a page in the admininstration area of the site.

This method will not handle authentication to the administration area.

<?php\n$I->loginAs('user', 'password');\n// Go to the plugins management screen.\n$I->amOnAdminPage('/plugins.php');\n
"},{"location":"modules/WPBrowser/#amoncronpage","title":"amOnCronPage","text":"

Signature: amOnCronPage([array|string|null $queryVars]) : void

Go to the cron page to start a synchronous, and blocking, GET request to the cron script.

<?php\n// Triggers the cron job with an optional query argument.\n$I->amOnCronPage('/?some-query-var=some-value');\n
"},{"location":"modules/WPBrowser/#amonpage","title":"amOnPage","text":"

Signature: amOnPage(string $page) : void

"},{"location":"modules/WPBrowser/#amonpagespage","title":"amOnPagesPage","text":"

Signature: amOnPagesPage() : void

Go the \"Pages\" administration screen.

The method will not handle authentication.

<?php\n$I->loginAsAdmin();\n$I->amOnPagesPage();\n$I->see('Add New');\n
"},{"location":"modules/WPBrowser/#amonpluginspage","title":"amOnPluginsPage","text":"

Signature: amOnPluginsPage() : void

Go to the plugins administration screen.

The method will not handle authentication.

<?php\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->activatePlugin('hello-dolly');\n
"},{"location":"modules/WPBrowser/#amonsubdomain","title":"amOnSubdomain","text":"

Signature: amOnSubdomain($subdomain) : void

"},{"location":"modules/WPBrowser/#amonthemespage","title":"amOnThemesPage","text":"

Signature: amOnThemesPage() : void

Moves to the themes administration page.

"},{"location":"modules/WPBrowser/#amonurl","title":"amOnUrl","text":"

Signature: amOnUrl($url) : void

"},{"location":"modules/WPBrowser/#attachfile","title":"attachFile","text":"

Signature: attachFile($field, string $filename) : void

"},{"location":"modules/WPBrowser/#checkoption","title":"checkOption","text":"

Signature: checkOption($option) : void

"},{"location":"modules/WPBrowser/#click","title":"click","text":"

Signature: click($link, [$context]) : void

"},{"location":"modules/WPBrowser/#deactivateplugin","title":"deactivatePlugin","text":"

Signature: deactivatePlugin(array|string $pluginSlug) : void

In the plugin administration screen deactivate a plugin clicking the \"Deactivate\" link.

The method will not handle authentication and navigation to the plugins administration page.

<?php\n// Deactivate one plugin.\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->deactivatePlugin('hello-dolly');\n// Deactivate a list of plugins.\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->deactivatePlugin(['hello-dolly', 'my-plugin']);\n
"},{"location":"modules/WPBrowser/#deleteheader","title":"deleteHeader","text":"

Signature: deleteHeader(string $name) : void

Deletes the header with the passed name. Subsequent requests will not have the deleted header in its request.

Example:

<?php\n$I->haveHttpHeader('X-Requested-With', 'Codeception');\n$I->amOnPage('test-headers.php');\n// ...\n$I->deleteHeader('X-Requested-With');\n$I->amOnPage('some-other-page.php');\n

"},{"location":"modules/WPBrowser/#dontsee","title":"dontSee","text":"

Signature: dontSee(string $text, [$selector]) : void

"},{"location":"modules/WPBrowser/#dontseecheckboxischecked","title":"dontSeeCheckboxIsChecked","text":"

Signature: dontSeeCheckboxIsChecked($checkbox) : void

"},{"location":"modules/WPBrowser/#dontseecookie","title":"dontSeeCookie","text":"

Signature: dontSeeCookie($cookie, [$params]) : void

"},{"location":"modules/WPBrowser/#dontseecurrenturlequals","title":"dontSeeCurrentUrlEquals","text":"

Signature: dontSeeCurrentUrlEquals(string $uri) : void

"},{"location":"modules/WPBrowser/#dontseecurrenturlmatches","title":"dontSeeCurrentUrlMatches","text":"

Signature: dontSeeCurrentUrlMatches(string $uri) : void

"},{"location":"modules/WPBrowser/#dontseeelement","title":"dontSeeElement","text":"

Signature: dontSeeElement($selector, [array $attributes]) : void

"},{"location":"modules/WPBrowser/#dontseeincurrenturl","title":"dontSeeInCurrentUrl","text":"

Signature: dontSeeInCurrentUrl(string $uri) : void

"},{"location":"modules/WPBrowser/#dontseeinfield","title":"dontSeeInField","text":"

Signature: dontSeeInField($field, $value) : void

"},{"location":"modules/WPBrowser/#dontseeinformfields","title":"dontSeeInFormFields","text":"

Signature: dontSeeInFormFields($formSelector, array $params) : void

"},{"location":"modules/WPBrowser/#dontseeinsource","title":"dontSeeInSource","text":"

Signature: dontSeeInSource(string $raw) : void

"},{"location":"modules/WPBrowser/#dontseeintitle","title":"dontSeeInTitle","text":"

Signature: dontSeeInTitle($title) : void

"},{"location":"modules/WPBrowser/#dontseelink","title":"dontSeeLink","text":"

Signature: dontSeeLink(string $text, [string $url]) : void

"},{"location":"modules/WPBrowser/#dontseeoptionisselected","title":"dontSeeOptionIsSelected","text":"

Signature: dontSeeOptionIsSelected($selector, $optionText) : void

"},{"location":"modules/WPBrowser/#dontseeplugininstalled","title":"dontSeePluginInstalled","text":"

Signature: dontSeePluginInstalled(string $pluginSlug) : void

Assert a plugin is not installed in the plugins administration screen.

The method will not handle authentication and navigation to the plugin administration screen.

<?php\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->dontSeePluginInstalled('my-plugin');\n
"},{"location":"modules/WPBrowser/#dontseeresponsecodeis","title":"dontSeeResponseCodeIs","text":"

Signature: dontSeeResponseCodeIs(int $code) : void

Checks that response code is equal to value provided.

<?php\n$I->dontSeeResponseCodeIs(200);\n\n// recommended \\Codeception\\Util\\HttpCode\n$I->dontSeeResponseCodeIs(\\Codeception\\Util\\HttpCode::OK);\n
"},{"location":"modules/WPBrowser/#executeinguzzle","title":"executeInGuzzle","text":"

Signature: executeInGuzzle(Closure $function) : void

Low-level API method. If Codeception commands are not enough, use Guzzle HTTP Client methods directly

Example:

<?php\n$I->executeInGuzzle(function (\\GuzzleHttp\\Client $client) {\n     $client->get('/get', ['query' => ['foo' => 'bar']]);\n});\n

It is not recommended to use this command on a regular basis. If Codeception lacks important Guzzle Client methods, implement them and submit patches.

"},{"location":"modules/WPBrowser/#fillfield","title":"fillField","text":"

Signature: fillField($field, $value) : void

"},{"location":"modules/WPBrowser/#followredirect","title":"followRedirect","text":"

Signature: followRedirect() : void

Follow pending redirect if there is one.

<?php\n$I->followRedirect();\n
"},{"location":"modules/WPBrowser/#grabactivetheme","title":"grabActiveTheme","text":"

Signature: grabActiveTheme() : ?string

Returns the slug of the currently active themes.

The method will not handle authentication and navigation to the themes administration page.

"},{"location":"modules/WPBrowser/#grabattributefrom","title":"grabAttributeFrom","text":"

Signature: grabAttributeFrom($cssOrXpath, string $attribute) : mixed

"},{"location":"modules/WPBrowser/#grabavailablethemes","title":"grabAvailableThemes","text":"

Signature: grabAvailableThemes([string $classes]) : array

Returns the list of available themes.

The method will not handle authentication and navigation to the themes administration page.

"},{"location":"modules/WPBrowser/#grabcookie","title":"grabCookie","text":"

Signature: grabCookie(string $cookie, [array $params]) : mixed

"},{"location":"modules/WPBrowser/#grabcookieswithpattern","title":"grabCookiesWithPattern","text":"

Signature: grabCookiesWithPattern(string $cookiePattern) : ?array

Returns all the cookies whose name matches a regex pattern.

<?php\n$I->loginAs('customer','password');\n$I->amOnPage('/shop');\n$cartCookies = $I->grabCookiesWithPattern(\"#^shop_cart\\\\.*#\");\n
"},{"location":"modules/WPBrowser/#grabfromcurrenturl","title":"grabFromCurrentUrl","text":"

Signature: grabFromCurrentUrl([?string $uri]) : mixed

"},{"location":"modules/WPBrowser/#grabmultiple","title":"grabMultiple","text":"

Signature: grabMultiple($cssOrXpath, [?string $attribute]) : array

"},{"location":"modules/WPBrowser/#grabpagesource","title":"grabPageSource","text":"

Signature: grabPageSource() : string

Grabs current page source code.

"},{"location":"modules/WPBrowser/#grabtextfrom","title":"grabTextFrom","text":"

Signature: grabTextFrom($cssOrXPathOrRegex) : mixed

"},{"location":"modules/WPBrowser/#grabvaluefrom","title":"grabValueFrom","text":"

Signature: grabValueFrom($field) : mixed

"},{"location":"modules/WPBrowser/#grabwordpresstestcookie","title":"grabWordPressTestCookie","text":"

Signature: grabWordPressTestCookie([?string $name]) : ?Symfony\\Component\\BrowserKit\\Cookie

Returns WordPress default test cookie object if present.

<?php\n// Grab the default WordPress test cookie.\n$wpTestCookie = $I->grabWordPressTestCookie();\n// Grab a customized version of the test cookie.\n$myTestCookie = $I->grabWordPressTestCookie('my_test_cookie');\n
"},{"location":"modules/WPBrowser/#havehttpheader","title":"haveHttpHeader","text":"

Signature: haveHttpHeader(string $name, string $value) : void

Sets the HTTP header to the passed value - which is used on subsequent HTTP requests through PhpBrowser.

Example:

<?php\n$I->haveHttpHeader('X-Requested-With', 'Codeception');\n$I->amOnPage('test-headers.php');\n

To use special chars in Header Key use HTML Character Entities: Example: Header with underscore - 'Client_Id' should be represented as - 'Client_Id' or 'Client_Id'

<?php\n$I->haveHttpHeader('Client&#95;Id', 'Codeception');\n
"},{"location":"modules/WPBrowser/#haveserverparameter","title":"haveServerParameter","text":"

Signature: haveServerParameter(string $name, string $value) : void

Sets SERVER parameter valid for all next requests.

<?php\n$I->haveServerParameter('name', 'value');\n
"},{"location":"modules/WPBrowser/#logout","title":"logOut","text":"

Signature: logOut([string|bool $redirectTo]) : void

Navigate to the default WordPress logout page and click the logout link.

<?php\n// Log out using the `wp-login.php` form and return to the current page.\n$I->logOut(true);\n// Log out using the `wp-login.php` form and remain there.\n$I->logOut(false);\n// Log out using the `wp-login.php` form and move to another page.\n$I->logOut('/some-other-page');\n
"},{"location":"modules/WPBrowser/#loginas","title":"loginAs","text":"

Signature: loginAs(string $username, string $password) : void

Login as the specified user.

The method will not follow redirection, after the login, to any page.

<?php\n$I->loginAs('user', 'password');\n$I->amOnAdminPage('/');\n$I->see('Dashboard');\n
"},{"location":"modules/WPBrowser/#loginasadmin","title":"loginAsAdmin","text":"

Signature: loginAsAdmin() : void

Login as the administrator user using the credentials specified in the module configuration.

The method will not follow redirection, after the login, to any page.

<?php\n$I->loginAsAdmin();\n$I->amOnAdminPage('/');\n$I->see('Dashboard');\n
"},{"location":"modules/WPBrowser/#makehtmlsnapshot","title":"makeHtmlSnapshot","text":"

Signature: makeHtmlSnapshot([?string $name]) : void

"},{"location":"modules/WPBrowser/#moveback","title":"moveBack","text":"

Signature: moveBack([int $numberOfSteps]) : void

Moves back in history.

"},{"location":"modules/WPBrowser/#resetcookie","title":"resetCookie","text":"

Signature: resetCookie($cookie, [$params]) : void

"},{"location":"modules/WPBrowser/#see","title":"see","text":"

Signature: see(string $text, [$selector]) : void

"},{"location":"modules/WPBrowser/#seecheckboxischecked","title":"seeCheckboxIsChecked","text":"

Signature: seeCheckboxIsChecked($checkbox) : void

"},{"location":"modules/WPBrowser/#seecookie","title":"seeCookie","text":"

Signature: seeCookie($cookie, [$params]) : void

"},{"location":"modules/WPBrowser/#seecurrenturlequals","title":"seeCurrentUrlEquals","text":"

Signature: seeCurrentUrlEquals(string $uri) : void

"},{"location":"modules/WPBrowser/#seecurrenturlmatches","title":"seeCurrentUrlMatches","text":"

Signature: seeCurrentUrlMatches(string $uri) : void

"},{"location":"modules/WPBrowser/#seeelement","title":"seeElement","text":"

Signature: seeElement($selector, [array $attributes]) : void

"},{"location":"modules/WPBrowser/#seeerrormessage","title":"seeErrorMessage","text":"

Signature: seeErrorMessage([array|string $classes]) : void

In an administration screen look for an error admin notice.

The check is class-based to decouple from internationalization. The method will not handle authentication and navigation the administration area.

<?php\n$I->loginAsAdmin()\n$I->amOnAdminPage('/');\n$I->seeErrorMessage('.my-plugin');\n
"},{"location":"modules/WPBrowser/#seeincurrenturl","title":"seeInCurrentUrl","text":"

Signature: seeInCurrentUrl(string $uri) : void

"},{"location":"modules/WPBrowser/#seeinfield","title":"seeInField","text":"

Signature: seeInField($field, $value) : void

"},{"location":"modules/WPBrowser/#seeinformfields","title":"seeInFormFields","text":"

Signature: seeInFormFields($formSelector, array $params) : void

"},{"location":"modules/WPBrowser/#seeinsource","title":"seeInSource","text":"

Signature: seeInSource(string $raw) : void

"},{"location":"modules/WPBrowser/#seeintitle","title":"seeInTitle","text":"

Signature: seeInTitle($title) : void

"},{"location":"modules/WPBrowser/#seelink","title":"seeLink","text":"

Signature: seeLink(string $text, [?string $url]) : void

"},{"location":"modules/WPBrowser/#seemessage","title":"seeMessage","text":"

Signature: seeMessage([array|string $classes]) : void

In an administration screen look for an admin notice.

The check is class-based to decouple from internationalization. The method will not handle authentication and navigation the administration area.

<?php\n$I->loginAsAdmin()\n$I->amOnAdminPage('/');\n$I->seeMessage('.missing-api-token.my-plugin');\n
"},{"location":"modules/WPBrowser/#seenumberofelements","title":"seeNumberOfElements","text":"

Signature: seeNumberOfElements($selector, $expected) : void

"},{"location":"modules/WPBrowser/#seeoptionisselected","title":"seeOptionIsSelected","text":"

Signature: seeOptionIsSelected($selector, $optionText) : void

"},{"location":"modules/WPBrowser/#seepagenotfound","title":"seePageNotFound","text":"

Signature: seePageNotFound() : void

Asserts that current page has 404 response status code.

"},{"location":"modules/WPBrowser/#seepluginactivated","title":"seePluginActivated","text":"

Signature: seePluginActivated(string $pluginSlug) : void

Assert a plugin is activated in the plugin administration screen.

The method will not handle authentication and navigation to the plugin administration screen.

<?php\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->seePluginActivated('my-plugin');\n
"},{"location":"modules/WPBrowser/#seeplugindeactivated","title":"seePluginDeactivated","text":"

Signature: seePluginDeactivated(string $pluginSlug) : void

Assert a plugin is not activated in the plugins administration screen.

The method will not handle authentication and navigation to the plugin administration screen.

<?php\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->seePluginDeactivated('my-plugin');\n
"},{"location":"modules/WPBrowser/#seeplugininstalled","title":"seePluginInstalled","text":"

Signature: seePluginInstalled(string $pluginSlug) : void

Assert a plugin is installed, no matter its activation status, in the plugin administration screen.

The method will not handle authentication and navigation to the plugin administration screen.

<?php\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->seePluginInstalled('my-plugin');\n
"},{"location":"modules/WPBrowser/#seeresponsecodeis","title":"seeResponseCodeIs","text":"

Signature: seeResponseCodeIs(int $code) : void

Checks that response code is equal to value provided.

<?php\n$I->seeResponseCodeIs(200);\n\n// recommended \\Codeception\\Util\\HttpCode\n$I->seeResponseCodeIs(\\Codeception\\Util\\HttpCode::OK);\n
"},{"location":"modules/WPBrowser/#seeresponsecodeisbetween","title":"seeResponseCodeIsBetween","text":"

Signature: seeResponseCodeIsBetween(int $from, int $to) : void

Checks that response code is between a certain range. Between actually means [from <= CODE <= to]

"},{"location":"modules/WPBrowser/#seeresponsecodeisclienterror","title":"seeResponseCodeIsClientError","text":"

Signature: seeResponseCodeIsClientError() : void

Checks that the response code is 4xx

"},{"location":"modules/WPBrowser/#seeresponsecodeisredirection","title":"seeResponseCodeIsRedirection","text":"

Signature: seeResponseCodeIsRedirection() : void

Checks that the response code 3xx

"},{"location":"modules/WPBrowser/#seeresponsecodeisservererror","title":"seeResponseCodeIsServerError","text":"

Signature: seeResponseCodeIsServerError() : void

Checks that the response code is 5xx

"},{"location":"modules/WPBrowser/#seeresponsecodeissuccessful","title":"seeResponseCodeIsSuccessful","text":"

Signature: seeResponseCodeIsSuccessful() : void

Checks that the response code 2xx

"},{"location":"modules/WPBrowser/#seethemeactivated","title":"seeThemeActivated","text":"

Signature: seeThemeActivated(string $slug) : void

Verifies that a theme is active.

The method will not handle authentication and navigation to the themes administration page.

"},{"location":"modules/WPBrowser/#seewpdiepage","title":"seeWpDiePage","text":"

Signature: seeWpDiePage() : void

Checks that the current page is one generated by the wp_die function.

The method will try to identify the page based on the default WordPress die page HTML attributes.

<?php\n$I->loginAs('user', 'password');\n$I->amOnAdminPage('/forbidden');\n$I->seeWpDiePage();\n
"},{"location":"modules/WPBrowser/#selectoption","title":"selectOption","text":"

Signature: selectOption($select, $option) : void

"},{"location":"modules/WPBrowser/#sendajaxgetrequest","title":"sendAjaxGetRequest","text":"

Signature: sendAjaxGetRequest(string $uri, [array $params]) : void

Sends an ajax GET request with the passed parameters. See sendAjaxPostRequest()

"},{"location":"modules/WPBrowser/#sendajaxpostrequest","title":"sendAjaxPostRequest","text":"

Signature: sendAjaxPostRequest(string $uri, [array $params]) : void

Sends an ajax POST request with the passed parameters. The appropriate HTTP header is added automatically: X-Requested-With: XMLHttpRequest Example:

<?php\n$I->sendAjaxPostRequest('/add-task', ['task' => 'lorem ipsum']);\n
Some frameworks (e.g. Symfony) create field names in the form of an \"array\": <input type=\"text\" name=\"form[task]\"> In this case you need to pass the fields like this:
<?php\n$I->sendAjaxPostRequest('/add-task', ['form' => [\n    'task' => 'lorem ipsum',\n    'category' => 'miscellaneous',\n]]);\n

"},{"location":"modules/WPBrowser/#sendajaxrequest","title":"sendAjaxRequest","text":"

Signature: sendAjaxRequest(string $method, string $uri, [array $params]) : void

Sends an ajax request, using the passed HTTP method. See sendAjaxPostRequest() Example:

<?php\n$I->sendAjaxRequest('PUT', '/posts/7', ['title' => 'new title']);\n

"},{"location":"modules/WPBrowser/#setcookie","title":"setCookie","text":"

Signature: setCookie($name, $val, [$params]) : void

"},{"location":"modules/WPBrowser/#setheader","title":"setHeader","text":"

Signature: setHeader(string $name, string $value) : void

Alias to haveHttpHeader

"},{"location":"modules/WPBrowser/#setmaxredirects","title":"setMaxRedirects","text":"

Signature: setMaxRedirects(int $maxRedirects) : void

Sets the maximum number of redirects that the Client can follow.

<?php\n$I->setMaxRedirects(2);\n
"},{"location":"modules/WPBrowser/#setserverparameters","title":"setServerParameters","text":"

Signature: setServerParameters(array $params) : void

Sets SERVER parameters valid for all next requests. this will remove old ones.

<?php\n$I->setServerParameters([]);\n
"},{"location":"modules/WPBrowser/#startfollowingredirects","title":"startFollowingRedirects","text":"

Signature: startFollowingRedirects() : void

Enables automatic redirects to be followed by the client.

<?php\n$I->startFollowingRedirects();\n
"},{"location":"modules/WPBrowser/#stopfollowingredirects","title":"stopFollowingRedirects","text":"

Signature: stopFollowingRedirects() : void

Prevents automatic redirects to be followed by the client.

<?php\n$I->stopFollowingRedirects();\n
"},{"location":"modules/WPBrowser/#submitform","title":"submitForm","text":"

Signature: submitForm($selector, array $params, [?string $button]) : void

"},{"location":"modules/WPBrowser/#switchtoiframe","title":"switchToIframe","text":"

Signature: switchToIframe(string $name) : void

Switch to iframe or frame on the page.

Example:

<iframe name=\"another_frame\" src=\"http://example.com\">\n

<?php\n# switch to iframe\n$I->switchToIframe(\"another_frame\");\n
"},{"location":"modules/WPBrowser/#uncheckoption","title":"uncheckOption","text":"

Signature: uncheckOption($option) : void

Read more in Codeception documentation.

"},{"location":"modules/WPCLI/","title":"WPCLI","text":""},{"location":"modules/WPCLI/#wpcli-module","title":"WPCLI module","text":"

Use WP-CLI to interact with the WordPress installation under test and issue commands.

This module is used in the context of end-to-end testing, together with, or as a replacement for the WPDb module to manipulate the database and the WPFilesystem module to manipulate the site file structure.

This module should be with Cest and Cept test cases.

"},{"location":"modules/WPCLI/#configuration","title":"Configuration","text":"
  • path - required; the path to the WordPress installation under test. This can be a relative path to the codeception root directory, or an absolute path to the WordPress installation directory. The WordPress installation directory is the directory that contains the wp-load.php file.
  • url - the URL of the WordPress installation under test. Equivalent to the --url option of the wp command.
  • user - the user to use to run the wp command. Equivalent to the --user option of the wp command.
  • skip-plugins - a boolean value to indicate if the wp command should skip loading plugins. Equivalent to the --skip-plugins option of the wp command.
  • skip-themes - a boolean value to indicate if the wp command should skip loading themes. Equivalent to the --skip-themes option of the wp command.
  • skip-packages - a boolean value to indicate if the wp command should skip loading packages. Equivalent to the --skip-packages option of the wp command.
  • require - a list of PHP files to require before running the wp command. Equivalent to the --require option of the wp command.
  • exec - PHP code to execute before running the wp command. Equivalent to the --exec option of the wp command.
  • context - the context to use when running the wp command. Equivalent to the --context option of the wp command.
  • color - a boolean value to indicate if the wp command should output in color. Equivalent to the --color option of the wp command.
  • no-color - a boolean value to indicate if the wp command should not output in color. Equivalent to the --no-color option of the wp command.
  • debug - a boolean value to indicate if the wp command should output debug information. Equivalent to the --debug option of the wp command.
  • quiet - a boolean value to indicate if the wp command should suppress informational messages. Equivalent to the --quiet option of the wp command.
  • throw - a boolean value to indicate if the wp command should throw an exception if the command fails.
  • timeout - the timeout to use when running the wp command. When the timeout is reached the command will be terminated as a failure.
  • cache-dir - the directory to use to cache the files WPCLI might downloads. Equivalent to setting the WP_CLI_CACHE_DIR environment variable.
  • config-path - the path to the wp-cli.yml file to use. Equivalent to setting the WP_CLI_CONFIG_PATH environment variable.
  • custom-shell - the shell to use to run the wp command. Equivalent to setting the WP_CLI_SHELL environment variable.
  • packages-dir - the directory to use to store the packages downloaded by the wp package command. Equivalent to setting the WP_CLI_PACKAGES_DIR environment variable.

The following is an example of the module configuration to run WPCLI commands on the /var/wordpress directory:

modules:\n  enabled:\n    lucatume\\WPBrowser\\Module\\WPCLI:\n      path: /var/wordpress\n      throw: true\n

The following configuration uses dynamic configuration parameters to set the module configuration:

modules:\n  enabled:\n    lucatume\\WPBrowser\\Module\\WPCLI:\n      path: '%WP_ROOT_DIR%'\n      throw: true\n
"},{"location":"modules/WPCLI/#methods","title":"Methods","text":"

The module provides the following methods:

"},{"location":"modules/WPCLI/#changewpclipath","title":"changeWpcliPath","text":"

Signature: changeWpcliPath(string $path) : void

Changes the path to the WordPress installation that WPCLI should use.

This is the equivalent of the --path option.

<?php\n// Operate on the installation specified in the `path` config parameter.\n$I->cli(['core','version']);\n// Change to another installation and run a command there.\n$I->changeWpcliPath('var/wordpress-installation-two');\n$I->cli(['core','version']);\n
"},{"location":"modules/WPCLI/#cli","title":"cli","text":"

Signature: cli([array|string $command], [?array $env], [mixed $input]) : int

Executes a wp-cli command targeting the test WordPress installation.

<?php\n// Activate a plugin via wp-cli in the test WordPress site.\n$I->cli(['plugin', 'activate', 'my-plugin']);\n// Change a user password.\n$I->cli(['user', 'update', 'luca', '--user_pass=newpassword']);\n
"},{"location":"modules/WPCLI/#clitoarray","title":"cliToArray","text":"

Signature: cliToArray(array $command, [?callable $splitCallback], [?array $env], [mixed $input]) : array

Returns the output of a wp-cli command as an array optionally allowing a callback to process the output.

<?php\n// Return a list of inactive themes, like ['twentyfourteen', 'twentyfifteen'].\n$inactiveThemes = $I->cliToArray(['theme', 'list', '--status=inactive', '--field=name']);\n// Get the list of installed plugins and only keep the ones starting with \"foo\".\n$fooPlugins = $I->cliToArray(['plugin', 'list', '--field=name'], function($output){\n     return array_filter(explode(PHP_EOL, $output), function($name){\n             return strpos(trim($name), 'foo') === 0;\n     });\n});\n
"},{"location":"modules/WPCLI/#clitostring","title":"cliToString","text":"

Signature: cliToString(array $command, [?array $env], [mixed $input]) : string

Returns the output of a wp-cli command as a string.

<?php\n// Return the current site administrator email, using string command format.\n$adminEmail = $I->cliToString('option get admin_email');\n// Get the list of active plugins in JSON format, two ways.\n$activePlugins = $I->cliToString(['plugin', 'list','--status=active', '--format=json']);\n$activePlugins = $I->cliToString(['option', 'get', 'active_plugins' ,'--format=json']);\n
"},{"location":"modules/WPCLI/#dontseeinshelloutput","title":"dontSeeInShellOutput","text":"

Signature: dontSeeInShellOutput(string $text) : void

Checks that output from last command doesn't contain text.

<?php\n// Return the current site administrator email, using string command format.\n$I->cli('plugin list --status=active');\n$I->dontSeeInShellOutput('my-inactive/plugin.php');\n
"},{"location":"modules/WPCLI/#dontseeshelloutputmatches","title":"dontSeeShellOutputMatches","text":"

Signature: dontSeeShellOutputMatches(string $regex) : void

Checks that output from the last command doesn't match a given regular expression.

<?php\n// Return the current site administrator email, using string command format.\n$I->cli('option get siteurl');\n$I->dontSeeShellOutputMatches('/^http/');\n
"},{"location":"modules/WPCLI/#grablastcliprocess","title":"grabLastCliProcess","text":"

Signature: grabLastCliProcess() : lucatume\\WPBrowser\\WordPress\\CliProcess

"},{"location":"modules/WPCLI/#grablastshellerroroutput","title":"grabLastShellErrorOutput","text":"

Signature: grabLastShellErrorOutput() : string

Returns the shell error output of the last command.

"},{"location":"modules/WPCLI/#grablastshelloutput","title":"grabLastShellOutput","text":"

Signature: grabLastShellOutput() : string

Returns the shell output of the last command.

"},{"location":"modules/WPCLI/#seeinshelloutput","title":"seeInShellOutput","text":"

Signature: seeInShellOutput(string $text) : void

Checks that output from last command contains text.

<?php\n// Return the current site administrator email, using string command format.\n$I->cli('option get admin_email');\n$I->seeInShellOutput('admin@example.org');\n
"},{"location":"modules/WPCLI/#seeresultcodeis","title":"seeResultCodeIs","text":"

Signature: seeResultCodeIs(int $code) : void

Checks the result code from the last command.

<?php\n// Return the current site administrator email, using string command format.\n$I->cli('option get admin_email');\n$I->seeResultCodeIs(0);\n
"},{"location":"modules/WPCLI/#seeresultcodeisnot","title":"seeResultCodeIsNot","text":"

Signature: seeResultCodeIsNot(int $code) : void

Checks the result code from the last command.

<?php\n// Return the current site administrator email, using string command format.\n$I->cli('invalid command');\n$I->seeResultCodeIsNot(0);\n
"},{"location":"modules/WPCLI/#seeshelloutputmatches","title":"seeShellOutputMatches","text":"

Signature: seeShellOutputMatches(string $regex) : void

Checks that output from the last command matches a given regular expression.

<?php\n// Return the current site administrator email, using string command format.\n$I->cli('option get admin_email');\n$I->seeShellOutputMatches('/^\\S+@\\S+$/');\n

Explore the WP-CLI documentation for more information on the available commands.

"},{"location":"modules/WPDb/","title":"WPDb","text":""},{"location":"modules/WPDb/#wpdb-module","title":"WPDb module","text":"

This module allows to manipulate the database of the WordPress installation under test directly, without using the WordPress API.

The module is used together with the WPBrowser module, WPWebDriver and WPFilesystem modules to control the site state, the database, and the site file structure.

Note about interaction with the WPLoader module: both this module and the WPLoader one can be used to control the state of the database before tests and set up fixtures: use either this or WPLoader, do not use both. This module should be used in end-to-end testing, the WPLoader module should be used in integration testing. If you're using this module to load a database dump before integration tests, use the WPLoader module dump configuration parameter instead.

This module should be with Cest and Cept test cases.

"},{"location":"modules/WPDb/#configuration","title":"Configuration","text":"

This module extends the Codeception Db module adding some configuration options and functions that are specific to WordPress.

  • dbUrl - required; the URL to use to connect to the database. The URL must be in the form mysql://user:password@host:port/database if you're using a MySQL database for your tests, or in the form sqlite://path/to/database/file if you're using a SQLite database for your tests ( like the default configuration does)
  • dsn - required; the DSN to use to connect to the database; required if not using the dbUrl parameter.
  • user - required; the user to use to connect to the database; required if not using the dbUrl parameter.
  • password - required; the password to use to connect to the database; required if not using the dbUrl parameter.
  • url - required;the URL of the WordPress installation under test. E.g. http://localhost:8080 or https://wordpress.test.
  • tablePrefix - the table prefix to use when interacting with the database; defaults to wp_.
  • dump - the path to a database dump file, or a set of database files, to load before running tests. The path can be relative to the project root directory, e.g. tests/_data/dump.sql, or absolute.
  • populate - a boolean value to indicate if the database should be populated importing the dump file(s) at the start of the suite.
  • cleanup - a boolean value to indicate if the database should be populated importing the dump file(s) before each test.
  • reconnect - a boolean value to indicate if the database connection should be re-established before each test.
  • populator - a command to use to populate the database instead of using PHP; read more on the Codeception documentation.
  • urlReplacement - a boolean value to indicate if the database dump file(s) should be searched for the siteurl and home options and replaced with the url parameter value. This is required since WordPress hard-codes URLs in the database, the original URL is inferred, if the originalUrl parameter is not provided.
  • originalUrl - if provided together with the urlReplacement parameter, the module will not try to infer the original URL from the database dump file(s) but use the provided value instead.
  • waitlock - the number of seconds to wait for a database lock to be released before failing the test. Defaults to 10 meaning that the test will fail if the database lock is not released after 10 seconds.
  • createIfNotExists - a boolean value to indicate if the database should be created if it does not exist. Defaults to false.

The following is an example of the module configuration to run tests on thehttp://localhost:8080 site:

modules:\n  enabled:\n    - lucatume\\WPBrowser\\Module\\WPDb:\n        dbUrl: 'mysql://root:password@localhost:3306/wordpress'\n        url: 'http://localhost:8080'\n        tablePrefix: 'wp_'\n        dump: 'tests/_data/dump.sql'\n        populate: true\n        cleanup: true\n        reconnect: false\n        urlReplacement: true\n        originalUrl: http://wordpress.test\n        waitlock: 10\n        createIfNotExists: true\n

The following configuration uses dynamic configuration parameters to set the module configuration:

modules:\n  enabled:\n    - lucatume\\WPBrowser\\Module\\WPDb:\n        dbUrl: '%DB_URL%'\n        url: '%WORDPRESS_URL%'\n        tablePrefix: '%WORDPRESS_TABLE_PREFIX%'\n        dump: '%DB_DUMP%'\n        populate: true\n        cleanup: true\n        reconnect: false\n        urlReplacement: true\n        originalUrl: '%WORDPRESS_ORIGINAL_URL%'\n        waitlock: 10\n        createIfNotExists: true\n

The following configuration uses a SQLite database:

modules:\n  enabled:\n    - lucatume\\WPBrowser\\Module\\WPDb:\n        dbUrl: 'sqlite://tests/database.sqlite'\n        url: 'http://localhost:8080'\n        tablePrefix: 'wp_'\n        dump: 'tests/_data/dump.sql'\n        populate: true\n        cleanup: true\n        reconnect: false\n        urlReplacement: true\n        originalUrl: http://wordpress.test\n        waitlock: 10\n        createIfNotExists: true\n
"},{"location":"modules/WPDb/#methods","title":"Methods","text":""},{"location":"modules/WPDb/#amconnectedtodatabase","title":"amConnectedToDatabase","text":"

Signature: amConnectedToDatabase(string $databaseKey) : void

Make sure you are connected to the right database.

<?php\n$I->seeNumRecords(2, 'users');   //executed on default database\n$I->amConnectedToDatabase('db_books');\n$I->seeNumRecords(30, 'books');  //executed on db_books database\n//All the next queries will be on db_books\n
"},{"location":"modules/WPDb/#countrowsindatabase","title":"countRowsInDatabase","text":"

Signature: countRowsInDatabase(string $table, [array $criteria]) : int

Returns the number of table rows matching a criteria.

<?php\n$I->haveManyPostsInDatabase(3, ['post_status' => 'draft' ]);\n$I->haveManyPostsInDatabase(3, ['post_status' => 'private' ]);\n// Make sure there are now the expected number of draft posts.\n$postsTable = $I->grabPostsTableName();\n$draftsCount = $I->countRowsInDatabase($postsTable, ['post_status' => 'draft']);\n
"},{"location":"modules/WPDb/#donthaveattachmentfilesindatabase","title":"dontHaveAttachmentFilesInDatabase","text":"

Signature: dontHaveAttachmentFilesInDatabase(array|int $attachmentIds) : void

Removes all the files attached with an attachment post, it will not remove the database entries. Requires the WPFilesystem module to be loaded in the suite.

<?php\n$posts = $I->grabPostsTableName();\n$attachmentIds = $I->grabColumnFromDatabase($posts, 'ID', ['post_type' => 'attachment']);\n// This will only remove the files, not the database entries.\n$I->dontHaveAttachmentFilesInDatabase($attachmentIds);\n
"},{"location":"modules/WPDb/#donthaveattachmentindatabase","title":"dontHaveAttachmentInDatabase","text":"

Signature: dontHaveAttachmentInDatabase(array $criteria, [bool $purgeMeta], [bool $removeFiles]) : void

Removes an attachment from the posts table.

$postmeta = $I->grabpostmetatablename();\n$thumbnailId = $I->grabFromDatabase($postmeta, 'meta_value', [\n     'post_id' => $id,\n     'meta_key'=>'thumbnail_id'\n]);\n// Remove only the database entry (including postmeta) but not the files.\n$I->dontHaveAttachmentInDatabase($thumbnailId);\n// Remove the database entry (including postmeta) and the files.\n$I->dontHaveAttachmentInDatabase($thumbnailId, true, true);\n
"},{"location":"modules/WPDb/#donthaveblogindatabase","title":"dontHaveBlogInDatabase","text":"

Signature: dontHaveBlogInDatabase(array $criteria, [bool $removeTables], [bool $removeUploads]) : void

Removes one ore more blogs from the database.

<?php\n// Remove the blog, all its tables and files.\n$I->dontHaveBlogInDatabase(['path' => 'test/one']);\n// Remove the blog entry, not the tables though.\n$I->dontHaveBlogInDatabase(['blog_id' => $blogId]);\n// Remove multiple blogs.\n$I->dontHaveBlogInDatabase(['domain' => 'test']);\n
"},{"location":"modules/WPDb/#donthavecommentindatabase","title":"dontHaveCommentInDatabase","text":"

Signature: dontHaveCommentInDatabase(array $criteria, [bool $purgeMeta]) : void

Removes an entry from the comments table.

<?php\n$I->dontHaveCommentInDatabase(['comment_post_ID' => 23, 'comment_url' => 'http://example.copm']);\n
"},{"location":"modules/WPDb/#donthavecommentmetaindatabase","title":"dontHaveCommentMetaInDatabase","text":"

Signature: dontHaveCommentMetaInDatabase(array $criteria) : void

Removes a post comment meta from the database

<?php\n// Remove all meta for the comment with an ID of 23.\n$I->dontHaveCommentMetaInDatabase(['comment_id' => 23]);\n// Remove the `count` comment meta for the comment with an ID of 23.\n$I->dontHaveCommentMetaInDatabase(['comment_id' => 23, 'meta_key' => 'count']);\n
"},{"location":"modules/WPDb/#donthaveindatabase","title":"dontHaveInDatabase","text":"

Signature: dontHaveInDatabase(string $table, array $criteria) : void

Deletes a database entry.

<?php\n$I->dontHaveInDatabase('custom_table', ['book_ID' => 23, 'book_genre' => 'fiction']);\n
"},{"location":"modules/WPDb/#donthavelinkindatabase","title":"dontHaveLinkInDatabase","text":"

Signature: dontHaveLinkInDatabase(array $criteria) : void

Removes a link from the database.

<?php\n$I->dontHaveLinkInDatabase(['link_url' => 'http://example.com']);\n
"},{"location":"modules/WPDb/#donthaveoptionindatabase","title":"dontHaveOptionInDatabase","text":"

Signature: dontHaveOptionInDatabase(string $key, [mixed $value]) : void

Removes an entry from the options table.

<?php\n// Remove the `foo` option.\n$I->dontHaveOptionInDatabase('foo');\n// Remove the 'bar' option only if it has the `baz` value.\n$I->dontHaveOptionInDatabase('bar', 'baz');\n
"},{"location":"modules/WPDb/#donthavepostindatabase","title":"dontHavePostInDatabase","text":"

Signature: dontHavePostInDatabase(array $criteria, [bool $purgeMeta]) : void

Removes an entry from the posts table.

<?php\n$posts = $I->haveManyPostsInDatabase(3, ['post_title' => 'Test {{n}}']);\n$I->dontHavePostInDatabase(['post_title' => 'Test 2']);\n
"},{"location":"modules/WPDb/#donthavepostmetaindatabase","title":"dontHavePostMetaInDatabase","text":"

Signature: dontHavePostMetaInDatabase(array $criteria) : void

Removes an entry from the postmeta table.

<?php\n$postId = $I->havePostInDatabase(['meta_input' => ['rating' => 23]]);\n$I->dontHavePostMetaInDatabase(['post_id' => $postId, 'meta_key' => 'rating']);\n
"},{"location":"modules/WPDb/#donthavepostthumbnailindatabase","title":"dontHavePostThumbnailInDatabase","text":"

Signature: dontHavePostThumbnailInDatabase(int $postId) : void

Remove the thumbnail (featured image) from a post, if any.

Please note: the method will NOT remove the attachment post, post meta and file.

<?php\n$attachmentId = $I->haveAttachmentInDatabase(codecept_data_dir('some-image.png'));\n$postId = $I->havePostInDatabase();\n// Attach the thumbnail to the post.\n$I->havePostThumbnailInDatabase($postId, $attachmentId);\n// Remove the thumbnail from the post.\n$I->dontHavePostThumbnailInDatabase($postId);\n
"},{"location":"modules/WPDb/#donthavesiteoptionindatabase","title":"dontHaveSiteOptionInDatabase","text":"

Signature: dontHaveSiteOptionInDatabase(string $key, [mixed $value]) : void

Removes a site option from the database.

<?php\n// Remove the `foo_count` option.\n$I->dontHaveSiteOptionInDatabase('foo_count');\n// Remove the `foo_count` option only if its value is `23`.\n$I->dontHaveSiteOptionInDatabase('foo_count', 23);\n
"},{"location":"modules/WPDb/#donthavesitetransientindatabase","title":"dontHaveSiteTransientInDatabase","text":"

Signature: dontHaveSiteTransientInDatabase(string $key) : void

Removes a site transient from the database.

<?php\n$I->dontHaveSiteTransientInDatabase(['my_plugin_site_buffer']);\n
"},{"location":"modules/WPDb/#donthavetableindatabase","title":"dontHaveTableInDatabase","text":"

Signature: dontHaveTableInDatabase(string $fullTableName) : void

Removes a table from the database. The case where a table does not exist is handled without raising an error.

<?php\n$ordersTable = $I->grabPrefixedTableNameFor('orders');\n$I->dontHaveTableInDatabase($ordersTable);\n
"},{"location":"modules/WPDb/#donthavetermindatabase","title":"dontHaveTermInDatabase","text":"

Signature: dontHaveTermInDatabase(array $criteria, [bool $purgeMeta]) : void

Removes a term from the database.

<?php\n$I->dontHaveTermInDatabase(['name' => 'romance']);\n$I->dontHaveTermInDatabase(['slug' => 'genre--romance']);\n
"},{"location":"modules/WPDb/#donthavetermmetaindatabase","title":"dontHaveTermMetaInDatabase","text":"

Signature: dontHaveTermMetaInDatabase(array $criteria) : void

Removes a term meta from the database.

<?php\n// Remove the \"karma\" key.\n$I->dontHaveTermMetaInDatabase(['term_id' => $termId, 'meta_key' => 'karma']);\n// Remove all meta for the term.\n$I->dontHaveTermMetaInDatabase(['term_id' => $termId]);\n
"},{"location":"modules/WPDb/#donthavetermrelationshipindatabase","title":"dontHaveTermRelationshipInDatabase","text":"

Signature: dontHaveTermRelationshipInDatabase(array $criteria) : void

Removes an entry from the term_relationships table.

<?php\n// Remove the relation between a post and a category.\n$I->dontHaveTermRelationshipInDatabase(['object_id' => $postId, 'term_taxonomy_id' => $ttaxId]);\n// Remove all terms for a post.\n$I->dontHaveTermMetaInDatabase(['object_id' => $postId]);\n
"},{"location":"modules/WPDb/#donthavetermtaxonomyindatabase","title":"dontHaveTermTaxonomyInDatabase","text":"

Signature: dontHaveTermTaxonomyInDatabase(array $criteria) : void

Removes an entry from the term_taxonomy table.

<?php\n// Remove a specific term from the genre taxonomy.\n$I->dontHaveTermTaxonomyInDatabase(['term_id' => $postId, 'taxonomy' => 'genre']);\n// Remove all terms for a taxonomy.\n$I->dontHaveTermTaxonomyInDatabase(['taxonomy' => 'genre']);\n
"},{"location":"modules/WPDb/#donthavetransientindatabase","title":"dontHaveTransientInDatabase","text":"

Signature: dontHaveTransientInDatabase(string $transient) : void

Removes a transient from the database.

<?php\n// Removes the `tweets` transient from the database, if set.\n$I->dontHaveTransientInDatabase('tweets');\n
"},{"location":"modules/WPDb/#donthaveuserindatabase","title":"dontHaveUserInDatabase","text":"

Signature: dontHaveUserInDatabase(string|int $userIdOrLogin, [bool $purgeMeta]) : void

Removes a user from the database.

<?php\n$bob = $I->haveUserInDatabase('bob');\n$alice = $I->haveUserInDatabase('alice');\n// Remove Bob's user and meta.\n$I->dontHaveUserInDatabase('bob');\n// Remove Alice's user but not meta.\n$I->dontHaveUserInDatabase($alice);\n
"},{"location":"modules/WPDb/#donthaveuserindatabasewithemail","title":"dontHaveUserInDatabaseWithEmail","text":"

Signature: dontHaveUserInDatabaseWithEmail(string $userEmail, [bool $purgeMeta]) : array

Removes a user(s) from the database using the user email address.

<?php\n$luca = $I->haveUserInDatabase('luca', 'editor', ['user_email' => 'luca@example.org']);\n$I->dontHaveUserInDatabaseWithEmail('luca@exampl.org');\n
"},{"location":"modules/WPDb/#donthaveusermetaindatabase","title":"dontHaveUserMetaInDatabase","text":"

Signature: dontHaveUserMetaInDatabase(array $criteria) : void

Removes an entry from the usermeta table.

<?php\n// Remove the `karma` user meta for a user.\n$I->dontHaveUserMetaInDatabase(['user_id' => 23, 'meta_key' => 'karma']);\n// Remove all the user meta for a user.\n$I->dontHaveUserMetaInDatabase(['user_id' => 23]);\n
"},{"location":"modules/WPDb/#dontseeattachmentindatabase","title":"dontSeeAttachmentInDatabase","text":"

Signature: dontSeeAttachmentInDatabase(array $criteria) : void

Checks that an attachment is not in the database.

<?php\n$url = 'https://example.org/images/foo.png';\n$I->dontSeeAttachmentInDatabase(['guid' => $url]);\n
"},{"location":"modules/WPDb/#dontseeblogindatabase","title":"dontSeeBlogInDatabase","text":"

Signature: dontSeeBlogInDatabase(array $criteria) : void

Checks that a row is not present in the blogs table.

<?php\n$I->haveManyBlogsInDatabase(2, ['path' => 'test-{{n}}'], false)\n$I->dontSeeBlogInDatabase(['path' => '/test-3/'])\n
"},{"location":"modules/WPDb/#dontseecommentindatabase","title":"dontSeeCommentInDatabase","text":"

Signature: dontSeeCommentInDatabase(array $criteria) : void

Checks that a comment is not in the database.

Will look up the \"comments\" table.

<?php\n// Checks for one comment.\n$I->dontSeeCommentInDatabase(['comment_ID' => 23]);\n// Checks for comments from a user.\n$I->dontSeeCommentInDatabase(['user_id' => 89]);\n
"},{"location":"modules/WPDb/#dontseecommentmetaindatabase","title":"dontSeeCommentMetaInDatabase","text":"

Signature: dontSeeCommentMetaInDatabase(array $criteria) : void

Checks that a comment meta value is not in the database.

Will look up the \"commentmeta\" table.

<?php\n// Delete a comment `karma` meta.\n$I->dontSeeCommentMetaInDatabase(['comment_id' => 23, 'meta_key' => 'karma']);\n// Delete all meta for a comment.\n$I->dontSeeCommentMetaInDatabase(['comment_id' => 23]);\n
"},{"location":"modules/WPDb/#dontseeindatabase","title":"dontSeeInDatabase","text":"

Signature: dontSeeInDatabase(string $table, [array $criteria]) : void

"},{"location":"modules/WPDb/#dontseelinkindatabase","title":"dontSeeLinkInDatabase","text":"

Signature: dontSeeLinkInDatabase(array $criteria) : void

Checks that a link is not in the links database table.

<?php\n$I->dontSeeLinkInDatabase(['link_url' => 'http://example.com']);\n$I->dontSeeLinkInDatabase(['link_url' => 'http://example.com', 'link_name' => 'example']);\n
"},{"location":"modules/WPDb/#dontseeoptionindatabase","title":"dontSeeOptionInDatabase","text":"

Signature: dontSeeOptionInDatabase(array|string $criteriaOrName, [mixed $value]) : void

Checks that an option is not in the database for the current blog.

If the value is an object or an array then the serialized option will be checked.

<?php\n$I->dontHaveOptionInDatabase('posts_per_page');\n$I->dontSeeOptionInDatabase('posts_per_page');\n$I->dontSeeOptionInDatabase('posts_per_page', 23);\n$I->dontSeeOptionInDatabase(['option_name' => 'posts_per_page']);\n$I->dontSeeOptionInDatabase(['option_name' => 'posts_per_page', 'option_value' => 23]);\n
"},{"location":"modules/WPDb/#dontseepageindatabase","title":"dontSeePageInDatabase","text":"

Signature: dontSeePageInDatabase(array $criteria) : void

Checks that a page is not in the database.

<?php\n// Assert a page with an ID does not exist.\n$I->dontSeePageInDatabase(['ID' => 23]);\n// Assert a page with a slug and ID.\n$I->dontSeePageInDatabase(['post_name' => 'test', 'ID' => 23]);\n
"},{"location":"modules/WPDb/#dontseepostindatabase","title":"dontSeePostInDatabase","text":"

Signature: dontSeePostInDatabase(array $criteria) : void

Checks that a post is not in the database.

<?php\n// Asserts a post with title 'Test' is not in the database.\n$I->dontSeePostInDatabase(['post_title' => 'Test']);\n// Asserts a post with title 'Test' and content 'Test content' is not in the database.\n$I->dontSeePostInDatabase(['post_title' => 'Test', 'post_content' => 'Test content']);\n
"},{"location":"modules/WPDb/#dontseepostmetaindatabase","title":"dontSeePostMetaInDatabase","text":"

Signature: dontSeePostMetaInDatabase(array $criteria) : void

Checks that a post meta value does not exist.

If the meta value is an object or an array then the check will be made on its serialized version.

<?php\n$postId = $I->havePostInDatabase(['meta_input' => ['foo' => 'bar']]);\n$I->dontSeePostMetaInDatabase(['post_id' => $postId, 'meta_key' => 'woot']);\n
"},{"location":"modules/WPDb/#dontseepostwithtermindatabase","title":"dontSeePostWithTermInDatabase","text":"

Signature: dontSeePostWithTermInDatabase(int $post_id, int $term_taxonomy_id, [?int $term_order], [?string $taxonomy]) : void

Checks that a post to term relation does not exist in the database.

The method will check the \"term_relationships\" table.

<?php\n$fiction = $I->haveTermInDatabase('fiction', 'genre');\n$nonFiction = $I->haveTermInDatabase('non-fiction', 'genre');\n$postId = $I->havePostInDatabase(['tax_input' => ['genre' => ['fiction']]]);\n$I->dontSeePostWithTermInDatabase($postId, $nonFiction['term_taxonomy_id], );\n
"},{"location":"modules/WPDb/#dontseesiteoptionindatabase","title":"dontSeeSiteOptionInDatabase","text":"

Signature: dontSeeSiteOptionInDatabase(array|string $criteriaOrName, [mixed $value]) : void

Checks that a site option is not in the database.

<?php\n// Check that the option is not set in the database.\n$I->dontSeeSiteOptionInDatabase('foo_count');\n// Check that the option is not set with a specific value.\n$I->dontSeeSiteOptionInDatabase('foo_count', 23);\n$I->dontSeeSiteOptionInDatabase(['option_name => 'foo_count', 'option_value' => 23]);\n
"},{"location":"modules/WPDb/#dontseesitetransientindatabase","title":"dontSeeSiteTransientInDatabase","text":"

Signature: dontSeeSiteTransientInDatabase(string $transient, [mixed $value]) : void

Checks that a site transient is not in the database.

<?php\n$I->dontSeeSiteTransientInDatabase('foo');\n$I->dontSeeSiteTransientInDatabase('foo', 23);\n
"},{"location":"modules/WPDb/#dontseetableindatabase","title":"dontSeeTableInDatabase","text":"

Signature: dontSeeTableInDatabase(string $table) : void

Checks that a table is not in the database.

<?php\n$options = $I->grabPrefixedTableNameFor('options');\n$I->dontHaveTableInDatabase($options)\n$I->dontSeeTableInDatabase($options);\n
"},{"location":"modules/WPDb/#dontseetermindatabase","title":"dontSeeTermInDatabase","text":"

Signature: dontSeeTermInDatabase(array $criteria) : void

Makes sure a term is not in the database.

Looks up both the terms table and the term_taxonomy tables.

<?php\n// Asserts a 'fiction' term is not in the database.\n$I->dontSeeTermInDatabase(['name' => 'fiction']);\n// Asserts a 'fiction' term with slug 'genre--fiction' is not in the database.\n$I->dontSeeTermInDatabase(['name' => 'fiction', 'slug' => 'genre--fiction']);\n
"},{"location":"modules/WPDb/#dontseetermmetaindatabase","title":"dontSeeTermMetaInDatabase","text":"

Signature: dontSeeTermMetaInDatabase(array $criteria) : void

Checks that a term meta is not in the database.

<?php\nlist($termId, $termTaxonomyId) = $I->haveTermInDatabase('fiction', 'genre');\n$I->haveTermMetaInDatabase($termId, 'rating', 4);\n$I->dontSeeTermMetaInDatabase(['term_id' => $termId,'meta_key' => 'average_review']);\n
"},{"location":"modules/WPDb/#dontseetermtaxonomyindatabase","title":"dontSeeTermTaxonomyInDatabase","text":"

Signature: dontSeeTermTaxonomyInDatabase(array $criteria) : void

Checks that a term taxonomy is not in the database.

<?php\nlist($termId, $termTaxonomyId) = $I->haveTermInDatabase('fiction', 'genre');\n$I->dontSeeTermTaxonomyInDatabase(['term_id' => $termId, 'taxonomy' => 'country']);\n
"},{"location":"modules/WPDb/#dontseetransientindatabase","title":"dontSeeTransientInDatabase","text":"

Signature: dontSeeTransientInDatabase(string $transient, [mixed $value]) : void

Checks that a transient is not in the database.

<?php\n$I->dontSeeTransientInDatabase('foo');\n$I->dontSeeTransientInDatabase('foo', 23);\n
"},{"location":"modules/WPDb/#dontseeuserindatabase","title":"dontSeeUserInDatabase","text":"

Signature: dontSeeUserInDatabase(array $criteria) : void

Checks that a user is not in the database.

<?php\n// Asserts a user does not exist in the database.\n$I->dontSeeUserInDatabase(['user_login' => 'luca']);\n// Asserts a user with email and login is not in the database.\n$I->dontSeeUserInDatabase(['user_login' => 'luca', 'user_email' => 'luca@theaveragedev.com']);\n
"},{"location":"modules/WPDb/#dontseeusermetaindatabase","title":"dontSeeUserMetaInDatabase","text":"

Signature: dontSeeUserMetaInDatabase(array $criteria) : void

Check that a user meta value is not in the database.

<?php\n// Asserts a user does not have a 'karma' meta assigned.\n$I->dontSeeUserMetaInDatabase(['user_id' => 23, 'meta_key' => 'karma']);\n// Asserts no user has any 'karma' meta assigned.\n$I->dontSeeUserMetaInDatabase(['meta_key' => 'karma']);\n
"},{"location":"modules/WPDb/#getsitedomain","title":"getSiteDomain","text":"

Signature: getSiteDomain() : string

Returns the site domain inferred from the url set in the config.

<?php\n$domain = $I->getSiteDomain();\n// We should be redirected to the HTTPS version when visiting the HTTP version.\n$I->amOnPage('http://' . $domain);\n$I->seeCurrentUrlEquals('https://' . $domain);\n
"},{"location":"modules/WPDb/#getuserstablename","title":"getUsersTableName","text":"

Signature: getUsersTableName() : string

Returns the prefixed users table name.

<?php\n// Given a `wp_` table prefix returns `wp_users`.\n$usersTable = $I->getUsersTableName();\n// Given a `wp_` table prefix returns `wp_users`.\n$I->useBlog(23);\n$usersTable = $I->getUsersTableName();\n
"},{"location":"modules/WPDb/#graballfromdatabase","title":"grabAllFromDatabase","text":"

Signature: grabAllFromDatabase(string $table, string $column, array $criteria) : array

Returns all entries matching a criteria from the database.

<?php\n$books = $I->grabPrefixedTableNameFor('books');\n$I->grabAllFromDatabase($books, 'title', ['genre' => 'fiction']);\n
"},{"location":"modules/WPDb/#grabattachmentattachedfile","title":"grabAttachmentAttachedFile","text":"

Signature: grabAttachmentAttachedFile(int $attachmentPostId) : string

Returns the path, as stored in the database, of an attachment _wp_attached_file meta. The attached file is, usually, an attachment origal file.

<?php\n$file = $I->grabAttachmentAttachedFile($attachmentId);\n$fileInfo = new SplFileInfo($file);\n$I->assertEquals('jpg', $fileInfo->getExtension());\n
"},{"location":"modules/WPDb/#grabattachmentmetadata","title":"grabAttachmentMetadata","text":"

Signature: grabAttachmentMetadata(int $attachmentPostId) : array

Returns the metadata array for an attachment post. This is the value of the _wp_attachment_metadata meta.

<?php\n$metadata = $I->grabAttachmentMetadata($attachmentId);\n$I->assertEquals(['thumbnail', 'medium', 'medium_large'], array_keys($metadata['sizes']);\n
"},{"location":"modules/WPDb/#grabblogdomain","title":"grabBlogDomain","text":"

Signature: grabBlogDomain(int $blogId) : string

Returns a blog domain given its ID.

<?php\n$blogIds = $I->haveManyBlogsInDatabase(3);\n$domains = array_map(function($blogId){\n     return $I->grabBlogDomain($blogId);\n}, $blogIds);\n
"},{"location":"modules/WPDb/#grabblogpath","title":"grabBlogPath","text":"

Signature: grabBlogPath(int $blogId) : string

Grabs a blog domain from the blogs table.

<?php\n$blogId = $I->haveBlogInDatabase('test');\n$path = $I->grabBlogDomain($blogId);\n$I->amOnSubdomain($path);\n$I->amOnPage('/');\n
"},{"location":"modules/WPDb/#grabblogtablename","title":"grabBlogTableName","text":"

Signature: grabBlogTableName(int $blogId, string $table) : string

Returns the full name of a table for a blog from a multisite installation database.

<?php\n$blogOptionTable = $I->grabBlogTableName($blogId, 'option');\n
"},{"location":"modules/WPDb/#grabblogtablenames","title":"grabBlogTableNames","text":"

Signature: grabBlogTableNames(int $blogId) : array

Returns a list of tables for a blog ID.

<?php\n     $blogId = $I->haveBlogInDatabase('test');\n     $tables = $I->grabBlogTableNames($blogId);\n     $options = array_filter($tables, function($tableName){\n     return str_pos($tableName, 'options') !== false;\n});\n
"},{"location":"modules/WPDb/#grabblogtableprefix","title":"grabBlogTablePrefix","text":"

Signature: grabBlogTablePrefix(int $blogId) : string

Returns the table prefix for a blog.

<?php\n$blogId = $I->haveBlogInDatabase('test');\n$blogTablePrefix = $I->getBlogTablePrefix($blogId);\n$blogOrders = $I->blogTablePrefix . 'orders';\n
"},{"location":"modules/WPDb/#grabblogurl","title":"grabBlogUrl","text":"

Signature: grabBlogUrl([int $blogId]) : string

Gets the blog URL from the Blog ID.

"},{"location":"modules/WPDb/#grabblogversionstablename","title":"grabBlogVersionsTableName","text":"

Signature: grabBlogVersionsTableName() : string

Gets the prefixed blog_versions table name.

<?php\n// Assuming a `wp_` table prefix it will return `wp_blog_versions`.\n$blogVersionsTable = $I->grabBlogVersionsTableName();\n$I->useBlog(23);\n// Assuming a `wp_` table prefix it will return `wp_blog_versions`.\n$blogVersionsTable = $I->grabBlogVersionsTableName();\n
"},{"location":"modules/WPDb/#grabblogstablename","title":"grabBlogsTableName","text":"

Signature: grabBlogsTableName() : string

Gets the prefixed blogs table name.

<?php\n// Assuming a `wp_` table prefix it will return `wp_blogs`.\n$blogVersionsTable = $I->grabBlogsTableName();\n$I->useBlog(23);\n// Assuming a `wp_` table prefix it will return `wp_blogs`.\n$blogVersionsTable = $I->grabBlogsTableName();\n
"},{"location":"modules/WPDb/#grabcolumnfromdatabase","title":"grabColumnFromDatabase","text":"

Signature: grabColumnFromDatabase(string $table, string $column, [array $criteria]) : array

Fetches all values from the column in database. Provide table name, desired column and criteria.

<?php\n$mails = $I->grabColumnFromDatabase('users', 'email', array('name' => 'RebOOter'));\n
"},{"location":"modules/WPDb/#grabcommentmetatablename","title":"grabCommentmetaTableName","text":"

Signature: grabCommentmetaTableName() : string

Returns the prefixed comment meta table name.

<?php\n// Get all the values of 'karma' for all comments.\n$commentMeta = $I->grabCommentmetaTableName();\n$I->grabAllFromDatabase($commentMeta, 'meta_value', ['meta_key' => 'karma']);\n
"},{"location":"modules/WPDb/#grabcommentstablename","title":"grabCommentsTableName","text":"

Signature: grabCommentsTableName() : string

Gets the comments table name.

<?php\n// Will be `wp_comments`.\n$comments = $I->grabCommentsTableName();\n// Will be `wp_23_comments`.\n$I->useBlog(23);\n$comments = $I->grabCommentsTableName();\n
"},{"location":"modules/WPDb/#grabentriesfromdatabase","title":"grabEntriesFromDatabase","text":"

Signature: grabEntriesFromDatabase(string $table, [array $criteria]) : array

Fetches a set of entries from a database. Provide table name and criteria.

<?php\n$mail = $I->grabEntriesFromDatabase('users', array('name' => 'Davert'));\n
Comparison expressions can be used as well:

<?php\n$post = $I->grabEntriesFromDatabase('posts', ['num_comments >=' => 100]);\n$user = $I->grabEntriesFromDatabase('users', ['email like' => 'miles%']);\n

Supported operators: <, >, >=, <=, !=, like.

"},{"location":"modules/WPDb/#grabentryfromdatabase","title":"grabEntryFromDatabase","text":"

Signature: grabEntryFromDatabase(string $table, [array $criteria]) : array

Fetches a whole entry from a database. Make the test fail if the entry is not found. Provide table name, desired column and criteria.

<?php\n$mail = $I->grabEntryFromDatabase('users', array('name' => 'Davert'));\n
Comparison expressions can be used as well:

<?php\n$post = $I->grabEntryFromDatabase('posts', ['num_comments >=' => 100]);\n$user = $I->grabEntryFromDatabase('users', ['email like' => 'miles%']);\n

Supported operators: <, >, >=, <=, !=, like.

"},{"location":"modules/WPDb/#grabfromdatabase","title":"grabFromDatabase","text":"

Signature: grabFromDatabase(string $table, string $column, [array $criteria]) : void

Fetches a single column value from a database. Provide table name, desired column and criteria.

<?php\n$mail = $I->grabFromDatabase('users', 'email', array('name' => 'Davert'));\n
Comparison expressions can be used as well:

<?php\n$postNum = $I->grabFromDatabase('posts', 'num_comments', ['num_comments >=' => 100]);\n$mail = $I->grabFromDatabase('users', 'email', ['email like' => 'miles%']);\n

Supported operators: <, >, >=, <=, !=, like.

"},{"location":"modules/WPDb/#grablatestentrybyfromdatabase","title":"grabLatestEntryByFromDatabase","text":"

Signature: grabLatestEntryByFromDatabase(string $tableName, [string $idColumn]) : int

Returns the id value of the last table entry.

<?php\n$I->haveManyPostsInDatabase();\n$postsTable = $I->grabPostsTableName();\n$last = $I->grabLatestEntryByFromDatabase($postsTable, 'ID');\n
"},{"location":"modules/WPDb/#grablinkstablename","title":"grabLinksTableName","text":"

Signature: grabLinksTableName() : string

Returns the prefixed links table name.

<?php\n// Given a `wp_` table prefix returns `wp_links`.\n$linksTable = $I->grabLinksTableName();\n// Given a `wp_` table prefix returns `wp_23_links`.\n$I->useBlog(23);\n$linksTable = $I->grabLinksTableName();\n
"},{"location":"modules/WPDb/#grabnumrecords","title":"grabNumRecords","text":"

Signature: grabNumRecords(string $table, [array $criteria]) : int

Returns the number of rows in a database

"},{"location":"modules/WPDb/#graboptionfromdatabase","title":"grabOptionFromDatabase","text":"

Signature: grabOptionFromDatabase(string $option_name) : mixed

Gets an option value from the database.

<?php\n$count = $I->grabOptionFromDatabase('foo_count');\n
"},{"location":"modules/WPDb/#grabpostfieldfromdatabase","title":"grabPostFieldFromDatabase","text":"

Signature: grabPostFieldFromDatabase(int $postId, string $field) : mixed

Returns the value of a post field for a post, from the posts table.

<?php\n$title = $I->grabPostFieldFromDatabase(1, 'post_title');\n$type = $I->grabPostFieldFromDatabase(1, 'post_type');\n
"},{"location":"modules/WPDb/#grabpostmetafromdatabase","title":"grabPostMetaFromDatabase","text":"

Signature: grabPostMetaFromDatabase(int $postId, string $metaKey, [bool $single]) : mixed

Gets the value of one or more post meta values from the database.

<?php\n$thumbnail_id = $I->grabPostMetaFromDatabase($postId, '_thumbnail_id', true);\n
"},{"location":"modules/WPDb/#grabpostmetatablename","title":"grabPostmetaTableName","text":"

Signature: grabPostmetaTableName() : string

Returns the prefixed post meta table name.

<?php\n// Returns 'wp_postmeta'.\n$I->grabPostmetaTableName();\n// Returns 'wp_23_postmeta'.\n$I->useBlog(23);\n$I->grabPostmetaTableName();\n
"},{"location":"modules/WPDb/#grabpoststablename","title":"grabPostsTableName","text":"

Signature: grabPostsTableName() : string

Gets the posts prefixed table name.

<?php\n// Given a `wp_` table prefix returns `wp_posts`.\n$postsTable = $I->grabPostsTableName();\n// Given a `wp_` table prefix returns `wp_23_posts`.\n$I->useBlog(23);\n$postsTable = $I->grabPostsTableName();\n
"},{"location":"modules/WPDb/#grabprefixedtablenamefor","title":"grabPrefixedTableNameFor","text":"

Signature: grabPrefixedTableNameFor([string $tableName]) : string

Returns a prefixed table name for the current blog.

If the table is not one to be prefixed (e.g. users) then the proper table name will be returned.

<?php\n// Will return wp_users.\n$usersTable = $I->grabPrefixedTableNameFor('users');\n// Will return wp_options.\n$optionsTable = $I->grabPrefixedTableNameFor('options');\n// Use a different blog and get its options table.\n$I->useBlog(2);\n$blogOptionsTable = $I->grabPrefixedTableNameFor('options');\n
"},{"location":"modules/WPDb/#grabregistrationlogtablename","title":"grabRegistrationLogTableName","text":"

Signature: grabRegistrationLogTableName() : string

Gets the prefixed registration_log table name.

<?php\n// Assuming a `wp_` table prefix it will return `wp_registration_log`.\n$blogVersionsTable = $I->grabRegistrationLogTableName();\n$I->useBlog(23);\n// Assuming a `wp_` table prefix it will return `wp_registration_log`.\n$blogVersionsTable = $I->grabRegistrationLogTableName();\n
"},{"location":"modules/WPDb/#grabsignupstablename","title":"grabSignupsTableName","text":"

Signature: grabSignupsTableName() : string

Gets the prefixed signups table name.

<?php\n// Assuming a `wp_` table prefix it will return `wp_signups`.\n$blogVersionsTable = $I->grabSignupsTableName();\n$I->useBlog(23);\n// Assuming a `wp_` table prefix it will return `wp_signups`.\n$blogVersionsTable = $I->grabSignupsTableName();\n
"},{"location":"modules/WPDb/#grabsitemetafromdatabase","title":"grabSiteMetaFromDatabase","text":"

Signature: grabSiteMetaFromDatabase(int $blogId, string $key, bool $single) : mixed

Returns a single or all meta values for a site meta key.

<?php\n$I->haveSiteMetaInDatabase(1, 'foo', 'bar');\n$value = $I->grabSiteMetaFromDatabase(1, 'foo', true);\n$values = $I->grabSiteMetaFromDatabase(1, 'foo', false);\n
"},{"location":"modules/WPDb/#grabsitemetatablename","title":"grabSiteMetaTableName","text":"

Signature: grabSiteMetaTableName() : string

Gets the prefixed sitemeta table name.

<?php\n// Assuming a `wp_` table prefix it will return `wp_sitemeta`.\n$blogVersionsTable = $I->grabSiteMetaTableName();\n$I->useBlog(23);\n// Assuming a `wp_` table prefix it will return `wp_sitemeta`.\n$blogVersionsTable = $I->grabSiteMetaTableName();\n
"},{"location":"modules/WPDb/#grabsiteoptionfromdatabase","title":"grabSiteOptionFromDatabase","text":"

Signature: grabSiteOptionFromDatabase(string $key) : mixed

Gets a site option from the database.

<?php\n$fooCountOptionId = $I->haveSiteOptionInDatabase('foo_count','23');\n
"},{"location":"modules/WPDb/#grabsitetablename","title":"grabSiteTableName","text":"

Signature: grabSiteTableName() : string

Gets the prefixed site table name.

<?php\n// Assuming a `wp_` table prefix it will return `wp_site`.\n$blogVersionsTable = $I->grabSiteTableName();\n$I->useBlog(23);\n// Assuming a `wp_` table prefix it will return `wp_site`.\n$blogVersionsTable = $I->grabSiteTableName();\n
"},{"location":"modules/WPDb/#grabsitetransientfromdatabase","title":"grabSiteTransientFromDatabase","text":"

Signature: grabSiteTransientFromDatabase(string $key) : mixed

Gets a site transient from the database.

<?php\n$I->grabSiteTransientFromDatabase('total_comments');\n$I->grabSiteTransientFromDatabase('api_data');\n
"},{"location":"modules/WPDb/#grabsiteurl","title":"grabSiteUrl","text":"

Signature: grabSiteUrl([?string $path]) : string

Returns the current site URL as specified in the module configuration.

<?php\n$shopPath = $I->grabSiteUrl('/shop');\n
"},{"location":"modules/WPDb/#grabtableprefix","title":"grabTablePrefix","text":"

Signature: grabTablePrefix() : string

Returns the table prefix, namespaced for secondary blogs if selected.

<?php\n// Assuming a table prefix of `wp_` it will return `wp_`;\n$tablePrefix = $I->grabTablePrefix();\n$I->useBlog(23);\n// Assuming a table prefix of `wp_` it will return `wp_23_`;\n$tablePrefix = $I->grabTablePrefix();\n
"},{"location":"modules/WPDb/#grabtermidfromdatabase","title":"grabTermIdFromDatabase","text":"

Signature: grabTermIdFromDatabase(array $criteria) : int|false

Gets a term ID from the database. Looks up the prefixed terms table, e.g. wp_terms.

<?php\n// Return the 'fiction' term 'term_id'.\n$termId = $I->grabTermIdFromDatabase(['name' => 'fiction']);\n// Get a term ID by more stringent criteria.\n$termId = $I->grabTermIdFromDatabase(['name' => 'fiction', 'slug' => 'genre--fiction']);\n// Return the 'term_id' of the first term for a group.\n$termId = $I->grabTermIdFromDatabase(['term_group' => 23]);\n
"},{"location":"modules/WPDb/#grabtermmetatablename","title":"grabTermMetaTableName","text":"

Signature: grabTermMetaTableName() : string

Gets the terms meta table prefixed name.

<?php\n// Returns 'wp_termmeta'.\n$I->grabTermMetaTableName();\n// Returns 'wp_23_termmeta'.\n$I->useBlog(23);\n$I->grabTermMetaTableName();\n
"},{"location":"modules/WPDb/#grabtermrelationshipstablename","title":"grabTermRelationshipsTableName","text":"

Signature: grabTermRelationshipsTableName() : string

Gets the prefixed term relationships table name, e.g. wp_term_relationships.

<?php\n$I->grabTermRelationshipsTableName();\n
"},{"location":"modules/WPDb/#grabtermtaxonomyidfromdatabase","title":"grabTermTaxonomyIdFromDatabase","text":"

Signature: grabTermTaxonomyIdFromDatabase(array $criteria) : int|false

Gets a term_taxonomy_id from the database.

Looks up the prefixed terms_relationships table, e.g. wp_term_relationships.

<?php\n// Get the `term_taxonomy_id` for a term and a taxonomy.\n$I->grabTermTaxonomyIdFromDatabase(['term_id' => $fictionId, 'taxonomy' => 'genre']);\n// Get the `term_taxonomy_id` for the first term with a count of 23.\n$I->grabTermTaxonomyIdFromDatabase(['count' => 23]);\n
"},{"location":"modules/WPDb/#grabtermtaxonomytablename","title":"grabTermTaxonomyTableName","text":"

Signature: grabTermTaxonomyTableName() : string

Gets the prefixed term and taxonomy table name, e.g. wp_term_taxonomy.

<?php\n// Returns 'wp_term_taxonomy'.\n$I->grabTermTaxonomyTableName();\n// Returns 'wp_23_term_taxonomy'.\n$I->useBlog(23);\n$I->grabTermTaxonomyTableName();\n
"},{"location":"modules/WPDb/#grabtermstablename","title":"grabTermsTableName","text":"

Signature: grabTermsTableName() : string

Gets the prefixed terms table name, e.g. wp_terms.

<?php\n// Returns 'wp_terms'.\n$I->grabTermsTableName();\n// Returns 'wp_23_terms'.\n$I->useBlog(23);\n$I->grabTermsTableName();\n
"},{"location":"modules/WPDb/#grabtransientfromdatabase","title":"grabTransientFromDatabase","text":"

Signature: grabTransientFromDatabase(string $transient) : mixed

Fetches the value of a transient from the database.

<?php\n$I->haveTransientInDatabase('foo', 23);\n$transientValue = $I->grabTransientFromDatabase('foo');\n$I->assertEquals(23, $transientValue);\n
"},{"location":"modules/WPDb/#grabuseridfromdatabase","title":"grabUserIdFromDatabase","text":"

Signature: grabUserIdFromDatabase(string $userLogin) : int|false

Gets the a user ID from the database using the user login.

<?php\n$userId = $I->grabUserIdFromDatabase('luca');\n
"},{"location":"modules/WPDb/#grabusermetafromdatabase","title":"grabUserMetaFromDatabase","text":"

Signature: grabUserMetaFromDatabase(int $userId, string $meta_key, [bool $single]) : mixed

Gets a user meta from the database.

<?php\n// Returns a user 'karma' value.\n$I->grabUserMetaFromDatabase($userId, 'karma');\n// Returns an array, the unserialized version of the value stored in the database.\n$I->grabUserMetaFromDatabase($userId, 'api_data');\n
"},{"location":"modules/WPDb/#grabusermetatablename","title":"grabUsermetaTableName","text":"

Signature: grabUsermetaTableName() : string

Returns the prefixed users meta table name.

<?php\n// Given a `wp_` table prefix returns `wp_usermeta`.\n$usermetaTable = $I->grabUsermetaTableName();\n// Given a `wp_` table prefix returns `wp_usermeta`.\n$I->useBlog(23);\n$usermetaTable = $I->grabUsermetaTableName();\n
"},{"location":"modules/WPDb/#grabuserstablename","title":"grabUsersTableName","text":"

Signature: grabUsersTableName() : string

Returns the prefixed users table name.

<?php\n// Given a `wp_` table prefix returns `wp_users`.\n$usersTable = $I->grabUsersTableName();\n// Given a `wp_` table prefix returns `wp_users`.\n$I->useBlog(23);\n$usersTable = $I->grabUsersTableName();\n
"},{"location":"modules/WPDb/#haveattachmentindatabase","title":"haveAttachmentInDatabase","text":"

Signature: haveAttachmentInDatabase(string $file, [string|int $date], [array $overrides], [?array $imageSizes]) : int

Creates the database entries representing an attachment and moves the attachment file to the right location.

<?php\n$file = codecept_data_dir('images/test.png');\n$attachmentId = $I->haveAttachmentInDatabase($file);\n$image = codecept_data_dir('images/test-2.png');\n$lastWeekAttachment = $I->haveAttachmentInDatabase($image, '-1 week');\n

Requires the WPFilesystem module.

"},{"location":"modules/WPDb/#haveblogindatabase","title":"haveBlogInDatabase","text":"

Signature: haveBlogInDatabase(string $domainOrPath, [array $overrides], [bool $subdomain]) : int

Inserts a blog in the blogs table.

<?php\n// Create the `test` subdomain blog.\n$blogId = $I->haveBlogInDatabase('test', ['administrator' => $userId]);\n// Create the `/test` subfolder blog.\n$blogId = $I->haveBlogInDatabase('test', ['administrator' => $userId], false);\n
"},{"location":"modules/WPDb/#havecommentindatabase","title":"haveCommentInDatabase","text":"

Signature: haveCommentInDatabase(int $comment_post_ID, [array $data]) : int

Inserts a comment in the database.

<?php\n$I->haveCommentInDatabase($postId, ['comment_content' => 'Test Comment', 'comment_karma' => 23]);\n
"},{"location":"modules/WPDb/#havecommentmetaindatabase","title":"haveCommentMetaInDatabase","text":"

Signature: haveCommentMetaInDatabase(int $comment_id, string $meta_key, mixed $meta_value) : int

Inserts a comment meta field in the database. Array and object meta values will be serialized.

<?php\n$I->haveCommentMetaInDatabase($commentId, 'api_ID', 23);\n// The value will be serialized.\n$apiData = ['ID' => 23, 'user' => 89, 'origin' => 'twitter'];\n$I->haveCommentMetaInDatabase($commentId, 'api_data', $apiData);\n
"},{"location":"modules/WPDb/#haveindatabase","title":"haveInDatabase","text":"

Signature: haveInDatabase(string $table, array $data) : int

Inserts an SQL record into a database. This record will be erased after the test, unless you've configured \"skip_cleanup_if_failed\", and the test fails.

<?php\n$I->haveInDatabase('users', array('name' => 'miles', 'email' => 'miles@davis.com'));\n
"},{"location":"modules/WPDb/#havelinkindatabase","title":"haveLinkInDatabase","text":"

Signature: haveLinkInDatabase([array $overrides]) : int

Inserts a link in the database.

<?php\n$linkId = $I->haveLinkInDatabase(['link_url' => 'http://example.org']);\n
"},{"location":"modules/WPDb/#havemanyblogsindatabase","title":"haveManyBlogsInDatabase","text":"

Signature: haveManyBlogsInDatabase(int $count, [array $overrides], [bool $subdomain]) : array

Inserts many blogs in the database.

<?php\n     $blogIds = $I->haveManyBlogsInDatabase(3, ['domain' =>'test-{{n}}']);\n     foreach($blogIds as $blogId){\n     $I->useBlog($blogId);\n     $I->haveManuPostsInDatabase(3);\n}\n
"},{"location":"modules/WPDb/#havemanycommentsindatabase","title":"haveManyCommentsInDatabase","text":"

Signature: haveManyCommentsInDatabase(int $count, int $comment_post_ID, [array $overrides]) : array

Inserts many comments in the database.

<?php\n// Insert 3 random comments for a post.\n$I->haveManyCommentsInDatabase(3, $postId);\n// Insert 3 random comments for a post.\n$I->haveManyCommentsInDatabase(3, $postId, ['comment_content' => 'Comment {{n}}']);\n
"},{"location":"modules/WPDb/#havemanylinksindatabase","title":"haveManyLinksInDatabase","text":"

Signature: haveManyLinksInDatabase(int $count, [array $overrides]) : array

Inserts many links in the database links table.

<?php\n// Insert 3 randomly generated links in the database.\n$linkIds = $I->haveManyLinksInDatabase(3);\n// Inserts links in the database replacing the `n` placeholder.\n$linkIds = $I->haveManyLinksInDatabase(3, ['link_url' => 'http://example.org/test-{{n}}']);\n
"},{"location":"modules/WPDb/#havemanypostsindatabase","title":"haveManyPostsInDatabase","text":"

Signature: haveManyPostsInDatabase(int $count, [array $overrides]) : array

Inserts many posts in the database returning their IDs.

<?php\n// Insert 3 random posts.\n$I->haveManyPostsInDatabase(3);\n// Insert 3 posts with generated titles.\n$I->haveManyPostsInDatabase(3, ['post_title' => 'Test post {{n}}']);\n
"},{"location":"modules/WPDb/#havemanytermsindatabase","title":"haveManyTermsInDatabase","text":"

Signature: haveManyTermsInDatabase(int $count, string $name, string $taxonomy, [array $overrides]) : array

Inserts many terms in the database.

<?php\n$terms = $I->haveManyTermsInDatabase(3, 'genre-{{n}}', 'genre');\n$termIds = array_column($terms, 0);\n$termTaxonomyIds = array_column($terms, 1);\n
"},{"location":"modules/WPDb/#havemanyusersindatabase","title":"haveManyUsersInDatabase","text":"

Signature: haveManyUsersInDatabase(int $count, string $user_login, [string $role], [array $overrides]) : array

Inserts many users in the database.

<?php\n$subscribers = $I->haveManyUsersInDatabase(5, 'user-{{n}}');\n$editors = $I->haveManyUsersInDatabase(\n     5,\n     'user-{{n}}',\n     'editor',\n     ['user_email' => 'user-{{n}}@example.org']\n);\n
"},{"location":"modules/WPDb/#havemenuindatabase","title":"haveMenuInDatabase","text":"

Signature: haveMenuInDatabase(string $slug, string $location, [array $overrides]) : array

Creates and adds a menu to a theme location in the database.

<?php\nlist($termId, $termTaxId) = $I->haveMenuInDatabase('test', 'sidebar');\n
"},{"location":"modules/WPDb/#havemenuitemindatabase","title":"haveMenuItemInDatabase","text":"

Signature: haveMenuItemInDatabase(string $menuSlug, string $title, [?int $menuOrder], [array $meta]) : int

Adds a menu element to a menu for the current theme.

<?php\n$I->haveMenuInDatabase('test', 'sidebar');\n$I->haveMenuItemInDatabase('test', 'Test one', 0);\n$I->haveMenuItemInDatabase('test', 'Test two', 1);\n
"},{"location":"modules/WPDb/#haveoptionindatabase","title":"haveOptionInDatabase","text":"

Signature: haveOptionInDatabase(string $option_name, mixed $option_value, [string $autoload]) : int

Inserts an option in the database.

<?php\n$I->haveOptionInDatabase('posts_per_page', 23);\n$I->haveOptionInDatabase('my_plugin_options', ['key_one' => 'value_one', 'key_two' => 89]);\n

If the option value is an object or an array then the value will be serialized.

"},{"location":"modules/WPDb/#havepageindatabase","title":"havePageInDatabase","text":"

Signature: havePageInDatabase([array $overrides]) : int

Inserts a page in the database.

<?php\n// Creates a test page in the database with random values.\n$randomPageId = $I->havePageInDatabase();\n// Creates a test page in the database defining its title.\n$testPageId = $I->havePageInDatabase(['post_title' => 'Test page']);\n
"},{"location":"modules/WPDb/#havepostindatabase","title":"havePostInDatabase","text":"

Signature: havePostInDatabase([array $data]) : int

Inserts a post in the database.

<?php\n// Insert a post with random values in the database.\n$randomPostId = $I->havePostInDatabase();\n// Insert a post with specific values in the database.\n$I->havePostInDatabase([\n'post_type' => 'book',\n'post_title' => 'Alice in Wonderland',\n'meta_input' => [\n'readers_count' => 23\n],\n'tax_input' => [\n['genre' => 'fiction']\n]\n]);\n
"},{"location":"modules/WPDb/#havepostthumbnailindatabase","title":"havePostThumbnailInDatabase","text":"

Signature: havePostThumbnailInDatabase(int $postId, int $thumbnailId) : int

Assigns the specified attachment ID as thumbnail (featured image) to a post.

<?php\n$attachmentId = $I->haveAttachmentInDatabase(codecept_data_dir('some-image.png'));\n$postId = $I->havePostInDatabase();\n$I->havePostThumbnailInDatabase($postId, $attachmentId);\n
"},{"location":"modules/WPDb/#havepostmetaindatabase","title":"havePostmetaInDatabase","text":"

Signature: havePostmetaInDatabase(int $postId, string $meta_key, mixed $meta_value) : int

Adds one or more meta key and value couples in the database for a post.

<?php\n// Set the post-meta for a post.\n$I->havePostmetaInDatabase($postId, 'karma', 23);\n// Set an array post-meta for a post, it will be serialized in the db.\n$I->havePostmetaInDatabase($postId, 'data', ['one', 'two']);\n// Use a loop to insert one meta per row.\nforeach( ['one', 'two'] as $value){\n     $I->havePostmetaInDatabase($postId, 'data', $value);\n}\n
"},{"location":"modules/WPDb/#havesitemetaindatabase","title":"haveSiteMetaInDatabase","text":"

Signature: haveSiteMetaInDatabase(int $blogId, string $string, mixed $value) : int

Adds a meta key and value for a site in the database.

<?php\n$I->haveSiteMetaInDatabase(1, 'foo', 'bar');\n$insertedId = $I->haveSiteMetaInDatabase(2, 'foo', ['bar' => 'baz']);\n
"},{"location":"modules/WPDb/#havesiteoptionindatabase","title":"haveSiteOptionInDatabase","text":"

Signature: haveSiteOptionInDatabase(string $key, mixed $value) : int

Inserts a site option in the database.

If the value is an array or an object then the value will be serialized.

<?php\n$fooCountOptionId = $I->haveSiteOptionInDatabase('foo_count','23');\n
"},{"location":"modules/WPDb/#havesitetransientindatabase","title":"haveSiteTransientInDatabase","text":"

Signature: haveSiteTransientInDatabase(string $key, mixed $value) : int

Inserts a site transient in the database. If the value is an array or an object then the value will be serialized.

<?php\n$I->haveSiteTransientInDatabase('total_comments_count', 23);\n// This value will be serialized.\n$I->haveSiteTransientInDatabase('api_data', ['user' => 'luca', 'token' => '11ae3ijns-j83']);\n
"},{"location":"modules/WPDb/#havetermindatabase","title":"haveTermInDatabase","text":"

Signature: haveTermInDatabase(string $name, string $taxonomy, [array $overrides]) : array

Inserts a term in the database.

<?php\n// Insert a random 'genre' term in the database.\n$I->haveTermInDatabase('non-fiction', 'genre');\n// Insert a term in the database with term meta.\n$I->haveTermInDatabase('fiction', 'genre', [\n     'slug' => 'genre--fiction',\n     'meta' => [\n        'readers_count' => 23\n     ]\n]);\n
"},{"location":"modules/WPDb/#havetermmetaindatabase","title":"haveTermMetaInDatabase","text":"

Signature: haveTermMetaInDatabase(int $term_id, string $meta_key, mixed $meta_value) : int

Inserts a term meta row in the database. Objects and array meta values will be serialized.

<?php\n$I->haveTermMetaInDatabase($fictionId, 'readers_count', 23);\n// Insert some meta that will be serialized.\n$I->haveTermMetaInDatabase($fictionId, 'flags', [3, 4, 89]);\n// Use a loop to insert one meta per row.\nforeach([3, 4, 89] as $value) {\n     $I->haveTermMetaInDatabase($fictionId, 'flag', $value);\n}\n
"},{"location":"modules/WPDb/#havetermrelationshipindatabase","title":"haveTermRelationshipInDatabase","text":"

Signature: haveTermRelationshipInDatabase(int $object_id, int $term_taxonomy_id, [int $term_order]) : void

Creates a term relationship in the database.

No check about the consistency of the insertion is made. E.g. a post could be assigned a term from a taxonomy that's not registered for that post type.

<?php\n// Assign the `fiction` term to a book.\n$I->haveTermRelationshipInDatabase($bookId, $fictionId);\n
"},{"location":"modules/WPDb/#havetransientindatabase","title":"haveTransientInDatabase","text":"

Signature: haveTransientInDatabase(string $transient, mixed $value) : int

Inserts a transient in the database.

If the value is an array or an object then the value will be serialized. Since the transients are set in the context of tests it's not possible to set an expiration directly.

<?php\n// Store an array in the `tweets` transient.\n$I->haveTransientInDatabase('tweets', $tweets);\n
"},{"location":"modules/WPDb/#haveusercapabilitiesindatabase","title":"haveUserCapabilitiesInDatabase","text":"

Signature: haveUserCapabilitiesInDatabase(int $userId, array|string $role) : array

Sets a user capabilities in the database.

<?php\n// Assign one user a role in a blog.\n$blogId = $I->haveBlogInDatabase('test');\n$editor = $I->haveUserInDatabase('luca', 'editor');\n$capsIds = $I->haveUserCapabilitiesInDatabase($editor, [$blogId => 'editor']);\n\n// Assign a user two roles in blog 1.\n$capsIds = $I->haveUserCapabilitiesInDatabase($userId, ['editor', 'subscriber']);\n\n// Assign one user different roles in different blogs.\n$capsIds = $I->haveUserCapabilitiesInDatabase($userId, [$blogId1 => 'editor', $blogId2 => 'author']);\n\n// Assign a user a role and an additional capability in blog 1.\n$I->haveUserCapabilitiesInDatabase($userId, ['editor' => true, 'edit_themes' => true]);\n\n// Assign a user a mix of roles and capabilities in different blogs.\n$capsIds = $I->haveUserCapabilitiesInDatabase(\n     $userId,\n     [\n         $blogId1 => ['editor' => true, 'edit_themes' => true],\n         $blogId2 => ['administrator' => true, 'edit_themes' => false]\n     ]\n);\n
"},{"location":"modules/WPDb/#haveuserindatabase","title":"haveUserInDatabase","text":"

Signature: haveUserInDatabase(string $user_login, [array|string $role], [array $overrides]) : int

Inserts a user and its meta in the database.

<?php\n// Create an editor user in blog 1 w/ specific email.\n$userId = $I->haveUserInDatabase('luca', 'editor', ['user_email' => 'luca@example.org']);\n\n// Create a subscriber user in blog 1.\n$subscriberId = $I->haveUserInDatabase('subscriber');\n\n// Create a user editor in blog 1, author in blog 2, administrator in blog 3.\n$userWithMeta = $I->haveUserInDatabase('luca',\n     [\n         1 => 'editor',\n         2 => 'author',\n         3 => 'administrator'\n     ], [\n         'user_email' => 'luca@example.org'\n         'meta' => ['a meta_key' => 'a_meta_value']\n     ]\n);\n\n// Create editor in blog 1 w/ `edit_themes` cap, author in blog 2, admin in blog 3 w/o `manage_options` cap.\n$userWithMeta = $I->haveUserInDatabase('luca',\n     [\n         1 => ['editor', 'edit_themes'],\n         2 => 'author',\n         3 => ['administrator' => true, 'manage_options' => false]\n     ]\n);\n\n// Create a user w/o role.\n$userId = $I->haveUserInDatabase('luca', '');\n
"},{"location":"modules/WPDb/#haveuserlevelsindatabase","title":"haveUserLevelsInDatabase","text":"

Signature: haveUserLevelsInDatabase(int $userId, array|string $role) : array

Sets the user access level meta in the database for a user.

<?php\n$userId = $I->haveUserInDatabase('luca', 'editor');\n$moreThanAnEditorLessThanAnAdmin = 8;\n$I->haveUserLevelsInDatabase($userId, $moreThanAnEditorLessThanAnAdmin);\n
"},{"location":"modules/WPDb/#haveusermetaindatabase","title":"haveUserMetaInDatabase","text":"

Signature: haveUserMetaInDatabase(int $userId, string $meta_key, mixed $meta_value) : array

Sets a user meta in the database.

<?php\n$userId = $I->haveUserInDatabase('luca', 'editor');\n$I->haveUserMetaInDatabase($userId, 'karma', 23);\n
"},{"location":"modules/WPDb/#importsql","title":"importSql","text":"

Signature: importSql(array $sql) : void

Loads a set SQL code lines in the current database.

<?php\n// Import a SQL string.\n$I->importSql([$sqlString]);\n// Import a set of SQL strings.\n$I->importSql($sqlStrings);\n// Import a prepared set of SQL strings.\n$preparedSqlStrings = array_map(function($line){\n    return str_replace('{{date}}', date('Y-m-d H:i:s'), $line);\n}, $sqlTemplate);\n$I->importSql($preparedSqlStrings);\n
"},{"location":"modules/WPDb/#importsqldumpfile","title":"importSqlDumpFile","text":"

Signature: importSqlDumpFile([?string $dumpFile]) : void

Import the SQL dump file if populate is enabled.

<?php\n// Import a dump file passing the absolute path.\n$I->importSqlDumpFile(codecept_data_dir('dumps/start.sql'));\n

Specifying a dump file that file will be imported.

"},{"location":"modules/WPDb/#performindatabase","title":"performInDatabase","text":"

Signature: performInDatabase($databaseKey, $actions) : void

Can be used with a callback if you don't want to change the current database in your test.

<?php\n$I->seeNumRecords(2, 'users');   //executed on default database\n$I->performInDatabase('db_books', function($I) {\n    $I->seeNumRecords(30, 'books');  //executed on db_books database\n});\n$I->seeNumRecords(2, 'users');  //executed on default database\n
List of actions can be pragmatically built using Codeception\\Util\\ActionSequence:

<?php\n$I->performInDatabase('db_books', ActionSequence::build()\n    ->seeNumRecords(30, 'books')\n);\n
Alternatively an array can be used:

<?php\n$I->performInDatabase('db_books', ['seeNumRecords' => [30, 'books']]);\n

Choose the syntax you like the most and use it,

Actions executed from array or ActionSequence will print debug output for actions, and adds an action name to exception on failure.

"},{"location":"modules/WPDb/#seeattachmentindatabase","title":"seeAttachmentInDatabase","text":"

Signature: seeAttachmentInDatabase(array $criteria) : void

Checks for an attachment in the database.

<?php\n$url = 'https://example.org/images/foo.png';\n$I->seeAttachmentInDatabase(['guid' => $url]);\n
"},{"location":"modules/WPDb/#seeblogindatabase","title":"seeBlogInDatabase","text":"

Signature: seeBlogInDatabase(array $criteria) : void

Checks for a blog in the blogs table.

<?php\n// Search for a blog by `blog_id`.\n$I->seeBlogInDatabase(['blog_id' => 23]);\n// Search for all blogs on a path.\n$I->seeBlogInDatabase(['path' => '/sub-path/']);\n
"},{"location":"modules/WPDb/#seecommentindatabase","title":"seeCommentInDatabase","text":"

Signature: seeCommentInDatabase(array $criteria) : void

Checks for a comment in the database.

Will look up the \"comments\" table.

<?php\n$I->seeCommentInDatabase(['comment_ID' => 23]);\n
"},{"location":"modules/WPDb/#seecommentmetaindatabase","title":"seeCommentMetaInDatabase","text":"

Signature: seeCommentMetaInDatabase(array $criteria) : void

Checks that a comment meta value is in the database. Will look up the \"commentmeta\" table.

<?php\n// Assert a specified meta for a comment exists.\n$I->seeCommentMetaInDatabase(['comment_ID' => $commentId, 'meta_key' => 'karma', 'meta_value' => 23]);\n// Assert the comment has at least one meta set.\n$I->seeCommentMetaInDatabase(['comment_ID' => $commentId]);\n
"},{"location":"modules/WPDb/#seeindatabase","title":"seeInDatabase","text":"

Signature: seeInDatabase(string $table, [array $criteria]) : void

"},{"location":"modules/WPDb/#seelinkindatabase","title":"seeLinkInDatabase","text":"

Signature: seeLinkInDatabase(array $criteria) : void

Checks for a link in the links table of the database.

<?php\n// Asserts a link exists by name.\n$I->seeLinkInDatabase(['link_name' => 'my-link']);\n// Asserts at least one link exists for the user.\n$I->seeLinkInDatabase(['link_owner' => $userId]);\n
"},{"location":"modules/WPDb/#seenumrecords","title":"seeNumRecords","text":"

Signature: seeNumRecords(int $expectedNumber, string $table, [array $criteria]) : void

Asserts that the given number of records were found in the database.

<?php\n$I->seeNumRecords(1, 'users', ['name' => 'davert'])\n
"},{"location":"modules/WPDb/#seeoptionindatabase","title":"seeOptionInDatabase","text":"

Signature: seeOptionInDatabase(array|string $criteriaOrName, [mixed $value]) : void

Checks if an option is in the database for the current blog, either by criteria or by name and value.

If checking for an array or an object then the serialized version will be checked for.

<?php\n// Checks an option is in the database.\n$I->seeOptionInDatabase('tables_version');\n// Checks an option is in the database and has a specific value.\n$I->seeOptionInDatabase('tables_version', '1.0');\n$I->seeOptionInDatabase(['option_name' => 'tables_version', 'option_value' => 1.0']);\n
"},{"location":"modules/WPDb/#seepageindatabase","title":"seePageInDatabase","text":"

Signature: seePageInDatabase(array $criteria) : void

Checks for a page in the database.

<?php\n// Asserts a page with an exists in the database.\n$I->seePageInDatabase(['ID' => 23]);\n// Asserts a page with a slug and ID exists in the database.\n$I->seePageInDatabase(['post_title' => 'Test Page', 'ID' => 23]);\n
"},{"location":"modules/WPDb/#seepostindatabase","title":"seePostInDatabase","text":"

Signature: seePostInDatabase(array $criteria) : void

Checks for a post in the database.

<?php\n// Assert a post exists in the database.\n$I->seePostInDatabase(['ID' => 23]);\n// Assert a post with a slug and ID exists in the database.\n$I->seePostInDatabase(['post_content' => 'test content', 'ID' => 23]);\n
"},{"location":"modules/WPDb/#seepostmetaindatabase","title":"seePostMetaInDatabase","text":"

Signature: seePostMetaInDatabase(array $criteria) : void

Checks for a post meta value in the database for the current blog.

If the meta_value is an object or an array then the check will be made for serialized values.

<?php\n$postId = $I->havePostInDatabase(['meta_input' => ['foo' => 'bar']];\n$I->seePostMetaInDatabase(['post_id' => '$postId', 'meta_key' => 'foo']);\n
"},{"location":"modules/WPDb/#seepostwithtermindatabase","title":"seePostWithTermInDatabase","text":"

Signature: seePostWithTermInDatabase(int $post_id, int $term_taxonomy_id, [?int $term_order], [?string $taxonomy]) : void

Checks that a post to term relation exists in the database.

The method will check the \"term_relationships\" table.

<?php\n$fiction = $I->haveTermInDatabase('fiction', 'genre');\n$postId = $I->havePostInDatabase(['tax_input' => ['genre' => ['fiction']]]);\n$I->seePostWithTermInDatabase($postId, $fiction['term_taxonomy_id']);\n
"},{"location":"modules/WPDb/#seesiteoptionindatabase","title":"seeSiteOptionInDatabase","text":"

Signature: seeSiteOptionInDatabase(array|string $criteriaOrName, [mixed $value]) : void

Checks that a site option is in the database.

<?php\n// Check that the option is set in the database.\n$I->seeSiteOptionInDatabase('foo_count');\n// Check that the option is set and has a specific value.\n$I->seeSiteOptionInDatabase('foo_count', 23);\n
"},{"location":"modules/WPDb/#seesitesitetransientindatabase","title":"seeSiteSiteTransientInDatabase","text":"

Signature: seeSiteSiteTransientInDatabase(string $key, [mixed $value]) : void

Checks that a site option is in the database.

<?php\n// Check a transient exists.\n$I->seeSiteSiteTransientInDatabase('total_counts');\n// Check a transient exists and has a specific value.\n$I->seeSiteSiteTransientInDatabase('total_counts', 23);\n
"},{"location":"modules/WPDb/#seesitetransientindatabase","title":"seeSiteTransientInDatabase","text":"

Signature: seeSiteTransientInDatabase(string $transient, [mixed $value]) : void

Checks that a site transient is in the database.

<?php\n$I->haveSiteTransientInDatabase('foo', 23);\n$I->seeSiteTransientInDatabase('foo');\n$I->seeSiteTransientInDatabase('foo', 23);\n
"},{"location":"modules/WPDb/#seetableindatabase","title":"seeTableInDatabase","text":"

Signature: seeTableInDatabase(string $table) : void

Checks that a table is in the database.

<?php\n$options = $I->grabPrefixedTableNameFor('options');\n$I->seeTableInDatabase($options);\n
"},{"location":"modules/WPDb/#seetermindatabase","title":"seeTermInDatabase","text":"

Signature: seeTermInDatabase(array $criteria) : void

Checks for a term in the database. Looks up the terms and term_taxonomy prefixed tables.

<?php\n$I->seeTermInDatabase(['slug' => 'genre--fiction']);\n$I->seeTermInDatabase(['name' => 'Fiction', 'slug' => 'genre--fiction']);\n
"},{"location":"modules/WPDb/#seetermmetaindatabase","title":"seeTermMetaInDatabase","text":"

Signature: seeTermMetaInDatabase(array $criteria) : void

Checks for a term meta in the database.

<?php\nlist($termId, $termTaxonomyId) = $I->haveTermInDatabase('fiction', 'genre');\n$I->haveTermMetaInDatabase($termId, 'rating', 4);\n$I->seeTermMetaInDatabase(['term_id' => $termId,'meta_key' => 'rating', 'meta_value' => 4]);\n
"},{"location":"modules/WPDb/#seetermrelationshipindatabase","title":"seeTermRelationshipInDatabase","text":"

Signature: seeTermRelationshipInDatabase(array $criteria) : void

Checks for a term relationship in the database.

<?php\n$postId = $I->havePostInDatabase(['tax_input' => ['category' => 'one']]);\n$I->seeTermRelationshipInDatabase(['object_id' => $postId, 'term_taxonomy_id' => $oneTermTaxId]);\n
"},{"location":"modules/WPDb/#seetermtaxonomyindatabase","title":"seeTermTaxonomyInDatabase","text":"

Signature: seeTermTaxonomyInDatabase(array $criteria) : void

Checks for a taxonomy taxonomy in the database.

<?php\nlist($termId, $termTaxonomyId) = $I->haveTermInDatabase('fiction', 'genre');\n$I->seeTermTaxonomyInDatabase(['term_id' => $termId, 'taxonomy' => 'genre']);\n
"},{"location":"modules/WPDb/#seetransientindatabase","title":"seeTransientInDatabase","text":"

Signature: seeTransientInDatabase(string $name, [mixed $value]) : void

Checks that a transient is in the database.

<?php\n$I->haveTransientInDatabase('foo', 23);\n$I->seeTransientInDatabase('foo');\n$I->seeTransientInDatabase('foo', 23);\n
"},{"location":"modules/WPDb/#seeuserindatabase","title":"seeUserInDatabase","text":"

Signature: seeUserInDatabase(array $criteria) : void

Checks that a user is in the database.

The method will check the \"users\" table.

<?php\n$I->seeUserInDatabase([\n    \"user_email\" => \"test@example.org\",\n    \"user_login\" => \"login name\"\n])\n
"},{"location":"modules/WPDb/#seeusermetaindatabase","title":"seeUserMetaInDatabase","text":"

Signature: seeUserMetaInDatabase(array $criteria) : void

Checks for a user meta value in the database.

<?php\n$I->seeUserMetaInDatabase(['user_id' => 23, 'meta_key' => 'karma']);\n
"},{"location":"modules/WPDb/#updateindatabase","title":"updateInDatabase","text":"

Signature: updateInDatabase(string $table, array $data, [array $criteria]) : void

Update an SQL record into a database.

<?php\n$I->updateInDatabase('users', array('isAdmin' => true), array('email' => 'miles@davis.com'));\n
"},{"location":"modules/WPDb/#useblog","title":"useBlog","text":"

Signature: useBlog([int $blogId]) : void

Sets the blog to be used.

This has nothing to do with WordPress switch_to_blog function, this code will affect the table prefixes used.

"},{"location":"modules/WPDb/#usemainblog","title":"useMainBlog","text":"

Signature: useMainBlog() : void

Sets the current blog to the main one (blog_id 1).

<?php\n// Switch to the blog with ID 23.\n$I->useBlog(23);\n// Switch back to the main blog.\n$I->useMainBlog();\n
"},{"location":"modules/WPDb/#usetheme","title":"useTheme","text":"

Signature: useTheme(string $stylesheet, [?string $template], [?string $themeName]) : void

Sets the current theme options.

<?php\n$I->useTheme('twentyseventeen');\n$I->useTheme('child-of-twentyseventeen', 'twentyseventeen');\n$I->useTheme('acme', 'acme', 'Acme Theme');\n

Read more in Codeception documentation for the Db module.

"},{"location":"modules/WPFilesystem/","title":"WPFilesystem","text":""},{"location":"modules/WPFilesystem/#wpfilesystem-module","title":"WPFilesystem module","text":"

Interact and make assertions on the WordPress file structure.

This module is used together with the WPDb module to manage the state of the WordPress installation in the context of end-to-end tests.

This module extends the Filesystem module from Codeception, you can reference to the Codeception documentation to find out more about the module configuration and usage.

This module should be with Cest and Cept test cases.

"},{"location":"modules/WPFilesystem/#configuration","title":"Configuration","text":"

wpRootFolder - required; the path to the WordPress installation root folder. This can be a relative path to the codeception root directory, or an absolute path to the WordPress installation directory. The WordPress installation directory is the directory that contains the wp-load.php file. themes - the path, relative to the path specified in the wpRootFolder parameter, to the themes directory. By default, it's /wp-content/themes. plugins - the path, relative to the path specified in the wpRootFolder parameter, to the plugins directory. By default, it's /wp-content/plugins. mu-plugins - the path, relative to the path specified in the wpRootFolder parameter, to the must-use plugins. By default, it's /wp-content/mu-plugins. directory. uploads - the path, relative to the path specified in the wpRootFolder parameter, to the uploads directory. By default, it's /wp-content/uploads.

The following is an example of the module configuration to run tests on the /var/wordpress site:

modules:\n  enabled:\n    lucatume\\WPBrowser\\Module\\WPFilesystem:\n      wpRootFolder: /var/wordpress\n      themes: wp-content/themes\n      plugins: wp-content/plugins\n      mu-plugins: wp-content/mu-plugins\n      uploads: wp-content/uploads\n

The following configuration uses dynamic configuration parameters to set the module configuration:

modules:\n  enabled:\n    lucatume\\WPBrowser\\Module\\WPFilesystem:\n      wpRootFolder: '%WP_ROOT_FOLDER%'\n
"},{"location":"modules/WPFilesystem/#methods","title":"Methods","text":"

The module provides the following methods:

"},{"location":"modules/WPFilesystem/#aminmupluginpath","title":"amInMuPluginPath","text":"

Signature: amInMuPluginPath(string $path) : void

Sets the current working folder to a folder in a mu-plugin.

$I->amInMuPluginPath('mu-plugin');\n
"},{"location":"modules/WPFilesystem/#aminpath","title":"amInPath","text":"

Signature: amInPath(string $path) : void

Enters a directory In local filesystem. Project root directory is used by default

"},{"location":"modules/WPFilesystem/#aminpluginpath","title":"amInPluginPath","text":"

Signature: amInPluginPath(string $path) : void

Sets the current working folder to a folder in a plugin.

$I->amInPluginPath('my-plugin');\n
"},{"location":"modules/WPFilesystem/#aminthemepath","title":"amInThemePath","text":"

Signature: amInThemePath(string $path) : void

Sets the current working folder to a folder in a theme.

$I->amInThemePath('my-theme');\n
"},{"location":"modules/WPFilesystem/#aminuploadspath","title":"amInUploadsPath","text":"

Signature: amInUploadsPath([?string $path]) : void

Enters, changing directory, to the uploads folder in the local filesystem.

<?php\n$I->amInUploadsPath('/logs');\n$I->seeFileFound('shop.log');\n
"},{"location":"modules/WPFilesystem/#assertdirectoryexists","title":"assertDirectoryExists","text":"

Signature: assertDirectoryExists(string $directory, [string $message]) : void

"},{"location":"modules/WPFilesystem/#cleandir","title":"cleanDir","text":"

Signature: cleanDir(string $dirname) : void

Erases directory contents

<?php\n$I->cleanDir('logs');\n
"},{"location":"modules/WPFilesystem/#cleanmuplugindir","title":"cleanMuPluginDir","text":"

Signature: cleanMuPluginDir(string $dir) : void

Cleans, emptying it, a folder in a mu-plugin folder.

$I->cleanMuPluginDir('mu-plugin1/foo');\n
"},{"location":"modules/WPFilesystem/#cleanplugindir","title":"cleanPluginDir","text":"

Signature: cleanPluginDir(string $dir) : void

Cleans, emptying it, a folder in a plugin folder.

$I->cleanPluginDir('my-plugin/foo');\n
"},{"location":"modules/WPFilesystem/#cleanthemedir","title":"cleanThemeDir","text":"

Signature: cleanThemeDir(string $dir) : void

Clears, emptying it, a folder in a theme folder.

$I->cleanThemeDir('my-theme/foo');\n
"},{"location":"modules/WPFilesystem/#cleanuploadsdir","title":"cleanUploadsDir","text":"

Signature: cleanUploadsDir([?string $dir], [DateTime|string|int|null $date]) : void

Clears a folder in the uploads folder.

The date argument can be a string compatible with strtotime or a Unix timestamp that will be used to build the Y/m uploads subfolder path.

$I->cleanUploadsDir('some/folder');\n$I->cleanUploadsDir('some/folder', 'today');\n
"},{"location":"modules/WPFilesystem/#copydir","title":"copyDir","text":"

Signature: copyDir(string $src, string $dst) : void

Copies directory with all contents

<?php\n$I->copyDir('vendor','old_vendor');\n
"},{"location":"modules/WPFilesystem/#copydirtomuplugin","title":"copyDirToMuPlugin","text":"

Signature: copyDirToMuPlugin(string $src, string $pluginDst) : void

Copies a folder to a folder in a mu-plugin.

$I->copyDirToMuPlugin(codecept_data_dir('foo'), 'mu-plugin/foo');\n
"},{"location":"modules/WPFilesystem/#copydirtoplugin","title":"copyDirToPlugin","text":"

Signature: copyDirToPlugin(string $src, string $pluginDst) : void

Copies a folder to a folder in a plugin.

// Copy the 'foo' folder to the 'foo' folder in the plugin.\n$I->copyDirToPlugin(codecept_data_dir('foo'), 'my-plugin/foo');\n
"},{"location":"modules/WPFilesystem/#copydirtotheme","title":"copyDirToTheme","text":"

Signature: copyDirToTheme(string $src, string $themeDst) : void

Copies a folder in a theme folder.

$I->copyDirToTheme(codecept_data_dir('foo'), 'my-theme');\n
"},{"location":"modules/WPFilesystem/#copydirtouploads","title":"copyDirToUploads","text":"

Signature: copyDirToUploads(string $src, string $dst, [DateTime|string|int|null $date]) : void

Copies a folder to the uploads folder.

The date argument can be a string compatible with strtotime or a Unix timestamp that will be used to build the Y/m uploads subfolder path.

$I->copyDirToUploads(codecept_data_dir('foo'), 'uploadsFoo');\n$I->copyDirToUploads(codecept_data_dir('foo'), 'uploadsFoo', 'today');\n
"},{"location":"modules/WPFilesystem/#deletedir","title":"deleteDir","text":"

Signature: deleteDir(string $dirname) : void

Deletes directory with all subdirectories

<?php\n$I->deleteDir('vendor');\n
"},{"location":"modules/WPFilesystem/#deletefile","title":"deleteFile","text":"

Signature: deleteFile(string $filename) : void

Deletes a file

<?php\n$I->deleteFile('composer.lock');\n
"},{"location":"modules/WPFilesystem/#deletemupluginfile","title":"deleteMuPluginFile","text":"

Signature: deleteMuPluginFile(string $file) : void

Deletes a file in a mu-plugin folder.

$I->deleteMuPluginFile('mu-plugin1/some-file.txt');\n
"},{"location":"modules/WPFilesystem/#deletepluginfile","title":"deletePluginFile","text":"

Signature: deletePluginFile(string $file) : void

Deletes a file in a plugin folder.

$I->deletePluginFile('my-plugin/some-file.txt');\n
"},{"location":"modules/WPFilesystem/#deletethemefile","title":"deleteThemeFile","text":"

Signature: deleteThemeFile(string $file) : void

Deletes a file in a theme folder.

$I->deleteThemeFile('my-theme/some-file.txt');\n
"},{"location":"modules/WPFilesystem/#deletethisfile","title":"deleteThisFile","text":"

Signature: deleteThisFile() : void

Deletes a file

"},{"location":"modules/WPFilesystem/#deleteuploadeddir","title":"deleteUploadedDir","text":"

Signature: deleteUploadedDir(string $dir, [DateTime|string|int|null $date]) : void

Deletes a dir in the uploads folder.

The date argument can be a string compatible with strtotime or a Unix timestamp that will be used to build the Y/m uploads subfolder path.

$I->deleteUploadedDir('folder');\n$I->deleteUploadedDir('folder', 'today');\n
"},{"location":"modules/WPFilesystem/#deleteuploadedfile","title":"deleteUploadedFile","text":"

Signature: deleteUploadedFile(string $file, [string|int|null $date]) : void

Deletes a file in the uploads folder.

The date argument can be a string compatible with strtotime or a Unix timestamp that will be used to build the Y/m uploads subfolder path.

$I->deleteUploadedFile('some-file.txt');\n$I->deleteUploadedFile('some-file.txt', 'today');\n
"},{"location":"modules/WPFilesystem/#dontseefilefound","title":"dontSeeFileFound","text":"

Signature: dontSeeFileFound(string $filename, [string $path]) : void

Checks if file does not exist in path

"},{"location":"modules/WPFilesystem/#dontseeinmupluginfile","title":"dontSeeInMuPluginFile","text":"

Signature: dontSeeInMuPluginFile(string $file, string $contents) : void

Checks that a file in a mu-plugin folder does not contain a string.

$I->dontSeeInMuPluginFile('mu-plugin1/some-file.txt', 'foo');\n
"},{"location":"modules/WPFilesystem/#dontseeinpluginfile","title":"dontSeeInPluginFile","text":"

Signature: dontSeeInPluginFile(string $file, string $contents) : void

Checks that a file in a plugin folder does not contain a string.

$I->dontSeeInPluginFile('my-plugin/some-file.txt', 'foo');\n
"},{"location":"modules/WPFilesystem/#dontseeinthemefile","title":"dontSeeInThemeFile","text":"

Signature: dontSeeInThemeFile(string $file, string $contents) : void

Checks that a file in a theme folder does not contain a string.

$I->dontSeeInThemeFile('my-theme/some-file.txt', 'foo');\n
"},{"location":"modules/WPFilesystem/#dontseeinthisfile","title":"dontSeeInThisFile","text":"

Signature: dontSeeInThisFile(string $text) : void

Checks If opened file doesn't contain text in it

<?php\n$I->openFile('composer.json');\n$I->dontSeeInThisFile('codeception/codeception');\n
"},{"location":"modules/WPFilesystem/#dontseeinuploadedfile","title":"dontSeeInUploadedFile","text":"

Signature: dontSeeInUploadedFile(string $file, string $contents, [string|int|null $date]) : void

Checks that a file in the uploads folder does contain a string.

The date argument can be a string compatible with strtotime or a Unix timestamp that will be used to build the Y/m uploads subfolder path.

<?php\n$I->dontSeeInUploadedFile('some-file.txt', 'foo');\n$I->dontSeeInUploadedFile('some-file.txt','foo', 'today');\n
"},{"location":"modules/WPFilesystem/#dontseemupluginfilefound","title":"dontSeeMuPluginFileFound","text":"

Signature: dontSeeMuPluginFileFound(string $file) : void

Checks that a file is not found in a mu-plugin folder.

$I->dontSeeMuPluginFileFound('mu-plugin1/some-file.txt');\n
"},{"location":"modules/WPFilesystem/#dontseepluginfilefound","title":"dontSeePluginFileFound","text":"

Signature: dontSeePluginFileFound(string $file) : void

Checks that a file is not found in a plugin folder.

$I->dontSeePluginFileFound('my-plugin/some-file.txt');\n
"},{"location":"modules/WPFilesystem/#dontseethemefilefound","title":"dontSeeThemeFileFound","text":"

Signature: dontSeeThemeFileFound(string $file) : void

Checks that a file is not found in a theme folder.

$I->dontSeeThemeFileFound('my-theme/some-file.txt');\n
"},{"location":"modules/WPFilesystem/#dontseeuploadedfilefound","title":"dontSeeUploadedFileFound","text":"

Signature: dontSeeUploadedFileFound(string $file, [string|int|null $date]) : void

Checks thata a file does not exist in the uploads folder.

The date argument can be a string compatible with strtotime or a Unix timestamp that will be used to build the Y/m uploads subfolder path.

$I->dontSeeUploadedFileFound('some-file.txt');\n$I->dontSeeUploadedFileFound('some-file.txt','today');\n
"},{"location":"modules/WPFilesystem/#getbloguploadspath","title":"getBlogUploadsPath","text":"

Signature: getBlogUploadsPath(int $blogId, [string $file], [DateTimeImmutable|DateTime|string|null $date]) : string

Returns the absolute path to a blog uploads folder or file.

<?php\n$blogId = $I->haveBlogInDatabase('test');\n$testTodayUploads = $I->getBlogUploadsPath($blogId);\n$testLastMonthLogs = $I->getBlogUploadsPath($blogId, '/logs', '-1 month');\n
"},{"location":"modules/WPFilesystem/#getuploadspath","title":"getUploadsPath","text":"

Signature: getUploadsPath([string $file], [mixed $date]) : string

Returns the path to the specified uploads file of folder.

Not providing a value for $file and $date will return the uploads folder path.

<?php\n$todaysPath = $I->getUploadsPath();\n$lastWeek = $I->getUploadsPath('', '-1 week');\n
"},{"location":"modules/WPFilesystem/#getwprootfolder","title":"getWpRootFolder","text":"

Signature: getWpRootFolder() : string

Returns the absolute path to WordPress root folder without trailing slash.

<?php\n$rootFolder = $I->getWpRootFolder();\n$I->assertFileExists($rootFolder . 'wp-load.php');\n
"},{"location":"modules/WPFilesystem/#havemuplugin","title":"haveMuPlugin","text":"

Signature: haveMuPlugin(string $filename, string $code) : void

Creates a mu-plugin file, including plugin header, in the mu-plugins folder.

The code can not contain the opening '<?php' tag.

$code = 'echo \"Hello world!\"';\n$I->haveMuPlugin('foo-mu-plugin.php', $code);\n// Load the code from a file.\n$code = file_get_contents(codecept_data_dir('code/mu-plugin.php'));\n$I->haveMuPlugin('foo-mu-plugin.php', $code);\n
"},{"location":"modules/WPFilesystem/#haveplugin","title":"havePlugin","text":"

Signature: havePlugin(string $path, string $code) : void

Creates a plugin file, including plugin header, in the plugins folder.

The plugin is just created and not activated; the code can not contain the opening '<?php' tag.

$code = 'echo \"Hello world!\"';\n$I->havePlugin('foo/plugin.php', $code);\n// Load the code from a file.\n$code = file_get_contents(codecept_data_dir('code/plugin.php'));\n$I->havePlugin('foo/plugin.php', $code);\n
"},{"location":"modules/WPFilesystem/#havetheme","title":"haveTheme","text":"

Signature: haveTheme(string $folder, string $indexFileCode, [string $functionsFileCode]) : void

Creates a theme file structure, including theme style file and index, in the themes folder.

The theme is just created and not activated; the code can not contain the opening '<?php' tag.

$code = 'sayHi();';\n$functionsCode  = 'function sayHi(){echo \"Hello world\";};';\n$I->haveTheme('foo', $indexCode, $functionsCode);\n// Load the code from a file.\n$indexCode = file_get_contents(codecept_data_dir('code/index.php'));\n$functionsCode = file_get_contents(codecept_data_dir('code/functions.php'));\n$I->haveTheme('foo', $indexCode, $functionsCode);\n
"},{"location":"modules/WPFilesystem/#makeuploadsdir","title":"makeUploadsDir","text":"

Signature: makeUploadsDir(string $path) : string

Creates an empty folder in the WordPress installation uploads folder.

<?php\n$logsDir = $I->makeUploadsDir('logs/acme');\n
"},{"location":"modules/WPFilesystem/#openfile","title":"openFile","text":"

Signature: openFile(string $filename) : void

Opens a file and stores it's content.

Usage:

<?php\n$I->openFile('composer.json');\n$I->seeInThisFile('codeception/codeception');\n
"},{"location":"modules/WPFilesystem/#openuploadedfile","title":"openUploadedFile","text":"

Signature: openUploadedFile(string $filename, [DateTime|string|int|null $date]) : void

Opens a file in the the uploads folder.

The date argument can be a string compatible with strtotime or a Unix timestamp that will be used to build the Y/m uploads subfolder path.

$I->openUploadedFile('some-file.txt');\n$I->openUploadedFile('some-file.txt', 'time');\n
"},{"location":"modules/WPFilesystem/#seefilecontentsequal","title":"seeFileContentsEqual","text":"

Signature: seeFileContentsEqual(string $text) : void

Checks the strict matching of file contents. Unlike seeInThisFile will fail if file has something more than expected lines. Better to use with HEREDOC strings. Matching is done after removing \"\\r\" chars from file content.

<?php\n$I->openFile('process.pid');\n$I->seeFileContentsEqual('3192');\n
"},{"location":"modules/WPFilesystem/#seefilefound","title":"seeFileFound","text":"

Signature: seeFileFound(string $filename, [string $path]) : void

Checks if file exists in path. Opens a file when it's exists

<?php\n$I->seeFileFound('UserModel.php','app/models');\n
"},{"location":"modules/WPFilesystem/#seeinmupluginfile","title":"seeInMuPluginFile","text":"

Signature: seeInMuPluginFile(string $file, string $contents) : void

Checks that a file in a mu-plugin folder contains a string.

$I->seeInMuPluginFile('mu-plugin1/some-file.txt', 'foo');\n
"},{"location":"modules/WPFilesystem/#seeinpluginfile","title":"seeInPluginFile","text":"

Signature: seeInPluginFile(string $file, string $contents) : void

Checks that a file in a plugin folder contains a string.

$I->seeInPluginFile('my-plugin/some-file.txt', 'foo');\n
"},{"location":"modules/WPFilesystem/#seeinthemefile","title":"seeInThemeFile","text":"

Signature: seeInThemeFile(string $file, string $contents) : void

Checks that a file in a theme folder contains a string.

<?php\n$I->seeInThemeFile('my-theme/some-file.txt', 'foo');\n?>\n
"},{"location":"modules/WPFilesystem/#seeinthisfile","title":"seeInThisFile","text":"

Signature: seeInThisFile(string $text) : void

Checks If opened file has text in it.

Usage:

<?php\n$I->openFile('composer.json');\n$I->seeInThisFile('codeception/codeception');\n
"},{"location":"modules/WPFilesystem/#seeinuploadedfile","title":"seeInUploadedFile","text":"

Signature: seeInUploadedFile(string $file, string $contents, [string|int|null $date]) : void

Checks that a file in the uploads folder contains a string.

The date argument can be a string compatible with strtotime or a Unix timestamp that will be used to build the Y/m uploads subfolder path.

<?php\n$I->seeInUploadedFile('some-file.txt', 'foo');\n$I->seeInUploadedFile('some-file.txt','foo', 'today');\n
"},{"location":"modules/WPFilesystem/#seemupluginfilefound","title":"seeMuPluginFileFound","text":"

Signature: seeMuPluginFileFound(string $file) : void

Checks that a file is found in a mu-plugin folder.

$I->seeMuPluginFileFound('mu-plugin1/some-file.txt');\n
"},{"location":"modules/WPFilesystem/#seenumbernewlines","title":"seeNumberNewLines","text":"

Signature: seeNumberNewLines(int $number) : void

Checks If opened file has the number of new lines.

Usage:

<?php\n$I->openFile('composer.json');\n$I->seeNumberNewLines(5);\n
"},{"location":"modules/WPFilesystem/#seepluginfilefound","title":"seePluginFileFound","text":"

Signature: seePluginFileFound(string $file) : void

Checks that a file is found in a plugin folder.

$I->seePluginFileFound('my-plugin/some-file.txt');\n
"},{"location":"modules/WPFilesystem/#seethemefilefound","title":"seeThemeFileFound","text":"

Signature: seeThemeFileFound(string $file) : void

Checks that a file is found in a theme folder.

$I->seeThemeFileFound('my-theme/some-file.txt');\n
"},{"location":"modules/WPFilesystem/#seethisfilematches","title":"seeThisFileMatches","text":"

Signature: seeThisFileMatches(string $regex) : void

Checks that contents of currently opened file matches $regex

"},{"location":"modules/WPFilesystem/#seeuploadedfilefound","title":"seeUploadedFileFound","text":"

Signature: seeUploadedFileFound(string $filename, [string|int|null $date]) : void

Checks if file exists in the uploads folder.

The date argument can be a string compatible with strtotime or a Unix timestamp that will be used to build the Y/m uploads subfolder path.

<?php\n$I->seeUploadedFileFound('some-file.txt');\n$I->seeUploadedFileFound('some-file.txt','today');\n?>\n
"},{"location":"modules/WPFilesystem/#writetofile","title":"writeToFile","text":"

Signature: writeToFile(string $filename, string $contents) : void

Saves contents to file

"},{"location":"modules/WPFilesystem/#writetomupluginfile","title":"writeToMuPluginFile","text":"

Signature: writeToMuPluginFile(string $file, string $data) : void

Writes a file in a mu-plugin folder.

$I->writeToMuPluginFile('mu-plugin1/some-file.txt', 'foo');\n
"},{"location":"modules/WPFilesystem/#writetopluginfile","title":"writeToPluginFile","text":"

Signature: writeToPluginFile(string $file, string $data) : void

Writes a file in a plugin folder.

$I->writeToPluginFile('my-plugin/some-file.txt', 'foo');\n
"},{"location":"modules/WPFilesystem/#writetothemefile","title":"writeToThemeFile","text":"

Signature: writeToThemeFile(string $file, string $data) : void

Writes a string to a file in a theme folder.

$I->writeToThemeFile('my-theme/some-file.txt', 'foo');\n
"},{"location":"modules/WPFilesystem/#writetouploadedfile","title":"writeToUploadedFile","text":"

Signature: writeToUploadedFile(string $filename, string $data, [DateTime|string|int|null $date]) : string

Writes a string to a file in the the uploads folder.

The date argument can be a string compatible with strtotime or a Unix timestamp that will be used to build the Y/m uploads subfolder path.

$I->writeToUploadedFile('some-file.txt', 'foo bar');\n$I->writeToUploadedFile('some-file.txt', 'foo bar', 'today');\n

Read more in Codeception documentation.

"},{"location":"modules/WPLoader/","title":"WPLoader","text":""},{"location":"modules/WPLoader/#wploader-module","title":"WPLoader module","text":"

A module to load WordPress and make its code available in tests.

Depending on the value of the loadOnly configuration parameter, the module will behave differently:

  • loadOnly: false - The module will load WordPress like the Core PHPUnit suite does to run integration tests in a controlled environment. Use the module in this mode with test cases generated using the generate:wpunit command.
  • loadOnly: true - The module will load WordPress to make it available in the context of tests. Use the module in this mode in Cest, Cept and Codeception unit test cases.
"},{"location":"modules/WPLoader/#configuration-with-loadonly-false","title":"Configuration with loadOnly: false","text":"

The module will load WordPress like the Core PHPUnit suite does to run integration tests in a controlled environment. Together with the test case generated by the generate:wpunit command the module will:

  • take care of running any test method in a database transaction rolled back after each test
  • manage and clean up the global environment and context between tests

When used in this mode, the module supports the following configuration parameters:

  • loadOnly - false to load WordPress and run tests in a controlled environment.
  • wpRootFolder - required; the path to the WordPress installation root folder. This can be a relative path to the codeception root directory, or an absolute path to the WordPress installation directory. The WordPress installation directory is the directory that contains the wp-load.php file.
  • dbUrl - required; the URL to the database to use to run tests. The URL must be in the form mysql://username:password@host:port/database to use a MySQL database, or in the form sqlite://path/to/database to use a SQLite database. Alternatively, you can use the dbName, dbUser, dbPassword, dbHost configuration parameters to specify the database connection details.
  • dump - the path to a database dump, or a set of database dumps, to load before running tests. The dump will be loaded only once, after the tests run.
  • tablePrefix - the database table prefix to use when loading WordPress, defaults to wp_.
  • multisite - a boolean value to indicate if WordPress should be loaded and initialized in multisite mode.
  • dbCharset - the database charset to use when loading WordPress.
  • dbCollate - the database collate to use when loading WordPress.
  • domain - the domain to use when loading WordPress. Equivalent to defining the WP_TESTS_DOMAIN constant.
  • adminEmail - the administrator email to use when loading WordPress. Equivalent to defining the WP_TESTS_EMAIL constant.
  • title - the site title to use when loading WordPress. Equivalent to defining the WP_TESTS_TITLE constant.
  • phpBinary - the path to the PHP binary to use to run tests. Defaults to the WP_PHP_BINARY constant.
  • language - the language to use when loading WordPress. Equivalent to defining the WPLANG constant.
  • configFile - a configuration file, or a set of configuration files, to load before the tests to further customize and control the WordPress testing environment.
  • pluginsFolder - the path to the plugins folder to use when loading WordPress. Equivalent to defining the WP_PLUGIN_DIR constant.
  • plugins - a list of plugins to activate and load in the WordPress installation. Each plugin must be specified in a format like hello.php or my-plugin/my-plugin.php format.
  • silentlyActivatePlugins - a list of plugins to activate silently, without firing their activation hooks. Depending on the plugin, a silent activation might cause the plugin to not work correctly. The list must be in the same format as the plugins parameter and plugin should be activated silently only if they are not working correctly during normal activation and are known to work correctly when activated silently.
  • bootstrapActions - a list of actions or callables to call after WordPress is loaded and before the tests run.
  • theme - the theme to activate and load in the WordPress installation. The theme must be specified in slug format like twentytwentythree.
  • AUTH_KEY - the AUTH_KEY constant value to use when loading WordPress. If the wpRootFolder path points at a configured installation, containing the wp-config.php file, then the value of the constant in the configuration file will be used, else it will be randomly generated.
  • SECURE_AUTH_KEY - the SECURE_AUTH_KEY constant value to use when loading WordPress. If the wpRootFolder path points at a configured installation, containing the wp-config.php file, then the value of the constant in the configuration file will be used, else it will be randomly generated.
  • LOGGED_IN_KEY - the LOGGED_IN_KEY constant value to use when loading WordPress. If the wpRootFolder path points at a configured installation, containing the wp-config.php file, then the value of the constant in the configuration file will be used, else it will be randomly generated.
  • NONCE_KEY - the NONCE_KEY constant value to use when loading WordPress. If the wpRootFolder path points at a configured installation, containing the wp-config.php file, then the value of the constant in the configuration file will be used, else it will be randomly generated.
  • AUTH_SALT - the AUTH_SALT constant value to use when loading WordPress. If the wpRootFolder path points at a configured installation, containing the wp-config.php file, then the value of the constant in the configuration file will be used, else it will be randomly generated.
  • SECURE_AUTH_SALT - the SECURE_AUTH_SALT constant value to use when loading WordPress. If the wpRootFolder path points at a configured installation, containing the wp-config.php file, then the value of the constant in the configuration file will be used, else it will be randomly generated.
  • LOGGED_IN_SALT - the LOGGED_IN_SALT constant value to use when loading WordPress. If the wpRootFolder path points at a configured installation, containing the wp-config.php file, then the value of the constant in the configuration file will be used, else it will be randomly generated.
  • NONCE_SALT - the NONCE_SALT constant value to use when loading WordPress. If the wpRootFolder path points at a configured installation, containing the wp-config.php file, then the value of the constant in the configuration file will be used, else it will be randomly generated.
  • AUTOMATIC_UPDATER_DISABLED - the AUTOMATIC_UPDATER_DISABLED constant value to use when loading WordPress. If the wpRootFolder path points at a configured installation, containing the wp-config.php file, then the value of the constant in the configuration file will be used, else it will be randomly generated.
  • WP_HTTP_BLOCK_EXTERNAL - the WP_HTTP_BLOCK_EXTERNAL constant value to use when loading WordPress. If the wpRootFolder path points at a configured installation, containing the wp-config.php file, then the value of the constant in the configuration file will be used, else it will be randomly generated.
  • backupGlobals - a boolean value to indicate if the global environment should be backed up before each test. Defaults to true. The globals' backup involves serialization of the global state, plugins or themes that define classes developed to prevent serialization of the global state will cause the tests to fail. Set this parameter to false to disable the global environment backup, or use a more refined approach setting the backupGlobalsExcludeList parameter below. Note that a test case that is explicitly setting the backupGlobals property will override this configuration parameter.
  • backupGlobalsExcludeList - a list of global variables to exclude from the global environment backup. The list must be in the form of array, and it will be merged to the list of globals excluded by default.
  • backupStaticAttributes - a boolean value to indicate if static attributes of classes should be backed up before each test. Defaults to true. The static attributes' backup involves serialization of the global state, plugins or themes that define classes developed to prevent serialization of the global state will cause the tests to fail. Set this parameter to false to disable the static attributes backup, or use a more refined approanch setting the backupStaticAttributesExcludeList parameter below. Note that a test case that is explicitly setting the backupStaticAttributes property will override this configuration parameter.
  • backupStaticAttributesExcludeList - a list of classes to exclude from the static attributes backup. The list must be in the form of map from class names to the array of method names to exclude from the backup. See an example below.
  • skipInstall - a boolean value to indicate if the WordPress installation should be skipped between runs, when already installed. Defaults to false. During boot, the WPLoader module will re-install WordPress and activate, on top of the fresh installation, any plugin and theme specified in the plugins and theme configuration parameters: this can be a time-consuming operation. Set this parameter to true to run the WordPress installation once and just load it on the following runs. To force the installation to run again, rerun the suite using the WPLoader module using the --debug flag or delete the _wploader-state.sql file in the suite directory. This configuration parameter is ignored when the loadOnly parameter is set to true.

This is an example of an integration suite configured to use the module:

actor: IntegrationTester\nbootstrap: _bootstrap.php\nmodules:\n  enabled:\n    - \\Helper\\Integration\n    - lucatume\\WPBrowser\\Module\\WPLoader:\n        wpRootFolder: /var/wordpress\n        dbUrl: mysql://root:root@mysql:3306/wordpress\n        tablePrefix: test_\n        domain: wordpress.test\n        adminEmail: admin@wordpress.test\n        title: 'Integration Tests'\n        plugins:\n          - hello.php\n          - woocommerce/woocommerce.php\n          - my-plugin/my-plugin.php\n        theme: twentytwentythree\n

The following configuration uses dynamic configuration parameters to set the module configuration:

actor: IntegrationTester\nbootstrap: _bootstrap.php\nmodules:\n  enabled:\n    - \\Helper\\Integration\n    - lucatume\\WPBrowser\\Module\\WPLoader:\n        wpRootFolder: '%WP_ROOT_FOLDER%'\n        dbUrl: '%WP_DB_URL%'\n        tablePrefix: '%WP_TABLE_PREFIX%'\n        domain: '%WP_DOMAIN%'\n        adminEmail: '%WP_ADMIN_EMAIL%'\n        title: '%WP_TITLE%'\n        plugins:\n          - hello.php\n          - woocommerce/woocommerce.php\n          - my-plugin/my-plugin.php\n        theme: twentytwentythree\n

The following example configuration uses a SQLite database and loads a database fixture before the tests run:

actor: IntegrationTester\nbootstrap: _bootstrap.php\nmodules:\n  enabled:\n    - \\Helper\\Integration\n    - lucatume\\WPBrowser\\Module\\WPLoader:\n        wpRootFolder: /var/wordpress\n        dbUrl: sqlite:///var/wordpress/wp-tests.sqlite\n        dump:\n          - tests/_data/products.sql\n          - tests/_data/users.sql\n          - tests/_data/orders.sql\n        tablePrefix: test_\n        domain: wordpress.test\n        adminEmail: admin@wordpress.test\n        title: 'Integration Tests'\n        plugins:\n          - hello.php\n          - woocommerce/woocommerce.php\n          - my-plugin/my-plugin.php\n        theme: twentytwentythree\n

The follow example configuration prevents the backup of globals and static attributes in all the tests of the suite that are not explicitly overriding the backupGlobals and backupStaticAttributes properties:

actor: IntegrationTester\nbootstrap: _bootstrap.php\nmodules:\n  enabled:\n    - \\Helper\\Integration\n    - lucatume\\WPBrowser\\Module\\WPLoader:\n        wpRootFolder: /var/wordpress\n        dbUrl: sqlite:///var/wordpress/wp-tests.sqlite\n        dump:\n          - tests/_data/products.sql\n          - tests/_data/users.sql\n          - tests/_data/orders.sql\n        tablePrefix: test_\n        domain: wordpress.test\n        adminEmail: admin@wordpress.test\n        title: 'Integration Tests'\n        plugins:\n          - hello.php\n          - woocommerce/woocommerce.php\n          - my-plugin/my-plugin.php\n        theme: twentytwentythree\n        backupGlobals: false\n        backupStaticAttributes: false \n

The following configuration prevents the backup of some globals and static attributes:

actor: IntegrationTester\nbootstrap: _bootstrap.php\nmodules:\n  enabled:\n    - \\Helper\\Integration\n    - lucatume\\WPBrowser\\Module\\WPLoader:\n        wpRootFolder: /var/wordpress\n        dbUrl: sqlite:///var/wordpress/wp-tests.sqlite\n        dump:\n          - tests/_data/products.sql\n          - tests/_data/users.sql\n          - tests/_data/orders.sql\n        tablePrefix: test_\n        domain: wordpress.test\n        adminEmail: admin@wordpress.test\n        title: 'Integration Tests'\n        plugins:\n          - hello.php\n          - woocommerce/woocommerce.php\n          - my-plugin/my-plugin.php\n        theme: twentytwentythree\n        backupGlobalsExcludeList:\n          - my_plugin_will_explode_on_wakeup\n          - another_problematic_global\n        backupStaticAttributesExcludeList:\n          - MyPlugin\\MyClass:\n              - instance\n              - anotherStaticAttributeThatWillExplodeOnWakeup\n          - AnotherPlugin\\AnotherClass:\n                - instance\n                - yetAnotherStaticAttributeThatWillExplodeOnWakeup\n
"},{"location":"modules/WPLoader/#handling-a-custom-site-structure","title":"Handling a custom site structure","text":"

If you're working on a site project using a custom file structure, e.g. Bedrock, you should use a custom configuration and, together with that, configure the WPLoader module to load WordPress, plugins and themes code from the correct locations. Take care to point the wpRootFolder parameter to the directory containing the wp-load.php file, the /var/my-site/web/wp one in the following example, and the module will read the project configuration file to load the WordPress code from the correct location.

Here's an example of how the module should be configured to run integration tests on a Bedrock installation:

actor: IntegrationTester\nbootstrap: _bootstrap.php\nmodules:\n  enabled:\n    - \\Helper\\Integration\n    - lucatume\\WPBrowser\\Module\\WPLoader:\n        wpRootFolder: /var/my-site/web/wp\n        dbUrl: mysql://root:root@mysql:3306/wordpress\n        tablePrefix: test_\n        domain: my-project.test\n        adminEmail: admin@my-project.test\n        title: 'Integration Tests'\n        plugins:\n          - hello.php\n          - woocommerce/woocommerce.php\n          - my-plugin/my-plugin.php\n        theme: twentytwentythree\n

In general, pointing the wpRootFolder parameter to the directory containing the wp-load.php file should take care of loading WordPress code from the correct location. Should that not be the case, use the configFile parameter to point the module to the project test configuration file: a PHP file defining the constants and environment variables to use to load WordPress, plugins and themes correctly.

"},{"location":"modules/WPLoader/#configuration-with-loadonly-true","title":"Configuration with loadOnly: true","text":"

The module will load WordPress from the location specified by the wpRootFodler parameter, relying on the WPDb module to manage the database state.

When used in this mode, the module supports the following configuration parameters:

  • loadOnly - true to load WordPress and make it available in the context of tests.
  • wpRootFolder - required; the path to the WordPress installation root folder. This can be a relative path to the codeception root directory, or an absolute path to the WordPress installation directory. The WordPress installation directory is the directory that contains the wp-load.php file.
  • dbUrl - required; the URL to the database to use to run tests. The URL must be in the form mysql://username:password@host:port/database to use a MySQL database, or in the form sqlite://path/to/database to use a SQLite database. Alternatively, you can use the dbName, dbUser, dbPassword, dbHost configuration parameters to specify the database connection details.
  • domain - the domain to use when loading WordPress. Equivalent to defining the WP_TESTS_DOMAIN constant.

The following is an example of the module configuration to run end-to-end tests on the site served at http://localhost:8080 URL and served from the /var/wordpress directory:

actor: EndToEndTester\nbootstrap: _bootstrap.php\nmodules:\n  enabled:\n    - \\Helper\\Integration\n    - lucatume\\WPBrowser\\Module\\WPWebDriver:\n        url: 'http://localhost:8080'\n        adminUsername: 'admin'\n        adminPassword: 'password'\n        adminPath: '/wp-admin'\n        browser: chrome\n        host: 'localhost'\n        port: '4444'\n        path: '/'\n        window_size: false\n        capabilities:\n          \"goog:chromeOptions\":\n            args:\n              - \"--headless\"\n              - \"--disable-gpu\"\n              - \"--disable-dev-shm-usage\"\n              - \"--proxy-server='direct://'\"\n              - \"--proxy-bypass-list=*\"\n              - \"--no-sandbox\"\n    - lucatume\\WPBrowser\\Module\\WPDb:\n        dbUrl: 'mysql://root:password@localhost:3306/wordpress'\n        url: 'http://localhost:8080'\n        tablePrefix: 'wp_'\n        dump: 'tests/_data/dump.sql'\n        populate: true\n        cleanup: true\n        reconnect: false\n        urlReplacement: true\n        originalUrl: http://wordpress.test\n        waitlock: 10\n        createIfNotExists: true\n    - lucatume\\WPBrowser\\Module\\WPLoader:\n        loadOnly: true\n        wpRootFolder: /var/wordpress\n        dbUrl: 'mysql://root:password@localhost:3306/wordpress'\n        domain: wordpress.test\n
"},{"location":"modules/WPLoader/#methods","title":"Methods","text":"

The module provides the following methods:

"},{"location":"modules/WPLoader/#factory","title":"factory","text":"

Signature: factory() : lucatume\\WPBrowser\\Module\\WPLoader\\FactoryStore

Accessor method to get the object storing the factories for things. This method gives access to the same factories provided by the Core test suite.

"},{"location":"modules/WPLoader/#getcontentfolder","title":"getContentFolder","text":"

Signature: getContentFolder([string $path]) : string

Returns the absolute path to the WordPress content directory.

"},{"location":"modules/WPLoader/#getinstallation","title":"getInstallation","text":"

Signature: getInstallation() : lucatume\\WPBrowser\\WordPress\\Installation

"},{"location":"modules/WPLoader/#getpluginsfolder","title":"getPluginsFolder","text":"

Signature: getPluginsFolder([string $path]) : string

Returns the absolute path to the plugins directory.

The value will first look at the WP_PLUGIN_DIR constant, then the pluginsFolder configuration parameter and will, finally, look in the default path from the WordPress root directory.

"},{"location":"modules/WPLoader/#getthemesfolder","title":"getThemesFolder","text":"

Signature: getThemesFolder([string $path]) : string

Returns the absolute path to the themes directory.

"},{"location":"modules/WPLoader/#getwprootfolder","title":"getWpRootFolder","text":"

Signature: getWpRootFolder([?string $path]) : string

Returns the absolute path to the WordPress root folder or a path within it..

"},{"location":"modules/WPQueries/","title":"WPQueries","text":""},{"location":"modules/WPQueries/#wpqueries-module","title":"WPQueries module","text":"

This module provides assertions for WordPress queries.

This module can be used in any test context where the global $wpdb variable is defined, this usually means in any suite where the WPLoader module is used.

"},{"location":"modules/WPQueries/#configuration","title":"Configuration","text":"

The method does not require configuration.

"},{"location":"modules/WPQueries/#methods","title":"Methods","text":"

The module provides the following methods:

"},{"location":"modules/WPQueries/#assertcountqueries","title":"assertCountQueries","text":"

Signature: assertCountQueries(int $n, [string $message]) : void

Asserts that n queries have been made.

<?php\n$posts = $this->factory()->post->create_many(3);\n$cachedUsers = $this->factory()->user->create_many(2);\n$nonCachedUsers = $this->factory()->user->create_many(2);\nforeach($cachedUsers as $userId){\n     wp_cache_set('page-posts-for-user-' . $userId, $posts, 'acme');\n}\n// Run the same query as different users\nforeach(array_merge($cachedUsers, $nonCachedUsers) as $userId){\n     $pagePosts = $plugin->getPagePostsForUser($userId);\n}\n$I->assertCountQueries(2, 'A query should be made for each user missing cached posts.')\n
"},{"location":"modules/WPQueries/#assertnotqueries","title":"assertNotQueries","text":"

Signature: assertNotQueries([string $message]) : void

Asserts that no queries were made.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\n$posts = $this->factory()->post->create_many(3);\nwp_cache_set('page-posts', $posts, 'acme');\n$pagePosts = $plugin->getPagePosts();\n$I->assertNotQueries('Queries should not be made if the cache is set.')\n
"},{"location":"modules/WPQueries/#assertnotqueriesbyaction","title":"assertNotQueriesByAction","text":"

Signature: assertNotQueriesByAction(string $action, [string $message]) : void

Asserts that no queries were made as a consequence of the specified action.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nadd_action( 'edit_post', function($postId){\n        $count = get_option('acme_title_updates_count');\n        update_option('acme_title_updates_count', ++$count);\n} );\nwp_delete_post($bookId);\n$this->assertNotQueriesByAction('edit_post');\n
"},{"location":"modules/WPQueries/#assertnotqueriesbyfilter","title":"assertNotQueriesByFilter","text":"

Signature: assertNotQueriesByFilter(string $filter, [string $message]) : void

Asserts that no queries were made as a consequence of the specified filter.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nadd_filter('the_title', function($title, $postId){\n     $post = get_post($postId);\n     if($post->post_type !== 'book'){\n         return $title;\n     }\n     $new = get_option('acme_new_prefix');\n     return \"{$new} - \" . $title;\n});\n$title = apply_filters('the_title', get_post($notABookId)->post_title, $notABookId);\n$this->assertNotQueriesByFilter('the_title');\n
"},{"location":"modules/WPQueries/#assertnotqueriesbyfunction","title":"assertNotQueriesByFunction","text":"

Signature: assertNotQueriesByFunction(string $function, [string $message]) : void

Asserts that no queries were made by the specified function.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\n$this->assertEmpty(Acme\\get_orphaned_posts());\nAcme\\delete_orphaned_posts();\n$this->assertNotQueriesByFunction('Acme\\delete_orphaned_posts');\n
"},{"location":"modules/WPQueries/#assertnotqueriesbymethod","title":"assertNotQueriesByMethod","text":"

Signature: assertNotQueriesByMethod(string $class, string $method, [string $message]) : void

Asserts that no queries have been made by the specified class method.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\n$options = new Acme\\Options();\n$options->update('adsSource', 'not-a-real-url.org');\n$I->assertNotQueriesByMethod('Acme\\Options', 'update');\n
"},{"location":"modules/WPQueries/#assertnotqueriesbystatement","title":"assertNotQueriesByStatement","text":"

Signature: assertNotQueriesByStatement(string $statement, [string $message]) : void

Asserts that no queries have been made by the specified class method.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\n$bookRepository = new Acme\\BookRepository();\n$repository->where('ID', 23)->set('title', 'Peter Pan', $deferred = true);\n$this->assertNotQueriesByStatement('INSERT', 'Deferred write should happen on __destruct');\n
"},{"location":"modules/WPQueries/#assertnotqueriesbystatementandaction","title":"assertNotQueriesByStatementAndAction","text":"

Signature: assertNotQueriesByStatementAndAction(string $statement, string $action, [string $message]) : void

Asserts that no queries were made as a consequence of the specified action containing the SQL query.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nadd_action( 'edit_post', function($postId){\n        $count = get_option('acme_title_updates_count');\n        update_option('acme_title_updates_count', ++$count);\n} );\nwp_delete_post($bookId);\n$this->assertNotQueriesByStatementAndAction('DELETE', 'delete_post');\n
"},{"location":"modules/WPQueries/#assertnotqueriesbystatementandfilter","title":"assertNotQueriesByStatementAndFilter","text":"

Signature: assertNotQueriesByStatementAndFilter(string $statement, string $filter, [string $message]) : void

Asserts that no queries were made as a consequence of the specified filter containing the specified SQL query.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nadd_filter('the_title', function($title, $postId){\n     $post = get_post($postId);\n     if($post->post_type !== 'book'){\n         return $title;\n     }\n     $new = get_option('acme_new_prefix');\n     return \"{$new} - \" . $title;\n});\n$title = apply_filters('the_title', get_post($notABookId)->post_title, $notABookId);\n$this->assertNotQueriesByStatementAndFilter('SELECT', 'the_title');\n
"},{"location":"modules/WPQueries/#assertnotqueriesbystatementandfunction","title":"assertNotQueriesByStatementAndFunction","text":"

Signature: assertNotQueriesByStatementAndFunction(string $statement, string $function, [string $message]) : void

Asserts that no queries were made by the specified function starting with the specified SQL statement.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nwp_insert_post(['ID' => $bookId, 'post_title' => 'The Call of the Wild']);\n$this->assertNotQueriesByStatementAndFunction('INSERT', 'wp_insert_post');\n$this->assertQueriesByStatementAndFunction('UPDATE', 'wp_insert_post');\n
"},{"location":"modules/WPQueries/#assertnotqueriesbystatementandmethod","title":"assertNotQueriesByStatementAndMethod","text":"

Signature: assertNotQueriesByStatementAndMethod(string $statement, string $class, string $method, [string $message]) : void

Asserts that no queries were made by the specified class method starting with the specified SQL statement.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nAcme\\BookRepository::new(['title' => 'Alice in Wonderland'])->commit();\n$this->assertQueriesByStatementAndMethod('INSERT', Acme\\BookRepository::class, 'commit');\n
"},{"location":"modules/WPQueries/#assertqueries","title":"assertQueries","text":"

Signature: assertQueries([string $message]) : void

Asserts that at least one query was made during the test.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nwp_cache_delete('page-posts', 'acme');\n$pagePosts = $plugin->getPagePosts();\n$I->assertQueries('Queries should be made to set the cache.')\n
"},{"location":"modules/WPQueries/#assertqueriesbyaction","title":"assertQueriesByAction","text":"

Signature: assertQueriesByAction(string $action, [string $message]) : void

Asserts that at least one query was made as a consequence of the specified action.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nadd_action( 'edit_post', function($postId){\n        $count = get_option('acme_title_updates_count');\n        update_option('acme_title_updates_count', ++$count);\n} );\nwp_update_post(['ID' => $bookId, 'post_title' => 'New Title']);\n$this->assertQueriesByAction('edit_post');\n
"},{"location":"modules/WPQueries/#assertqueriesbyfilter","title":"assertQueriesByFilter","text":"

Signature: assertQueriesByFilter(string $filter, [string $message]) : void

Asserts that at least one query was made as a consequence of the specified filter.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nadd_filter('the_title', function($title, $postId){\n     $post = get_post($postId);\n     if($post->post_type !== 'book'){\n         return $title;\n     }\n     $new = get_option('acme_new_prefix');\n     return \"{$new} - \" . $title;\n});\n$title = apply_filters('the_title', get_post($bookId)->post_title, $bookId);\n$this->assertQueriesByFilter('the_title');\n
"},{"location":"modules/WPQueries/#assertqueriesbyfunction","title":"assertQueriesByFunction","text":"

Signature: assertQueriesByFunction(string $function, [string $message]) : void

Asserts that queries were made by the specified function.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nacme_clean_queue();\n$this->assertQueriesByFunction('acme_clean_queue');\n
"},{"location":"modules/WPQueries/#assertqueriesbymethod","title":"assertQueriesByMethod","text":"

Signature: assertQueriesByMethod(string $class, string $method, [string $message]) : void

Asserts that at least one query has been made by the specified class method.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\n$options = new Acme\\Options();\n$options->update('showAds', false);\n$I->assertQueriesByMethod('Acme\\Options', 'update');\n
"},{"location":"modules/WPQueries/#assertqueriesbystatement","title":"assertQueriesByStatement","text":"

Signature: assertQueriesByStatement(string $statement, [string $message]) : void

Asserts that at least a query starting with the specified statement was made.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nwp_cache_flush();\ncached_get_posts($args);\n$I->assertQueriesByStatement('SELECT');\n
"},{"location":"modules/WPQueries/#assertqueriesbystatementandaction","title":"assertQueriesByStatementAndAction","text":"

Signature: assertQueriesByStatementAndAction(string $statement, string $action, [string $message]) : void

Asserts that at least one query was made as a consequence of the specified action containing the SQL query.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nadd_action( 'edit_post', function($postId){\n        $count = get_option('acme_title_updates_count');\n        update_option('acme_title_updates_count', ++$count);\n} );\nwp_update_post(['ID' => $bookId, 'post_title' => 'New']);\n$this->assertQueriesByStatementAndAction('UPDATE', 'edit_post');\n
"},{"location":"modules/WPQueries/#assertqueriesbystatementandfilter","title":"assertQueriesByStatementAndFilter","text":"

Signature: assertQueriesByStatementAndFilter(string $statement, string $filter, [string $message]) : void

Asserts that at least one query was made as a consequence of the specified filter containing the SQL query.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nadd_filter('the_title', function($title, $postId){\n     $post = get_post($postId);\n     if($post->post_type !== 'book'){\n         return $title;\n     }\n     $new = get_option('acme_new_prefix');\n     return \"{$new} - \" . $title;\n});\n$title = apply_filters('the_title', get_post($bookId)->post_title, $bookId);\n$this->assertQueriesByStatementAndFilter('SELECT', 'the_title');\n
"},{"location":"modules/WPQueries/#assertqueriesbystatementandfunction","title":"assertQueriesByStatementAndFunction","text":"

Signature: assertQueriesByStatementAndFunction(string $statement, string $function, [string $message]) : void

Asserts that queries were made by the specified function starting with the specified SQL statement.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nwp_insert_post(['post_type' => 'book', 'post_title' => 'Alice in Wonderland']);\n$this->assertQueriesByStatementAndFunction('INSERT', 'wp_insert_post');\n
"},{"location":"modules/WPQueries/#assertqueriesbystatementandmethod","title":"assertQueriesByStatementAndMethod","text":"

Signature: assertQueriesByStatementAndMethod(string $statement, string $class, string $method, [string $message]) : void

Asserts that queries were made by the specified class method starting with the specified SQL statement.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nAcme\\BookRepository::new(['title' => 'Alice in Wonderland'])->commit();\n$this->assertQueriesByStatementAndMethod('UPDATE', Acme\\BookRepository::class, 'commit');\n
"},{"location":"modules/WPQueries/#assertqueriescountbyaction","title":"assertQueriesCountByAction","text":"

Signature: assertQueriesCountByAction(int $n, string $action, [string $message]) : void

Asserts that n queries were made as a consequence of the specified action.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nadd_action( 'edit_post', function($postId){\n        $count = get_option('acme_title_updates_count');\n        update_option('acme_title_updates_count', ++$count);\n} );\nwp_update_post(['ID' => $bookOneId, 'post_title' => 'One']);\nwp_update_post(['ID' => $bookTwoId, 'post_title' => 'Two']);\nwp_update_post(['ID' => $bookThreeId, 'post_title' => 'Three']);\n$this->assertQueriesCountByAction(3, 'edit_post');\n
"},{"location":"modules/WPQueries/#assertqueriescountbyfilter","title":"assertQueriesCountByFilter","text":"

Signature: assertQueriesCountByFilter(int $n, string $filter, [string $message]) : void

Asserts that n queries were made as a consequence of the specified filter.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nadd_filter('the_title', function($title, $postId){\n     $post = get_post($postId);\n     if($post->post_type !== 'book'){\n         return $title;\n     }\n     $new = get_option('acme_new_prefix');\n     return \"{$new} - \" . $title;\n});\n$title = apply_filters('the_title', get_post($bookOneId)->post_title, $bookOneId);\n$title = apply_filters('the_title', get_post($notABookId)->post_title, $notABookId);\n$title = apply_filters('the_title', get_post($bookTwoId)->post_title, $bookTwoId);\n$this->assertQueriesCountByFilter(2, 'the_title');\n
"},{"location":"modules/WPQueries/#assertqueriescountbyfunction","title":"assertQueriesCountByFunction","text":"

Signature: assertQueriesCountByFunction(int $n, string $function, [string $message]) : void

Asserts that n queries were made by the specified function.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\n$this->assertCount(3, Acme\\get_orphaned_posts());\nAcme\\delete_orphaned_posts();\n$this->assertQueriesCountByFunction(3, 'Acme\\delete_orphaned_posts');\n
"},{"location":"modules/WPQueries/#assertqueriescountbymethod","title":"assertQueriesCountByMethod","text":"

Signature: assertQueriesCountByMethod(int $n, string $class, string $method, [string $message]) : void

Asserts that n queries have been made by the specified class method.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\n$bookRepository = new Acme\\BookRepository();\n$repository->where('ID', 23)->commit('title', 'Peter Pan');\n$repository->where('ID', 89)->commit('title', 'Moby-dick');\n$repository->where('ID', 2389)->commit('title', 'The call of the wild');\n$this->assertQueriesCountByMethod(3, 'Acme\\BookRepository', 'commit');\n
"},{"location":"modules/WPQueries/#assertqueriescountbystatement","title":"assertQueriesCountByStatement","text":"

Signature: assertQueriesCountByStatement(int $n, string $statement, [string $message]) : void

Asserts that n queries starting with the specified statement were made.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\n$bookRepository = new Acme\\BookRepository();\n$repository->where('ID', 23)->set('title', 'Peter Pan', $deferred = true);\n$repository->where('ID', 89)->set('title', 'Moby-dick', $deferred = true);\n$repository->where('ID', 2389)->set('title', 'The call of the wild', $deferred = false);\n$this->assertQueriesCountByStatement(1, 'INSERT', 'Deferred write should happen on __destruct');\n
"},{"location":"modules/WPQueries/#assertqueriescountbystatementandaction","title":"assertQueriesCountByStatementAndAction","text":"

Signature: assertQueriesCountByStatementAndAction(int $n, string $statement, string $action, [string $message]) : void

Asserts that n queries were made as a consequence of the specified action containing the specified SQL statement.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nadd_action( 'edit_post', function($postId){\n        $count = get_option('acme_title_updates_count');\n        update_option('acme_title_updates_count', ++$count);\n} );\nwp_delete_post($bookOneId);\nwp_delete_post($bookTwoId);\nwp_update_post(['ID' => $bookThreeId, 'post_title' => 'New']);\n$this->assertQueriesCountByStatementAndAction(2, 'DELETE', 'delete_post');\n$this->assertQueriesCountByStatementAndAction(1, 'INSERT', 'edit_post');\n
"},{"location":"modules/WPQueries/#assertqueriescountbystatementandfilter","title":"assertQueriesCountByStatementAndFilter","text":"

Signature: assertQueriesCountByStatementAndFilter(int $n, string $statement, string $filter, [string $message]) : void

Asserts that n queries were made as a consequence of the specified filter containing the specified SQL statement.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nadd_filter('the_title', function($title, $postId){\n     $post = get_post($postId);\n     if($post->post_type !== 'book'){\n         return $title;\n     }\n     $new = get_option('acme_new_prefix');\n     return \"{$new} - \" . $title;\n});\n// Warm up the cache.\n$title = apply_filters('the_title', get_post($bookOneId)->post_title, $bookOneId);\n// Cache is warmed up now.\n$title = apply_filters('the_title', get_post($bookTwoId)->post_title, $bookTwoId);\n$title = apply_filters('the_title', get_post($bookThreeId)->post_title, $bookThreeId);\n$this->assertQueriesCountByStatementAndFilter(1, 'SELECT', 'the_title');\n
"},{"location":"modules/WPQueries/#assertqueriescountbystatementandfunction","title":"assertQueriesCountByStatementAndFunction","text":"

Signature: assertQueriesCountByStatementAndFunction(int $n, string $statement, string $function, [string $message]) : void

Asserts that n queries were made by the specified function starting with the specified SQL statement.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nwp_insert_post(['post_type' => 'book', 'post_title' => 'The Call of the Wild']);\nwp_insert_post(['post_type' => 'book', 'post_title' => 'Alice in Wonderland']);\nwp_insert_post(['post_type' => 'book', 'post_title' => 'The Chocolate Factory']);\n$this->assertQueriesCountByStatementAndFunction(3, 'INSERT', 'wp_insert_post');\n
"},{"location":"modules/WPQueries/#assertqueriescountbystatementandmethod","title":"assertQueriesCountByStatementAndMethod","text":"

Signature: assertQueriesCountByStatementAndMethod(int $n, string $statement, string $class, string $method, [string $message]) : void

Asserts that n queries were made by the specified class method starting with the specified SQL statement.

Queries generated by setUp, tearDown and factory methods are excluded by default.

<?php\nAcme\\BookRepository::new(['title' => 'Alice in Wonderland'])->commit();\nAcme\\BookRepository::new(['title' => 'Moby-Dick'])->commit();\nAcme\\BookRepository::new(['title' => 'The Call of the Wild'])->commit();\n$this->assertQueriesCountByStatementAndMethod(3, 'INSERT', Acme\\BookRepository::class, 'commit');\n
"},{"location":"modules/WPQueries/#countqueries","title":"countQueries","text":"

Signature: countQueries([?wpdb $wpdb]) : int

Returns the current number of queries. Set-up and tear-down queries performed by the test case are filtered out.

<?php\n// In a WPTestCase, using the global $wpdb object.\n$queriesCount = $this->queries()->countQueries();\n// In a WPTestCase, using a custom $wpdb object.\n$queriesCount = $this->queries()->countQueries($customWdbb);\n
"},{"location":"modules/WPQueries/#getqueries","title":"getQueries","text":"

Signature: getQueries([?wpdb $wpdb]) : array

Returns the queries currently performed by the global database object or the specified one. Set-up and tear-down queries performed by the test case are filtered out.

<?php\n// In a WPTestCase, using the global $wpdb object.\n$queries = $this->queries()->getQueries();\n// In a WPTestCase, using a custom $wpdb object.\n$queries = $this->queries()->getQueries($customWdbb);\n
"},{"location":"modules/WPWebDriver/","title":"WPWebDriver","text":""},{"location":"modules/WPWebDriver/#wpwebdriver-module","title":"WPWebDriver module","text":"

This module drives a browser using a solution like Selenium or Chromedriver to simulate user interactions with the WordPress project.

The module has full Javascript support, differently from the WPBrowser module, and can be used to test sites that use Javascript to render the page or to make assertions that require Javascript support.

The method extends the Codeception WebDriver module and is used in the context of Cest and Cept test cases.

"},{"location":"modules/WPWebDriver/#configuration","title":"Configuration","text":"
  • browser - the browser to use; e.g. 'chrome'
  • host - the host to use; e.g. 'localhost'. This is the host of the Selenium server or the Chromedriver server.
  • port - the port to use; e.g. '4444'. This is the port of the Selenium server or the Chromedriver server.
  • path - the path to use; e.g. '/wd/hub' or '/'. Use '/' for Chrome.
  • url - required; the start URL of your WordPress project.
  • adminUsername - required; the site administrator username to use in actions like loginAsAdmin.
  • adminPassword - required; the site administrator password to use in actions like loginAsAdmin.
  • adminPath - the path to the WordPress admin directory; defaults to /wp-admin.

More configuration options, and their explanation, are available in the Codeception WebDriver module documentation.

The following is an example of the module configuration to run tests on thehttp://localhost:8080 site:

modules:\n  enabled:\n    lucatume\\WPBrowser\\Module\\WPBrowser:\n      url: 'http://localhost:8080'\n      adminUsername: 'admin'\n      adminPassword: 'password'\n      adminPath: '/wp-admin'\n      browser: chrome\n      host: 'localhost'\n      port: '4444'\n      path: '/'\n      window_size: false\n      capabilities:\n        \"goog:chromeOptions\":\n          args:\n            - \"--headless\"\n            - \"--disable-gpu\"\n            - \"--disable-dev-shm-usage\"\n            - \"--proxy-server='direct://'\"\n            - \"--proxy-bypass-list=*\"\n            - \"--no-sandbox\"\n

The following configuration uses dynamic configuration parameters to set the module configuration:

modules:\n  enabled:\n    lucatume\\WPBrowser\\Module\\WPBrowser:\n      url: 'http://localhost:8080'\n      adminUsername: 'admin'\n      adminPassword: 'password'\n      adminPath: '/wp-admin'\n      browser: chrome\n      host: '%CHROME_HOST%'\n      port: '%CHROME_PORT%'\n      path: '/'\n      window_size: `1920,1080`\n      capabilities:\n        \"goog:chromeOptions\":\n          args:\n            - \"--headless\"\n            - \"--disable-gpu\"\n            - \"--disable-dev-shm-usage\"\n            - \"--proxy-server='direct://'\"\n            - \"--proxy-bypass-list=*\"\n            - \"--no-sandbox\"\n

Furthermore, the above configuration will not run Chrome in headless mode: the browser window will be visible.

"},{"location":"modules/WPWebDriver/#methods","title":"Methods","text":"

The module provides the following methods:

"},{"location":"modules/WPWebDriver/#acceptpopup","title":"acceptPopup","text":"

Signature: acceptPopup() : void

Accepts the active JavaScript native popup window, as created by window.alert|window.confirm|window.prompt. Don't confuse popups with modal windows, as created by various libraries.

"},{"location":"modules/WPWebDriver/#activateplugin","title":"activatePlugin","text":"

Signature: activatePlugin(array|string $pluginSlug) : void

In the plugin administration screen activates one or more plugins clicking the \"Activate\" link.

The method will not handle authentication and navigation to the plugins administration page.

<?php\n// Activate a plugin.\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->activatePlugin('hello-dolly');\n// Activate a list of plugins.\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->activatePlugin(['hello-dolly','another-plugin']);\n
"},{"location":"modules/WPWebDriver/#activatetheme","title":"activateTheme","text":"

Signature: activateTheme(string $slug) : void

Activates a theme.

The method will not handle authentication and navigation to the themes administration page.

"},{"location":"modules/WPWebDriver/#ameditingpostwithid","title":"amEditingPostWithId","text":"

Signature: amEditingPostWithId(int $id) : void

Go to the admin page to edit the post with the specified ID.

The method will not handle authentication the admin area.

<?php\n$I->loginAsAdmin();\n$postId = $I->havePostInDatabase();\n$I->amEditingPostWithId($postId);\n$I->fillField('post_title', 'Post title');\n
"},{"location":"modules/WPWebDriver/#ameditinguserwithid","title":"amEditingUserWithId","text":"

Signature: amEditingUserWithId(int $id) : void

Go to the admin page to edit the user with the specified ID.

The method will not handle authentication the admin area.

<?php\n$I->loginAsAdmin();\n$userId = $I->haveUserInDatabase('luca', 'editor');\n$I->amEditingUserWithId($userId);\n$I->fillField('email', 'new@example.net');\n
"},{"location":"modules/WPWebDriver/#amonadminajaxpage","title":"amOnAdminAjaxPage","text":"

Signature: amOnAdminAjaxPage([array|string|null $queryVars]) : void

Go to the admin-ajax.php page to start a synchronous, and blocking, GET AJAX request.

The method will not handle authentication, nonces or authorization.

<?php\n$I->amOnAdminAjaxPage(['action' => 'my-action', 'data' => ['id' => 23], 'nonce' => $nonce]);\n
"},{"location":"modules/WPWebDriver/#amonadminpage","title":"amOnAdminPage","text":"

Signature: amOnAdminPage(string $page) : void

Go to a page in the admininstration area of the site.

This method will not handle authentication to the administration area.

<?php\n$I->loginAs('user', 'password');\n// Go to the plugins management screen.\n$I->amOnAdminPage('/plugins.php');\n
"},{"location":"modules/WPWebDriver/#amoncronpage","title":"amOnCronPage","text":"

Signature: amOnCronPage([array|string|null $queryVars]) : void

Go to the cron page to start a synchronous, and blocking, GET request to the cron script.

<?php\n// Triggers the cron job with an optional query argument.\n$I->amOnCronPage('/?some-query-var=some-value');\n
"},{"location":"modules/WPWebDriver/#amonpage","title":"amOnPage","text":"

Signature: amOnPage($page) : void

"},{"location":"modules/WPWebDriver/#amonpagespage","title":"amOnPagesPage","text":"

Signature: amOnPagesPage() : void

Go the \"Pages\" administration screen.

The method will not handle authentication.

<?php\n$I->loginAsAdmin();\n$I->amOnPagesPage();\n$I->see('Add New');\n
"},{"location":"modules/WPWebDriver/#amonpluginspage","title":"amOnPluginsPage","text":"

Signature: amOnPluginsPage() : void

Go to the plugins administration screen.

The method will not handle authentication.

<?php\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->activatePlugin('hello-dolly');\n
"},{"location":"modules/WPWebDriver/#amonsubdomain","title":"amOnSubdomain","text":"

Signature: amOnSubdomain(string $subdomain) : void

"},{"location":"modules/WPWebDriver/#amonthemespage","title":"amOnThemesPage","text":"

Signature: amOnThemesPage() : void

Moves to the themes administration page.

"},{"location":"modules/WPWebDriver/#amonurl","title":"amOnUrl","text":"

Signature: amOnUrl($url) : void

"},{"location":"modules/WPWebDriver/#appendfield","title":"appendField","text":"

Signature: appendField($field, string $value) : void

Append the given text to the given element. Can also add a selection to a select box.

<?php\n$I->appendField('#mySelectbox', 'SelectValue');\n$I->appendField('#myTextField', 'appended');\n
"},{"location":"modules/WPWebDriver/#attachfile","title":"attachFile","text":"

Signature: attachFile($field, string $filename) : void

"},{"location":"modules/WPWebDriver/#cancelpopup","title":"cancelPopup","text":"

Signature: cancelPopup() : void

Dismisses the active JavaScript popup, as created by window.alert, window.confirm, or window.prompt.

"},{"location":"modules/WPWebDriver/#checkoption","title":"checkOption","text":"

Signature: checkOption($option) : void

"},{"location":"modules/WPWebDriver/#clearfield","title":"clearField","text":"

Signature: clearField($field) : void

Clears given field which isn't empty.

<?php\n$I->clearField('#username');\n
"},{"location":"modules/WPWebDriver/#click","title":"click","text":"

Signature: click($link, [$context]) : void

"},{"location":"modules/WPWebDriver/#clickwithleftbutton","title":"clickWithLeftButton","text":"

Signature: clickWithLeftButton([$cssOrXPath], [?int $offsetX], [?int $offsetY]) : void

Performs click with the left mouse button on an element. If the first parameter null then the offset is relative to the actual mouse position. If the second and third parameters are given, then the mouse is moved to an offset of the element's top-left corner. Otherwise, the mouse is moved to the center of the element.

<?php\n$I->clickWithLeftButton(['css' => '.checkout']);\n$I->clickWithLeftButton(null, 20, 50);\n$I->clickWithLeftButton(['css' => '.checkout'], 20, 50);\n
"},{"location":"modules/WPWebDriver/#clickwithrightbutton","title":"clickWithRightButton","text":"

Signature: clickWithRightButton([$cssOrXPath], [?int $offsetX], [?int $offsetY]) : void

Performs contextual click with the right mouse button on an element. If the first parameter null then the offset is relative to the actual mouse position. If the second and third parameters are given, then the mouse is moved to an offset of the element's top-left corner. Otherwise, the mouse is moved to the center of the element.

<?php\n$I->clickWithRightButton(['css' => '.checkout']);\n$I->clickWithRightButton(null, 20, 50);\n$I->clickWithRightButton(['css' => '.checkout'], 20, 50);\n
"},{"location":"modules/WPWebDriver/#closetab","title":"closeTab","text":"

Signature: closeTab() : void

Closes current browser tab and switches to previous active tab.

<?php\n$I->closeTab();\n
"},{"location":"modules/WPWebDriver/#deactivateplugin","title":"deactivatePlugin","text":"

Signature: deactivatePlugin(array|string $pluginSlug) : void

In the plugin administration screen deactivate a plugin clicking the \"Deactivate\" link.

The method will not handle authentication and navigation to the plugins administration page.

<?php\n// Deactivate one plugin.\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->deactivatePlugin('hello-dolly');\n// Deactivate a list of plugins.\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->deactivatePlugin(['hello-dolly', 'my-plugin']);\n
"},{"location":"modules/WPWebDriver/#debugwebdriverlogs","title":"debugWebDriverLogs","text":"

Signature: debugWebDriverLogs([?Codeception\\TestInterface $test]) : void

Print out latest Selenium Logs in debug mode

"},{"location":"modules/WPWebDriver/#deletesessionsnapshot","title":"deleteSessionSnapshot","text":"

Signature: deleteSessionSnapshot($name) : void

"},{"location":"modules/WPWebDriver/#dontsee","title":"dontSee","text":"

Signature: dontSee($text, [$selector]) : void

"},{"location":"modules/WPWebDriver/#dontseecheckboxischecked","title":"dontSeeCheckboxIsChecked","text":"

Signature: dontSeeCheckboxIsChecked($checkbox) : void

"},{"location":"modules/WPWebDriver/#dontseecookie","title":"dontSeeCookie","text":"

Signature: dontSeeCookie($cookie, [array $params], [bool $showDebug]) : void

"},{"location":"modules/WPWebDriver/#dontseecurrenturlequals","title":"dontSeeCurrentUrlEquals","text":"

Signature: dontSeeCurrentUrlEquals(string $uri) : void

"},{"location":"modules/WPWebDriver/#dontseecurrenturlmatches","title":"dontSeeCurrentUrlMatches","text":"

Signature: dontSeeCurrentUrlMatches(string $uri) : void

"},{"location":"modules/WPWebDriver/#dontseeelement","title":"dontSeeElement","text":"

Signature: dontSeeElement($selector, [array $attributes]) : void

"},{"location":"modules/WPWebDriver/#dontseeelementindom","title":"dontSeeElementInDOM","text":"

Signature: dontSeeElementInDOM($selector, [array $attributes]) : void

Opposite of seeElementInDOM.

"},{"location":"modules/WPWebDriver/#dontseeincurrenturl","title":"dontSeeInCurrentUrl","text":"

Signature: dontSeeInCurrentUrl(string $uri) : void

"},{"location":"modules/WPWebDriver/#dontseeinfield","title":"dontSeeInField","text":"

Signature: dontSeeInField($field, $value) : void

"},{"location":"modules/WPWebDriver/#dontseeinformfields","title":"dontSeeInFormFields","text":"

Signature: dontSeeInFormFields($formSelector, array $params) : void

"},{"location":"modules/WPWebDriver/#dontseeinpagesource","title":"dontSeeInPageSource","text":"

Signature: dontSeeInPageSource(string $text) : void

Checks that the page source doesn't contain the given string.

"},{"location":"modules/WPWebDriver/#dontseeinpopup","title":"dontSeeInPopup","text":"

Signature: dontSeeInPopup(string $text) : void

Checks that the active JavaScript popup, as created by window.alert|window.confirm|window.prompt, does NOT contain the given string.

"},{"location":"modules/WPWebDriver/#dontseeinsource","title":"dontSeeInSource","text":"

Signature: dontSeeInSource($raw) : void

"},{"location":"modules/WPWebDriver/#dontseeintitle","title":"dontSeeInTitle","text":"

Signature: dontSeeInTitle($title) : void

"},{"location":"modules/WPWebDriver/#dontseelink","title":"dontSeeLink","text":"

Signature: dontSeeLink(string $text, [string $url]) : void

"},{"location":"modules/WPWebDriver/#dontseeoptionisselected","title":"dontSeeOptionIsSelected","text":"

Signature: dontSeeOptionIsSelected($selector, $optionText) : void

"},{"location":"modules/WPWebDriver/#dontseeplugininstalled","title":"dontSeePluginInstalled","text":"

Signature: dontSeePluginInstalled(string $pluginSlug) : void

Assert a plugin is not installed in the plugins administration screen.

The method will not handle authentication and navigation to the plugin administration screen.

<?php\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->dontSeePluginInstalled('my-plugin');\n
"},{"location":"modules/WPWebDriver/#doubleclick","title":"doubleClick","text":"

Signature: doubleClick($cssOrXPath) : void

Performs a double click on an element matched by CSS or XPath.

"},{"location":"modules/WPWebDriver/#draganddrop","title":"dragAndDrop","text":"

Signature: dragAndDrop($source, $target) : void

Performs a simple mouse drag-and-drop operation.

<?php\n$I->dragAndDrop('#drag', '#drop');\n
"},{"location":"modules/WPWebDriver/#executeasyncjs","title":"executeAsyncJS","text":"

Signature: executeAsyncJS(string $script, [array $arguments]) : void

Executes asynchronous JavaScript. A callback should be executed by JavaScript to exit from a script. Callback is passed as a last element in arguments array. Additional arguments can be passed as array in second parameter.

// wait for 1200 milliseconds my running `setTimeout`\n* $I->executeAsyncJS('setTimeout(arguments[0], 1200)');\n\n$seconds = 1200; // or seconds are passed as argument\n$I->executeAsyncJS('setTimeout(arguments[1], arguments[0])', [$seconds]);\n
"},{"location":"modules/WPWebDriver/#executeinselenium","title":"executeInSelenium","text":"

Signature: executeInSelenium(Closure $function) : void

Low-level API method. If Codeception commands are not enough, this allows you to use Selenium WebDriver methods directly:

$I->executeInSelenium(function(\\Facebook\\WebDriver\\Remote\\RemoteWebDriver $webdriver) {\n  $webdriver->get('https://google.com');\n});\n

This runs in the context of the RemoteWebDriver class. Try not to use this command on a regular basis. If Codeception lacks a feature you need, please implement it and submit a patch.

"},{"location":"modules/WPWebDriver/#executejs","title":"executeJS","text":"

Signature: executeJS(string $script, [array $arguments]) : void

Executes custom JavaScript.

This example uses jQuery to get a value and assigns that value to a PHP variable:

<?php\n$myVar = $I->executeJS('return $(\"#myField\").val()');\n\n// additional arguments can be passed as array\n// Example shows `Hello World` alert:\n$I->executeJS(\"window.alert(arguments[0])\", ['Hello world']);\n
"},{"location":"modules/WPWebDriver/#fillfield","title":"fillField","text":"

Signature: fillField($field, $value) : void

"},{"location":"modules/WPWebDriver/#grabactivetheme","title":"grabActiveTheme","text":"

Signature: grabActiveTheme() : ?string

Returns the slug of the currently active themes.

The method will not handle authentication and navigation to the themes administration page.

"},{"location":"modules/WPWebDriver/#grabattributefrom","title":"grabAttributeFrom","text":"

Signature: grabAttributeFrom($cssOrXpath, $attribute) : ?string

"},{"location":"modules/WPWebDriver/#grabavailablethemes","title":"grabAvailableThemes","text":"

Signature: grabAvailableThemes([string $classes]) : array

Returns the list of available themes.

The method will not handle authentication and navigation to the themes administration page.

"},{"location":"modules/WPWebDriver/#grabcookie","title":"grabCookie","text":"

Signature: grabCookie($cookie, [array $params]) : mixed

"},{"location":"modules/WPWebDriver/#grabcookieswithpattern","title":"grabCookiesWithPattern","text":"

Signature: grabCookiesWithPattern(string $cookiePattern) : ?array

Returns all the cookies whose name matches a regex pattern.

<?php\n$I->loginAs('customer','password');\n$I->amOnPage('/shop');\n$cartCookies = $I->grabCookiesWithPattern(\"#^shop_cart\\\\.*#\");\n
"},{"location":"modules/WPWebDriver/#grabfromcurrenturl","title":"grabFromCurrentUrl","text":"

Signature: grabFromCurrentUrl([$uri]) : mixed

"},{"location":"modules/WPWebDriver/#grabfullurl","title":"grabFullUrl","text":"

Signature: grabFullUrl() : string

Grabs the current page full URL including the query vars.

<?php\n$today = date('Y-m-d');\n$I->amOnPage('/concerts?date=' . $today);\n$I->assertRegExp('#\\\\/concerts$#', $I->grabFullUrl());\n
"},{"location":"modules/WPWebDriver/#grabmultiple","title":"grabMultiple","text":"

Signature: grabMultiple($cssOrXpath, [$attribute]) : array

"},{"location":"modules/WPWebDriver/#grabpagesource","title":"grabPageSource","text":"

Signature: grabPageSource() : string

Grabs current page source code.

"},{"location":"modules/WPWebDriver/#grabtextfrom","title":"grabTextFrom","text":"

Signature: grabTextFrom($cssOrXPathOrRegex) : mixed

"},{"location":"modules/WPWebDriver/#grabvaluefrom","title":"grabValueFrom","text":"

Signature: grabValueFrom($field) : ?string

"},{"location":"modules/WPWebDriver/#grabwordpresstestcookie","title":"grabWordPressTestCookie","text":"

Signature: grabWordPressTestCookie([?string $name]) : ?Symfony\\Component\\BrowserKit\\Cookie

Returns WordPress default test cookie object if present.

<?php\n// Grab the default WordPress test cookie.\n$wpTestCookie = $I->grabWordPressTestCookie();\n// Grab a customized version of the test cookie.\n$myTestCookie = $I->grabWordPressTestCookie('my_test_cookie');\n
"},{"location":"modules/WPWebDriver/#loadsessionsnapshot","title":"loadSessionSnapshot","text":"

Signature: loadSessionSnapshot($name, [bool $showDebug]) : bool

"},{"location":"modules/WPWebDriver/#logout","title":"logOut","text":"

Signature: logOut([string|bool $redirectTo]) : void

Navigate to the default WordPress logout page and click the logout link.

<?php\n// Log out using the `wp-login.php` form and return to the current page.\n$I->logOut(true);\n// Log out using the `wp-login.php` form and remain there.\n$I->logOut(false);\n// Log out using the `wp-login.php` form and move to another page.\n$I->logOut('/some-other-page');\n
"},{"location":"modules/WPWebDriver/#loginas","title":"loginAs","text":"

Signature: loginAs(string $username, string $password, [int $timeout], [int $maxAttempts]) : void

Login as the specified user.

The method will not follow redirection, after the login, to any page. Depending on the driven browser the login might be \"too fast\" and the server might have not replied with valid cookies yet; in that case the method will re-attempt the login to obtain the cookies.

<?php\n$I->loginAs('user', 'password');\n$I->amOnAdminPage('/');\n$I->see('Dashboard');\n
"},{"location":"modules/WPWebDriver/#loginasadmin","title":"loginAsAdmin","text":"

Signature: loginAsAdmin([int $timeout], [int $maxAttempts]) : void

Login as the administrator user using the credentials specified in the module configuration.

The method will not follow redirection, after the login, to any page.

<?php\n$I->loginAsAdmin();\n$I->amOnAdminPage('/');\n$I->see('Dashboard');\n
"},{"location":"modules/WPWebDriver/#makeelementscreenshot","title":"makeElementScreenshot","text":"

Signature: makeElementScreenshot($selector, [?string $name]) : void

Takes a screenshot of an element of the current window and saves it to tests/_output/debug.

<?php\n$I->amOnPage('/user/edit');\n$I->makeElementScreenshot('#dialog', 'edit_page');\n// saved to: tests/_output/debug/edit_page.png\n$I->makeElementScreenshot('#dialog');\n// saved to: tests/_output/debug/2017-05-26_14-24-11_4b3403665fea6.png\n
"},{"location":"modules/WPWebDriver/#makehtmlsnapshot","title":"makeHtmlSnapshot","text":"

Signature: makeHtmlSnapshot([?string $name]) : void

"},{"location":"modules/WPWebDriver/#makescreenshot","title":"makeScreenshot","text":"

Signature: makeScreenshot([?string $name]) : void

Takes a screenshot of the current window and saves it to tests/_output/debug.

<?php\n$I->amOnPage('/user/edit');\n$I->makeScreenshot('edit_page');\n// saved to: tests/_output/debug/edit_page.png\n$I->makeScreenshot();\n// saved to: tests/_output/debug/2017-05-26_14-24-11_4b3403665fea6.png\n
"},{"location":"modules/WPWebDriver/#maximizewindow","title":"maximizeWindow","text":"

Signature: maximizeWindow() : void

Maximizes the current window.

"},{"location":"modules/WPWebDriver/#moveback","title":"moveBack","text":"

Signature: moveBack() : void

Moves back in history.

"},{"location":"modules/WPWebDriver/#moveforward","title":"moveForward","text":"

Signature: moveForward() : void

Moves forward in history.

"},{"location":"modules/WPWebDriver/#movemouseover","title":"moveMouseOver","text":"

Signature: moveMouseOver([$cssOrXPath], [?int $offsetX], [?int $offsetY]) : void

Move mouse over the first element matched by the given locator. If the first parameter null then the page is used. If the second and third parameters are given, then the mouse is moved to an offset of the element's top-left corner. Otherwise, the mouse is moved to the center of the element.

<?php\n$I->moveMouseOver(['css' => '.checkout']);\n$I->moveMouseOver(null, 20, 50);\n$I->moveMouseOver(['css' => '.checkout'], 20, 50);\n
"},{"location":"modules/WPWebDriver/#opennewtab","title":"openNewTab","text":"

Signature: openNewTab() : void

Opens a new browser tab and switches to it.

<?php\n$I->openNewTab();\n
The tab is opened with JavaScript's window.open(), which means: * Some ad-blockers might restrict it. * The sessionStorage is copied to the new tab (contrary to a tab that was manually opened by the user)

"},{"location":"modules/WPWebDriver/#performon","title":"performOn","text":"

Signature: performOn($element, $actions, [int $timeout]) : void

Waits for element and runs a sequence of actions inside its context. Actions can be defined with array, callback, or Codeception\\Util\\ActionSequence instance.

Actions as array are recommended for simple to combine \"waitForElement\" with assertions; waitForElement($el) and see('text', $el) can be simplified to:

<?php\n$I->performOn($el, ['see' => 'text']);\n

List of actions can be pragmatically build using Codeception\\Util\\ActionSequence:

<?php\n$I->performOn('.model', ActionSequence::build()\n    ->see('Warning')\n    ->see('Are you sure you want to delete this?')\n    ->click('Yes')\n);\n

Actions executed from array or ActionSequence will print debug output for actions, and adds an action name to exception on failure.

Whenever you need to define more actions a callback can be used. A WebDriver module is passed for argument:

<?php\n$I->performOn('.rememberMe', function (WebDriver $I) {\n     $I->see('Remember me next time');\n     $I->seeElement('#LoginForm_rememberMe');\n     $I->dontSee('Login');\n});\n

In 3rd argument you can set number a seconds to wait for element to appear

"},{"location":"modules/WPWebDriver/#presskey","title":"pressKey","text":"

Signature: pressKey($element, [...$chars]) : void

Presses the given key on the given element. To specify a character and modifier (e.g. Ctrl, Alt, Shift, Meta), pass an array for $char with the modifier as the first element and the character as the second. For special keys, use the constants from Facebook\\WebDriver\\WebDriverKeys.

<?php\n// <input id=\"page\" value=\"old\" />\n$I->pressKey('#page','a'); // => olda\n$I->pressKey('#page',array('ctrl','a'),'new'); //=> new\n$I->pressKey('#page',array('shift','111'),'1','x'); //=> old!!!1x\n$I->pressKey('descendant-or-self::*[@id='page']','u'); //=> oldu\n$I->pressKey('#name', array('ctrl', 'a'), \\Facebook\\WebDriver\\WebDriverKeys::DELETE); //=>''\n
"},{"location":"modules/WPWebDriver/#reloadpage","title":"reloadPage","text":"

Signature: reloadPage() : void

Reloads the current page.

"},{"location":"modules/WPWebDriver/#resetcookie","title":"resetCookie","text":"

Signature: resetCookie($cookie, [array $params], [bool $showDebug]) : void

"},{"location":"modules/WPWebDriver/#resizewindow","title":"resizeWindow","text":"

Signature: resizeWindow(int $width, int $height) : void

Resize the current window.

<?php\n$I->resizeWindow(800, 600);\n
"},{"location":"modules/WPWebDriver/#savesessionsnapshot","title":"saveSessionSnapshot","text":"

Signature: saveSessionSnapshot($name) : void

"},{"location":"modules/WPWebDriver/#scrollto","title":"scrollTo","text":"

Signature: scrollTo($selector, [?int $offsetX], [?int $offsetY]) : void

Move to the middle of the given element matched by the given locator. Extra shift, calculated from the top-left corner of the element, can be set by passing $offsetX and $offsetY parameters.

<?php\n$I->scrollTo(['css' => '.checkout'], 20, 50);\n
"},{"location":"modules/WPWebDriver/#see","title":"see","text":"

Signature: see($text, [$selector]) : void

"},{"location":"modules/WPWebDriver/#seecheckboxischecked","title":"seeCheckboxIsChecked","text":"

Signature: seeCheckboxIsChecked($checkbox) : void

"},{"location":"modules/WPWebDriver/#seecookie","title":"seeCookie","text":"

Signature: seeCookie($cookie, [array $params], [bool $showDebug]) : void

"},{"location":"modules/WPWebDriver/#seecurrenturlequals","title":"seeCurrentUrlEquals","text":"

Signature: seeCurrentUrlEquals(string $uri) : void

"},{"location":"modules/WPWebDriver/#seecurrenturlmatches","title":"seeCurrentUrlMatches","text":"

Signature: seeCurrentUrlMatches(string $uri) : void

"},{"location":"modules/WPWebDriver/#seeelement","title":"seeElement","text":"

Signature: seeElement($selector, [array $attributes]) : void

"},{"location":"modules/WPWebDriver/#seeelementindom","title":"seeElementInDOM","text":"

Signature: seeElementInDOM($selector, [array $attributes]) : void

Checks that the given element exists on the page, even it is invisible.

<?php\n$I->seeElementInDOM('//form/input[type=hidden]');\n
"},{"location":"modules/WPWebDriver/#seeerrormessage","title":"seeErrorMessage","text":"

Signature: seeErrorMessage([array|string $classes]) : void

In an administration screen look for an error admin notice.

The check is class-based to decouple from internationalization. The method will not handle authentication and navigation the administration area.

<?php\n$I->loginAsAdmin()\n$I->amOnAdminPage('/');\n$I->seeErrorMessage('.my-plugin');\n
"},{"location":"modules/WPWebDriver/#seeincurrenturl","title":"seeInCurrentUrl","text":"

Signature: seeInCurrentUrl(string $uri) : void

"},{"location":"modules/WPWebDriver/#seeinfield","title":"seeInField","text":"

Signature: seeInField($field, $value) : void

"},{"location":"modules/WPWebDriver/#seeinformfields","title":"seeInFormFields","text":"

Signature: seeInFormFields($formSelector, array $params) : void

"},{"location":"modules/WPWebDriver/#seeinpagesource","title":"seeInPageSource","text":"

Signature: seeInPageSource(string $text) : void

Checks that the page source contains the given string.

<?php\n$I->seeInPageSource('<link rel=\"apple-touch-icon\"');\n
"},{"location":"modules/WPWebDriver/#seeinpopup","title":"seeInPopup","text":"

Signature: seeInPopup(string $text) : void

Checks that the active JavaScript popup, as created by window.alert|window.confirm|window.prompt, contains the given string.

"},{"location":"modules/WPWebDriver/#seeinsource","title":"seeInSource","text":"

Signature: seeInSource($raw) : void

"},{"location":"modules/WPWebDriver/#seeintitle","title":"seeInTitle","text":"

Signature: seeInTitle($title) : void

"},{"location":"modules/WPWebDriver/#seelink","title":"seeLink","text":"

Signature: seeLink(string $text, [?string $url]) : void

"},{"location":"modules/WPWebDriver/#seemessage","title":"seeMessage","text":"

Signature: seeMessage([array|string $classes]) : void

In an administration screen look for an admin notice.

The check is class-based to decouple from internationalization. The method will not handle authentication and navigation the administration area.

<?php\n$I->loginAsAdmin()\n$I->amOnAdminPage('/');\n$I->seeMessage('.missing-api-token.my-plugin');\n
"},{"location":"modules/WPWebDriver/#seenumberofelements","title":"seeNumberOfElements","text":"

Signature: seeNumberOfElements($selector, $expected) : void

"},{"location":"modules/WPWebDriver/#seenumberofelementsindom","title":"seeNumberOfElementsInDOM","text":"

Signature: seeNumberOfElementsInDOM($selector, $expected) : void

"},{"location":"modules/WPWebDriver/#seenumberoftabs","title":"seeNumberOfTabs","text":"

Signature: seeNumberOfTabs(int $number) : void

Checks current number of opened tabs

<?php\n$I->seeNumberOfTabs(2);\n
"},{"location":"modules/WPWebDriver/#seeoptionisselected","title":"seeOptionIsSelected","text":"

Signature: seeOptionIsSelected($selector, $optionText) : void

"},{"location":"modules/WPWebDriver/#seepluginactivated","title":"seePluginActivated","text":"

Signature: seePluginActivated(string $pluginSlug) : void

Assert a plugin is activated in the plugin administration screen.

The method will not handle authentication and navigation to the plugin administration screen.

<?php\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->seePluginActivated('my-plugin');\n
"},{"location":"modules/WPWebDriver/#seeplugindeactivated","title":"seePluginDeactivated","text":"

Signature: seePluginDeactivated(string $pluginSlug) : void

Assert a plugin is not activated in the plugins administration screen.

The method will not handle authentication and navigation to the plugin administration screen.

<?php\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->seePluginDeactivated('my-plugin');\n
"},{"location":"modules/WPWebDriver/#seeplugininstalled","title":"seePluginInstalled","text":"

Signature: seePluginInstalled(string $pluginSlug) : void

Assert a plugin is installed, no matter its activation status, in the plugin administration screen.

The method will not handle authentication and navigation to the plugin administration screen.

<?php\n$I->loginAsAdmin();\n$I->amOnPluginsPage();\n$I->seePluginInstalled('my-plugin');\n
"},{"location":"modules/WPWebDriver/#seethemeactivated","title":"seeThemeActivated","text":"

Signature: seeThemeActivated(string $slug) : void

Verifies that a theme is active.

The method will not handle authentication and navigation to the themes administration page.

"},{"location":"modules/WPWebDriver/#seewpdiepage","title":"seeWpDiePage","text":"

Signature: seeWpDiePage() : void

Checks that the current page is one generated by the wp_die function.

The method will try to identify the page based on the default WordPress die page HTML attributes.

<?php\n$I->loginAs('user', 'password');\n$I->amOnAdminPage('/forbidden');\n$I->seeWpDiePage();\n
"},{"location":"modules/WPWebDriver/#selectoption","title":"selectOption","text":"

Signature: selectOption($select, $option) : void

"},{"location":"modules/WPWebDriver/#setcookie","title":"setCookie","text":"

Signature: setCookie($name, $value, [array $params], [$showDebug]) : void

"},{"location":"modules/WPWebDriver/#submitform","title":"submitForm","text":"

Signature: submitForm($selector, array $params, [$button]) : void

Submits the given form on the page, optionally with the given form values. Give the form fields values as an array. Note that hidden fields can't be accessed.

Skipped fields will be filled by their values from the page. You don't need to click the 'Submit' button afterwards. This command itself triggers the request to form's action.

You can optionally specify what button's value to include in the request with the last parameter as an alternative to explicitly setting its value in the second parameter, as button values are not otherwise included in the request.

Examples:

<?php\n$I->submitForm('#login', [\n    'login' => 'davert',\n    'password' => '123456'\n]);\n// or\n$I->submitForm('#login', [\n    'login' => 'davert',\n    'password' => '123456'\n], 'submitButtonName');\n

For example, given this sample \"Sign Up\" form:

<form action=\"/sign_up\">\n    Login:\n    <input type=\"text\" name=\"user[login]\" /><br/>\n    Password:\n    <input type=\"password\" name=\"user[password]\" /><br/>\n    Do you agree to our terms?\n    <input type=\"checkbox\" name=\"user[agree]\" /><br/>\n    Select pricing plan:\n    <select name=\"plan\">\n        <option value=\"1\">Free</option>\n        <option value=\"2\" selected=\"selected\">Paid</option>\n    </select>\n    <input type=\"submit\" name=\"submitButton\" value=\"Submit\" />\n</form>\n

You could write the following to submit it:

<?php\n$I->submitForm(\n    '#userForm',\n    [\n        'user[login]' => 'Davert',\n        'user[password]' => '123456',\n        'user[agree]' => true\n    ],\n    'submitButton'\n);\n
Note that \"2\" will be the submitted value for the \"plan\" field, as it is the selected option.

Also note that this differs from PhpBrowser, in that 'user' => [ 'login' => 'Davert' ] is not supported at the moment. Named array keys must be included in the name as above.

Pair this with seeInFormFields for quick testing magic.

<?php\n$form = [\n     'field1' => 'value',\n     'field2' => 'another value',\n     'checkbox1' => true,\n     // ...\n];\n$I->submitForm('//form[@id=my-form]', $form, 'submitButton');\n// $I->amOnPage('/path/to/form-page') may be needed\n$I->seeInFormFields('//form[@id=my-form]', $form);\n

Parameter values must be set to arrays for multiple input fields of the same name, or multi-select combo boxes. For checkboxes, either the string value can be used, or boolean values which will be replaced by the checkbox's value in the DOM.

<?php\n$I->submitForm('#my-form', [\n     'field1' => 'value',\n     'checkbox' => [\n         'value of first checkbox',\n         'value of second checkbox',\n     ],\n     'otherCheckboxes' => [\n         true,\n         false,\n         false,\n     ],\n     'multiselect' => [\n         'first option value',\n         'second option value',\n     ]\n]);\n

Mixing string and boolean values for a checkbox's value is not supported and may produce unexpected results.

Field names ending in \"[]\" must be passed without the trailing square bracket characters, and must contain an array for its value. This allows submitting multiple values with the same name, consider:

<?php\n$I->submitForm('#my-form', [\n    'field[]' => 'value',\n    'field[]' => 'another value', // 'field[]' is already a defined key\n]);\n

The solution is to pass an array value:

<?php\n// this way both values are submitted\n$I->submitForm('#my-form', [\n    'field' => [\n        'value',\n        'another value',\n    ]\n]);\n

The $button parameter can be either a string, an array or an instance of Facebook\\WebDriver\\WebDriverBy. When it is a string, the button will be found by its \"name\" attribute. If $button is an array then it will be treated as a strict selector and a WebDriverBy will be used verbatim.

For example, given the following HTML:

<input type=\"submit\" name=\"submitButton\" value=\"Submit\" />\n

$button could be any one of the following: - 'submitButton' - ['name' => 'submitButton'] - WebDriverBy::name('submitButton')

"},{"location":"modules/WPWebDriver/#switchtoframe","title":"switchToFrame","text":"

Signature: switchToFrame([?string $locator]) : void

Switch to another frame on the page.

Example:

<frame name=\"another_frame\" id=\"fr1\" src=\"https://example.com\">\n

<?php\n# switch to frame by name\n$I->switchToFrame(\"another_frame\");\n# switch to frame by CSS or XPath\n$I->switchToFrame(\"#fr1\");\n# switch to parent page\n$I->switchToFrame();\n
"},{"location":"modules/WPWebDriver/#switchtoiframe","title":"switchToIFrame","text":"

Signature: switchToIFrame([?string $locator]) : void

Switch to another iframe on the page.

Example:

<iframe name=\"another_frame\" id=\"fr1\" src=\"https://example.com\">\n

<?php\n# switch to iframe by name\n$I->switchToIFrame(\"another_frame\");\n# switch to iframe by CSS or XPath\n$I->switchToIFrame(\"#fr1\");\n# switch to parent page\n$I->switchToIFrame();\n
"},{"location":"modules/WPWebDriver/#switchtonexttab","title":"switchToNextTab","text":"

Signature: switchToNextTab([int $offset]) : void

Switches to next browser tab. An offset can be specified.

<?php\n// switch to next tab\n$I->switchToNextTab();\n// switch to 2nd next tab\n$I->switchToNextTab(2);\n
"},{"location":"modules/WPWebDriver/#switchtoprevioustab","title":"switchToPreviousTab","text":"

Signature: switchToPreviousTab([int $offset]) : void

Switches to previous browser tab. An offset can be specified.

<?php\n// switch to previous tab\n$I->switchToPreviousTab();\n// switch to 2nd previous tab\n$I->switchToPreviousTab(2);\n
"},{"location":"modules/WPWebDriver/#switchtowindow","title":"switchToWindow","text":"

Signature: switchToWindow([?string $name]) : void

Switch to another window identified by name.

The window can only be identified by name. If the $name parameter is blank, the parent window will be used.

Example:

<input type=\"button\" value=\"Open window\" onclick=\"window.open('https://example.com', 'another_window')\">\n

<?php\n$I->click(\"Open window\");\n# switch to another window\n$I->switchToWindow(\"another_window\");\n# switch to parent window\n$I->switchToWindow();\n

If the window has no name, match it by switching to next active tab using switchToNextTab method.

Or use native Selenium functions to get access to all opened windows:

<?php\n$I->executeInSelenium(function (\\Facebook\\WebDriver\\Remote\\RemoteWebDriver $webdriver) {\n     $handles=$webdriver->getWindowHandles();\n     $last_window = end($handles);\n     $webdriver->switchTo()->window($last_window);\n});\n
"},{"location":"modules/WPWebDriver/#type","title":"type","text":"

Signature: type(string $text, [int $delay]) : void

Type in characters on active element. With a second parameter you can specify delay between key presses.

<?php\n// activate input element\n$I->click('#input');\n\n// type text in active element\n$I->type('Hello world');\n\n// type text with a 1sec delay between chars\n$I->type('Hello World', 1);\n

This might be useful when you an input reacts to typing and you need to slow it down to emulate human behavior. For instance, this is how Credit Card fields can be filled in.

"},{"location":"modules/WPWebDriver/#typeinpopup","title":"typeInPopup","text":"

Signature: typeInPopup(string $keys) : void

Enters text into a native JavaScript prompt popup, as created by window.prompt.

"},{"location":"modules/WPWebDriver/#uncheckoption","title":"uncheckOption","text":"

Signature: uncheckOption($option) : void

"},{"location":"modules/WPWebDriver/#unselectoption","title":"unselectOption","text":"

Signature: unselectOption($select, $option) : void

Unselect an option in the given select box.

"},{"location":"modules/WPWebDriver/#wait","title":"wait","text":"

Signature: wait($timeout) : void

Wait for $timeout seconds.

"},{"location":"modules/WPWebDriver/#waitforelement","title":"waitForElement","text":"

Signature: waitForElement($element, [int $timeout]) : void

Waits up to $timeout seconds for an element to appear on the page. If the element doesn't appear, a timeout exception is thrown.

<?php\n$I->waitForElement('#agree_button', 30); // secs\n$I->click('#agree_button');\n
"},{"location":"modules/WPWebDriver/#waitforelementchange","title":"waitForElementChange","text":"

Signature: waitForElementChange($element, Closure $callback, [int $timeout]) : void

Waits up to $timeout seconds for the given element to change. Element \"change\" is determined by a callback function which is called repeatedly until the return value evaluates to true.

<?php\nuse \\Facebook\\WebDriver\\WebDriverElement\n$I->waitForElementChange('#menu', function(WebDriverElement $el) {\n    return $el->isDisplayed();\n}, 100);\n
"},{"location":"modules/WPWebDriver/#waitforelementclickable","title":"waitForElementClickable","text":"

Signature: waitForElementClickable($element, [int $timeout]) : void

Waits up to $timeout seconds for the given element to be clickable. If element doesn't become clickable, a timeout exception is thrown.

<?php\n$I->waitForElementClickable('#agree_button', 30); // secs\n$I->click('#agree_button');\n
"},{"location":"modules/WPWebDriver/#waitforelementnotvisible","title":"waitForElementNotVisible","text":"

Signature: waitForElementNotVisible($element, [int $timeout]) : void

Waits up to $timeout seconds for the given element to become invisible. If element stays visible, a timeout exception is thrown.

<?php\n$I->waitForElementNotVisible('#agree_button', 30); // secs\n
"},{"location":"modules/WPWebDriver/#waitforelementvisible","title":"waitForElementVisible","text":"

Signature: waitForElementVisible($element, [int $timeout]) : void

Waits up to $timeout seconds for the given element to be visible on the page. If element doesn't appear, a timeout exception is thrown.

<?php\n$I->waitForElementVisible('#agree_button', 30); // secs\n$I->click('#agree_button');\n
"},{"location":"modules/WPWebDriver/#waitforjs","title":"waitForJS","text":"

Signature: waitForJS(string $script, [int $timeout]) : void

Executes JavaScript and waits up to $timeout seconds for it to return true.

In this example we will wait up to 60 seconds for all jQuery AJAX requests to finish.

<?php\n$I->waitForJS(\"return $.active == 0;\", 60);\n
"},{"location":"modules/WPWebDriver/#waitforjqueryajax","title":"waitForJqueryAjax","text":"

Signature: waitForJqueryAjax([int $time]) : void

Waits for any jQuery triggered AJAX request to be resolved.

<?php\n$I->amOnPage('/triggering-ajax-requests');\n$I->waitForJqueryAjax();\n$I->see('From AJAX');\n
"},{"location":"modules/WPWebDriver/#waitfortext","title":"waitForText","text":"

Signature: waitForText(string $text, [int $timeout], [$selector]) : void

Waits up to $timeout seconds for the given string to appear on the page.

Can also be passed a selector to search in, be as specific as possible when using selectors. waitForText() will only watch the first instance of the matching selector / text provided. If the given text doesn't appear, a timeout exception is thrown.

<?php\n$I->waitForText('foo', 30); // secs\n$I->waitForText('foo', 30, '.title'); // secs\n

Read more in Codeception documentation.

"},{"location":"v3/","title":"Welcome","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

The wp-browser project provides a Codeception based solution to test WordPress plugins, themes and whole sites at all levels of testing.

The purpose of this documentation is to help you set up, run and iterate over your project and test code using the powerful APIs provided by Codeception while trying to alleviate the pains of setting it up for WordPress projects.

Throughout the documentation you will find references to test terminology: I've tried to condense those into small, digestable chunks to provide a rough idea without and a limited context; where required I tried to provide links to dive deeper into the subjects.

Happy testing!

"},{"location":"v3/codeception-4-support/","title":"Using wp-browser with Codeception 4.0","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/codeception-4-support/#using-wp-browser-with-codeception-40","title":"Using wp-browser with Codeception 4.0","text":"

Codeception version 4.0 introduced a number of new features to the framework and it's the version of wp-browser that will be maintained from now on.

I've made an effort to keep wp-browser compatible with PHP 5.6 and Codeception versions from 2.5 up.

One the biggest changes of Codeception version 4.0 is that modules have been broken out into separate packages. To use wp-browser with Codeception 4.0 all you need to do is to add this to your project composer.json file:

{\n  \"require-dev\": {\n    \"lucatume/wp-browser\": \"^2.4\",\n    \"codeception/module-asserts\": \"^1.0\",\n    \"codeception/module-phpbrowser\": \"^1.0\",\n    \"codeception/module-webdriver\": \"^1.0\",\n    \"codeception/module-db\": \"^1.0\",\n    \"codeception/module-filesystem\": \"^1.0\",\n    \"codeception/module-cli\": \"^1.0\",\n    \"codeception/util-universalframework\": \"^1.0\"\n  }\n}\n

You might not need all the modules listed here, depending on the wp-browser modules you use in your test suites. This is a scheme of what Codeception modules you will need for which wp-browser module to help you choose only the required modules:

  • \"codeception/module-asserts\" - Required for Codeception 4.0 compatibility.
  • \"codeception/module-phpbrowser\" - Required by the WPBrowser module.
  • \"codeception/module-webdriver\" - Required by the WPWebDriver module.
  • \"codeception/module-db\" - Required by the WPDb module.
  • \"codeception/module-filesystem\" - Required by the WPFilesystem module.
  • \"codeception/module-cli\" - Required by the WPCLI module.
  • \"codeception/util-universalframework\" - Required by the WordPress framework module.
"},{"location":"v3/codeception-phpunit-and-wpbrowser/","title":"Codeception, PHPUnit and wp-browser","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/codeception-phpunit-and-wpbrowser/#the-wp-browser-stack","title":"The wp-browser stack","text":"

The wp-browser project is built leveraging the power of a number of open-source projects.

While I'm not listing all of them here it's worth mentioning those that will come up, again and again, in the documentation.

"},{"location":"v3/codeception-phpunit-and-wpbrowser/#wordpress","title":"WordPress","text":"

WordPress is open source software you can use to create a beautiful website, blog, or app.

The line is taken directly from WordPress.org site.

In the context of this documentation WordPress is the PHP and JavaScript framework websites and web applications can be built on, the one anyone can download from here.

"},{"location":"v3/codeception-phpunit-and-wpbrowser/#codeception","title":"Codeception","text":"

Codeception (home) is a modern, powerful PHP testing framework written in PHP.

It comes with a number of modules and extensions that are comparable to WordPress plugins and themes.

Modules and extensions are combined in suites to be able to run a specific type of test. Each suite will handle a specific type of test for a specific set of code.

wp-browser is none other than a collection of modules and extensions for Codeception made specifically to test WordPress applications.

"},{"location":"v3/codeception-phpunit-and-wpbrowser/#phpunit","title":"PHPUnit","text":"

PHPUnit is the most widely known PHP testing framework. As the name implies it was born to make unit testing of PHP code easier but its scope and power has grown well below that.

Codeception is based, and uses, PhpUnit to wrap some of its functionalities into an easy-to-use API. The two are so compatible one with the other that Codeception can run PHPUnit tests with little to no changes.

This documentation will not cover this subject and will only deal with Codeception-native test methods but you can find more information here.

"},{"location":"v3/commands/","title":"Commands","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/commands/#custom-commands-provided-by-wp-browser","title":"Custom commands provided by wp-browser","text":"

The project comes with its own set of custom Codeception commands.

The commands provide functionalities to quickly scaffold different types of tests. Any other codecept command remains intact and available.

"},{"location":"v3/commands/#adding-the-commands-to-an-existing-project","title":"Adding the commands to an existing project","text":"

The commands are added to the main Codeception configuration file, codeception.yml, when scaffolding a project via the codecept init wp-browser command.

They can be added to any existing project adding, or editing, the commands section of the configuration file:

extensions:\n    commands:\n        - \"Codeception\\\\Command\\\\GenerateWPUnit\"\n        - \"Codeception\\\\Command\\\\GenerateWPRestApi\"\n        - \"Codeception\\\\Command\\\\GenerateWPRestController\"\n        - \"Codeception\\\\Command\\\\GenerateWPRestPostTypeController\"\n        - \"Codeception\\\\Command\\\\GenerateWPAjax\"\n        - \"Codeception\\\\Command\\\\GenerateWPCanonical\"\n        - \"Codeception\\\\Command\\\\GenerateWPXMLRPC\"\n
"},{"location":"v3/commands/#generation-commands","title":"Generation commands","text":"

The library provides commands to quickly scaffold integration test cases for specific types of WordPress components, see levels of testing for more information.

The tests are almost identical to the ones you could write in a PHPUnit based Core suite with the exception of extending the Codeception\\TestCase\\WPTestCase test case.

"},{"location":"v3/commands/#generatewpunit","title":"generate:wpunit","text":"

Generates a test case extending the \\Codeception\\TestCase\\WPTestCase class using the

  codecept generate:wpunit suite SomeClass\n

The command will generate a skeleton test case like

<?php\n\nclass SomeClassTest extends \\Codeception\\TestCase\\WPTestCase\n{\n    public function setUp()\n    {\n      parent::setUp();\n    }\n\n    public function tearDown()\n    {\n      parent::tearDown();\n    }\n\n    // tests\n    public function testMe()\n    {\n    }\n\n}\n
"},{"location":"v3/commands/#generatewprest","title":"generate:wprest","text":"

Generates a test case extending the \\Codeception\\TestCase\\WPRestApiTestCase class using the

  codecept generate:wprest suite SomeClass\n

The command will generate a skeleton test case like

<?php\n\nclass SomeClassTest extends \\Codeception\\TestCase\\WPRestApiTestCase\n{\n    public function setUp()\n    {\n      parent::setUp();\n    }\n\n    public function tearDown()\n    {\n      parent::tearDown();\n    }\n\n    // tests\n    public function testMe()\n    {\n    }\n\n}\n
"},{"location":"v3/commands/#generatewprestcontroller","title":"generate:wprestcontroller","text":"

Generates a test case extending the \\Codeception\\TestCase\\WPRestControllerTestCase class using the

  codecept generate:wprest suite SomeClass\n

The command will generate a skeleton test case like

<?php\n\nclass SomeClassTest extends \\Codeception\\TestCase\\WPRestControllerTestCase\n{\n    public function setUp()\n    {\n      parent::setUp();\n    }\n\n    public function tearDown()\n    {\n      parent::tearDown();\n    }\n\n    // tests\n    public function testMe()\n    {\n    }\n\n}\n
"},{"location":"v3/commands/#generatewprestposttypecontroller","title":"generate:wprestposttypecontroller","text":"

Generates a test case extending the \\Codeception\\TestCase\\WPRestPostTypeControllerTestCase class using the

  codecept generate:wprest suite SomeClass\n

The command will generate a skeleton test case like

<?php\n\nclass SomeClassTest extends \\Codeception\\TestCase\\WPRestPostTypeControllerTestCase\n{\n    public function setUp()\n    {\n      parent::setUp();\n    }\n\n    public function tearDown()\n    {\n      parent::tearDown();\n    }\n\n    // tests\n    public function testMe()\n    {\n    }\n\n}\n
"},{"location":"v3/commands/#generatewpajax","title":"generate:wpajax","text":"

Generates a test case extending the \\Codeception\\TestCase\\WPAjaxTestCase class using the

  codecept generate:wpajax suite SomeClass\n

The command will generate a skeleton test case like

<?php\n\nclass SomeClassTest extends \\Codeception\\TestCase\\WPAjaxTestCase\n{\n    public function setUp()\n    {\n      parent::setUp();\n    }\n\n    public function tearDown()\n    {\n      parent::tearDown();\n    }\n\n    // tests\n    public function testMe()\n    {\n    }\n\n}\n
"},{"location":"v3/commands/#generatewpxmlrpc","title":"generate:wpxmlrpc","text":"

Generates a test case extending the \\Codeception\\TestCase\\WPXMLRPCTestCase class using the

  codecept generate:wpxmlrpc suite SomeClass\n

The command will generate a skeleton test case like

<?php\n\nclass SomeClassTest extends \\Codeception\\TestCase\\WPXMLRPCTestCase\n{\n    public function setUp()\n    {\n      parent::setUp();\n    }\n\n    public function tearDown()\n    {\n      parent::tearDown();\n    }\n\n    // tests\n    public function testMe()\n    {\n    }\n\n}\n
"},{"location":"v3/commands/#generatewpcanonical","title":"generate:wpcanonical","text":"

Generates a test case extending the \\Codeception\\TestCase\\WPCanonicalTestCase class using the

  codecept generate:wpcanonical suite SomeClass\n

The command will generate a skeleton test case like

<?php\n\nclass SomeClassTest extends \\Codeception\\TestCase\\WPCanonicalTestCase\n{\n    public function setUp()\n    {\n      parent::setUp();\n    }\n\n    public function tearDown()\n    {\n      parent::tearDown();\n    }\n\n    // tests\n    public function testMe()\n    {\n    }\n\n}\n
"},{"location":"v3/configuration/","title":"Configuration","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/configuration/#initializing-wp-browser","title":"Initializing wp-browser","text":"

While wp-browser can be configured manually creating each file the fastest way to bootstrap its configuration is by using its initialization template.

Throughout the steps below I will use the WordPress setup I've prepared before From the root folder of the project, /Users/luca/Sites/wordpress/wp-content/plugins/acme-plugin in the example, run the command:

vendor/bin/codecept init wpbrowser\n

Composer installed Codeception binary (codecept) in the vendor folder of my project.

With the command above I'm telling Codeception to initialize a wp-browser project in the current folder. When I click enter I'm presented with a list of questions, each answer will be used to configure the wp-browser project for me; one by one.

In the screenshot the answers I've provided to each question, with reference to the setup above:

wp-browser will try to provide a brief explanation of what each question is but below is the long version.

"},{"location":"v3/configuration/#long-question-explanation","title":"Long question explanation","text":"

I've tried to condense as much clarity as possible in the questions the codecept init wpbrowser command will ask but, for sake of brevity and space, there's no way I could provide inline a deeper explanation of each.

Below is a longer explanation of each question:

  • How would you like the acceptance suite to be called?
  • How would you like the functional suite to be called?
  • How would you like the WordPress unit and integration suite to be called?
  • How would you like to call the env configuration file?
  • Where is WordPress installed?
  • What is the path, relative to WordPress root URL, of the admin area of the test site?
  • What is the name of the test database used by the test site?
  • What is the host of the test database used by the test site?
  • What is the user of the test database WPLoader should use?
  • What is the password of the test database WPLoader should use?
  • What is the table prefix of the test database WPLoader should use?
  • What is the URL the test site?
  • What is the email of the test site WordPress administrator?
  • What is the title of the test site?
  • What is the login of the administrator user of the test site?
  • What is the password of the administrator user of the test site?
  • Are you testing a plugin, a theme or a combination of both?
  • What is the folder/plugin.php name of the plugin?
  • Are you developing a child theme?
  • Are you using a child theme?
  • What is the slug of the parent theme?
  • What is the slug of the theme?
  • What is the slug of the theme you are using?
  • Does your project needs additional plugins to be activated to work?
"},{"location":"v3/configuration/#how-would-you-like-the-acceptance-suite-to-be-called","title":"How would you like the acceptance suite to be called?","text":"

With reference to the testing levels definition this question provides you with the possibility to change the name of the acceptance-like test suite.

Common, alternative, names are ui, rest and user.

"},{"location":"v3/configuration/#how-would-you-like-the-functional-suite-to-be-called","title":"How would you like the functional suite to be called?","text":"

With reference to the testing levels definition this question provides you with the possibility to change the name of the functional-like test suite.

A common alternative name is service.

"},{"location":"v3/configuration/#how-would-you-like-the-wordpress-unit-and-integration-suite-to-be-called","title":"How would you like the WordPress unit and integration suite to be called?","text":"

With reference to the testing levels definition this question provides you with the possibility to change the name of the suite dedicated to integration and \"WordPress unit\" tests.

A common alternative name is integration.

"},{"location":"v3/configuration/#how-would-you-like-to-call-the-env-configuration-file","title":"How would you like to call the env configuration file?","text":"

Instead of configuring each module in each suite with the same parameters over and over Codeception supports dynamic configuration via environment files.

wp-browser will scaffold such a configuration for you and will use, by default, a file called .env to store the configuration parameters.

The file name might not suit all setups especially and this question allows changing that file name; common, alternative, file names are .env.tests, .env.codeception and similar.

"},{"location":"v3/configuration/#where-is-wordpress-installed","title":"Where is WordPress installed?","text":"

During tests the test code will need to access WordPress code, precisely wp-browser requires being pointed to the folder that contains the wp-load.php file.

The answer can be an absolute path, like /Users/luca/Sites/wordrpress, or a path relative to the folder where Codeception is installed like vendor/wordpress.

This path should be accessible by the machine that is running the tests; if you're running the tests from your machine (e.g. your laptop) that's just the path to the folder where WordPress is installed, /Users/luca/Sites/wordpress in the example configuration above.

If you are, instead, running the tests from within a virtualized machine (e.g. Vagrant or Docker) then the path should be the one used by the virtualized machine.

To make an example:

  • on my machine WordPress is installed at /Users/luca/Sites/wordpress
  • I've created a Docker container using the official WordPress image and bound the above folder into the container
  • internally the container will put WordPress in the /var/www/html folder

If I run the tests from my host machine then WordPress root directory will be /Users/luca/Sites/wordpress, if I run the tests from within the Docker container then WordPress root folder will be /var/www/html.

Another example is Local by Flywheel:

  • in the host machine the path to the WordPress root folder will be /Users/luca/Local\\ Sites/wordpress/app/public
  • from within the Docker container managed by Local the path will be /app/public

If you need a solution that will work in both instances use a relative path: wp-browser will accept paths like ./../../../wordpress and will attempt to resolve them.

"},{"location":"v3/configuration/#what-is-the-path-relative-to-wordpress-root-url-of-the-admin-area-of-the-test-site","title":"What is the path, relative to WordPress root URL, of the admin area of the test site?","text":"

This is usually /wp-admin but you might have the web-server, or a plugin, redirect or hide requests for the administration area to another path.

Some examples are /admin, /login and the like.

Mind that this is not the path to the login page but the path to the administrationo area; this will be used by wp-browser to find to the administration area in acceptance and functional tests.

"},{"location":"v3/configuration/#what-is-the-name-of-the-test-database-used-by-the-test-site","title":"What is the name of the test database used by the test site?","text":"

In my example setup it's wordpress.

This is the name of the database that is storing the information used by the site I can reach at http://localhost:8080.

I want to underline the word \"test\". Any site and any database you use and expose to wp-browser should be intended for tests; this means that it does not contain any data you care about as it will be lost.

"},{"location":"v3/configuration/#what-is-the-host-of-the-test-database-used-by-the-test-site","title":"What is the host of the test database used by the test site?","text":"

In my example setup it's 127.0.0.1:3306.

Here the same principle valid for Where is WordPress installed? applies: the database host is relative to the machine that is running the tests.

In my example I'm hosting the database locally, on my laptop, and my machine can reach it at the localhost address (127.0.0.1) on MySQL default port (3306).

If I am using the database of a Local by Flywheel site from my host machine then it might be something like 192.168.92.100:4050 (from the site \"Database\" tab); the same principle applies if I am using a Vagrant-based or Docker-based solution.

If I am running the tests from within a virtualized machine (a Docker container, a Vagrant box et cetera) then it would probably be localhost or 1270.0.0.1.

This detail will be used in the context of acceptance and functional tests by the WPDb module.

"},{"location":"v3/configuration/#what-is-the-user-of-the-test-database-used-by-the-test-site","title":"What is the user of the test database used by the test site?","text":"

In my example setup it's root as I'm using MySQL server root user to access the database during tests.

Depending on your setup it might be different; since wp-browser will need to not only read but write too to the database make sure to use a user that has full access to the database specified in the answer to the What is the host of the test database used by the test site? question.

This detail will be used in the context of acceptance and functional tests by the WPDb module.

"},{"location":"v3/configuration/#what-is-the-password-of-the-test-database-used-by-the-test-site","title":"What is the password of the test database used by the test site?","text":"

In my example setup it's empty as I've not set any password for the root account.

In your case it might be different and it should be the password associated with the user specified in the answer to the What is the user of the test database used by the test site? question.

This detail will be used in the context of acceptance and functional tests by the WPDb module.

"},{"location":"v3/configuration/#what-is-the-table-prefix-of-the-test-database-used-by-the-test-site","title":"What is the table prefix of the test database used by the test site?","text":"

In my example setup it's wp_; that value is taken from the WordPress installation configuration file.

To have any influence on the site wp-browser will need to modify the same database tables WordPress is using; as I did you can take this value from the wp-config.php file directly: it's the value of the $table_prefix variable.

This detail will be used in the context of acceptance and functional tests by the WPDb module.

"},{"location":"v3/configuration/#what-is-the-name-of-the-test-database-wploader-should-use","title":"What is the name of the test database WPLoader should use?","text":"

In my example setup it's tests.

During integration, or WordPress \"unit\" tests, wp-loader will need to load WordPress code.

Since WordPress code is not meant to be \"modular\" it does not support auto-loading or loading just parts of it; it's either almost all or nothing.

One of the first things WordPress does, when loading, is trying to connect to a database: if that database is not available then WordPress will not load.

In the answer to the question Where is WordPress installed? I've told wp-browser where to find WordPress code, in this answer I'm telling wp-browser what database it should use to bootstrap WordPress.

This detail will be used by the WPLoader module to bootstrap WordPress. It's highly recommended to use a different database from the one used for functional and acceptance tests.

"},{"location":"v3/configuration/#what-is-the-host-of-the-test-database-wploader-should-use","title":"What is the host of the test database WPLoader should use?","text":"

In my example setup it's 127.0.0.1:3306.

As in the answer to the question What is the name of the test database WPLoader should use? we're providing connection details about the database that should be used to bootstrap WordPress during integration and WordPress \"unit\" tests.

Again the database host is in relation to the machine running the tests, all the considerations done for What is the host of the test database used by the test site? apply.

This detail will be used by the WPLoader module to bootstrap WordPress.

"},{"location":"v3/configuration/#what-is-the-user-of-the-test-database-wploader-should-use","title":"What is the user of the test database WPLoader should use?","text":"

In my example it's root.

Similar to the question What is the user of the test database used by the test site? but in relation to the database specified in the question What is the name of the test database WPLoader should use?.

This detail will be used by the WPLoader module to bootstrap WordPress.

"},{"location":"v3/configuration/#what-is-the-password-of-the-test-database-wploader-should-use","title":"What is the password of the test database WPLoader should use?","text":"

In my example setup it's empty as I've not set any password for the root account.

Similar to the question What is the password of the test database used by the test site? but in relation to the database specified in the question What is the name of the test database WPLoader should use?.

This detail will be used by the WPLoader module to bootstrap WordPress.

"},{"location":"v3/configuration/#what-is-the-table-prefix-of-the-test-database-wploader-should-use","title":"What is the table prefix of the test database WPLoader should use?","text":"

In my example setup it's wp_.

Similar to the question What is the table prefix of the test database used by the test site? but in relation to the database specified in the question What is the name of the test database WPLoader should use?.

This detail will be used by the WPLoader module to bootstrap WordPress.

"},{"location":"v3/configuration/#what-is-the-url-the-test-site","title":"What is the URL the test site?","text":"

In my example setup it's http://localhost:8080.

This is the full URL you would have to enter in the browser, on the machine that is running the tests, to reach the test WordPress site homepage.

"},{"location":"v3/configuration/#what-is-the-email-of-the-test-site-wordpress-administrator","title":"What is the email of the test site WordPress administrator?","text":"

In my example setup it's admin@wp.localhost.

This detail will be used by the WPLoader module to bootstrap WordPress and, while required, it's usually not relevant unless you're testing email communications.

"},{"location":"v3/configuration/#what-is-the-title-of-the-test-site","title":"What is the title of the test site?","text":"

In my example setup it's Acme Plugin Test Site.

This detail will be used by the WPLoader module to bootstrap WordPress and, while required, it's usually not relevant unless you're testing around the site title.

"},{"location":"v3/configuration/#what-is-the-login-of-the-administrator-user-of-the-test-site","title":"What is the login of the administrator user of the test site?","text":"

In my example setup it's admin.

This detail will be used by the WPBrowser or WPWebDriver modules to fill in the login details for the administrator user.

It should be the same as the one that allows you to access the site administration area in the WordPress test site, http://localhost:8080/wp-admin in my example.

"},{"location":"v3/configuration/#what-is-the-password-of-the-administrator-user-of-the-test-site","title":"What is the password of the administrator user of the test site?","text":"

In my example setup it's password.

This detail will be used by the WPBrowser or WPWebDriver modules to fill in the login details for the administrator user.

It should be the same as the one that allows you to access the site administration area in the WordPress test site, http://localhost:8080/wp-admin in my example.

"},{"location":"v3/configuration/#are-you-testing-a-plugin-a-theme-or-a-combination-of-both","title":"Are you testing a plugin, a theme or a combination of both?","text":"

Depending on the answer the WPLoader module will load, during integration or WordPress \"unit\" tests, your WordPress plugin or theme.

If you replied with both (for \"a combination of both\") then you'll be able to choose the plugins and theme to load in integration and WordPress \"unit\" tests in the following questions.

"},{"location":"v3/configuration/#what-is-the-folderpluginphp-name-of-the-plugin","title":"What is the folder/plugin.php name of the plugin?","text":"

This question will be asked only if you replied plugin to the question Are you testing a plugin, a theme or a combination of both?. In my example setup it's acme-plugin/plugin.php.

This is the <folder>/<main-plugin-file>.php path, relative to the WordPress installation plugins folder, to the plugin you are testing.

The main plugin file is the one that contains the plugin header.

This detail will be used by the WPLoader module to bootstrap WordPress and load your plugin or theme in integration and WordPress \"unit\" tests.

"},{"location":"v3/configuration/#are-you-developing-a-child-theme","title":"Are you developing a child theme?","text":"

This question will be asked only if you replied theme to the question Are you testing a plugin, a theme or a combination of both?. Enter yes if you are developing a child theme.

This detail will be used by the WPLoader module to bootstrap WordPress and load a parent theme along with your theme in integration and WordPress \"unit\" tests.

Please note that wp-browser will not download and install the parent theme in the WordPress installation for you.

"},{"location":"v3/configuration/#are-you-using-a-child-theme","title":"Are you using a child theme?","text":"

This question will be asked only if you replied both to the question Are you testing a plugin, a theme or a combination of both?. Enter yes if you are using a child theme.

This detail will be used by the WPLoader module to bootstrap WordPress and load a parent theme along with your theme in integration and WordPress \"unit\" tests.

Please note that wp-browser will not download and install the parent theme in the WordPress installation for you.

"},{"location":"v3/configuration/#what-is-the-slug-of-the-parent-theme","title":"What is the slug of the parent theme?","text":"

This question will be asked only if you replied yes to the question Are you developing a child theme?.

Reply with the slug of the parent theme, that's usually the name of the folder the parent theme lives in, e.g. twentyseventeen.

This detail will be used by the WPLoader module to bootstrap WordPress and load a parent theme along with your theme in integration and WordPress \"unit\" tests.

Please note that wp-browser will not download and install the parent theme in the WordPress installation for you.

"},{"location":"v3/configuration/#what-is-the-slug-of-the-theme","title":"What is the slug of the theme?","text":"

This question will be asked only if you replied theme to the question Are you testing a plugin, a theme or a combination of both?. Reply with the slug of the theme, that's usually the name of the folder the theme lives in, e.g. twentyseventeen.

This detail will be used by the WPLoader module to bootstrap WordPress and load your theme in integration and WordPress \"unit\" tests.

"},{"location":"v3/configuration/#what-is-the-slug-of-the-theme-you-are-using","title":"What is the slug of the theme you are using?","text":"

This question will be asked only if you replied both to the question Are you testing a plugin, a theme or a combination of both?. Reply with the slug of the theme you are using, that's usually the name of the folder the theme lives in, e.g. twentyseventeen.

This detail will be used by the WPLoader module to bootstrap WordPress and load the theme integration and WordPress \"unit\" tests.

"},{"location":"v3/configuration/#does-your-project-needs-additional-plugins-to-be-activated-to-work","title":"Does your project needs additional plugins to be activated to work?","text":"

Whether you're testing a plugin, a theme or a combination of both you might need some additional plugins to run your tests.

As an example if I'm testing a WooCommerce extension I need the WooCommerce plugin to test it; this is the place where I can define it.

The required plugins follow the same format as the one used in the question What is the folder/plugin.php name of the plugin?: <plugin-folder>/<plugin-main-file>.php; in the case of WooCommerce it would be woocommerce/woocommerce.php.

This detail will be used by the WPLoader module to bootstrap WordPress and load the required plugins in integration and WordPress \"unit\" tests.

Please note that wp-browser will not download and install the required plugins in the WordPress installation for you.

"},{"location":"v3/configuration/#if-you-entered-a-wrong-value","title":"If you entered a wrong value","text":"

No worries, just correct the value in the environment file or in the suites configuration files.

The environment file will have the name you specified in the answer the question How would you like to call the env configuration file?.

The suites configuration files can be found in tests/<suite>.suite.yml; e.g. the wpunit suite configuration file will be tests/wpunit.suite.yml file.

"},{"location":"v3/configuration/#final-steps","title":"Final steps","text":"

To complete the setup I have removed any demo content from the site and activated my plugin in the plugins administration page.

In the tests/acceptance.suite.yml file and in the tests/functional.suite.yml file, the configuration file for the acceptance and functional suites respectively, the WPDb module configuration contains a dump configuration parameter:

class_name: AcceptanceTester\nmodules:\n    enabled:\n        - WPDb\n    config:\n        WPDb:\n            dump: 'tests/_data/dump.sql'\n

The dump parameter is inherited by the WPDb module from the Codeception Db module and defines the SQL dump file that should be loaded before, and between, tests to reset the testing environment to a base known state.

As for any other database-related operation wp-browser will not create the dump for me. I use MySQL binary to export the database state (a dump) with the command:

mysqldump -u root -h 127.0.0.1 -P 3306 wordpress > /Users/luca/Sites/wordpress/wp-content/plugins/acme-plugin/tests/_data/dump.sql\n

I could use any other combination of tools to produce the dump; using mysql binary is not a requirement.

Graphic interfaces like SequelPro, Adminer and the like would be perfectly fine.

"},{"location":"v3/configuration/#pre-flight-check","title":"Pre-flight check","text":"

There is one last check I need to make before jumping into the creation of tests: making sure all the paths and credentials I've configured wp-browser with are correct.

The bootstrap process generated four suites for me: acceptance, functional, integration and unit. If you have modified the default suite names during the setup your suites names might differ though.

To test the setup I will run each suite and make sure it can run correctly empty of any test. To run a suite of tests I will use the codecept run command:

codecept run acceptance\ncodecept run functional\ncodecept run integration\ncodecept run unit\n

How comes I'm not using the command codecept run (without specifying the suite names)? See the FAQ entry.

If you cannot run all the suites without issues then check your configuration settings again, read the errors and see If you entered a wrong value

"},{"location":"v3/events-api/","title":"Events API","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/events-api/#events-api","title":"Events API","text":"

Codeception comes with a set of events modules and extensions can subscribe to.

Codeception Events API is, but, only available to Modules and Extensions, and while that might be good for most cases, it might not cover a number of edge cases.

Similarly to WordPress add_action function, wp-browser provides the tad\\WPBrowser\\addListener function:

function addListener($eventName, callable $listener, $priority = 0);\n

The priority works the reverse way as it does in WordPress: highest number will be processed first!

Again similarly to WordPress do_action function, the tad\\WPBrowser\\dispatch function:

function dispatch($eventName, $origin = null, array $context = []);\n

This is the kind of API that is better shown with an example, though.

"},{"location":"v3/events-api/#example","title":"Example","text":"

In this example I'm writing acceptance tests and would like to avoid the performance hit that the cleanup configuration parameter of the Db, or WPDb, module implies. The cleanup parameter will trigger the drop of all tables in the test database and the re-import of the SQL dump file, or files, between each test. This will ensure a clean starting fixture between tests, but for larger setup fixtures this might be a long operation that wastes precious seconds when, say, the only change is the addition of 3 posts, as in this example.

The Events API allows implementing a tailored clean-up procedure that can avoid costly clean ups between tests.

In the suite bootstrap file, e.g. tests/acceptance/_bootstrap.php, I add a listener on the my-plugin-test/setup-posts event. The event will contain information about what post IDs I've set up in the tests and will provide an instance of the tester object to handle database manipulation. With that information, the costly cleanup procedure can be avoided.

<?php\n\n$registerPostsCleanup = static function (tad\\WPBrowser\\Events\\WpbrowserEvent $event) {\n    $ids = $event->get('ids', []);\n    /** @var \\EventsTester $db */\n    $db = $event->get('db');\n\n    // When tests are done, then remove all the posts we've created at the start of the test, if any.\n    tad\\WPBrowser\\addListener(\n        Codeception\\Events::TEST_AFTER,\n        static function () use ($ids, $db) {\n            foreach ($ids as $id) {\n                $db->dontHavePostInDatabase([ 'ID' => $id ], true);\n                // Ensure the clean up did happen correctly.\n                $db->dontSeePostInDatabase([ 'ID' => $id ]);\n                $db->dontSeePostMetaInDatabase([ 'post_id' => $id ]);\n            }\n        }\n    );\n};\n\n// Listen for this event to register the posts to remove, along with their custom fields, after the test.\ntad\\WPBrowser\\addListener('test-event-1/setup-posts', $registerPostsCleanup);\n

In this simple test I'm adding 3 posts [using the factory provided by the WPLoader module in loadOnly mode][2] and want to make sure those, and the relative meta, are removed at the end of the tests. The WPDb module, extending the Db module from Codeception, will remove the inserted rows, but will not take care of modified rows, or rows not inserted by the WPDb module.

Mirroring the requirement of the clean up function I've defined above, I'm passing the post IDs of the posts I've created and the current tester to provide the clean up function with database handling capabilities.

<?php\n/** @var Codeception\\Scenario $scenario */\n$I = new AcceptanceTester($scenario);\n$I->wantTo('add posts and clean them up using the Events API');\n\n/*\n * Use WordPress methods, thanks to the `WPLoader` module, to use WordPress, or our own, API to insert posts.\n * This will prevent, but, `WPDb` from removing the inserted rows and clean up, so we remove the posts and meta\n * with an event and our custom clean-up function.\n */\n$ids = $I->factory()->post->create_many(3, [ 'post_type' => 'some_post_type' ]);\n\ntad\\WPBrowser\\dispatch('test-event-1/setup-posts', __FILE__, [\n    'ids' => $ids,\n    'db'  => $I\n]);\n
"},{"location":"v3/extensions/","title":"Extensions","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/extensions/#extensions","title":"Extensions","text":"

The Codeception testing framework can be extended in a number of ways.

The one this project leverages the most are modules but [extensions are another way].

Modules extend the functionality of Codeception in the context of the tests, while extensions extend its interaction capacities; this is by no means a strict rule but that's usually the case.

The package contains two additional extensions to facilitate testers' life.

"},{"location":"v3/extensions/#symlinker","title":"Symlinker","text":"

The tad\\WPBrowser\\Extension\\Symlinker extension provides an automation to have the Codeception root directory symbolically linked in a WordPress local installation.

Since version 3.9 WordPress supports this feature (with some precautions) and the extension takes charge of:

  • symbolically linking a plugin or theme folder in the specified destination before any suite boots up
  • unlinking that symbolic link after all of the suites did run

It's the equivalent of doing something like this from the command line (on a Mac):

ln -s /my/central/plugin/folder/my-plugin /my/local/wordpress/installation/wp-content/plugins/my-plugin\n/my/central/plugin/folder/my-plugin/vendor/bin/codecept run\nrm -rf /my/local/wordpress/installation/wp-content/plugins/my-plugin\n

The extension needs small configuration in the codeception.yml file:

extensions:\n    enabled:\n        - tad\\WPBrowser\\Extension\\Symlinker\n    config:\n        tad\\WPBrowser\\Extension\\Symlinker:\n            mode: plugin\n            destination: /my/local/wordpress/installation/wp-content/plugins\n            rootFolder: /some/plugin/folder\n

The arguments are:

  • mode - can be plugin or theme and indicates whether the current Codeception root folder being symlinked is a plugin or a theme one
  • destination - the absolute path to the WordPress local installation plugins or themes folder; to take the never ending variety of possible setups into account the extension will make no checks on the nature of the destination: could be any folder.
  • rootFolder - optional absolute path to the WordPress plugin or theme to be symlinked root folder; will default to the Codeception root folder
"},{"location":"v3/extensions/#copier","title":"Copier","text":"

The tad\\WPBrowser\\Extension\\Copier extension provides an automation to have specific files and folders copied to specified destination files and folders before the suites run.

While WordPress handles symbolic linking pretty well there are some cases, like themes and drop-ins, where there is a need for \"real\" files to be put in place.

One of such cases is, currently, one where Docker is used to to host and serve the code under test: symbolically linked files cannot be bound inside a container and Docker containers will fail to start in this case.

The extension follows the standard Codeception extension activation and has one configuration parameter only:

extensions:\n    enabled:\n        - tad\\WPBrowser\\Extension\\Copier\n    config:\n        tad\\WPBrowser\\Extension\\Copier:\n            files:\n                tests/_data/required-drop-in.php: /var/www/wordpress/wp-content/drop-in.php\n                tests/_data/themes/dummy: /var/www/wordpress/wp-content/themes/dummy\n                /Users/Me/Repos/required-plugin: /var/www/wordpress/wp-content/plugins/required-plugin.php\n                /Users/Me/Repos/mu-plugin.php: ../../../../wp-content/mu-plugins/mu-plugin.php\n

The extension will handle absolute and relative paths for sources and destinations and will resolve relative paths from the project root folder.

When copying directories the extension will only create the destination folder and not the folder tree required; in the example configuration above the last entry specifies that a mu-plugin.php file should be copied to the mu-plugins folder: that mu-plugins folder must be there already.

"},{"location":"v3/extensions/#environments-support","title":"Environments support","text":"

Being able to symlink a plugin or theme folder into a WordPress installation for testing purposes could make sense when trying to test, as an example, a plugin in a single site and in multi site environment.

Codeception supports environments and the extension does as well specifying a destination for each.

As an example the acceptance.suite.yml file might be configured to support single and multisite environments:

env:\n    single:\n        modules:\n            config:\n                WPBrowser:\n                    url: 'http://wp.dev'\n                WPDb:\n                    dsn: 'mysql:host=127.0.0.1;dbname=wp'\n    multisite:\n        modules:\n            config:\n                WPBrowser:\n                    url: 'http://mu.dev'\n                WPDb:\n                    dsn: 'mysql:host=127.0.0.1;dbname=mu'\n

In the codeception.yml file specifying a destination for each supported environment will tell the extension to symbolically link the plugin or theme file to different locations according to the current environment:

extensions:\n    enabled:\n        - tad\\WPBrowser\\Extension\\Symlinker\n    config:\n        tad\\WPBrowser\\Extension\\Symlinker:\n            mode: plugin\n            destination:\n                single: /var/www/wp/wp-content/plugins\n                multisite: /var/www/mu/wp-content/plugins\n

If no destination is specified for the current environment the extension will fallback to the first specified one.

A default destination can be specified to override this behaviour.

extensions:\n    enabled:\n        - tad\\WPBrowser\\Extension\\Symlinker\n    config:\n        tad\\WPBrowser\\Extension\\Symlinker:\n            mode: plugin\n            destination:\n                default: /var/www/default/wp-content/plugins\n                single: /var/www/wp/wp-content/plugins\n                multisite: /var/www/mu/wp-content/plugins\n

When running a suite specifying more than one environment like

codecept run acceptance --env foo,baz,multisite\n

Then the extension will use the first matched one, in the case above the multisite destination will be used.

The rootFolder parameter too can be set to be environment-aware and it will follow the same logic as the destination:

extensions:\n    enabled:\n        - tad\\WPBrowser\\Extension\\Symlinker\n    config:\n        tad\\WPBrowser\\Extension\\Symlinker:\n            mode: plugin\n            rootFolder:\n                dev: /\n                dist: /dist\n                default: /\n            destination:\n                default: /var/www/dev/wp-content/plugins\n                dev: /var/www/dev/wp-content/plugins\n                dist: /var/www/dist/wp-content/plugins\n

When running a suite specifying more than one environment like

codecept run acceptance --env dist\n

Then the extension will symlink the files from /dist into the /var/www/dist/wp-content/plugins folder.

"},{"location":"v3/extensions/#events","title":"Events","text":"

Due to some internal changes in Codeception 4.0, the internal API (really a collection of low-level hacks on my part) that allowed wp-browser to dispatch, and listen for, events in the modules has been removed.

If you want to leverage [the event system wp-browser provides] with Codeception default events (e.g. suite.init or test.before), then you will need to use this extension.

You will not need this extension if you're not using Codeception version 4.0.

You will need to enable it in your Codeception main configuration file (e.g. codeception.dist.yml).

extensions:\n    enabled:\n        - tad\\WPBrowser\\Extension\\Events\n    config:\n      tad\\WPBrowser\\Extension\\Events:\n        suites: ['acceptance']\n

The extension only configuration is the suites parameter that allows specifying the suites the extension should apply to. If the suites parameter is not specified, then the extension will apply to all suites.

"},{"location":"v3/faq/","title":"Frequently asked questions","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/faq/#some-common-questions","title":"Some common questions","text":"

There are questions I keep receiving via email, GitHub or in person at conferences.

I tried to address some of them here.

"},{"location":"v3/faq/#is-codeceptionwp-browser-php-52-compatible","title":"Is Codeception/wp-browser PHP 5.2 compatible?","text":"

No, Codeception, and wp-browser by extension, will require PHP 5.6 minimum.

This does not mean your code cannot be PHP 5.2 compatible: you can test your code using all the possibilities of newer PHP versions and still keep it PHP 5.2 compatible.

Just because you can doesn't mean you should though: this documentation will assume a minimum PHP version, for the example and test code, of PHP 5.6.

"},{"location":"v3/faq/#can-i-run-unit-tests-with-wp-browsercodeception","title":"Can I run unit tests with wp-browser/Codeception?","text":"

Yes, with some distinctions.

In the WordPress ecosystem there's a tendency to call any kind of test a \"unit test\". Under that definition will fall tests that are not \"unit\" tests at all.

Without drowning into a long and painful battle for definitions this guide will use the following definitions for different levels of testing.

The next section will detail the conventions this documentation uses to define different levels of testing in more detail.

"},{"location":"v3/faq/#isnt-wordpress-untestable","title":"Isn't WordPress untestable?","text":"

No; it's sometimes difficult to test and not as straightforward as other PHP frameworks but it's definitely not untestable.

You are writing code that runs on WordPress, not the Core code for WordPress so the question should really be: will you write testable code?

It's up to you to decide at what level you want to make your code testable and how much you want to test it.

"},{"location":"v3/faq/#do-i-need-to-use-a-specific-local-development-environment-to-use-wp-browser","title":"Do I need to use a specific local development environment to use wp-browser?","text":"

No. I've started using wp-browser on a vanilla PHP built-in server to, then, move to MAMP (or XAMP) and, from there, to other solutions.

I've configured and used wp-browser on Docker, Vagrant, VVV, Valet and various CI solutions.

To this day I keep using different setups on different machines and personally prefer Docker for its portability.

"},{"location":"v3/faq/#can-i-only-test-plugins-with-wp-browser","title":"Can I only test plugins with wp-browser?","text":"

No, you can test any kind of WordPress application.

With \"application\" I mean any PHP software built on top of WordPress: plugins, themes, whole sites.

"},{"location":"v3/faq/#if-im-testing-a-site-do-i-have-to-use-the-default-wordpress-file-structure","title":"If I'm testing a site do I have to use the default WordPress file structure?","text":"

No, you can use any file structure you want.

Some wp-browser modules will need a little help to find your code but, so far, I've never been unable to set it up.

"},{"location":"v3/faq/#can-i-use-wp-browser-even-if-my-wordpress-application-doesnt-use-composer","title":"Can I use wp-browser even if my WordPress application doesn't use Composer?","text":"

Yes, although wp-browser, as a development tool, cannot be installed without Composer.

"},{"location":"v3/faq/#should-i-use-wp-browser-to-test-my-production-servers","title":"Should I use wp-browser to test my production servers?","text":"

No. Unless you know very well what you're doing that's a dangerous idea that might leave you with a broken site and an empty database.

As almost any testing tool, wp-browser should be used locally on local installations of WordPress that do not contain any valuable information.

"},{"location":"v3/faq/#how-can-i-avoid-the-wpdb-module-from-replacing-the-contents-of-my-database","title":"How can I avoid the WPDb module from replacing the contents of my database?","text":"

You should always backup any database that contains any information you care about before running any test.

You can read the answer to this question in the WPDb module documentation.

"},{"location":"v3/faq/#can-i-run-all-my-tests-with-one-command","title":"Can I run all my tests with one command?","text":"

Theoretically: yes, in practice: no.

When you use codecept run Codeception will run all the tests from all the suites.

This, done in the context of other frameworks, will generally not create any problem but, in the context of WordPress it will.

While handling a single HTTP request WordPress will set, and use, a number of constants and globals and, likewise, will do plugins and themes that follow WordPress standards.

This means that the global context (variable scope) will be left \"dirty\" and contain \"left-over\" constants and globals from the previous tests.

An example is one where a test for the handling of Ajax requests sets the DOING_AJAX constant: this will be now set for any test after the one that set it thus breaking, or worse altering, all the following ones.

So, in short, run each suite separately.

"},{"location":"v3/faq/#can-i-have-more-than-one-suite-of-one-kind","title":"Can I have more than one suite of one kind?","text":"

Yes, you should.

As an example you might have a frontend suite running acceptance tests on the site frontend and a backend suite running acceptance tests on the site backend.

Think of suites as a tool to organize your tests: there's a good measure between too organized and not organized at all.

"},{"location":"v3/faq/#ive-used-phpunit-before-for-my-unit-tests-can-i-reuse-that-knowledge-and-code-with-wp-browser","title":"I've used PHPUnit before for my unit tests, can I reuse that knowledge and code with wp-browser?","text":"

Yes.

Codeception uses PHPUnit as one of its main components and can run PHPUnit tests with little or no modification.

As such you can just move your existing PHPUnit tests in a dedicated suite and be ready to run in minutes.

"},{"location":"v3/faq/#ive-already-set-up-my-tests-to-run-using-the-core-phpunit-based-test-suite-can-i-keep-using-my-tests","title":"I've already set up my tests to run using the Core PHPUnit-based test suite, can I keep using my tests?","text":"

Yes.

Codeception uses PHPUnit as one of its main components and can run PHPUnit tests with little or no modification.

One of the goals of wp-browser was to make it easier to test WordPress application at an integration level (or \"WordPress unit\" level).

As such migrating those tests could be a matter of minutes requiring no modification to the tests if not for moving some files and creating a dedicated suite.

"},{"location":"v3/faq/#why-is-the-project-called-wp-browser","title":"Why is the project called wp-browser?","text":"

When I started working with Codeception to run my acceptance tests I kept creating steps that I would reuse over and over in my projects.

I packed them in a module extending the PHPBrowser module.

Being a natural talent in naming things I've called the module WPBrowser and published it. As I started relying on Codeception more and more I kept adding modules but the name remained.

"},{"location":"v3/installation/","title":"Installation","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/installation/#installation","title":"Installation","text":""},{"location":"v3/installation/#where-should-i-install-wp-browser","title":"Where should I install wp-browser?","text":"

As a rule-of-thumb wp-browser should be installed in the root folder of your project.

If your project is a plugin then it should be installed in the root folder of your plugin; if your project is a theme it should be installed in the root folder of your theme.

If your project is a site I'd, personally install it in the site root folder.

The purpose of installing wp-browser in the root folder of a project is to keep the code and its tests under version control together.

Exceptions apply but, for most projects, that's what I would do.

"},{"location":"v3/installation/#initializing-the-composer-project","title":"Initializing the Composer project","text":"

Since Composer is a requirement of wp-browser and the only way to install it you should, first thing, initialize the Composer project.

If you've already initialized the Composer project you can skip this section.

Once you've decided where to install wp-browser navigate to that folder using the terminal and type:

composer init\n

Composer will take you through a number of questions to setup some meta information about your project.

Do not install any dependency yet when asked (unless you know what you're doing) and, as a suggestion, set wordpress-plugin as \"Package Type\".

Also, since WordPress is licensed under the GPL-2.0+ you might want to set the \"License\" of your project to GPL-2.0-or-later.

"},{"location":"v3/installation/#installing-wp-browser-as-a-development-dependency","title":"Installing wp-browser as a development dependency","text":"

Once you've initialized the Composer project it's time to require wp-browser ; you can read more about the usage of the require command on the Composer documentation.

wp-browser is a testing tool and, as such, should be installed as a project development dependency, not as a normal (production) one.

From the terminal type:

composer require --dev lucatume/wp-browser\n

This will install the latest stable version of wp-browser and, along with it, Codeception and PHPUnit in the vendor folder of your project.

Once that's done it's time to move to the setup and configuration of wp-browser.

"},{"location":"v3/levels-of-testing/","title":"Levels of testing","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/levels-of-testing/#what-is-a-unit-test-an-acceptance-test","title":"What is a unit test? An acceptance test?","text":"

This page has no pretense to be THE source of truth about what is called how in the context of tests; the purpose of this page is to lay out the terminology that I'll use in the documentation to define the levels and component of testing. Wikipedia, forums and other documents online will offer alternate, and equally valid, definitions.

"},{"location":"v3/levels-of-testing/#the-signup-page-example","title":"The signup page example","text":"

Let's assume I'm testing a WordPress plugin that adds mailing list management and subscription functionalities to a site.

The plugin provides a number of functions and, among them, it will add a sign-up page to receive users applications.

"},{"location":"v3/levels-of-testing/#acceptance-tests","title":"Acceptance tests","text":"

In brief: make assertions as a user would.

The user might be tech-savvy as much as I want her to be but still make assertions only on what feedback the site provides.

The code below tests a user can subscribe to the mailing list:

<?php\n// UserSuccessfulSignupTest.php\n\n// Add a page that contains the shortcode that will render the signup form.\n$I->havePageInDatabase( [\n    'post_name' => 'signup',\n    'post_content'=> 'Sign-up for our awesome thing! [signup]',\n] );\n\n// Go to the page.\n$I->amOnPage( '/signup' );\n\n// Submit the form as a user would submit it. \n$I->submitForm( '#signup-form', [\n  'name' => 'Luca',\n  'email' => 'luca@theAverageDev.com',\n] );\n\n// Make sure I see a confirmation message. \n$I->waitForElement( '#signup-confirmation' );\n
"},{"location":"v3/levels-of-testing/#functional-tests","title":"Functional tests","text":"

In brief: make assertions as a developer would.

The test code below asserts front-end submissions are correctly processed from the developer perspective:

<?php\n// file tests/functional/SignupSubmissionCest.php\n\nclass SignupSubmissionCest {\n\n    public function _before( FunctionalTester $I ) {\n        // Add a page that contains the shortcode that will render the signup form.\n        $I->havePageInDatabase( [\n            'post_name' => 'signup',\n            'post_content'=> 'Sign-up for our awesome thing! [signup]',\n        ] );\n\n        $I->amOnPage( '/signup' );\n    }\n\n    public function test_good_signup( FunctionalTester $I ) {\n        $I->sendAjaxPostRequest( '/wp-json/acme/v1/signup', [\n          '_wpnonce' => $I->grabAttributeFrom( '#signup-nonce', 'value' ),\n          'name' => 'Luca',\n          'email' => 'luca@theAverageDev.com',\n        ] );\n\n        $I->seeResponseCodeIsSuccessful();\n        $I->seeUserInDatabase( [ 'user_login' => 'luca', 'user_email' => 'luca@theaveragedev.com' ] );\n    }\n\n    public function test_bad_email_signup( FunctionalTester $I ) {\n        $I->sendAjaxPostRequest( '/wp-json/acme/v1/signup', [\n          '_wpnonce' => $I->grabAttributeFrom( '#signup-nonce', 'value' ),\n          'name' => 'Luca',\n          'email' => 'not-really-an-email',\n        ] );\n\n        $I->seeResponseCodeIs( 400 );\n        $I->dontSeeUserInDatabase( [ 'user_login' => 'luca', 'user_email' => 'not-really-an-email' ] );\n    }\n}\n

The code looks, initially, like an acceptance test, but differs in its action and assertion phase: in place of filling a form and clicking \"Submit\" it sends a POST request to a REST API endpoint and checks the effect of the submission in the database.

All of these actions fall squarely into what a developer would do, not into what a user could/should be able to do.

Furthermore, the format of the test is not the same as the one used in the acceptance test.

The acceptance test is written in the most eloquent testing format supported by Codeception, the Cept format, this test uses a more PHPUnit-like format, the Cest format.

While the first is easier to skim for non-developers the second harnesses the power of a re-using pieces of code, the page creation and navigation in the example, to optimize the test code.

"},{"location":"v3/levels-of-testing/#integration-tests","title":"Integration tests","text":"

In brief: test code modules in the context of a WordPress website.

In this type of test the WordPress, and additional plugins code, is loaded in the same variable scope as the tests; this is why in the example below I'm using classes (WP_REST_Request, WP_REST_Response) and methods (register_rest_route) defined by WordPress, not the plugin code.

The REST API request sent by the application form will be handled by a class, Acme\\Signup\\SubmissionHandler, that's been attached to the /wp-json/acme/v1/signup path:

<?php\n// file src/rest.php\n\nadd_action( 'rest_api_init', function () {\n    register_rest_route( 'acme/v1', '/signup', array(\n        'methods' => 'POST',\n        'callback' => function( WP_Rest_Request $request ) {\n            $email_validator = new Acme\\Signup\\EmailValidator();\n            $handler = new Acme\\Signup\\SubmissionHandler( $email_validator );\n\n            return $handler->handle( $request );\n        },\n    ) );\n} );\n

I want to test the chain of classes and methods that's handling such a request in the context of a WordPress installation.

Integration is usually about testing \"modules\" of code: groups of classes and functions working together to provide a service or complete a task.

In the context of integration testing the class dependencies and/or the context are not mocked.

<?php\n// file tests/integration/SubmissionHandlingTest.php\n\nclass SubmissionHandlingTest extends \\Codeception\\TestCase\\WPTestCase {\n    public function test_good_request() {\n        $request = new WP_Rest_Request();\n        $request->set_body_params( [ 'name' => 'luca', 'email' => 'luca@theaveragedev.com' ] );\n        $handler = new  Acme\\Signup\\SubmissionHandler();\n\n        $response = $handler->handle( $request );\n\n        $this->assertIntsanceOf( WP_REST_Response::class, $response );\n        $this->assertEquals( 200, $response->get_status() );\n        $this->assertInstanceOf( Acme\\Signup\\Submission_Good::class, $handler->last_submission() );\n        $this->assertEquals( 'luca', $handler->last_submission()->name() );\n        $this->assertEquals( 'luca@theaveragedev.com', $handler->last_submission()->email() );\n    }\n\n    public function test_bad_email_request() {\n        $request = new WP_Rest_Request();\n        $request->set_body_params( [ 'name' => 'luca', 'email' => 'not-a-valid-email' ] );\n        $handler = new  Acme\\Signup\\SubmissionHandler();\n\n        $response = $handler->handle( $request );\n\n        $this->assertIntsanceOf( WP_REST_Response::class, $response );\n        $this->assertEquals( 400, $response->get_status() );\n        $this->assertInstanceOf( Acme\\Signup\\Submission_Bad::class, $handler->last_submission() );\n        $this->assertEquals( 'luca', $handler->last_submission()->name() );\n        $this->assertEquals( 'not-a-valid-email', $handler->last_submission()->email() );\n    }\n}\n

The test format used is the familiar PhpUnit one; the only difference is the base test class that's being extended (\\Codeception\\TestCase\\WPTestCase) is one provided by wp-browser.

In the context of WordPress \"integration\" might also mean testing that filters used by the code have the expected effect.

"},{"location":"v3/levels-of-testing/#unit-tests","title":"Unit tests","text":"

In brief: test single classes or functions in isolation.

The email address is validated by the Acme\\Signup\\EmailValidator class.

In the test code below I want to make sure the validation works as intended.

<?php\n// file tests/unit/EmailValidatorTest.php\n\nclass EmailValidatorTest extends Codeception\\Test\\Test {\n    public function test_good_email_validation() {\n        $validator = new Acme\\Signup\\EmailValidator();\n\n        $this->assertTrue( $validator->validate( 'luca@theaveragedev.com' ) ); \n    }\n\n    public function test_bad_email_validation(){\n        $validator = new Acme\\Signup\\EmailValidator();\n\n        $this->assertTrue( $validator->validate( 'not-an-email' ) );\n    }\n\n    public function test_tricky_email_validation() {\n        $validator = new Acme\\Signup\\EmailValidator();\n\n        $this->assertTrue( $validator->validate( 'luca+signup@theaveragedev.com' ) ); \n    }\n\n    public function test_validation_with_service(){\n        // Stub the validation service.\n        $validation_service = $this->prophesize( Acme\\Signup\\ValidationService::class );\n        $validation_service->validate( 'luca@theaveragedev.com' )->willReturn( true );\n        $validation_service->validate( 'lucas@theaveragedev.com' )->willReturn( false );\n        // Build the validator and set it to use the mock validation service.\n        $validator = new Acme\\Signup\\EmailValidator();\n        $validator->use_service( $validation_service->reveal() );\n\n        $this->assertTrue( $validator->validate( 'luca@theaveragedev.com' ) );\n        $this->assertFalse( $validator->validate( 'lucas@theaveragedev.com' ) );\n    }\n}\n

Unit tests is where stubbing/mocking/spying of dependencies is used to gain total control over the input and context the class is using.

In the last test method I'm doing exactly that testing the email validator with an external validation service.

In the example I'm using the Prophecy mock engine that comes with PHPUnit along with its own mocking/stubbing/spying solutions.

There are other mocking engines (e.g Mockery) that could be used.

"},{"location":"v3/levels-of-testing/#wordpress-unit-tests","title":"WordPress \"unit\" tests","text":"

In brief: test single classes or functions that require WordPress code in as much isolation as possible.

This is what most people referring to \"unit tests\" in the context of WordPress is talking about.

The purpose of this kind of tests is to test one class of a WordPress application, or one function, that requires a WordPress-defined function or class with a unit testing approach.

In the example below I'm testing the Acme\\Signup\\SubmissionHandler class on a \"unit\" level making sure it will mark a request as bad if the email is not a valid one.

<?php\n// file tests/unit/SubmissionHandlerTest.php\nclass SubmissionHandlerTest extends Codeception\\Test\\Test {\n    protected  $request;\n    protected $validator;\n\n    public function setUp() {\n        // Mock the request.\n        $this->request = $this->prophesize( WP_REST_Request::class );\n        // Spy on the validator.\n        $this->validator = $this->prophesize( Acme\\Signup\\EmailValidator::class );\n    }\n\n    public function test_email_is_validated_by_default() {\n        $this->request->get_param( 'name' )->willReturn( 'luca' );\n        $this->request->get_param( 'email' )->willReturn( 'luca@theaveragedev.com' );\n\n        $handler = new Acme\\Signup\\SubmissionHandler( $this->validator->reveal() );\n        $handler->set_validator( $this->validator );\n        $response = $handler->handle( $this->request->reveal() );\n\n        $this->assertInstanceOf( WP_REST_Response::class, $response );\n        // Verify on the validator spy.\n        $this->validator->validate( 'luca@theaveragedev.com' )->shouldHaveBeenCalled();\n    }\n\n    public function test_will_not_validate_email_if_missing() {\n        $this->request->get_param( 'name' )->willReturn( 'luca' );\n        $this->request->get_param( 'email' )->willReturn( '' );\n\n        $handler = new Acme\\Signup\\SubmissionHandler( $this->validator->reveal() );\n        $handler->set_validator( $this->validator );\n        $response = $handler->handle( $this->request->reveal() );\n\n        $this->assertInstanceOf( WP_REST_Response::class, $response );\n        // Verify on the validator spy.\n        $this->validator->validate( Argument::any() )->shouldNotHaveBeenCalled();\n    }\n}\n

The class uses the WP_REST_Request and WP_Rest_Response classes as input and output and will probably, internally, use more functions defined by WordPress.

One solution to avoid loading WordPress, could be to rewrite test versions of each and all the WordPress functions and classes needed by all the classes I want to unit test; this would require updating each time the classes requirements change.

Furthermore internationalization (e.g. __()) and filtering (e.g apply_filters) functions would not need to be mocked if not in specific cases and would pretty much be copy and paste versions of the WordPres ones.

Loading single pieces of WordPress is a dangerous and brittle endeavour and it's not supported by the framework.

To avoid all this WordPress \"unit tests\" pay the price of having to bootstrap WordPress, thus requiring a database connection.

This kind of test setup and level is the one you can see in the PHPUnit Core suite of WordPress itself.

"},{"location":"v3/requirements/","title":"Requirements","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/requirements/#requirements","title":"Requirements","text":"

wp-browser has some requirements your development environment will need to fulfill for it to work correctly.

"},{"location":"v3/requirements/#php","title":"PHP","text":"

The minimum supported version of PHP supported by wp-browser is 5.6.

This requirement does not reflect on the minimum PHP version your plugin might require; see the FAQs for more information.

"},{"location":"v3/requirements/#composer","title":"Composer","text":"

There is no phar version of wp-browser and it can only be installed using Composer.

See Composer installation guide for more information.

"},{"location":"v3/requirements/#wordpress-mysql-apachenginx","title":"WordPress, MySQL, Apache/Nginx","text":"

wp-browser will not download, install and configure WordPress for you.

It will also not download, install and setup MySQL, Apache, Nginx or any other technology required by a fully functional WordPress installation for you.

You need to set up a local WordPress installation on your own; you can use your preferred solution to do it.

In the documentation I will show automated ways to do this but, for most projects, that's not the best solution.

"},{"location":"v3/setting-up-minimum-wordpress-installation/","title":"Setting up a minimum WordPress installation","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/setting-up-minimum-wordpress-installation/#setting-up-a-minimum-wordpress-installation","title":"Setting up a minimum WordPress installation","text":"

As mentioned in Installation section wp-browser will not download, configure and install WordPress for you.

On a high level, once WordPress is installed and configured, whatever local development environment solution you've used, there are some information you'll need to gather before moving into wp-browser configuration.

While there will be a section dedicated to different environments and setups I will outline below the example setup I will use, in the next section, to configure wp-browser:

  • WordPress is installed, on my machine, at /Users/luca/Sites/wordpress.
  • I'm running MySQL server locally; I can connect to the MySQL server with the command mysql -u root -h 127.0.0.1 -P 3306; there is no password.
  • I've created two databases, wordpress and tests, with the command:
    mysql -u root -h 127.0.0.1 -P 3306 -e \"create database if not exists wordpress; create database if not exists tests\"\n
  • I've configured the /Users/luca/Sites/wordpress/wp-config.php file like below (redacted for brevity):
    <?php\ndefine( 'DB_NAME', 'wordpress' );\ndefine( 'DB_USER', 'root' );\ndefine( 'DB_PASSWORD', '' );\ndefine( 'DB_HOST', '127.0.0.1' );\ndefine( 'DB_CHARSET', 'utf8' );\ndefine( 'DB_COLLATE', '' );\n\n$table_prefix = 'wp_';\n\nif ( ! defined( 'ABSPATH' ) )\n    define( 'ABSPATH', dirname( __FILE__ ) . '/' );\n\nrequire_once ABSPATH . 'wp-settings.php';\n
  • To serve the site I'm using PHP built-in server with the command:
    (cd /Users/luca/Sites/wordpress; php -S localhost:8080)\n
  • I can access the WordPress homepage at http://localhost:8080 and the administration area at http://localhost:8080/wp-admin.
  • I've installed WordPress via its UI (http://localhost:8080/wp-admin), the administrator username is admin, the administrator password is password.
  • I'm testing a plugin and that plugin is in the folder, relative to the WordPress root folder, wp-content/plugins/acme-plugin.

With all the steps above done I can now move into the actual wp-browser configuration phase.

"},{"location":"v3/advanced/run-in-separate-process/","title":"Running tests in separate processes","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/advanced/run-in-separate-process/#running-tests-in-separate-processes","title":"Running tests in separate processes","text":"

PHPUnit offers the possibility to run tests in a separate PHP process; Codeception does not officially support the option as of version 4.0.

The wp-browser project tries to fill that gap by supporting the @runInSeparateProcess annotation. This support comes with some caveats, though:

  1. The support is only for test cases extending the Codeception\\TestCase\\WPTestCase class (the base test case for integration or \"WordPress unit\" tests)
  2. The support wp-browser provides only supports the @preserveGlobalState annotation with the disabled value; this means there is no support for preserving global state between tests.

Read more about what this means in PHPUnit documentation.

"},{"location":"v3/advanced/run-in-separate-process/#why-run-tests-in-a-separate-php-process","title":"Why run tests in a separate PHP process?","text":"

One main reason: isolation.

What does \"isolation\" means?

Before answering that question, it's essential to understand, via an example, why a lack of isolation might be an issue.

I want to test the get_api function. The function will return the correct singleton instance of an API handling class: an instance of Api when the function is called in non-admin context, and an instance of AdminApi when the function is called in admin context. The get_api function is acting as a service locator.

<?php\nfunction get_api(){\n    static $api;\n\n    if(null !== $api){\n        return $api;\n    }\n\n    if( is_admin() ) {\n        $api = new Admin_Api();\n    } else {\n        $api = new Api();\n    }\n\n    return $api;\n}\n

There are two challenges to testing this function:

  1. The is_admin function, defined by WordPress, looks up a WP_ADMIN constant to know if the context of the current request is an administration UI one or not.
  2. The get_api function will check for the context and resolve and build the correct instance only once, the first time it's called in the context of a request.

There are some possible solutions to this problem:

a. Refactor the get_api function into a method of an Api_Factory object taking the context as a dependency, thus allowing injection of the \"context\" (which implies the creation of a Context adapter that will proxy its is_admin method to the is_admin function). You can find the code for such refactoring in the OOP refactoring of get_api section. b. Refactor the get_api function to accept the current is_admin value as an input argument, get_api( $is_admin ), this refactoring moves part of the complexity of getting hold of the correct instance of the API handler on the client code. Adding more build condition and checks, e.g., if the current request is a REST request or not or some tests on the user authorizations, then, requires adding more input arguments to the get_api function: the knowledge of the implementation of the get_api method will \"leak\" to the client code having to replicate complexity throughout the system.

I want to layout possible solutions to the problem to show there is always a design alternative to make code testable that might or might not fit the current time or scope constraint.

In this example, I've inherited the get_api function from the existing code, and it cannot be changed, yet I want to test it dealing with the two problems outlined above.

"},{"location":"v3/advanced/run-in-separate-process/#running-tests-in-separate-php-processes","title":"Running tests in separate PHP processes","text":"

To test the get_api function shown above I've created a new wpunit type of test:

vendor/bin/codecept g:wpunit integration \"api\"\n

The command scaffolds a test/integration/apiTest.php file that I've modified to ensure full coverage of the get_api function:

<?php\n\nclass apiTest extends \\Codeception\\TestCase\\WPTestCase\n{\n    public function test_get_api_exists()\n    {\n        $this->assertTrue(function_exists('get_api'));\n    }\n\n    public function test_get_api_will_cache()\n    {\n        $this->assertSame(get_api(), get_api());\n    }\n\n    /**\n     * @runInSeparateProcess\n     * @preserveGlobalState disabled\n     */\n    public function test_get_api_will_return_api_if_not_admin()\n    {\n        // Let's make sure we're NOT in admin context.\n        define('WP_ADMIN', false);\n\n        $api = get_api();\n\n        $this->assertInstanceOf(Api::class, $api);\n    }\n\n    /**\n     * @runInSeparateProcess\n     * @preserveGlobalState disabled\n     */\n    public function test_get_api_will_cache_api_if_not_admin()\n    {\n        // Let's make sure we're NOT in admin context.\n        define('WP_ADMIN', false);\n\n        $api = get_api();\n\n        $this->assertSame(get_api(), $api);\n    }\n\n    /**\n     * @runInSeparateProcess\n     * @preserveGlobalState disabled\n     */\n    public function test_get_api_will_return_api_if_is_admin()\n    {\n        // Let's make sure we're NOT in admin context.\n        define('WP_ADMIN', true);\n\n        $api = get_api();\n\n        $this->assertInstanceOf(AdminApi::class, $api);\n    }\n\n    /**\n     * @runInSeparateProcess\n     * @preserveGlobalState disabled\n     */\n    public function test_get_api_will_cache_api_if_is_admin()\n    {\n        // Let's make sure we're NOT in admin context.\n        define('WP_ADMIN', true);\n\n        $api = get_api();\n\n        $this->assertSame(get_api(), $api);\n    }\n}\n

Some pieces of this code are worth pointing out:

  1. There are two test methods, test_get_api_exists and test_get_api_will_cache that are not running in a separate process. Running tests in a separate process provide isolation at the cost of speed, only tests that require isolation should run in a separate PHP process.
  2. I instruct the Codeception and PHPUnit test runner to run a test method in a different process by adding two annotations that are both required ** precisely as shown**:
    /**\n * @runInSeparateProcess\n * @preserveGlobalState disabled\n */\n
  3. The isolation part of this testing approach shines through when I define, in the last four tests, the WP_ADMIN constant multiple times. If I try to do that in test code running in the same PHP process, then the second define call would cause a fatal error.
  4. The isolation has also taken care of the second issue where the get_api function caches the $api instance after its first resolution in a static variable: since each test happens in a self-contained, dedicated PHP process, the static $api variable will be null at the start of each test.
"},{"location":"v3/advanced/run-in-separate-process/#can-i-run-some-tests-in-the-same-process-and-some-in-a-separate-process","title":"Can I run some tests in the same process and some in a separate process?","text":"

Yes. In the example test code in the previous section, the test_get_api_exists and test_get_api_will_cache test methods are not running in separate processes.

In your test cases extending the Codeception\\TestCase\\WPTestCase, you can mix test methods running in the primary PHP process and those running in a separate PHP process without issues.

"},{"location":"v3/advanced/run-in-separate-process/#oop-refactoring-of-get_api","title":"OOP refactoring of get_api","text":"

In the Why run tests in a separate PHP process? section I've outlined a possible refactoring of the get_api function to make it testable without requiring the use of separate PHP processes.

I'm providing this refactoring code below for the sake of completeness, the judgment of which approach is \"better\" is up to the reader.

<?php\n\nclass Context_Adapter{\n\n    public function is_admin(){\n        return \\is_admin();\n    }\n\n}\n\nclass Api_Factory{\n\n    private $api;\n    private $context;\n\n    public function __construct(Context_Adapter $context){\n        $this->context = $context;\n    }\n\n    public function getApi(){\n        if(null !== $this->api){\n            return $this->api;    \n        }\n\n        if($this->context->is_admin()){\n            $api = new Admin_Api;\n        } else {\n            $api = new Api;\n        }\n\n        return $api;\n    }\n}\n

Now the Api_Factory class can be injected by injecting a mocked Context_Adapter class, modifying the return value of the Context_Adapter::is_admin method.

Due to the supposed requirement of the API instance being a singleton, this solution will also require some container or service-locator to ensure at most only one instance of the Api_Factory exists at any given time in the context of a request.

"},{"location":"v3/migration/from-version-2-to-version-3/","title":"Version 2 to version 3","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/migration/from-version-2-to-version-3/#migrating-projects-from-version-2-of-wp-browser-to-version-3","title":"Migrating projects from version 2 of wp-browser to version 3","text":"

Version 3 of wp-browser removed, to allow for broader compatibility with PHP and Composer versions, some of its dependencies and modified some of its methods. Here is a list of changes and the suggested courses of action:

  • Removed symfony/process to launch and manage external processes; re-add it your project development requirements using composer require --dev symfony/process.
  • Removed the wp-cli/wp-cli-bundle dependency; if you were relying on non-core packages, then re-add it to your project development requirements using composer require --dev wp-cli/wp-cli-bundle.
  • Removed the WithWpCli::executeBackgroundWpCliCommand trait method, and, as a consequence, the WPCLI::executeBackgroundWpCliCommand module method; you could have used the latter, if this was the case, then require the symfony/process as explained above and launch processes in background using its API; find out more.
  • Refactored the WPCLI module to build and escape string command lines differently; the handling of command-line arguments for the WPCLI module has been modified to make it a bit more consistent and robust; as a consequence, you might experience some breakages in string commands that used to work correctly before; should this be the case then either modify your code to provide the command in array format (taking care of the correct escaping in your code), or make sure to pass a correctly structured command string to the WPCLI module.
"},{"location":"v3/modules/WPBrowser/","title":"WPBrowser","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/modules/WPBrowser/#wpbrowser-module","title":"WPBrowser module","text":"

This module should be used in acceptance and functional tests, see levels of testing for more information.

This module extends the PHPBrowser module adding WordPress-specific configuration parameters and methods.

The module simulates a user interaction with the site without Javascript support; if you need to test your project with Javascript support use the WPWebDriver module.

"},{"location":"v3/modules/WPBrowser/#module-requirements-for-codeception-40","title":"Module requirements for Codeception 4.0+","text":"

This module requires the codeception/module-phpbrowser Composer package to work when wp-browser is used with Codeception 4.0.

To install the package run:

composer require --dev codeception/module-phpbrowser:^1.0\n
"},{"location":"v3/modules/WPBrowser/#configuration","title":"Configuration","text":"

Since this module extends the PHPBrowser module provided by Codeception, please refer to the PHPBrowser configuration section for more information about the base configuration parameters.

  • url required - Start URL of your WordPress project, e.g. http://wp.test.
  • headers - Default headers are set before each test; this might be useful to simulate a specific user agent during the tests or to identify the request source. Note that the headers defined in the config should be prefaced with HTTP_ in your wp-config.php file. This can be used to select which database to use.
  • handler (default: curl) - The Guzzle handler to use. By default curl is used, also possible to pass stream, or any valid class name as Handler.
  • middleware - The Guzzle middlewares to add. An array of valid callables is required; see here for more information.
  • curl - curl options; only applied if using the curl handler; more options are available.
  • adminUsername required - This is the login name, not the \"nice\" name, of the administrator user of the WordPress test site. This will be used to fill the username field in WordPress login page.
  • adminPassword required - This is the the password of the administrator use of the WordPress test site. This will be used to fill the password in WordPress login page.
  • adminPath required - The path, relative to the WordPress test site home URL, to the administration area, usually /wp-admin.
"},{"location":"v3/modules/WPBrowser/#example-configuration","title":"Example configuration","text":"
  modules:\n      enabled:\n          - WPBrowser\n      config:\n          WPBrowser:\n              url: 'http://wordpress.localhost'\n              adminUsername: 'admin'\n              adminPassword: 'password'\n              adminPath: '/wp-admin'\n              headers:\n                X_TEST_REQUEST: 1\n                X_WPBROWSER_REQUEST: 1\n

Read here how to use the headers information to automatically change the database during acceptance and functional tests.

"},{"location":"v3/modules/WPBrowser/#public-api","title":"Public API","text":"
  • activatePlugin($pluginSlug) : void In the plugin administration screen activates a plugin clicking the \"Activate\" link.

The method will not handle authentication to the admin area.

  • activateTheme($slug) : void Activates a theme.

The method will not handle authentication and navigation to the themes administration page.

  • amEditingPostWithId($id) : void Go to the admin page to edit the post with the specified ID.

The method will not handle authentication the admin area.

  • amEditingUserWithId($id) : void Go to the admin page to edit the user with the specified ID.

The method will not handle authentication the admin area.

  • amHttpAuthenticated($username, $password) : void

  • amOnAdminAjaxPage([$queryVars]) : void Go to the admin-ajax.php page to start a synchronous, and blocking, GET AJAX request.

The method will not handle authentication, nonces or authorization.

  • amOnAdminPage($page) : void Go to a page in the admininstration area of the site.

This method will not handle authentication to the administration area.

  • amOnCronPage([$queryVars]) : void Go to the cron page to start a synchronous, and blocking, GET request to the cron script.

  • amOnPage($page) : void

  • amOnPagesPage() : void Go the \"Pages\" administration screen.

The method will not handle authentication.

  • amOnPluginsPage() : void Go to the plugins administration screen.

The method will not handle authentication.

  • amOnSubdomain($subdomain) : void

  • amOnThemesPage() : void Moves to the themes administration page.

  • amOnUrl($url) : void

  • attachFile($field, $filename) : void

  • checkOption($option) : void

  • click($link, [$context]) : void

  • deactivatePlugin($pluginSlug) : void In the plugin administration screen deactivate a plugin clicking the \"Deactivate\" link.

The method will not handle authentication and navigation to the plugins administration page.

  • deleteHeader($name) : void Deletes the header with the passed name. Subsequent requests will not have the deleted header in its request.

Example:

<?php\n$I->haveHttpHeader('X-Requested-With', 'Codeception');\n$I->amOnPage('test-headers.php');\n// ...\n$I->deleteHeader('X-Requested-With');\n$I->amOnPage('some-other-page.php');\n

  • dontSee($text, [$selector]) : void

  • dontSeeCheckboxIsChecked($checkbox) : void

  • dontSeeCookie($cookie, [array $params]) : void

  • dontSeeCurrentUrlEquals($uri) : void

  • dontSeeCurrentUrlMatches($uri) : void

  • dontSeeElement($selector, [$attributes]) : void

  • dontSeeInCurrentUrl($uri) : void

  • dontSeeInField($field, $value) : void

  • dontSeeInFormFields($formSelector, array $params) : void

  • dontSeeInSource($raw) : void

  • dontSeeInTitle($title) : void

  • dontSeeLink($text, [$url]) : void

  • dontSeeOptionIsSelected($selector, $optionText) : void

  • dontSeePluginInstalled($pluginSlug) : void Assert a plugin is not installed in the plugins administration screen.

The method will not handle authentication and navigation to the plugin administration screen.

  • dontSeeResponseCodeIs($code) : void Checks that response code is equal to value provided.
<?php\n$I->dontSeeResponseCodeIs(200);\n\n// recommended \\Codeception\\Util\\HttpCode\n$I->dontSeeResponseCodeIs(\\Codeception\\Util\\HttpCode::OK);\n
  • executeInGuzzle(Closure $function) : void Low-level API method. If Codeception commands are not enough, use Guzzle HTTP Client methods directly

Example:

<?php\n$I->executeInGuzzle(function (\\GuzzleHttp\\Client $client) {\n     $client->get('/get', ['query' => ['foo' => 'bar']]);\n});\n?>\n

It is not recommended to use this command on a regular basis. If Codeception lacks important Guzzle Client methods, implement them and submit patches.

  • fillField($field, $value) : void

  • followRedirect() : void Follow pending redirect if there is one.

<?php\n$I->followRedirect();\n
  • grabActiveTheme() : void Returns the slug of the currently active themes.

The method will not handle authentication and navigation to the themes administration page.

  • grabAttributeFrom($cssOrXpath, $attribute) : void

  • grabAvailableThemes([$classes]) : void Returns the list of available themes.

The method will not handle authentication and navigation to the themes administration page.

  • grabCookie($cookie, [array $params]) : void

  • grabCookiesWithPattern($cookiePattern) : void Returns all the cookies whose name matches a regex pattern.

  • grabFromCurrentUrl([$uri]) : void

  • grabMultiple($cssOrXpath, [$attribute]) : void

  • grabPageSource() : void Grabs current page source code.

  • grabTextFrom($cssOrXPathOrRegex) : void

  • grabValueFrom($field) : void

  • grabWordPressTestCookie([$name]) : void Returns WordPress default test cookie object if present.

  • haveHttpHeader($name, $value) : void Sets the HTTP header to the passed value - which is used on subsequent HTTP requests through PhpBrowser.

Example:

<?php\n$I->haveHttpHeader('X-Requested-With', 'Codeception');\n$I->amOnPage('test-headers.php');\n

To use special chars in Header Key use HTML Character Entities: Example: Header with underscore - 'Client_Id' should be represented as - 'Client_Id' or 'Client_Id'

<?php\n$I->haveHttpHeader('Client&#95;Id', 'Codeception');\n
  • haveServerParameter($name, $value) : void Sets SERVER parameter valid for all next requests.
$I->haveServerParameter('name', 'value');\n
  • logOut([$redirectTo]) : void Navigate to the default WordPress logout page and click the logout link.

  • loginAs($username, $password) : void Login as the specified user.

The method will not follow redirection, after the login, to any page.

  • loginAsAdmin() : void Login as the administrator user using the credentials specified in the module configuration.

The method will not follow redirection, after the login, to any page.

  • makeHtmlSnapshot([$name]) : void

  • moveBack([$numberOfSteps]) : void Moves back in history.

  • resetCookie($cookie, [array $params]) : void

  • see($text, [$selector]) : void

  • seeCheckboxIsChecked($checkbox) : void

  • seeCookie($cookie, [array $params]) : void

  • seeCurrentUrlEquals($uri) : void

  • seeCurrentUrlMatches($uri) : void

  • seeElement($selector, [$attributes]) : void

  • seeErrorMessage([$classes]) : void In an administration screen look for an error admin notice.

The check is class-based to decouple from internationalization. The method will not handle authentication and navigation the administration area.

  • seeInCurrentUrl($uri) : void

  • seeInField($field, $value) : void

  • seeInFormFields($formSelector, array $params) : void

  • seeInSource($raw) : void

  • seeInTitle($title) : void

  • seeLink($text, [$url]) : void

  • seeMessage([$classes]) : void In an administration screen look for an admin notice.

The check is class-based to decouple from internationalization. The method will not handle authentication and navigation the administration area.

  • seeNumberOfElements($selector, $expected) : void

  • seeOptionIsSelected($selector, $optionText) : void

  • seePageNotFound() : void Asserts that current page has 404 response status code.

  • seePluginActivated($pluginSlug) : void Assert a plugin is activated in the plugin administration screen.

The method will not handle authentication and navigation to the plugin administration screen.

  • seePluginDeactivated($pluginSlug) : void Assert a plugin is not activated in the plugins administration screen.

The method will not handle authentication and navigation to the plugin administration screen.

  • seePluginInstalled($pluginSlug) : void Assert a plugin is installed, no matter its activation status, in the plugin administration screen.

The method will not handle authentication and navigation to the plugin administration screen.

  • seeResponseCodeIs($code) : void Checks that response code is equal to value provided.
<?php\n$I->seeResponseCodeIs(200);\n\n// recommended \\Codeception\\Util\\HttpCode\n$I->seeResponseCodeIs(\\Codeception\\Util\\HttpCode::OK);\n
  • seeResponseCodeIsBetween($from, $to) : void Checks that response code is between a certain range. Between actually means [from <= CODE <= to]

  • seeResponseCodeIsClientError() : void Checks that the response code is 4xx

  • seeResponseCodeIsRedirection() : void Checks that the response code 3xx

  • seeResponseCodeIsServerError() : void Checks that the response code is 5xx

  • seeResponseCodeIsSuccessful() : void Checks that the response code 2xx

  • seeThemeActivated($slug) : void Verifies that a theme is active.

The method will not handle authentication and navigation to the themes administration page.

  • seeWpDiePage() : void Checks that the current page is one generated by the wp_die function.

The method will try to identify the page based on the default WordPress die page HTML attributes.

  • selectOption($select, $option) : void

  • sendAjaxGetRequest($uri, [$params]) : void Sends an ajax GET request with the passed parameters. See sendAjaxPostRequest()

  • sendAjaxPostRequest($uri, [$params]) : void Sends an ajax POST request with the passed parameters. The appropriate HTTP header is added automatically: X-Requested-With: XMLHttpRequest Example:

    <?php\n$I->sendAjaxPostRequest('/add-task', ['task' => 'lorem ipsum']);\n
    Some frameworks (e.g. Symfony) create field names in the form of an \"array\": <input type=\"text\" name=\"form[task]\"> In this case you need to pass the fields like this:
    <?php\n$I->sendAjaxPostRequest('/add-task', ['form' => [\n    'task' => 'lorem ipsum',\n    'category' => 'miscellaneous',\n]]);\n

  • sendAjaxRequest($method, $uri, [$params]) : void Sends an ajax request, using the passed HTTP method. See sendAjaxPostRequest() Example:

    <?php\n$I->sendAjaxRequest('PUT', '/posts/7', ['title' => 'new title']);\n

  • setCookie($name, $val, [array $params]) : void

  • setHeader($name, $value) : void Alias to haveHttpHeader

  • setMaxRedirects($maxRedirects) : void Sets the maximum number of redirects that the Client can follow.

<?php\n$I->setMaxRedirects(2);\n
  • setServerParameters(array $params) : void Sets SERVER parameters valid for all next requests. this will remove old ones.
$I->setServerParameters([]);\n
  • startFollowingRedirects() : void Enables automatic redirects to be followed by the client.
<?php\n$I->startFollowingRedirects();\n
  • stopFollowingRedirects() : void Prevents automatic redirects to be followed by the client.
<?php\n$I->stopFollowingRedirects();\n
  • submitForm($selector, array $params, [$button]) : void

  • switchToIframe($name) : void Switch to iframe or frame on the page.

Example:

<iframe name=\"another_frame\" src=\"http://example.com\">\n

<?php\n# switch to iframe\n$I->switchToIframe(\"another_frame\");\n
  • uncheckOption($option) : void

This class extends \\Codeception\\Module\\PhpBrowser

This class implements \\Codeception\\Lib\\Interfaces\\MultiSession, \\Codeception\\Lib\\Interfaces\\Remote, \\Codeception\\Lib\\Interfaces\\Web, \\Codeception\\Lib\\Interfaces\\PageSourceSaver, \\Codeception\\Lib\\Interfaces\\ElementLocator, \\Codeception\\Lib\\Interfaces\\ConflictsWithModule

"},{"location":"v3/modules/WPCLI/","title":"WPCLI","text":"

This is the documentation for version 3 of the project. The current version is version 4 and the documentation can be found here.

"},{"location":"v3/modules/WPCLI/#wpcli-module","title":"WPCLI module","text":"

This module should be used in acceptance and functional tests to setup, or verify, tests pre and post conditions using WP-CLI commands. This module allows invoking WP-CLI commands, refer to the official site for more information.

The module will use its own version of WP-CLI, not the one installed in the machine running the tests!

By default, wp-browser will only include the wp-cli/wp-cli package; this package contains the basic files to run WP-CLI and does not contain all the commands that come with a typical wp-cli installation. If, in your tests, you require all the commands that usually come installed with WP-CLI, then you should require the wp-cli/wp-cli-bundle package as a development dependency of your project, see below.

"},{"location":"v3/modules/WPCLI/#fixing-not-a-registered-command-issue","title":"Fixing \"not a registered command\" issue","text":"

To keep the conflicts at a manageable level, the wp-browser project does not include all the commands WP-CLI usually comes bundled with. Running, in the context of an automated test, a WP-CLI command that would work on your machine, e.g. wp plugin list --status=active, will not work on a default installation of wp-browser and you will get the following error message:

[ModuleException] WPCLI: wp-cli terminated with status [1] and output [Error: 'plugin' is not a registered wp command. See 'wp help' for available commands.]\n

To resolve the message just add the package you require as a development dependency or add the whole WP-CLI bundle:

composer require --dev wp-cli/wp-cli-bundle\n

The package will make all the default WP-CLI commands available to the WP-CLI version used in tests.

"},{"location":"v3/modules/WPCLI/#module-requirements-for-codeception-40","title":"Module requirements for Codeception 4.0+","text":"

This module requires the codeception/module-cli Composer package to work when wp-browser is used with Codeception 4.0.

To install the package run:

composer require --dev codeception/module-cli:^1.0\n
"},{"location":"v3/modules/WPCLI/#detecting-requests-coming-from-this-module","title":"Detecting requests coming from this module","text":"

When it runs this module will set the WPBROWSER_HOST_REQUEST environment variable. You can detect and use that information to, as an example, use the correct database in your test site wp-config.php file:

<?php\nif ( \n    // Custom header.\n    isset( $_SERVER['HTTP_X_TESTING'] )\n    // Custom user agent.\n    || ( isset( $_SERVER['HTTP_USER_AGENT'] ) && $_SERVER['HTTP_USER_AGENT'] === 'wp-browser' )\n    // The env var set by the WPClIr or WordPress modules.\n    || getenv( 'WPBROWSER_HOST_REQUEST' )\n) {\n    // Use the test database if the request comes from a test.\n    define( 'DB_NAME', 'wordpress_test' );\n} else {\n    // Else use the default one.\n    define( 'DB_NAME', 'wordpress' );\n}\n

"},{"location":"v3/modules/WPCLI/#configuration","title":"Configuration","text":"
  • path required - the absolute, or relative, path to the WordPress root folder. This will be mapped to the --path argument of the wp-cli binary.
  • throw - defaults to true to throw an exception when a wp-cli command does not return an exit status of 0; if set to false then the exit status of the commands will be returned as is.
  • timeout - defaults to 60 (seconds) to set each process execution timeout to a certain value; set to null, false or 0 to disable timeout completely.

Additionally the module configuration will forward any configuration parameter to wp-cli as a flag or option. In the example configuration below the allow-root flag and the some-option option will be passed to wp-cli directly and prepended to the command as global options.

Note: these extract configuration flags and options will be prepended to all commands executed by wp-cli!

"},{"location":"v3/modules/WPCLI/#environment-configuration","title":"Environment configuration","text":"

The wp-cli binary supports a set of environment variables to modify its behavior.

These environment variables can be set on the commands ran by the WPCLI module using the optional env array in the module configuration. The example configuration below shows all of them with some example values. Most of the times you won't need any of these, but they are there for more fine-grained control over the module operations.

The module is not validating the environment variables in any way! Those values will be evaluated by wp-cli at runtime and might generate errors if not correctly configured.

"},{"location":"v3/modules/WPCLI/#example-configuration","title":"Example configuration","text":"
modules:\n    enabled:\n        - WPCLI\n    config:\n        WPCLI:\n            path: /Users/Luca/Sites/wp\n            throw: true\n            timeout: 60\n            # This will be prepended to the command, `wp --allow-root <command>`.\n            allow-root: true\n            # This will be prepended to the command, `wp --some-option=some-value <command>`.\n            some-option: some-value\n            env:\n                # Any one of these, if provided, will be set as environment variable for the the cli command process. \n                # See https://make.wordpress.org/cli/handbook/config/#environment-variables for information.\n                # Equivalent to `WP_CLI_STRICT_ARGS_MODE=1 wp <command>'.\n                strict-args: true\n                # Equivalent to `WP_CLI_CACHE_DIR=/tmp/wp-cli-cache wp <command>'.\n                cache-dir: '/tmp/wp-cli-cache'\n                # Equivalent to `WP_CLI_CONFIG_PATH=/app/public wp <command>'.\n                config-path: '/app/public'\n                # Equivalent to `WP_CLI_CUSTOM_SHELL=/bin/zsh wp <command>'.\n                custom-shell: '/bin/zsh'\n                # Equivalent to `WP_CLI_DISABLE_AUTO_CHECK_UPDATE=1 wp <command>'.\n                disable-auto-update: true\n                # Equivalent to `WP_CLI_PACKAGES_DIR=/wp-cli/packages wp <command>'.\n                packages-dir: '/wp-cli/packages'\n                # Equivalent to `WP_CLI_PHP=/usr/local/bin/php/7.2/php wp <command>'.\n                php: '/usr/local/bin/php/7.2/php'\n                # Equivalent to `WP_CLI_PHP_ARGS='foo=bar some=23' wp <command>'.\n                php-args: 'foo=bar some=23'\n
"},{"location":"v3/modules/WPCLI/#public-api","title":"Public API","text":"
  • buildFullCommand
  • cli
  • cliToArray
  • cliToString
  • dontSeeInShellOutput
  • seeInShellOutput
  • seeResultCodeIs
  • seeResultCodeIsNot
  • seeShellOutputMatches
buildFullCommand

Builds the full command to run including the PHP binary and the wp-cli boot file path.

// This method is defined in the WithWpCli trait.\n  // Set the wp-cli path, `$this` is a test case.\n  $this->setUpWpCli( '/var/www/html' );\n  // Builds the full wp-cli command, including the `path` variable.\n  $fullCommand =  $this->buildFullCommand(['core', 'version']);\n  // The full command can then be used to run it with another process handler.\n  $wpCliProcess = new Process($fullCommand);\n  $wpCliProcess->run();\n
Parameters

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 iel4LV?tK0001Q`*zR( literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a56a6edefa0446274a5cbc44620d9ae79eeb18e0 GIT binary patch literal 17032 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xEIzIFKw.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xEIzIFKw.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..508baefbc1f609769c689c8883067a4a346bf7a4 GIT binary patch literal 1512 zcmV23I`wzfD`_NMZN zsD`poX_QD)PaIBPh#X2F)M9IGo*NYLX8G?+2uUAc3{naqB=n$1Akbxq6FO{c?*}8u zp^fdTS&@c0E#dCo?Nvy6xIMQL-Or{X>jI$eKl^x=Z=j2TrFg~W1H^pXmwkl?4Rj25 z?Z!?{SJNTg5k@)afa|iZrC&|>0ZEMN|yTq@Rv|MBw&0D&zx zI6|?<+wSSK!)cQS6{HGy*oB_PNM{n9={mp}4~D!9T=@lHEeJSEFSz1Pu$7NPU-Is?@2_+De#fyX%a3i5p8+(V7WvpPO zWmdtBcyVf$FsaO0e%G8L2Qh)ZEMWru;Ymmiy;Y2Cv;!{kVPfQ0J#YM#dp5!NN z`6|$8GEa`EnShckM=y^bc|QW_5gH|QYJ*N5>0Z}I+CYG-sB}yYG^f;yL?^WM4L8)! zRq*nxULffW91NJT%P2(C(HX4lI_-fFFz!Aryto8*Lwff8rW_#2t2+ojbH5c|b2gu8dli(TaKP-LiY|-H$#RdT-#J5A>S%-|v5W|9h~0dsI@tGw&?_%=g zhW?xRTWb2>eRnA1X(&ECP0x)2TiK2^?E1m5`>R`MG(R;hG^M;+fdYg)x#HRDK0~pdU#{iY$|Jx*Vo^8Kl z``C9?qt#}!my#h*;B~mD?{4j(jxP{BZyim#IA5GuenrZN~(Xe(?RB!xM zHNtF~C6qO4w(D|oRZntC2zZ|Ac?9)d^=fU@8g-+7RrWCde&E+x09(R&Ik`Z3gQ~@Z z#&Em2AVC!l4I3P~5=ovBS^oo&P^8PSgXbPGGtlvPV+ zRtvEX4&GwImS}Jt5lSohik0IlEask~kFAZ^R3=z?w~PM>EeI~mSr^7{ zg4*fYIt@DY^+6HCH|3ydf2CbEtK9jaC!0VvH7ry%Qmu%+;XZ3wPHMmk+HJTmn#(2L zIkVwDYPh*1LkPOJt{~MdnDLH^Y@c9@ge0Fua9d-Ic>$rhWcO%Uvd|t{=q~jOU4KJS znp5a^O|})qPa2NTcJ3C&4^(BQLYSOZqmC2iioEnV+n}Yp2GJo<2MwBR0{?+?)ovGx zsMS6cRwr6I3_&ZRcF_i1MCT|5iPlcFnkMLQ+!B8{z7apA!+{?dBw7)5f-a)hC>E&R OZGwsDTs{$n0RRA;cFpSm literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xFIzIFKw.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9213da013c15b7c14d8bad77594e99599bfcfbb7 GIT binary patch literal 16676 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xGIzIFKw.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ef920e5ae091a3c4cc6d740107b7146243273255 GIT binary patch literal 12704 zcmV;RF<;JiPew8T0RR9105PBd5&!@I0CPY905LoO0RR9100000000000000000000 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 aO2z3TAwsQiTiDWe^Mm?I$Yw|hNdo}Y-(hY5 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xHIzIFKw.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xHIzIFKw.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9a378af0cf3ea1a86da4840efddb917cec5b758c GIT binary patch literal 5928 zcmV+@7uV=_Pew8T0RR9102e3#5&!@I05yC702asq0RR9100000000000000000000 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 KcS|UGTSCS6y=Wl- literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xIIzI.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOkCnqEu92Fr1Mu51xIIzI.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e1b7a79f91f29f10e58c3a255fe0f2804a9c19b9 GIT binary patch literal 17368 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.IQi(wS`Rph{L7HS(io&gTqB)B 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 G!T|u%&BW^f literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9d7fb7f8780e829b48b20ace4398ea1729aa055d GIT binary patch literal 9576 zcmV-uC70TFPew8T0RR9103~Pu5&!@I09W(?03`(g0RR9100000000000000000000 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 SjT2?6sU{iFd1eU30{{SY&x$?( literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..60681387e7bf93c19f6b2fcfac98037032e63531 GIT binary patch literal 15740 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 literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b289f0029261f2a06af8b7c6a4efebf7b1ec788a GIT binary patch literal 7120 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 Gr~m*%Pl@pW literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..87711c048c61236049707439fd024faf9733391d GIT binary patch literal 1480 zcmV;(1vmP4Pew8T0RR9100qbZ5&!@I015B_00nCR0RR9100000000000000000000 z0000QCL16eHU?k-GzeG;gFF!o3WI!uTMG~X5)=V80we<*1Rw>1d*t`LpnVh+j>pXi^n9(OlJ>((j@Habx2kf~6Rv zRsVCk4q=dE{Tw=n2A!0-ewa%k403FxUtN(7W4KyVySo>%9~Da|{3ll3eE_ilFg_Kw zPW@B?D?k<1@in5(RR~*Gb0fwzn_x&fPj7DkeG3GQ2mnwH!9)-Q4F~}t1P~xVf-*?Y z-UCMx0zd(H-Wh9c>Y~)D%~&+Mh?=>xvkSYaXxiKo4*+~I<@LHsO9}&w!$u2`>iv-Z zGC2We26mORug?wXL)RVT?=s0Crw?n`$O!<|-f*z7(bJ&5R0bU}NnxV`;jQd>(O>$} z-3R~;$ur(mqn%{15?gtS!KUi%F`!IlDrK}I#Jnuw%mEU54T7pYWz;rehC>;%0%gsI zh-ni@SPH{@8xtS^q{{FQWnbiD0`bmJ3E!_zClZn((t8D&Dxswy4TXfBA`f~Uuf=IY z5Bt$?^{_qK%~w!$USji6>&LhZff2kXFp>qjn%Hvl+L)Y#O2t(EF%A_vBw+_pT>cV9 zs;sWpZE%yZQpM0!*?J*Jiomz;S|5w}nK@QuOBn+;3amnGizc-Jy!++#D- zPYbN{x!9wY=|LVkH4xqbUHj1M=vrFY*p06Yk}>0**Sv{MDoVniDz{lH!XV6iAccn7 zAc)EPg;IV!`$mru{OxKf%fQENWSgg<`#WaHqt@OY*tfev7O(u$emI4$pZ#PF*iTw2 zwhPI)@~Kz_LBogUc|-xQ0Ehs7pc62Y!;txN3}}L;D=2sPSHvQwKOR{UUAQE#z*jgi zS|EjyB`e?hD6shpT~@vO>9&vG9yM~!JAut_X{>%bxaD1a$%G(dXMB*?M-6@B4XOVa zhVz)7JrTo-ukJPf$KZlbPw6sgqfFA%gCE)S^yVgV=91U0sP+CQw>FovLpimjp7zM% zsP%n=7oYv9Vd$X#W8)WI{<>kXZ`s#&uj{n3>;oK~$*Dae}d%S>gneV{5!s`8R-) zRcbVChIHPsUUIAm1cYnyjxtc2jh8AqMw1FP5m-V%D1JF0K*(<@&`jL~5J0PySU32> zj49EMzxyis0C?=Dcw>OqW%#H6*#E!oujHEp_|X6mu!=Gv@VEKL&h+wELKyrkeJe9v zDZjudU|H^9N;#P|n6AYR$}x_C01yEUZ8jzX_{gCn$`4G&+AdUJvRxy>{7HRpQo(Le zm$eBK+RM+4Fw!IRkXCAu+4AMeGnY+sn$m1E+w_s!7JG5=F>hq@#Xl+$% zW)5!OH2Soc33!;h7EEkkD`)9Fe8al8tW(~@->ymRO0itvY%ZA7Ep%#aZvWIV+(^Vq zI{bmJcb$aHafb%Rx$a6R9n5pPRN|9UKr5h$ajrXr(zJtakO$R6Dw>D$1Pak=(s&wz iQdY?y0o9vx-6=*p=tc4pUCv5w6FZRxw`P5r0{{S2D6;JU literal 0 HcmV?d00001 diff --git a/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 b/assets/external/fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..0f6e60b8eaadfa0df7c314807d6f9159390d896f GIT binary patch literal 15000 zcmV;JI%maqPew8T0RR9106Lfe5&!@I0E+wo06H=N0RR9100000000000000000000 z0000QfleEeLL4>*U;u(x2v`Y&JP`~Ef#Xzx%pnVdS^yG(cmXy7Bm;*q1Rw>1d22i?|&i@jIP$L{YCdD{>^lZct7>!T%oweJ*v;ML_O83@WBfsuoHBOaAeaWM4y}v+^6OK1 z+f*Pfg`Ypy!b=@w{vn}@I;NCFF|I$x*?d&U>Ey!$GTynq7?U`Y37 z`@c2+wKJPXMRJHjvI26|6{>FL&SqzKCi$C%_uua3VfNGJ5hwXQ*?a_50tM)RlM;gJ zQ)SoVD@=v2tab<%|Ic()`hOc{nwB2?+H-6)Y_v&OtuZb;8>LMNQLQdDM$#Ij@m90W zP+c$&74RNvj@)G`cf znInc6`|jU&jPw8V=XwLLB0}qOM;Rj(2&@i2_D@3)a2WtdAXaWcvSkP2 z%mu`a8;A!_5MKcx!3ZGtkw79ufJBQ2NkIn5kO7h<3nWh-$ODBS#fm{nm4Z~O1!>R> zLa_ky)mM-et03#PKp+UfVt^GOK&;#W6nGOBAxR$1&bt~~0_l@N{JntmY5s1WK>BQ_ zKyM%oI_ngFZ@>=1iVHv&96R7d0{Y^;uFs+YtRMVwC#I4$zKo(|&DVE!T%(Af6pW;O zpp(9N;`!iCL|s_aU-^=CVhXKmp);4usBtS@MgAE?UQ_VW+Awa87pDhCRk4|+%Q&bm z5;R|7C6ZeqS~-6c!6IX|Rc~-jZ zmT9}O3sc%Y9Y&-{CC#;}nTxR9i3l!hb|!df9$9l6EzHA$>&4e&8?PSub32|Z`dvHy z33JIIcvrOd@cwC!PMcbtLA3W*5tFZx=Z_8@x;rCD>R zUU}~`6)#w}VhtV48D>7fGZms(rhVBC6)^-M*+C1oEW`?;Wf_)a`Kr(|MtG%QWw@KEVwcKF>!QVgt#0sruzxP#6aXBL_Hbhm)Vr zEJj9gWE2XoZ5)?HBt!*Y@#wt7Tb0UFrcBu$%12Zfn<5z&nXbQ!j&AM+*cze*8D?b> ziMIvH)NE1Yz$@5<+{lU^sE5pOJ=g&Z1>3{3=zxrfLgmk%#|X2PkvV3j;4O=_t1k~C zetcGc27HQp*<~NCO@FUy_RscEv!8xFJ$m&U@KyG8e;z@F+Jn%p5rQ5e=@TadV&Fh@ zoQZ`Cv2i6vSYqT(jQoj30I`WDNHTFqAr@p}Q$w6;i9r*wdPwY=iOC~k&_XO)iA_5p zbP%mhLg*q|J%rM$=;u36ZxF;{h}cXLWQvfU5z-5yGebOH5`$UdF-Huj#N!n)cu&ke z6SoE8@RevR6PFd@wx$?scDWV;fbXBcy$3W{(fyd8fv^pP<&~mEFu9e@07(lC!4r8} z61(x^!|D zPpzOi&D39{d}&wM6?eszc<^VW_s_3!UXh0a@~%_?%F6g;eFt{oteS0}&^NPlQBVq(y1e$D`